Vraag Beperking van de interface-bandbreedte met tc onder Linux


Ik heb een linux-router met een 10GBe-interface aan de buitenkant en gebonden Gigabit Ethernet-interfaces aan de binnenkant.

We hebben momenteel een budget voor 2GBit / s. Als we dat tarief met een gemiddelde van meer dan 5% voor een maand overschrijden, zullen we de volledige 10 Gbit / s-capaciteit in rekening worden gebracht. Een flinke stap omhoog in dollars.

Dus ik wil dit beperken tot 2 GBit / s op 10GBe-interface.

TBF-filter kan ideaal zijn, maar deze opmerking is zorgwekkend.

Op alle platforms behalve Alpha is het in staat om maximaal 1mbit / s normaal verkeer te vormen met ideale minimale burstiness, waarbij gegevens precies volgens de geconfigureerde tarieven worden verzonden.

Moet ik TBF of een ander filter gebruiken om dit percentage toe te passen op de interface en hoe zou ik dat doen? Ik begrijp het hier gegeven voorbeeld niet: Verkeersleiding HOWTO

In het bijzonder "Voorbeeld 9. Creëren van een 256Kbit / s TBF"

tc qdisc add dev eth0 handle 1:0 root dsmark indices 1 default_index 0
tc qdisc add dev eth0 handle 2:0 parent 1:0 tbf burst 20480 limit 20480 mtu 1514 rate 32000bps

Hoe wordt de bitsnelheid van 256 K berekend? In dit voorbeeld 32000bps = 32k bytes per seconde. Omdat tc bps = bytes per seconde gebruikt. Ik denk dat burst en limiet in het spel komen, maar hoe zou je gaan over het kiezen van verstandige nummers om het gewenste tarief te bereiken?

Dit is geen fout. Ik testte dit en het gaf een snelheid dichtbij 256K maar niet precies dat.


BEWERK

Na veel lezen en testen, ben ik tot de conclusie gekomen dat TBF niet geschikt is vanwege de bandbreedte. Welke instellingen ik ook probeerde, ik kon TBF geen bandbreedte> 50 Mbit / s laten leveren. Volgens lartc.org/lartc.pdf is de RED-methode beter voor het vormgeven van de bandbreedte> 100 Mbit / s, dus ik zal proberen die te gebruiken.

Het kiezen van de a-waarde voor min (dat wil zeggen Gemiddelde wachtrijgrootte waarbij markering een mogelijkheid wordt). Het gegeven voorbeeld is dit:

U moet de min instellen door die hoogst acceptabele basis te berekenen   wachttijd wachttijd die u wenst, en vermenigvuldig het met uw bandbreedte. Voor   bijvoorbeeld, op mijn 64kbit / s ISDN-link, wil ik misschien een basiswachtrij   latentie van 200ms, dus stel ik min. tot 1600 bytes in.

  1. hoe zou je kiezen voor de hoogst acceptabele wachttijdwachtrij? Het voorbeeld is voor 64kbit / s.

  2. Wat zou acceptabel zijn voor 2 Gbit / s?


8
2017-11-28 00:43


oorsprong




antwoorden:


  1. U moet een acceptabele wachttijd voor wachtrijen kiezen op basis van het type verkeer.

    • Voor stem meer dan 200 ms is bijvoorbeeld al een probleem.
    • Het hebben van 500ms buffer voor ftp / torrent verkeer is helemaal geen groot probleem.
  2. Wachttijd / strategie in de wachtrij is een kwestie van verkeerstype en geen interfacesnelheid. Bijvoorbeeld, VOIP zou misschien helemaal niet in de wachtrij moeten staan. Helaas is de tc RED-documentatie niet erg duidelijk, zou je beter wat RODE info op de Juniper / Cisco-site kunnen lezen en die kennis kunnen toepassen op tc.


2
2017-12-12 19:21





Hoe wordt de bitsnelheid van 256 K berekend? In dit voorbeeld 32.000bps = [32.000] bytes per seconde.

Ja, de wiskunde is juist. Als u een nummer in de buurt van 256k ziet, is dit waarschijnlijk iets lager. Waar meet u dat nummer van? Als het de downlaod van je browser is of iets dergelijks, tellen ze niet de overhead van pakketheaders, maar tctelt alles.


1
2017-11-28 06:08



Goed punt. Ik gebruikte iperf. - Matt


Hier is een volledige uitleg, die u kan helpen alles te begrijpen http://lartc.org/howto/lartc.cookbook.fullnat.intro.html


0
2018-05-01 23:50



Welkom bij ServerFault. De standaardpraktijk hier is om een ​​beschrijving of op zijn minst een samenvatting van het antwoord op te nemen waarnaar u linkt, zodat als de link verdwijnt uw antwoord nog steeds nuttig zal zijn. - Andrew Schulman