C'est un peu long a expliquer ... Donc la config simplifie ... # Clear config tc qdisc del dev eth0 root handle 1 tc qdisc del dev eth1 root handle 1
# Setup HTB queueing discipline on physical interfaces tc qdisc add dev eth0 root handle 1: htb default 9999 tc qdisc add dev eth1 root handle 1: htb default 9999 # Set default for unclassified packets to 1M each direction tc class add dev eth0 parent 1:0 classid 1:9999 htb rate 100000kbit ceil 100000kbit burst 16k prio 9999 tc class add dev eth1 parent 1:0 classid 1:9999 htb rate 100000kbit ceil 100000kbit burst 16k prio 9999 # # eth0 - filter egress trafic on SRC MAC # Step 1, build 1st level hash table using last byte in MAC address as lookup key # Step 2, build 2nd level hash tables using 2nd to last byte in MAC address as lookup key # # See http://www.docum.org/docum.org/faq/cache/62.html for info regards matching L2 header using negative offsets # tc filter add dev eth0 parent 1:0 prio 5 protocol 802.1q u32 tc filter add dev eth0 parent 1:0 prio 5 handle 2: protocol 802.1q u32 divisor 256 tc filter add dev eth0 protocol 802.1q parent 1:0 prio 5 u32 ht 800:: match ip src 0.0.0.0/0 hashkey mask 0x000000ff at -8 link 2: tc filter add dev eth0 parent 1:0 prio 5 handle 200: protocol 802.1q u32 divisor 256 tc filter add dev eth0 protocol 802.1q parent 1:0 prio 5 u32 ht 2:0 match ip src 0.0.0.0/0 hashkey mask 0x0000ff00 at -8 link 200: tc filter add dev eth0 parent 1:0 prio 5 handle 201: protocol 802.1q u32 divisor 256 tc filter add dev eth0 protocol 802.1q parent 1:0 prio 5 u32 ht 2:1 match ip src 0.0.0.0/0 hashkey mask 0x0000ff00 at -8 link 201: tc filter add dev eth0 parent 1:0 prio 5 handle 202: protocol 802.1q u32 divisor 256 tc filter add dev eth0 protocol 802.1q parent 1:0 prio 5 u32 ht 2:2 match ip src 0.0.0.0/0 hashkey mask 0x0000ff00 at -8 link 202: tc filter add dev eth0 parent 1:0 prio 5 handle 203: protocol 802.1q u32 divisor 256 tc filter add dev eth0 protocol 802.1q parent 1:0 prio 5 u32 ht 2:3 match ip src 0.0.0.0/0 hashkey mask 0x0000ff00 at -8 link 203: tc filter add dev eth0 parent 1:0 prio 5 handle 204: protocol 802.1q u32 divisor 256 tc filter add dev eth0 protocol 802.1q parent 1:0 prio 5 u32 ht 2:4 match ip src 0.0.0.0/0 hashkey mask 0x0000ff00 at -8 link 204: tc filter add dev eth0 parent 1:0 prio 5 handle 205: protocol 802.1q u32 divisor 256 tc filter add dev eth0 protocol 802.1q parent 1:0 prio 5 u32 ht 2:5 match ip src 0.0.0.0/0 hashkey mask 0x0000ff00 at -8 link 205: tc filter add dev eth0 parent 1:0 prio 5 handle 206: protocol 802.1q u32 divisor 256 tc filter add dev eth0 protocol 802.1q parent 1:0 prio 5 u32 ht 2:6 match ip src 0.0.0.0/0 hashkey mask 0x0000ff00 at -8 link 206: tc filter add dev eth0 parent 1:0 prio 5 handle 207: protocol 802.1q u32 divisor 256 tc filter add dev eth0 protocol 802.1q parent 1:0 prio 5 u32 ht 2:7 match ip src 0.0.0.0/0 hashkey mask 0x0000ff00 at -8 link 207: ... # # eth1 - filter ingress trafic on SRC MAC # Step 1, build 1st level hash table using last byte in MAC address as lookup key # Step 2, build 2nd level hash tables using 2nd to last byte in MAC address as lookup key # # See http://www.docum.org/docum.org/faq/cache/62.html for info regards matching L2 header using negative offsets # tc filter add dev eth1 parent 1:0 prio 5 protocol 802.1q u32 tc filter add dev eth1 parent 1:0 prio 5 handle 2: protocol 802.1q u32 divisor 256 tc filter add dev eth1 protocol 802.1q parent 1:0 prio 5 u32 ht 800:: match ip src 0.0.0.0/0 hashkey mask 0x00ff0000 at -12 link 2: tc filter add dev eth1 parent 1:0 prio 5 handle 200: protocol 802.1q u32 divisor 256 tc filter add dev eth1 protocol 802.1q parent 1:0 prio 5 u32 ht 2:0 match ip src 0.0.0.0/0 hashkey mask 0xff000000 at -12 link 200: tc filter add dev eth1 parent 1:0 prio 5 handle 201: protocol 802.1q u32 divisor 256 tc filter add dev eth1 protocol 802.1q parent 1:0 prio 5 u32 ht 2:1 match ip src 0.0.0.0/0 hashkey mask 0xff000000 at -12 link 201: tc filter add dev eth1 parent 1:0 prio 5 handle 202: protocol 802.1q u32 divisor 256 tc filter add dev eth1 protocol 802.1q parent 1:0 prio 5 u32 ht 2:2 match ip src 0.0.0.0/0 hashkey mask 0xff000000 at -12 link 202: tc filter add dev eth1 parent 1:0 prio 5 handle 203: protocol 802.1q u32 divisor 256 tc filter add dev eth1 protocol 802.1q parent 1:0 prio 5 u32 ht 2:3 match ip src 0.0.0.0/0 hashkey mask 0xff000000 at -12 link 203: tc filter add dev eth1 parent 1:0 prio 5 handle 204: protocol 802.1q u32 divisor 256 tc filter add dev eth1 protocol 802.1q parent 1:0 prio 5 u32 ht 2:4 match ip src 0.0.0.0/0 hashkey mask 0xff000000 at -12 link 204: tc filter add dev eth1 parent 1:0 prio 5 handle 205: protocol 802.1q u32 divisor 256 tc filter add dev eth1 protocol 802.1q parent 1:0 prio 5 u32 ht 2:5 match ip src 0.0.0.0/0 hashkey mask 0xff000000 at -12 link 205: tc filter add dev eth1 parent 1:0 prio 5 handle 206: protocol 802.1q u32 divisor 256 tc filter add dev eth1 protocol 802.1q parent 1:0 prio 5 u32 ht 2:6 match ip src 0.0.0.0/0 hashkey mask 0xff000000 at -12 link 206: tc filter add dev eth1 parent 1:0 prio 5 handle 207: protocol 802.1q u32 divisor 256 tc filter add dev eth1 protocol 802.1q parent 1:0 prio 5 u32 ht 2:7 match ip src 0.0.0.0/0 hashkey mask 0xff000000 at -12 link 207: ... # Create a queue for each customer and assign their devices to it # filtered client 1 - 2Mb tc class add dev eth0 parent 1:0 classid 1:1000 htb rate 2097152 ceil 2097152 burst 16k prio 5 tc class add dev eth1 parent 1:0 classid 1:1000 htb rate 2097152 ceil 2097152 burst 16k prio 5 tc filter add dev eth0 protocol 802.1q parent 1:0 prio 5 u32 ht 220:12 match u32 0xb88d1214 0xffffffff at -8 match u16 0x3dae 0xffff at -4 flowid 1:1000 tc filter add dev eth1 protocol 802.1q parent 1:0 prio 5 u32 ht 220:12 match u32 0x12143dae 0xffffffff at -12 match u16 0xb88d 0xffff at -14 flowid 1:1000 # filtered client - 10 Mb ( 2 MAC ) tc class add dev eth0 parent 1:0 classid 1:1131 htb rate 10240000 ceil 10240000 burst 16k prio 5 tc class add dev eth1 parent 1:0 classid 1:1131 htb rate 10240000 ceil 10240000 burst 16k prio 5 tc filter add dev eth0 protocol 802.1q parent 1:0 prio 5 u32 ht 237:7b match u32 0x68967b25 0xffffffff at -8 match u16 0x2659 0xffff at -4 flowid 1:1131 tc filter add dev eth1 protocol 802.1q parent 1:0 prio 5 u32 ht 237:7b match u32 0x7b252659 0xffffffff at -12 match u16 0x6896 0xffff at -14 flowid 1:1131 tc filter add dev eth0 protocol 802.1q parent 1:0 prio 5 u32 ht 340:c4 match u32 0x68a3c48c 0xffffffff at -8 match u16 0x5166 0xffff at -4 flowid 1:1131 tc filter add dev eth1 protocol 802.1q parent 1:0 prio 5 u32 ht 340:c4 match u32 0xc48c5166 0xffffffff at -12 match u16 0x68a3 0xffff at -14 flowid 1:1131 .... beaucoup beaucoup plus .. Thomas On 7 Jun 2013, at 14:03, Antoine Durant <antoine.duran...@yahoo.fr> wrote: > Pas bête... Et comment cela se présente t'il ? > > Peux-tu expliquer plus en détail la configuration STP ? > > Merci > > > ________________________________ > De : Thomas Mangin <thomas.man...@exa-networks.co.uk> > À : frnog-ow...@frnog.org; Antoine Durant <antoine.duran...@yahoo.fr> > Cc : "frnog-t...@frnog.org" <frnog-t...@frnog.org> > Envoyé le : Vendredi 7 juin 2013 14h34 > Objet : Re: [FRnOG] [TECH] trafic shaping sur linux > > > Pour une solution on nous limitons environ 1000 clients a quelques Mb chacun > avec TC (pas d'IGP ou EGP sur la machine, juste une passerelle "transparente") > Nous utilisons une hash lookup table de deux niveaux sur les adresses MAC. > > Facile : seulement une fois que tu as un script qui génère la configuration > Fiable: oui, si les règles sont bien conçues. > > Thomas > > On 7 Jun 2013, at 09:58, Antoine Durant <antoine.duran...@yahoo.fr> wrote: > >> Bonjour, >> >> Une petite question concernant le trafic shaping avec TC sous Linux... >> >> Parmi-vous, est-ce que vous implantez le trafic shaping sur vos routeurs BGP >> (quagga par exemple) ? >> Facile en mettre en œuvre, fiable ? Cela bouffe t’il beaucoup de ressource >> machine ? >> >> Je pense utiliser tc qdisc/tc class couplé à iptables (mangle/POSTROUTING) >> avec CLASSIFY afin de matcher sur mes classid du tc class. >> >> J’attends vos retours d’expérience avec impatience et voir même quelque >> petit exemple de config si vous en avez sous la main… >> A++ >> --------------------------- >> Liste de diffusion du FRnOG >> http://www.frnog.org/ >> > > > --------------------------- > Liste de diffusion du FRnOG > http://www.frnog.org/ > --------------------------- > Liste de diffusion du FRnOG > http://www.frnog.org/ > --------------------------- Liste de diffusion du FRnOG http://www.frnog.org/