Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »


traffic control of tc in linux and netem

tc qdisc Linux Traffic Control or tc






on Alpine


add package

apk update
apk add iproute2


apk for alpine based on busybox
kernel module
loadmodprobe sch_netem
modprobe cls_u32
checklsmod | grep netem
permanentNot needed !!!
create file

vi /etc/local.d/netem.start

tc qdisc change dev eth0 root netem xxxxxxxx


chmod +x /etc/local.d/netem.start
rc-update add local
latency
+ 100 mstc qdisc add dev eth0 root netem delay 100ms
remote ittc qdisc del dev eth0 root
packet loss
+ 10%tc qdisc change dev eth0 root netem loss 10%

tc qdisc del dev eth0 root
duplication

sudo tc qdisc add dev eth0 root netem duplicate 10%


reordering

sudo tc qdisc add dev eth0 root netem reorder 25% 50%

  • reorder 25%: Specifies that 25% of packets will be reordered.
  • 50%: Correlation value, meaning that once reordering starts, there is a 50% chance it continues.
show

alpine:~# tc qdisc show
qdisc noqueue 0: dev lo root refcnt 2
qdisc netem 8001: dev eth0 root refcnt 2 limit 1000 loss 10%
qdisc pfifo_fast 0: dev eth1 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

qdisc netem 8001: dev eth0 root refcnt 2 limit 1000 loss 10%

  • qdisc netem: A qdisc implementing network emulation. This is commonly used to simulate network conditions like delay, loss, duplication, or reordering.
  • 8001:: A unique handle identifying this qdisc.
  • dev eth0: Applied to the eth0 interface.
  • root: This is the root qdisc for the eth0 interface.
  • refcnt 2: Two users or instances depend on this qdisc.
  • limit 1000: Specifies the maximum number of packets that can be queued.
  • loss 10%: Simulates a 10% packet loss rate on traffic passing through eth0.

qdisc pfifo_fast 0: dev eth1 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1


  • qdisc pfifo_fast: A default qdisc for many Linux setups, implementing a priority FIFO (First In, First Out) queue.
  • 0:: A handle identifying this qdisc.
  • dev eth1: Applied to the eth1 interface.
  • root: This is the root qdisc for the eth1 interface.
  • refcnt 2: Two users or instances rely on this qdisc.
  • bands 3: Traffic is divided into 3 bands (queues), each with a different priority.  ( Band 0=HightP, 1=MPriority and 2=LowP )
  • priomap 1 2 2 2 1 2 0 0   1 1 1 1 1 1 1 1:
    • Defines how packets are classified into these bands based on their Type of Service (ToS) field.
    • Lower-priority packets are placed in higher-numbered bands, and higher-priority packets (like VoIP) are placed in lower-numbered bands.

Each number corresponds to a ToS value (0–7) and maps it to one of the priority bands:

  • 0: Band 1 (lower priority)
  • 1: Band 2 (medium priority)
  • 2: Band 2 (medium priority)
  • 3: Band 2 (medium priority)
  • 4: Band 1 (lower priority)
  • 5: Band 2 (medium priority)
  • 6: Band 0 (high priority)
  • 7: Band 0 (high priority)
  • No labels