--- Andy Furniss <andy.furniss@xxxxxxxxxxxxx> escribió: > Ricardo Soria wrote: > > Dear list: > > > > I have a problem I cannot handle yet, and need to > > solve it as soon as possible. Would be very > greatful > > with anybody who can help me. > > > > I have a 512/512 link to internet, that I want to > > share between several computers. I have eth0, > with a > > public IP address, conected to Internet, and also, > > eth1, with a private IP address, for network with > the > > surfing computers. I have a main class with the > whole > > 512kbit, then 2 child classes in this way (you can > see > > the complete script at the end): > > > > class 1: rate = ceil = 64kbit, prio 0, for VOIP > > class 2: rate = ceil = 448kbit, for SURFING > > > > Class 2 is subdivided again in about 20 classes, > for > > 20 surfing computers, this way: > > > > class 3: rate = 18kbit, ceil = 448kbit, prio 1, > SURF > > > > I have a classical problem (I think). As you can > see, > > first 64kbit are for VOIP, so, it is necesary the > best > > quality, and the minimal delays. 64Kbit is pretty > > enough for 1 VOIP channel (it is supposed to > really > > use no more than 20kbit). And also, the 64kbit > class > > has the highest priority. Nevertheless, specially > > when all 20 users are surfing, or some user are > > browsing weight pages, or when 2 or more users are > > downloading at the same time, I cannot get VOIP to > > work properly, because quality becomes very poor. > I > > have made all kind of imaginable test, probes and > > combinations, trying to test with different burst > > values for classes, attaching sfq qdiscs to all > leaf > > classes, then only to surfing classes, then only > to > > VOIP classes, and even, gaming with R2Q/Quantums, > that > > would not be necessary, because 64Kbit is very > more > > than enough. > > > > So please, does anyone have any idea how to > completely > > separate VOIP and SURFING, making 2 independent > > channels, without one service affect to other ?? > > > > Very thanks in advance. > > > > If you are still able to read, after having read > all > > this stuff, here goes my script as is now... > > > > Best Regards to everybody. > > > > Ricardo. > > > > ================================================ > > > > #!/bin/bash > > > > tc qdisc add dev eth1 root handle 1: htb default > 121 > > r2q 1 > > tc qdisc add dev eth0 root handle 1: htb default > 20 > > r2q 5 > > > > tc class add dev eth1 parent 1: classid 1:1 htb > rate > > 512kbit ceil 512kbit > > tc class add dev eth0 parent 1: classid 1:1 htb > rate > > 512kbit ceil 512kbit > > > > tc class add dev eth1 parent 1:1 classid 1:10 htb > rate > > 64kbit ceil 64kbit prio 0 > > tc class add dev eth0 parent 1:1 classid 1:10 htb > rate > > 64kbit ceil 64kbit prio 0 > > > > tc class add dev eth1 parent 1:1 classid 1:20 htb > rate > > 448kbit ceil 448kbit prio 1 > > tc class add dev eth0 parent 1:1 classid 1:20 htb > rate > > 448kbit ceil 448kbit prio 1 > > > > # PER MACHINE OR IP CLASSES > > > > tc class add dev eth1 parent 1:20 classid 1:90 htb > > rate 18kbit ceil 448kbit prio 1 > > tc class add dev eth1 parent 1:20 classid 1:91 htb > > rate 18kbit ceil 448kbit prio 1 > > tc class add dev eth1 parent 1:20 classid 1:101 > htb > > rate 18kbit ceil 448kbit prio 1 > > tc class add dev eth1 parent 1:20 classid 1:102 > htb > > rate 18kbit ceil 448kbit prio 1 > > tc class add dev eth1 parent 1:20 classid 1:103 > htb > > rate 18kbit ceil 448kbit prio 1 > > tc class add dev eth1 parent 1:20 classid 1:104 > htb > > rate 18kbit ceil 448kbit prio 1 > > tc class add dev eth1 parent 1:20 classid 1:105 > htb > > rate 18kbit ceil 448kbit prio 1 > > tc class add dev eth1 parent 1:20 classid 1:106 > htb > > rate 18kbit ceil 448kbit prio 1 > > tc class add dev eth1 parent 1:20 classid 1:107 > htb > > rate 18kbit ceil 448kbit prio 1 > > tc class add dev eth1 parent 1:20 classid 1:108 > htb > > rate 18kbit ceil 448kbit prio 1 > > tc class add dev eth1 parent 1:20 classid 1:109 > htb > > rate 18kbit ceil 448kbit prio 1 > > tc class add dev eth1 parent 1:20 classid 1:110 > htb > > rate 18kbit ceil 448kbit prio 1 > > tc class add dev eth1 parent 1:20 classid 1:111 > htb > > rate 18kbit ceil 448kbit prio 1 > > tc class add dev eth1 parent 1:20 classid 1:112 > htb > > rate 18kbit ceil 448kbit prio 1 > > tc class add dev eth1 parent 1:20 classid 1:113 > htb > > rate 18kbit ceil 448kbit prio 1 > > tc class add dev eth1 parent 1:20 classid 1:114 > htb > > rate 18kbit ceil 448kbit prio 1 > > tc class add dev eth1 parent 1:20 classid 1:115 > htb > > rate 18kbit ceil 448kbit prio 1 > > tc class add dev eth1 parent 1:20 classid 1:116 > htb > > rate 18kbit ceil 448kbit prio 1 > > tc class add dev eth1 parent 1:20 classid 1:117 > htb > > rate 18kbit ceil 448kbit prio 1 > > tc class add dev eth1 parent 1:20 classid 1:118 > htb > > rate 18kbit ceil 448kbit prio 1 > > tc class add dev eth1 parent 1:20 classid 1:119 > htb > > rate 18kbit ceil 448kbit prio 1 > > tc class add dev eth1 parent 1:20 classid 1:120 > htb > > rate 18kbit ceil 448kbit prio 1 > > tc class add dev eth1 parent 1:20 classid 1:121 > htb > > rate 18kbit ceil 448kbit prio 1 > > > > # SFQ QDISCS PER LEAF CLASS > > > > # VOIP > > tc qdisc add dev eth0 parent 1:10 handle 10: sfq > > perturb 10 > > tc qdisc add dev eth0 parent 1:20 handle 20: sfq > > perturb 10 > > > > #SURFING > > tc qdisc add dev eth1 parent 1:10 handle 10: sfq > > perturb 10 > > tc qdisc add dev eth1 parent 1:90 handle 90: sfq > > perturb 10 > > tc qdisc add dev eth1 parent 1:91 handle 91: sfq > > perturb 10 > > tc qdisc add dev eth1 parent 1:101 handle 101: sfq > > perturb 10 > > tc qdisc add dev eth1 parent 1:102 handle 102: sfq > > perturb 10 > > tc qdisc add dev eth1 parent 1:103 handle 103: sfq > > perturb 10 > > tc qdisc add dev eth1 parent 1:104 handle 104: sfq > > perturb 10 > > tc qdisc add dev eth1 parent 1:105 handle 105: sfq > > perturb 10 > > tc qdisc add dev eth1 parent 1:106 handle 106: sfq > > perturb 10 > > tc qdisc add dev eth1 parent 1:107 handle 107: sfq > > perturb 10 > > tc qdisc add dev eth1 parent 1:108 handle 108: sfq > > perturb 10 > > tc qdisc add dev eth1 parent 1:109 handle 109: sfq > > perturb 10 > > tc qdisc add dev eth1 parent 1:110 handle 110: sfq > > perturb 10 > > tc qdisc add dev eth1 parent 1:111 handle 111: sfq > > perturb 10 > > tc qdisc add dev eth1 parent 1:112 handle 112: sfq > > perturb 10 > > tc qdisc add dev eth1 parent 1:113 handle 113: sfq > > perturb 10 > > tc qdisc add dev eth1 parent 1:114 handle 114: sfq > > perturb 10 > > tc qdisc add dev eth1 parent 1:115 handle 115: sfq > > perturb 10 > > tc qdisc add dev eth1 parent 1:116 handle 116: sfq > > perturb 10 > > tc qdisc add dev eth1 parent 1:117 handle 117: sfq > > perturb 10 > > tc qdisc add dev eth1 parent 1:118 handle 118: sfq > > perturb 10 > > tc qdisc add dev eth1 parent 1:119 handle 119: sfq > > perturb 10 > > tc qdisc add dev eth1 parent 1:120 handle 120: sfq > > perturb 10 > > tc qdisc add dev eth1 parent 1:121 handle 121: sfq > > perturb 10 > > > > # FILTERS > > > > # VOIP > > tc filter add dev eth0 protocol ip parent 1:0 prio > 0 > > u32 match ip src 216.118.226.244 flowid 1:10 > > tc filter add dev eth1 protocol ip parent 1:0 prio > 0 > > u32 match ip dst 216.118.226.244 flowid 1:10 > > > > # SURFING > > tc filter add dev eth1 protocol ip parent 1:0 prio > 1 > > u32 match ip dst 192.168.0.2 flowid 1:90 > > tc filter add dev eth1 protocol ip parent 1:0 prio > 1 > > u32 match ip dst 192.168.0.3 flowid 1:91 > > tc filter add dev eth1 protocol ip parent 1:0 prio > 1 > > u32 match ip dst 192.168.0.101 flowid 1:101 > > tc filter add dev eth1 protocol ip parent 1:0 prio > 1 > > u32 match ip dst 192.168.0.102 flowid 1:102 > > tc filter add dev eth1 protocol ip parent 1:0 prio > 1 > > u32 match ip dst 192.168.0.103 flowid 1:103 > > tc filter add dev eth1 protocol ip parent 1:0 prio > 1 > > u32 match ip dst 192.168.0.104 flowid 1:104 > > tc filter add dev eth1 protocol ip parent 1:0 prio > 1 > > u32 match ip dst 192.168.0.105 flowid 1:105 > > tc filter add dev eth1 protocol ip parent 1:0 prio > 1 > > u32 match ip dst 192.168.0.106 flowid 1:106 > > tc filter add dev eth1 protocol ip parent 1:0 prio > 1 > > u32 match ip dst 192.168.0.107 flowid 1:107 > > tc filter add dev eth1 protocol ip parent 1:0 prio > 1 > > u32 match ip dst 192.168.0.108 flowid 1:108 > > tc filter add dev eth1 protocol ip parent 1:0 prio > 1 > > u32 match ip dst 192.168.0.109 flowid 1:109 > > tc filter add dev eth1 protocol ip parent 1:0 prio > 1 > > u32 match ip dst 192.168.0.110 flowid 1:110 > > tc filter add dev eth1 protocol ip parent 1:0 prio > 1 > > u32 match ip dst 192.168.0.111 flowid 1:111 > > tc filter add dev eth1 protocol ip parent 1:0 prio > 1 > > u32 match ip dst 192.168.0.112 flowid 1:112 > > tc filter add dev eth1 protocol ip parent 1:0 prio > 1 > > u32 match ip dst 192.168.0.113 flowid 1:113 > > tc filter add dev eth1 protocol ip parent 1:0 prio > 1 > > u32 match ip dst 192.168.0.114 flowid 1:114 > > tc filter add dev eth1 protocol ip parent 1:0 prio > 1 > > u32 match ip dst 192.168.0.115 flowid 1:115 > > tc filter add dev eth1 protocol ip parent 1:0 prio > 1 > > u32 match ip dst 192.168.0.116 flowid 1:116 > > tc filter add dev eth1 protocol ip parent 1:0 prio > 1 > > u32 match ip dst 192.168.0.117 flowid 1:117 > > tc filter add dev eth1 protocol ip parent 1:0 prio > 1 > > u32 match ip dst 192.168.0.118 flowid 1:118 > > tc filter add dev eth1 protocol ip parent 1:0 prio > 1 > > u32 match ip dst 192.168.0.119 flowid 1:119 > > tc filter add dev eth1 protocol ip parent 1:0 prio > 1 > > u32 match ip dst 192.168.0.120 flowid 1:120 > > > > # END > > > I haven't read the script properly, but generally > three points come to mind. > > You need to back off more from link speed - total > ceils to about 80% and > share that between interactive and bulk. > > SFQ default queue length is too long to be used as > you want - use esfq > or change the length to 16 in the source code (see > www.docum.org FAQs). > > You should really only send bulk to SFQ - It will > behave better than a > fifo if you mix traffic - but at the low rates you > set it will still > cause too much delay for interactive (small > UDP/TCP). > > Andy. > > > Dear Andy: Very thanks for your answer. However, I need a little bit more extended explanation. First, you say that I should "back off more from link speed - total ceils to about 80% and share that between interactive and bulk". So, do you mean that if I have a total 512Kbit link, and 2 child classes, I should not divide the whole 512kbit between the 2 classes, but, I should only divide 410kbit between them, and share the remaining 102kbit between them?? Or do you mean I should only consider 410kbit as the whole link capacity?? Second, you say that I should not use SFQ as a sub-qdisc, because of the lenght of the queue, being it ESFQ (new for me) a better choice. But later, you say I should use SFQ for bulk traffic (I think you refer surfing as "bulk", and voip as "interactive"). So, should I use SFQ for bulk classes and ESFQ for interactive classes ?? Or, should I use ESFQ for all leaf classes?? Or, should I use ESFQ for bulk classes and default (pfifo, I think) for interactive classes?? Very thanks for your help. Best Regards. Ricardo. _________________________________________________________ Do You Yahoo!? Información de Estados Unidos y América Latina, en Yahoo! Noticias. Visítanos en http://noticias.espanol.yahoo.com _______________________________________________ LARTC mailing list / LARTC@xxxxxxxxxxxxxxx http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/