[BC3] Iemand ervaring met shapen van Incoming Traffic?

Pagina: 1
Acties:
  • 274 views sinds 30-01-2008
  • Reageer

  • Red devil
  • Registratie: December 1999
  • Laatst online: 08:59
Ik krijg straks kabelmodem en wil de traffic van bepaalde clients lekker shapen! :P

Ik gebruik hiervoor Rshaper
te vinden op: http://freshmeat.net/projects/rshaper/

Hiervoor moest ik de source van mijn 3c59x (3com) kaart veranderen, dat is gelukt, althans make modules / modules_install gaf geen foutmeldingen.

Echter het werkt nog niet, eigenlijk zou ik het liefst door willen gaan met Rshaper maar als er makkelijker manieren zijn om naar Rome te komen dan sta ik daar ook open voor!

Anyone??
Alvast bedankt!

  • Red devil
  • Registratie: December 1999
  • Laatst online: 08:59
Nobody??

Verwijderd

Ik had eerlijk gezegd hier nog nooit van gehoord. Het klinkt wel handig, hoewel ik het voor mezelf niet echt nodig vind. Waarom zou je internet traffic willen afkappen na een bepaald limiet? Zoals Freshmeat.net al duidelijk aangeeft is het handig voor ISPs. Ik weet niet hoeveel programma''s hiervoor te verkrijgen zijn, maar ik heb het nog nooit eerder gezien, dus ik zou zeggen nog even doorzetten als het zonodig moet :P

Verwijderd

Dit soort dingen zitten al standaard in de kernel. Is alleen een kwestie van meebakken erin.

Het heet o.a. Class Based Queuing (CBQ).
Ik zou zeggen lees de advandced routing HOWTO eens door

[edit]
Oeps ik zie nu pas dat het om incomming traffic gaat en niet om outgoing traffic.
Bovenstaand verhaal geld namelijk voor outgoing traffic.
Ik zou zo niet weten waarom je incomming trafic zou willen beperken, terwijl dit in de meeste programma''s (lees servers zoals ftp-server, www-server etc) al kan

  • Red devil
  • Registratie: December 1999
  • Laatst online: 08:59
Op donderdag 01 maart 2001 18:05 schreef nelske het volgende:
Dit soort dingen zitten al standaard in de kernel. Is alleen een kwestie van meebakken erin.

Het heet o.a. Class Based Queuing (CBQ).
Ik zou zeggen lees de advandced routing HOWTO eens door

[edit]
Oeps ik zie nu pas dat het om incomming traffic gaat en niet om outgoing traffic.
Bovenstaand verhaal geld namelijk voor outgoing traffic.
Ik zou zo niet weten waarom je incomming trafic zou willen beperken, terwijl dit in de meeste programma''s (lees servers zoals ftp-server, www-server etc) al kan
10 punten!
Just to get things straight, ik beheer straks een kabelmodem internet verbinding die wordt gedeeld door 10 man (ja 10 man)
Daarom wil ik bepaalde personen die anders te veel trekken even afknijpen.

Het programma werkt trouwens! Ik had het verkeerd gelezen!! Het werkt namelijk op de upload van je clients en niet de download!!
Gisteren even getest, je kunt bijv gewoon instellen dat je maar met 2 k kunt uploaden naar de server.

ff getest en ik kreeg dit:
met 1500 bytes upload kon je nog met 100k/s downloaden
met 1000 bytes upload nog 70k/s

70k/s is te veel! >:)
Aangezien ik BOFH ben en volgens @home 16.1 k download breedband is wil ik ook nog eens de download traffic shapen,
als ik het goed begrijp kan dat met dat CBQ??
Dan zal ik dat nog even beter bekijken!
Alvast bedankt!

Verwijderd

Zoek even bij FreshMeat op ''traffic shaping'', kom je interessante dingen tegen.

Schijnt trouwens dat in kernel 2.4 daar hele aardige dingen voor ingebakken zitten.

  • Red devil
  • Registratie: December 1999
  • Laatst online: 08:59
Op vrijdag 02 maart 2001 12:53 schreef TCT_Nexus het volgende:
Zoek even bij FreshMeat op ''traffic shaping'', kom je interessante dingen tegen.

Schijnt trouwens dat in kernel 2.4 daar hele aardige dingen voor ingebakken zitten.
Thanx, maar ik draai nog met 2.2.18 en daar zit ik nog wel even aan vast.
Versvlees had ik al ontdekt, en 1 van die progjes (zie mijn 1e posting) gebruik ik dus nu ook, alleen die is alleen bedoeld voor het shapen van de upload van de users.
Nu nog de download, ik heb al flink wat paperassen uitgeprint over CBQ (ofzoiets)
dat schijnt standaard in kernel 2.2 te zitten. Daar ga ik even verder mee werken.

  • Red devil
  • Registratie: December 1999
  • Laatst online: 08:59
Op donderdag 01 maart 2001 18:05 schreef nelske het volgende:Oeps ik zie nu pas dat het om incomming traffic gaat en niet om outgoing traffic.
Bovenstaand verhaal geld namelijk voor outgoing traffic.
Ik zou zo niet weten waarom je incomming trafic zou willen beperken, terwijl dit in de meeste programma''s (lees servers zoals ftp-server, www-server etc) al kan
Nou ik snap wat je bedoelt, ik zou dus bijv mijn interne ftp/www server kunnen shapen maar als mensen via mijn server via ipchains het internet opgaan dan geldt die beperking natuurlijk niet meer... dan kunnen ze alsnog met >100k/s downloaden terwijl ik juist die stroom wil beperken, de upload lukt al, nu nog de download.. Maar zoals je al zei, CBQ moet dat kunnen dus dat zal ik dan maar even installeren. :)

Verwijderd

Je zou een aantal aliassen aan kunnen maken voor je interne netwerkkaart.

Dus verschillende IP nummers die allemaal uitkomen op dezelfde interne netwerkkaart.

Zeg dat je 3 virtuele IP-adressen aanmaakt op de intenrne netwerkkaart (zeg eth1): 192.168.1.1 192.168.2.1 192.168.3.1.

Deze laat je via CBQ "shapen".
Ofwel je verbind CBQ met eth1
tc qdisc add dev eth1 root handle 1: cbq bandwidth 10Mbit cell 8 avpkt 1000 mpu 64
Vervolgens maak je 3 klassen aan die je allemaal verschillende downloadsnelheids limieten geeft. Bijvoorbeeld
192.168.1.1 -> 10 Mbit
192.168.2.1 -> 5 Mbit
192.168.3.1 -> 1 Mbit
tc class add dev eth1 parent 1:0 classid 1:1 cbq bandwidth 10Mbit rate 10MBit avpkt 1000 prio 5 bounded isolated allot 1514 weight 1 maxburst 21

tc class add dev eth1 parent 1:0 classid 1:2 cbq bandwidth 10Mbit rate 5Mbit avpkt 1000 prio 5 bounded isolated allot 1514 weight 1 maxburst 21

tc class add dev eth1 parent 1:0 classid 1:3 cbq bandwidth 10Mbit rate 1Mbit avpkt 1000 prio 5 bounded isolated allot 1514 weight 1 maxburst 21
Nu nog het onderscheid maken tussen de verschillende trafic-stromen:
tc filter add dev eth1 parent 1:0 protocol ip prio 5 handle 1: u32 divisor 1

tc filter add dev eth1 parent 1:0 prio 5 u32 match ip src 192.168.1.1 flowid 1:1

tc filter add dev eth1 parent 1:0 prio 5 u32 match ip src 192.168.2.1 flowid 1:2

tc filter add dev eth1 parent 1:0 prio 5 u32 match ip src 192.168.3.1 flowid 1:3
Als je deze 3 IP-adressen nu als gateway adressen voor je interne clients gebruikt, betekent dat, dat hun download-snelheid wordt beperkt door bovenstaande opgegeven snelheden.

Het is dus een kwestie, van het aanpassen van de DHCP-server voor de verschillende clients die je hebt. Ze krijgen afhankelijk van in welke klasse ze zitten een bepaald gateway-IP toegewezen.
Let erop dat je dus ook je Ipchains regels zal moeten veranderen aan de bovenstaande IP''s.

Dit alles komt trouwens in aangepaste vorm uit bovenstaande HOWTO.
Laat ff weten of het een beetje lukt

  • wouzer
  • Registratie: Maart 2000
  • Niet online
Upload verkeer kun je wel inperken met trafficshapen. Zie onderstaande voorbeeld. Maar download verkeer beperken wordt wel moeilijk omdat je geen controle hebt over wat andere hosts naar JOU sturen. Voorbeeldje: Je kunt wel zelf bepalen hoeveel brieven je via de post verstuurt echter hoeveel brieven je krijgt heb je niet in de hand.

Voorbeeld upload beperking:
Uit mijn filewall script:

#!/bin/sh

CLIENTS="2 3 4 5 6 7"

## IP Masquerading ########

for I in $CLIENTS; do

$IPCHAINSBIN -A forward -j MASQ -s 192.168.1.$I/32 -m 0x$I

done

## Traffic shaping #########

# Configure queueing discipline
$TCBIN qdisc add dev $EXTERNALIF root handle 1: cbq bandwidth 128Kbit avpkt 1000

# Configure root class
$TCBIN class add dev $EXTERNALIF parent 1:0 classid 1:1 cbq bandwidth 128Kbit rate 128Kbit \
allot 1514 weight 12Kbit prio 8 maxburst 20 avpkt 1000

# Configure class divisions
$TCBIN class add dev $EXTERNALIF parent 1:1 classid 1:2 cbq bandwidth 128Kbit rate 32Kbit \
allot 1514 weight 4Kbit prio 8 maxburst 20 avpkt 1000 bounded

# configure ips for 40Kbit
for I in $CLIENTS; do

$TCBIN class add dev $EXTERNALIF parent 1:2 classid 1:1$I cbq bandwidth 128Kbit rate 32Kbit \
allot 1514 weight 2Kbit prio 5 maxburst 20 avpkt 1000 bounded
$TCBIN qdisc add dev $EXTERNALIF parent 1:1$I sfq quantum 1514b perturb 15
$TCBIN filter add dev $EXTERNALIF parent 1:0 protocol ip prio 100 handle $I fw classid 1:1$I

done
Ik beperk hier het verkeer van 6 clients tot elk 4KB/s maximaal. Zorg wel dat je de kernel op de juiste manier compileerd.

  • Red devil
  • Registratie: December 1999
  • Laatst online: 08:59
Op vrijdag 02 maart 2001 19:15 schreef nelske het volgende:
[break interessant verhaal]
[/break interessant verhaal]
Super!
Dit weekend probeer ik alles mooi draaiende te krijgen en komende week ga ik ''s avonds met CBQ aan de slag!

  • Red devil
  • Registratie: December 1999
  • Laatst online: 08:59
Op zaterdag 03 maart 2001 18:21 schreef wouzer het volgende:
[break ook een interessant verhaal]
[/break ook een interessant verhaal]
Topper, ik heb nu mijn upload verkeer geshaped met rshaper, mbv een module.
Zou jouw methode makkelijker werken?
Het gaat namelijk nu nog om 1 client, dus dat stop ik gewoon in rc.local

Bedankt voor de input! :)

Verwijderd

Op zaterdag 03 maart 2001 18:21 schreef wouzer het volgende:
Upload verkeer kun je wel inperken met trafficshapen. Zie onderstaande voorbeeld. Maar download verkeer beperken wordt wel moeilijk omdat je geen controle hebt over wat andere hosts naar JOU sturen. Voorbeeldje: Je kunt wel zelf bepalen hoeveel brieven je via de post verstuurt echter hoeveel brieven je krijgt heb je niet in de hand.
Als je via routing ervoor zorgt dat ie over het goede IP de pakketjes doorstuurt (zie bovenstaand verhaal), dan is het van de server uit gezien eerst pakketjes downloaden en vervolgens pakketjes doorsturen (lees uploaden) naar de clients. Als je deze laatste stroom beperkt, zoals boven beschreven staat, betekent dit, dat de clients de maximale snelheid zullen halen die opgegeven is voor hun klasse op de interne interface.

Mijn verhaal gaat dus volledig over de interne netwerkkaart (beter gezegd, de netwerkkaart in de server die verbonden is met het interne netwerk, voordat er mensen gaan zeuren:)) en niet over de externe netwerkkaart, waar jouw verhaal over gaat.

De server bepaalt nu (vanaf de clients gezien), de maximale download-snelheid.
Dit is dus ook gewooon upload verkeer vanuit de server gezien en aangezien je de server beperkt hebt in zijn snelheid, lijkt het voor de buitenwereld, alsof de interne clients zo "langzaam" zijn als de snelheid waarop je de interne kaart hebt afgeknepen voor de klasse waarin de client valt.

Zorg er natuurlijk wel voor, dat je inderdaad de juiste dingen in de kernel meecompileert, anders zal het niet werken.

Als je geen intern netwerk achter de server zou hebben, dan kan je inderdaad niet bepalen in welke mate de download beperkt zou moeten worden op bovenstaande manier

(overigens zit er in de nieuwe 2.4.x kernels ook een nieuwe manier om traffic te shapen, maar ik had begrepen, dat een nieuwe kernel niet van toepassing was)

  • Red devil
  • Registratie: December 1999
  • Laatst online: 08:59
ok!
Eerst richt ik me even op het CBQ gebeuren, ik heb daar namelijk meer dingetjes over gehoord.

Misschien moet ik eerst maar zeggen dat dit eigenlijk mijn eerste Linux projectje is, ik ben dus eigenlijk een newbie.

Ik heb nu mijn kernel opgenieuwd gecompileerd
(dat was 3 dagen geleden al reden voor een feestje :+ )
Ik heb advanced routing aangeklikt, zou ik nu al die toffe CBQ achtige opties erbij moeten krijgen? Ik ga er even mee prutsen!

  • Red devil
  • Registratie: December 1999
  • Laatst online: 08:59
Damn!

Als ik dit intik:
[root@CC87886-A /]# tc qdisc add dev eth1 root handle 1: cbq bandwidth 10Mbit cell 8 avpkt 1000 mpu 64
RTNETLINK answers: Invalid argument
[root@CC87886-A /]#
:'( foutmelding dus, heb ik dus toch niet goed mijn kernel gecompileerd?

  • Red devil
  • Registratie: December 1999
  • Laatst online: 08:59
Jo Nelske! Are u there? :)

  • wouzer
  • Registratie: Maart 2000
  • Niet online
Probeer onderstaande opties mee te linken in je kernel:

#
# QoS and/or fair queueing
#
CONFIG_NET_SCHED=y
CONFIG_NETLINK=y
CONFIG_RTNETLINK=y
CONFIG_NET_SCH_CBQ=y
# CONFIG_NET_SCH_CSZ is not set
CONFIG_NET_SCH_PRIO=y
# CONFIG_NET_SCH_RED is not set
CONFIG_NET_SCH_SFQ=y
# CONFIG_NET_SCH_TEQL is not set
# CONFIG_NET_SCH_TBF is not set
CONFIG_NET_QOS=y
CONFIG_NET_ESTIMATOR=y
CONFIG_NET_CLS=y
# CONFIG_NET_CLS_ROUTE4 is not set
CONFIG_NET_CLS_FW=y
CONFIG_NET_CLS_U32=y
# CONFIG_NET_CLS_RSVP is not set
# CONFIG_NET_CLS_RSVP6 is not set
# CONFIG_NET_CLS_POLICE is not set

  • Red devil
  • Registratie: December 1999
  • Laatst online: 08:59
Op zondag 04 maart 2001 18:43 schreef wouzer het volgende:
Probeer onderstaande opties mee te linken in je kernel:

#
# QoS and/or fair queueing
#
CONFIG_NET_SCHED=y
CONFIG_NETLINK=y
CONFIG_RTNETLINK=y
CONFIG_NET_SCH_CBQ=y
# CONFIG_NET_SCH_CSZ is not set
CONFIG_NET_SCH_PRIO=y
# CONFIG_NET_SCH_RED is not set
CONFIG_NET_SCH_SFQ=y
# CONFIG_NET_SCH_TEQL is not set
# CONFIG_NET_SCH_TBF is not set
CONFIG_NET_QOS=y
CONFIG_NET_ESTIMATOR=y
CONFIG_NET_CLS=y
# CONFIG_NET_CLS_ROUTE4 is not set
CONFIG_NET_CLS_FW=y
CONFIG_NET_CLS_U32=y
# CONFIG_NET_CLS_RSVP is not set
# CONFIG_NET_CLS_RSVP6 is not set
# CONFIG_NET_CLS_POLICE is not set
Jo Wouzer!

Hmmm hoe link ik dat? Ikwas een newbie!
Verder dan make menuconfig en dan dingen aanvinken kom ik eigenlijk niet...

Verwijderd

Hier bent ik:)

Je gaf zelf al het antwoord op je eigen vraag:). Inderdaad is je kernel niet goed geconfigureerd als ie bovenstaande foutmelding geeft.

Je moet inderdaad de door Wouzer genoemde onderdelen met "ja" beantwoorden tijdens het configureren van de kernel.
Als je het via "make menuconfig" doet i.p.v. "make config" zijn alle bovenstaande dingen te vinden in het submenu "Networking Options"->"QOS and farequeueing".

Daar komt een heel lijstje tevoorschijn. Als je in de help bij elk onderdeel kijkt dan zul je bovengenoemde namen terug herkennen. Die onderdelen moeten dus allemaal meegebakken worden in de kernel.

Dit zijn dus:
Qos and/or farequeueing
CBQ packet scheduler
The simplest PRIO pseudoscheduler
SFQ queue
QOS support
Rate estimator
Packet Classifier API
Routing table based classifier
Firewall based classifier
U32 classifier
Ingres traffic policing
verder moet je nog in het submenu "Networking Options" hetvolgende aan hebben staan.
Kernel/User netlink socket
Netlink device emulation
IP: aliasing support
In principe zou hij dan het bovenstaande probleemloos moeten doen:)

  • Red devil
  • Registratie: December 1999
  • Laatst online: 08:59
Op maandag 05 maart 2001 02:24 schreef nelske het volgende:
uitleg
Yeah, wouzer en nelske bedankt, mijn oog keek weer eens niet verder dan mijn neus, ik kon nog omlaag scrollen
|:(

stomstom! maar nu gaat het lukken, huppakee, make dep!
:)

  • Red devil
  • Registratie: December 1999
  • Laatst online: 08:59
Oh yeah! Net even ingelogd op ip van de te shapen client, vlug een download opgestart + een upload.

Afbeeldingslocatie: http://molgen.biol.rug.nl/test1.jpg

:) Plaatje zegt genoeg he?
Werkt perfect!

Verwijderd

Gefeliciteerd:)

Tja, werkt toch wel mooi he dat linux:)

  • Red devil
  • Registratie: December 1999
  • Laatst online: 08:59
Op maandag 05 maart 2001 22:16 schreef nelske het volgende:
Gefeliciteerd:)

Tja, werkt toch wel mooi he dat linux:)
:D inderdaad! bedankt he!
en wouzer natuurlijk ook!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 17-02 15:48

chem

Reist de wereld rond

kom ik ff kakken :p

ik ben errug onervaren met linux... maar wat ik dus wil (ietsjes anders dan bovenstaand) is dat als (!als) er 2 clients aan eht surfen zijn -> deel door 2. Zijn er 3 -> deel door 3.

Dus als je in je uppie zit wil ik bv. 50 kbps, maar met z''n 2-en 25 kbps. En dit liefst zo dynamies mogelijk...

wie helpt?

Klaar voor een nieuwe uitdaging.


Verwijderd

Als je onervaren bent met Linux is dit bijna een onmogelijke opgave om dit dynamisch te doen.

Ik zou zelf nog even na moeten denken hoe ik dit aan zou willen pakken. Ik zou hierbij denken om via een dhcp server op basis van het aantal leases te bepalen wat de download-snelheid moet zijn. Dat zal alleen niet meevallen, aangezien (voor zover ik weet) het (nog) niet mogelijk is om een clientside script uit te laten voeren door een DHCP-server, zodra iemand een IP aanvraagd. Mijn oplossing zou dan ik in iets liggen als een lexical scan door de file waarin alle leases bijgehouden worden en dan bepalen hoeveel leases er uit gegeven zijn en vervolgens op basis daarvan de bandbreedte via een script laten regelen. Deze scan laat je gewwon door een cronjob om de 5 minuten lopen ofzo

Verder kan je met een PDC (samba-tng of samba-2.2) in ieder geval wel server-side scripts naast client-side scripts uitvoeren.
Hiermee zou ik het dan denk ik ook op lossen.

Zoals je uit bovenstaand verhaal al kunt opmaken, is het geen gemakkelijke opgave om dit op een dynamische manier te doen.
Bij mijn weten zijn er ook geen kant en klare oplossingen voor.


Tja een niet dynamische oplossing is een stuk makkelijker. Dat is gewoon een script maken met de commando''s zoals ik ze in bovenstaand verhaal ook al gegeven heb, alleen dan met aangepaste snelheden natuurlijk.

Overigens is het al zo dat je linux-gatewaytje als het goed is al het uigaande verkeer enigszins evenredig verdeeld over de clients, als ze allemaal tegelijkertijd bezig zijn

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 17-02 15:48

chem

Reist de wereld rond

tsja, da''s nou jammer.. dhcp is nl. geen optie aangezien we elkaars http/ftp server gebruiken

het gaat er vooral om dat grote downloads de bandbreedte langdurig bezet houden.

weet je wellicht hoe ik met wget & cstream (of een andere combo) anders een download opstart met een beperkte bandbreedte? ik dacht aan wget ftp://host.com/path/file.dat | cstream -t 25k file.dat

in dat geval zou ik grote files via een PHP page kunnen toevoegen aan een queue, die evt. via crontabs kan lopen etc.. zo zou er middernacht een x aantal files gequeued kunnen worden!

maar dan blijft-ie gewoon op 50 kb doorpompen!

any help would be..... :)

Klaar voor een nieuwe uitdaging.


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 17-02 15:48

chem

Reist de wereld rond

okay, ''t kan met lukemftp:

/usr/local/bin/ftp -T get,10240 ftp://ftp.host.com/path/file.dat -o /tmp/autodl/michiel/myfile.dat

is een max snelheid van 10 kb/sec

Klaar voor een nieuwe uitdaging.


Verwijderd

Dynamisch? en niet alleen voor ftp, maar de bandbreedte in z''n algemeenheid?

Zo ja, dan graag meer info, aangezien ik dat wel interessant vind.

Ik kan op m''n ftp-server bijvoorbeeld ook wel klasses aanmaken voor verschillende clients en die dan een bepaalde bandbreedte geven, alleen gebeurt dit dan niet dynamisch

  • Red devil
  • Registratie: December 1999
  • Laatst online: 08:59
Kom ik ook ff kakken ;)

Er zal toch wel een maximum zijn aan het aantal mensen wat er van download?

Je had het over max 50k/s
met z''n 2en 25k/s elk
etc etc.

Stel het maximum is 5 man tegelijk (is 10k/s)
dan zou je bijv met CBQ een 1 grote class kunnen aanmaken en daar 50k/s aan toewijzen als bandbreedte, daaronder in die grote class 5 kleine maken.
Elke class stelt 1 client voor.
Elke class krijgt 10k/s als bandbreedte echter ze kunnen van elkaar lenen (zogenaamde bounded en niet bounded)

misschien dat dit werkt? en het is dynamisch ook.. Nelske wat denk jij??

Verwijderd

Yep dat kan zeer zeker wel, máár ik heb er nog geen positieve verhalen over gehoord of gelezen.

Er doen zich namelijk enkele problemen voor als je met een root-class gaat werken en enkele child-classes die mogen lenen van deze root class als er bandbreedte over is.

De eerste is de load die het legt op je servertje (tenminste als die niet te snel is).
Verder kan een child-class niet de volledige bandbreedte van de root-class gebruiken helaas!
lenen (borrowing) werkt slecht wanneer de verschillende stromen (zie bovenstaand verhaal) verschillende packet-groottes hebben.

Verder is het nog steeds niet dynamisch. Het enige dat je zo maakt is een "gegarandeerde" bandbreedte. Je zou zo dus wel bijvoorbeeld 3 klasses voor 3 clients aan kunnen maken, maar wat doe je als er een 4e client inlogt?

Voor zover ik weet ondersteund ALTQ/CBQ nog geen dynamische bandbreedte toekenning.

Er is wel een rfc over dynamische bandbreedte toekenning verschenen.
Voor degene die geïnteresseerd zijn heb ik even een linkje opgezocht van die rfc:
www.ietf.org/rfc/rfc2814.txt

  • Red devil
  • Registratie: December 1999
  • Laatst online: 08:59
Op vrijdag 06 april 2001 19:03 schreef nelske het volgende:
Yep dat kan zeer zeker wel, máár ik heb er nog geen positieve verhalen over gehoord of gelezen.

Er doen zich namelijk enkele problemen voor als je met een root-class gaat werken en enkele child-classes die mogen lenen van deze root class als er bandbreedte over is.
Sorry misschien was ik wat onduidelijk maar ik bedoelde dat de child classes van elkaar kunnen lenen. Als client 1, 2, 4 en 5 niet online zijn kan client 3 van 1, 2, 4 en 5 lenen. Dan heeft ie dus wel de juiste bandbreedte van 50k/s
De eerste is de load die het legt op je servertje (tenminste als die niet te snel is).
Hmmm ik gebruik ook CBQ (met een beetje lenen) op een p60 met kabelverbinding, zit de hele tijd in zijn neus te vreten volgens mij!
Verder kan een child-class niet de volledige bandbreedte van de root-class gebruiken helaas!
ziehierboven
lenen (borrowing) werkt slecht wanneer de verschillende stromen (zie bovenstaand verhaal) verschillende packet-groottes hebben.
Ja, je kunt dan toch bij de clients alles op bijv 1500 mtu zetten ofzo?
Verder is het nog steeds niet dynamisch. Het enige dat je zo maakt is een "gegarandeerde" bandbreedte. Je zou zo dus wel bijvoorbeeld 3 klasses voor 3 clients aan kunnen maken, maar wat doe je als er een 4e client inlogt?
Daarom stelde ik de vraag hoeveel clients er zijn om dan 50 gedeeld door aantal clients classes aan te maken.
10 clients is 10 classes van 5 k elk die allemaal van mekaar kunnen lenen.

In theorie is dit toch zeker dynamisch?
Maar ik heb er te weinig verstand om te kunnen zeggen dat het ook echt zo werkt.

Verwijderd

Op vrijdag 06 april 2001 19:43 schreef Red devil het volgende:

[..]

Sorry misschien was ik wat onduidelijk maar ik bedoelde dat de child classes van elkaar kunnen lenen. Als client 1, 2, 4 en 5 niet online zijn kan client 3 van 1, 2, 4 en 5 lenen. Dan heeft ie dus wel de juiste bandbreedte van 50k/s
[..]
LOL we bedoelen hetzelfde maar zeggen het anders.
Ik heb tot nog toe altijd begrepen, dat alle child-classes lenen van de root-class. Zodra andere child-flows dus niet actief zijn (beter: ze benutten niet hun volledige bandbreedte), betekent dit dat er in de root-class bandbreedte extra over is dat te vergeven is aan het child-class dat meer bandbreedte nodig heeft.
Dit betekent in de praktijk dat je het je voor kan stellen alsof je die bandbreedte leent van een andere child-class (is het nog te volgen of niet:?, anders ligt het vast aan mij:))

Verder schijnt het zo te zijn dat sharing van bandbreedte via een TCP flow niet eerlijk verdeeld wordt. Dit schijnt te maken met het feit, dat TCP al enigszins "eerlijk" is en het heeft te maken met de huidige realisatie van CBQ.
[..]
Hmmm ik gebruik ook CBQ (met een beetje lenen) op een p60 met kabelverbinding, zit de hele tijd in zijn neus te vreten volgens mij!
[..]
Ik heb hier geen child-classes draaien, dus ik kan dat zelf niet helemaal beamen of tegenspreken. Ik heb daarentegen wel eens een benchmark gezien, waarin toch wel duidelijk was, dat wanneer je met een dergelijke structuur gaat werken, dat de load hoger wordt en daarop volgend de hoeveelheid data die verwerkt kon worden binnen een bepaald tijdsbestek lager werd.
Op zich als je erover na gaat denken zou dat ook niet zo vreemd zijn, omdat er continu in alle classes gecontroleerd moet worden zodra een classe zijn bandbreedte overschrijdt of er ergens nog geleend kan worden, terwijl je bij een normale CBQ implementatie dan gewoon niet meer bandbreedte hebt en het dus in de queue terecht komt.

Wat ik verder bedoelde met de regel dat een child-class nooit de maximale bandbreedte van de root-class kan benutten is hetvolgende:
Het schijnt zo te zijn dat als slechts één child-class actief is en alle andere child-classes zijn niet actief (met actief bedoel ik dus dat er een flow is), dat je dan vaak niet de volledige bandbreedte van de root-class kan benutten. Ook dit is iets, wat ik dus niet zelf ondervonden heb o.i.d. maar allemaal van horen zeggen en internet bronnetjes etc.
Ja, je kunt dan toch bij de clients alles op bijv 1500 mtu zetten ofzo?
[..]
CBQ gebruikt het mechanisme van gemiddelde packet-groote om te bepalen hoeveel packets hij door moet laten voor een bepaalde class.
Aan de hand hiervan bepaald hij een parameter waarin bij wordt gehouden of een flow al aan zijn maximale bandbreedte zit.
Als die paramater nu wordt bepaald door een verkeerd gemiddelde betekent dit dat de parameter kleiner dan nul wordt. Zodra deze parameter <0 dan betekent dit op zijn beurt weer dat de flow aan z''n maximale bandbreedte zit. (Dit terwijl dit door die verkeerde gemiddelde packet-grootte helemaal niet het geval hoeft te zijn).
Een MTU geeft de maximale packet-grootte in een frame aan. Zodra 2 clients met elkaar gaan communiceren, dan wordt de kleinste MTU waarde door beide clients gebruikt.
Hoe lager de MTU hoe kleiner de packets zijn dus. Dit heeft als nadeel dat er dus meer packets verstuurd moeten worden; dit geeft een extra overhead!
Verder is een er het probleem dat een aantal programma''s zich niet aan de MTU houden , er valt dan te denken aan multimedia audio packets etc. Ook met sommige tcp-flows wil dit nog wel eens mis gaan (=afhankelijk van de maximale segment-grootte (MMS)).

Al deze problemen zijn wel gedeeltelijk op te lossen, door inderdaad een goede MTU te kiezen, zodat CBQ een goed ggemiddelde kan bepalen. Probleem is echter dat je dan wel voor elke klasse een gemiddelde MTU moet zien te achterhalen.
edit:
bijkomend probleem schijnt te zijn dat bij CBQ met een root-child indeling kleinere packets meer bandbreedte kunnen gebruiken dan wanneer er grotere packets gebruitk worden
[..]
Daarom stelde ik de vraag hoeveel clients er zijn om dan 50 gedeeld door aantal clients classes aan te maken.
10 clients is 10 classes van 5 k elk die allemaal van mekaar kunnen lenen.

In theorie is dit toch zeker dynamisch?
Maar ik heb er te weinig verstand om te kunnen zeggen dat het ook echt zo werkt.
Nee dit is niet volledig dynamisch (wel bijna). Het probleem is dus zoals ik eerder al genoemd heb, dat er eventueel meer clients dan je aantal child-flows zouden kunnen verbinden. Gevolg is dan dat er meerdere clients in één flow komen. Als alle andere flows ook bezet zijn, onstaat een oneerlijk situatie op die manier.
Verder geldt nog bovenstaand probleem, van die maximale bandbreedte benutting.
Een volledige dynamische oplossing, zou dus afhankelijk van het aantal clients een minimale bandbreedte kunnen garanderen. Deze is dus variabel.

/me heeft wel weer ff genoeg getikt dacht ie zo:)

edit:
Ik hoop dat het allemaal een beetje te volgen is wat ik allemaal ingetikt heb, anders ligt het waarschijnlijk aan m''n uitleg:P

  • Red devil
  • Registratie: December 1999
  • Laatst online: 08:59
* Red devil devil moet helaas weg maar gaat vanavond of morgen je verhaaltje aandachtig lezen!

(ben zelf ook bezig met een nieuw servertje dus vind het erg interessant!

:)

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 17-02 15:48

chem

Reist de wereld rond

over oude topics gesproken :)

red devil, heb je het al voor elkaar gekregen?

Klaar voor een nieuwe uitdaging.


  • Jordi
  • Registratie: Januari 2000
  • Niet online

Jordi

#1#1

Reopened by request :)

Het zal wel niet, maar het zou maar wel.


Verwijderd

Op maandag 07 mei 2001 18:58 schreef chem het volgende:
over oude topics gesproken :)

red devil, heb je het al voor elkaar gekregen?
Ik neem aan dat Red Devil het wel voor elkaar gekregen heeft ja, maar heb je zelf problemen ermee of ben je erin geinteresseerd?
Zo was je reply toch wel aardig nutteloos!

Anders heeft Jotti hem voor niks heropend namelijk.

  • BC3 Victim
  • Registratie: Juli 2001
  • Laatst online: 29-09-2006
Als het niet gelukt is zal ik het in de gaten houden, heb hier zo''n apparaat in een productieomgeving hangen. Deze houdt een stel wireless netwerken in toom op een backbone...
Zag dit topic alleen een beetje te laat..

Succes..

De username van de oorspronkelijke plaatser van deze posting is bij Big Crash 3 eind mei 2001 verloren gegaan. Om toch de posting zelf terug te kunnen plaatsen is de user BC3 Victim in het leven geroepen


Verwijderd

Dat shapen lukt wel, dat durf ik je te garanderen.
Tegenwoordig heeft Linux hele goede mogelijkheden tot traffic shaping (tegenwoordig zelfs voor ingres-verkeer).

Dat (semi-)dynamische shapen lukt ook wel, hoewel er wat kleine (reeds eerder genoemde) nadelen aan hangen, werkt dat gewoon perfect.

Voor meer info zie ook de website van [url="http://http://www.aciri.org/floyd/cbq.html"]Sally Floyd[/url] (een van de belangrijkste personen in het hele CBQ geburen) waar ook ergens een document staat over de performance als ik me niet vergis.

  • Red devil
  • Registratie: December 1999
  • Laatst online: 08:59
Op dinsdag 08 mei 2001 00:37 schreef chem het volgende:
over oude topics gesproken :)

red devil, heb je het al voor elkaar gekregen?
Beter laat dan nooit! :)

Ja het is mij goed gelukt!

Er wacht mij nu echter een nieuwe uitdaging, ben nu bezig met een nieuw servertje (Redhat 7.0 met kernel 2.4.9)
En ben nu aangewezen op IPTABLES.
Helaas is daar niet veel info over te vinden nog. Elke info in de vorm van een link of iets dergelijks zou dus erg welkom zijn!

  • MAZZA
  • Registratie: Januari 2000
  • Laatst online: 11-02 11:43

MAZZA

Barbie is er weer!

Pagina: 1