Op verzoek van Nelske, een leuk CBQ probleem 
(anderen mogen ook helpen hoor
)
Ik heb een proefopstelling gemaakt in mijn netwerk met een intern en een extern netwerk, dat ziet er ongeveer als volgt uit:
Ik heb kernel 2.4.14 draaien en gebruik iptables om te masquereren van het interne naar het externe subnet. Op zich is dat niet nodig, maar het is om de toekomstige situatie te simuleren dat de server een internet verbinding gaat delen.
Ik gebruik het iptables script van Monmotha. Dit werkt verder prima.
Nu wil ik graag ervoor zorgen dat 1 host van het interne netwerk geknepen wordt, de client 192.168.0.66. Ik heb de Advanced Routing Howto gelezen en me vooral geconcentreerd op pagina 9.
Ik heb het voorbeeldscript wat daar staat aangepast op mijn situatie en dat werkt op zich heel aardig: de downstream wordt keurig geknepen tot 64Kbit (in dit voorbeeld).
Het probleem wat ik heb is dat ik de upstream niet geknepen krijg. Ik vermoed dat dit te maken heeft met het maskeren van de IP adressen.
Het script:
Ik heb dus eerst een queue aangemaakt op eth1 die al het verkeer naar 192.168.0.66 knijpt (downstream) en dat werkt prima, maar als ik op eth0 een queue aanmaak die het verkeer knijpt wat komt van 192.168.0.66 (upstream) dan gaat het mis.
Ik dacht daarna, moet ik misschien alleen op eth1 blijven werken? Misschien moet ik op eth1 nog een klasse aanmaken, maar dat kan niet, dan zegt ie 'file exists'.
Ik heb ook geprobeerd nog een extra queue aan te maken op eth1 en daar te matchen op de source van 192.168.0.66:
De uploads lijken nu wel ietsjes trager te gaan dan normaal: iets van 300 KB/s ipv 900 KB/s, maar dat kan ook komen doordat hij meer CPU tijd nodig heeft.
Wie kan mij helpen? Ik hoop dat ik het probleem een beetje duidelijk heb uitgelegd? Alvast bedankt voor de reacties.
(anderen mogen ook helpen hoor
Ik heb een proefopstelling gemaakt in mijn netwerk met een intern en een extern netwerk, dat ziet er ongeveer als volgt uit:
code:
1
2
3
4
| extern eth0 10.0.0.106 intern eth1 192.168.0.1 client 192.168.0.66 |
Ik heb kernel 2.4.14 draaien en gebruik iptables om te masquereren van het interne naar het externe subnet. Op zich is dat niet nodig, maar het is om de toekomstige situatie te simuleren dat de server een internet verbinding gaat delen.
Ik gebruik het iptables script van Monmotha. Dit werkt verder prima.
Nu wil ik graag ervoor zorgen dat 1 host van het interne netwerk geknepen wordt, de client 192.168.0.66. Ik heb de Advanced Routing Howto gelezen en me vooral geconcentreerd op pagina 9.
Ik heb het voorbeeldscript wat daar staat aangepast op mijn situatie en dat werkt op zich heel aardig: de downstream wordt keurig geknepen tot 64Kbit (in dit voorbeeld).
Het probleem wat ik heb is dat ik de upstream niet geknepen krijg. Ik vermoed dat dit te maken heeft met het maskeren van de IP adressen.
Het script:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| # setup Traffic control:
tc qdisc add dev eth1 root handle 10: cbq bandwidth 10Mbit avpkt 1000
# Nu de rootclass definieren waarvan de andere klassen worden afgeleid:
tc class add dev eth1 parent 10:0 classid 10:1 cbq bandwidth 10Mbit rate \
10Mbit allot 1514 weight 1Mbit prio 8 maxburst 20 avpkt 1000
# Definieer nu de eerste klasse met een bandbreedte van 64 kbit
tc class add dev eth1 parent 10:1 classid 10:100 cbq bandwidth 10Mbit rate \
64Kbit allot 1514 weight 4Kbit prio 5 maxburst 20 avpkt 1000 \
bounded
# Geef nu aan hoe de queues moeten worden behandeld
tc qdisc add dev eth1 parent 10:100 sfq quantum 1514b perturb 15
# Tenslotte welke ipadressen moeten van welke queue gebruik maken
tc filter add dev eth1 parent 10:0 protocol ip prio 100 u32 match ip dst \
192.168.0.66 flowid 10:100
############ UPLOAD: ############
# setup Traffic control:
tc qdisc add dev eth0 root handle 20: cbq bandwidth 10Mbit avpkt 1000
# Nu de rootclass definieren waarvan de andere klassen worden afgeleid:
tc class add dev eth0 parent 20:0 classid 20:1 cbq bandwidth 10Mbit rate \
10Mbit allot 1514 weight 1Mbit prio 8 maxburst 20 avpkt 1000
# Definieer nu de eerste klasse
tc class add dev eth0 parent 20:1 classid 20:100 cbq bandwidth 10Mbit rate \
32Kbit allot 1514 weight 2Kbit prio 5 maxburst 20 avpkt 1000 \
bounded
# Geef nu aan hoe de queues moeten worden behandeld
tc qdisc add dev eth0 parent 20:100 sfq quantum 1514b perturb 15
# Tenslotte welke ipadressen moeten van welke queue gebruik maken
tc filter add dev eth0 parent 20:0 protocol ip prio 100 u32 match ip src \
192.168.0.66 flowid 20:100 |
Ik heb dus eerst een queue aangemaakt op eth1 die al het verkeer naar 192.168.0.66 knijpt (downstream) en dat werkt prima, maar als ik op eth0 een queue aanmaak die het verkeer knijpt wat komt van 192.168.0.66 (upstream) dan gaat het mis.
Ik dacht daarna, moet ik misschien alleen op eth1 blijven werken? Misschien moet ik op eth1 nog een klasse aanmaken, maar dat kan niet, dan zegt ie 'file exists'.
Ik heb ook geprobeerd nog een extra queue aan te maken op eth1 en daar te matchen op de source van 192.168.0.66:
code:
1
2
3
4
5
6
7
8
9
| # Definieer nu de tweede klasse met een bandbreedte van 64 kbit
tc class add dev eth1 parent 10:1 classid 10:200 cbq bandwidth 10Mbit rate \
64Kbit allot 1514 weight 4Kbit prio 5 maxburst 20 avpkt 1000 \
bounded
tc qdisc add dev eth1 parent 10:200 sfq quantum 1514b perturb 15
tc filter add dev eth1 parent 10:0 protocol ip prio 100 u32 match ip src \
192.168.0.66 flowid 10:200 |
De uploads lijken nu wel ietsjes trager te gaan dan normaal: iets van 300 KB/s ipv 900 KB/s, maar dat kan ook komen doordat hij meer CPU tijd nodig heeft.
Wie kan mij helpen? Ik hoop dat ik het probleem een beetje duidelijk heb uitgelegd? Alvast bedankt voor de reacties.
MY Systemconfiguration: 10fingers@5chars/s; 2legs@5km/h; 1mouth@14k4; 2ears@18Khz; 2eyes@-6&-7