tc / netem filter explenation

1

Eu sou novo em tc e acho isso muito confuso, consegui encontrar e entender pouco o fluxo de comando, para atrasar o IP específico, mas não consigo funcionar corretamente - atrasando todo o tráfego possível para esse IP. Acho que entendi mal / não entendi alguns dos parâmetros.

Isso às vezes funciona, mas eu tenho minhas dúvidas, já que não é consistente, como se o tráfego às vezes tomasse uma prioridade diferente que não é atrasada? Não tenho certeza

(como eu sei - algum dia eu sou capaz de quebrar o aplicativo que envia a consulta para o servidor iam atrasar o tráfego para, às vezes, só funciona como se nada está atrasado, mesmo quando usando como 50000ms)

Isso é o que eu estou usando:

tc qdisc add dev eth1 root handle 1: prio
tc filter add dev eth1 parent 1:0 protocol ip prio 1 u32 match ip src 1.1.1.1 flowid 1:3
tc qdisc add dev eth1 parent 1:1 handle 2: netem delay 20000ms 
    
por J B 13.06.2018 / 15:18

1 resposta

0

Você só pode direcionar um filtro para uma classe ou qdisc raiz. Portanto, se você quiser aplicar um qdisc diferente em uma base de fonte de IP, precisará de mais de uma classe. Você então terá:

qdisc raiz < - > várias classes < - > no qdisc em cada classe

Seu filtro direcionará o tráfego para a classe on, o qdisc da folha dessa classe usará o netem. Por exemplo (é uma parte de um dos meus scripts, não é exatamente a mesma coisa, esse código está aqui para explicar root e folhas):

# root qdisc
# Interface eth1, qdisc: htb, default leaf: 1000
tc qdisc add dev $LAN_IFACE root handle 1:0 htb default 1000 r2q 200

# root class
# Interface eth1, parent: 2:0, id: 2:11
tc class add dev $LAN_IFACE parent 1:0 classid 1:10 htb rate ${LOCAL_DL_USED}kbit ceil ${LOCAL_DL_USED}kbit quantum 100

# CLASS 1
tc class add dev $LAN_IFACE parent 1:10 classid 1:100 htb rate ${LOCAL_DL_INTERACTIVE}kbit ceil ${LOCAL_DL_INTERACTIVE}kbit burst 5k prio 0 linklayer ethernet quantum 1000
# QDISC of class 1
tc qdisc add dev $LAN_IFACE parent 1:100 handle 110: pfifo limit 1000
# FILTER to class 1
tc filter add dev $LAN_IFACE parent 1:0 protocol ip prio 0 handle 100 fw flowid 1:100

# CLASS 2
tc class add dev $LAN_IFACE parent 1:10 classid 1:200 htb rate ${LOCAL_DL_SSH}kbit ceil ${LOCAL_DL_SSH}kbit prio 1 linklayer ethernet quantum 1000
# QDISC of class 2
tc qdisc add dev $LAN_IFACE parent 1:200 handle 210: sfq perturb 10
# FILTER to class 2
tc filter add dev $LAN_IFACE parent 1:0 protocol ip prio 1 handle 200 fw flowid 1:200

Você pode dar uma olhada em Viagem ao centro do kernel do Linux para explicações detalhadas.

    
por 14.06.2018 / 12:10

Tags