Krople wyjściowe w interfejsie szeregowym: lepsze kolejkowanie czy rozmiar kolejki wyjściowej?

16

Na routerach brzegowych Internetu komunikujących eBGP z wieloma operatorami i iBGP między sobą, wszystkie interfejsy po stronie LAN i WAN są GE, z wyjątkiem jednego Serial full-DS3 (~ 45 Mb / s) na każdym routerze. Chociaż myślę, że prawie nie wysyłam dużego ruchu wychodzącego przez interfejsy szeregowe - w zakresie 3-10 Mb / s - widzę stałe spadki kolejki wyjściowej (OQD). Czy prawdopodobnie nie widzę prawdopodobnego wyjaśnienia, że ​​ruch jest bardzo szybki, ponieważ interwał ładowania wynosi co najmniej 30 sekund, a odpytywanie SNMP uśrednia ruch w ciągu 5 minut, aby nie powodowały rozświetlenia?

Platformą jest Cisco 7204VXR NPE-G2. Kolejkowanie szeregowe to fifo .

Szeregowy 1/0 jest włączony, protokół linii jest włączony
  Sprzęt to M2T-T3 + pa
  Opis: -remov-
  Adres internetowy to abcd / 30
  MTU 4470 bajtów, BW 44210 Kbit, DLY 200 usec,
     niezawodność 255/255, txload 5/255, rxload 1/255
  Enkapsulacja HDLC, CRC 16, sprzężenie zwrotne nie jest ustawione
  Zestaw podtrzymujący (10 sekund)
  Opóźnienie ponownego uruchomienia wynosi 0 sekund
  Ostatnie wejście 00:00:02, wyjście 00:00:00, wyjście nigdy się nie zawiesi
  Ostatnie wyczyszczenie liczników „pokaż interfejs” 00:35:19
  Kolejka wejściowa: 0/75/0/0 (rozmiar / maks. / Krople / spłukiwanie); Całkowite spadki produkcji: 36
  Strategia kolejkowania: fifo
  Kolejka wyjściowa: 0/40 (rozmiar / maks.)
  Szybkość wejściowa 30 sekund 260000 bitów / sek., 208 pakietów / sek
  30 sekundowa szybkość wyjściowa 939000 bitów / sek., 288 pakietów / sek
     410638 pakietów wejściowych, 52410388 bajtów, 0 bez bufora
     Odebrano 212 transmisji, 0 runtów, 0 gigantów, 0 przepustnic
              0 parzystości
     0 błędów wejściowych, 0 CRC, 0 ramek, 0 przekroczeń, 0 zignorowanych, 0 przerwanych
     Wyjście 515752 pakietów, 139195019 bajtów, 0 niedopełnień
     0 błędów wyjściowych, 0 aplikacji, 0 resetów interfejsu
     0 awarii bufora wyjściowego, 0 buforów wyjściowych zamienionych
     0 przejść operatora
   rxLOS nieaktywny, rxLOF nieaktywny, rxAIS nieaktywny
   txAIS nieaktywny, rxRAI nieaktywny, txRAI nieaktywny

24 godziny później pokażą tysiące OQD. Każdego dnia zwiększamy ruch około 3 nad ranem, więc może jest tu duży ruch, na który nie przywiązuję wystarczającej wagi.

Last clearing of "show interface" counters 1d01h
Input queue: 0/75/0/158 (size/max/drops/flushes); Total output drops: 12049

Chciałbym zwiększyć ruch wychodzący na DS3, ale nie z obawami dotyczącymi OQD. ISP poziomu 2 za DS3 ma punkty POP, które podwajają się jako punkty równorzędne z 6+ poziomu 1, więc pomysł polega na tym, aby uzyskać ten ruch online z klientem tak szybko, jak w przeciwieństwie do naszego głównego dostawcy usług internetowych w GE, który jest poziomem 1 , ale muszą dążyć do wymiany peerów. Ruch przychodzący nie stanowi problemu.

Czy w tej sytuacji jest lepsza strategia kolejkowania niż FIFO? Patrząc na dokumenty Cisco dotyczące upuszczania kolejek wejściowych i wyjściowych, nie zaleca się zwiększania rozmiaru kolejki wychodzącej, ponieważ pakiety są już w routerze i lepiej byłoby upuszczać je przy wejściu, aby TCP mógł z powrotem dławić aplikację. Na naszych łączach GE jest duża przepustowość, więc tak naprawdę nie trzeba dławić wejścia. Na tych routerach nie ma map zasad. 90% ruchu wychodzącego pochodzi z naszych odpowiedzi HTTP; większość reszty pochodzi z FTP i SMTP. Łącza GE wypychają 50-200 + Mbps.

Czy zaleciłbyś jakieś poprawki w buforze rozmiaru kolejki wyjściowej? Te interfejsy szeregowe to nasze łącza do tworzenia kopii zapasowych, których wolałbym raczej użyć z podanego wcześniej powodu (jeśli jest to ważne), ale złagodzone przez moje zasady BGP, które próbują nie przeciążać tego interfejsu szeregowego (który wydaje się być bardzo niedociążony).

generalnetworkerror
źródło

Odpowiedzi:

13

Masz rację, tak naprawdę nie zobaczysz łatwo pęknięcia na SNMP. 1GE może wysłać 1,48 Mb / s, więc przekroczenie prędkości 45 Mb / s, która może obsłużyć mniej niż 75 kp / s, zajmuje bardzo niewiele czasu.

Jeśli twoje wejście wynosi 1GE, a wyjście to 45 Mb / s, to oczywiście punkt przeciążenia 45 Mb / s będzie musiał zrzucić pakiety. Jest to normalne i oczekiwane. Jeśli zwiększysz bufory, wprowadzisz więcej opóźnień.
1GE zajmuje 0,45 ms, aby wysłać 40 ramek IP 1500B, co jest w tej chwili ilością serii, którą możesz obsłużyć. Jednak usunięcie ich z kolejki przy prędkości 45 Mb / s zajmuje już 10 ms.

Jeśli nie masz żadnego ostrego problemu, prawdopodobnie nie zrobiłbym nic z tym. Ale jeśli jakiś ruch kwalifikuje się do upuszczenia bardziej niż inny, powinieneś zastąpić FIFO kolejkami klasowymi. Powiedz, że chcesz ustawić priorytety, aby upuścić więcej ftp i mniej voip.
Wtedy bardziej sensowne będzie dodanie dodatkowego buforowania ruchu ftp, ponieważ tak naprawdę nie jest wrażliwy na opóźnienia.

Jeśli chcesz spróbować szczęścia z głębszymi buforami, coś takiego powinno wystarczyć:

policy-map WAN-OUT
 class class-default
    fair-queue
    queue-limit 200 packets
!
interface Serial1/0
  service-policy output WAN-OUT

Spowodowałoby to 50-milimetrowe buforowanie na Serial1 i pozwoliłoby na obsługę do 2,25ms serii z jednego interfejsu Gige.

iti
źródło
Główne wejścia i wyjścia to 1GE na naszych głównych ścieżkach, a pewien procent ruchu przechodzi przez DS3. Edytowano Q, aby pokazać, że 90% danych wychodzących to ruch odpowiedzi HTTP, a FTP i SMTP stanowią resztę.
generalnetworkerror
Unikałbym używania DS3, gdy Gige jest dostępny, ze względu na opóźnienia spowodowane buforowaniem. Wszystkie wymienione aplikacje wydają się jednak bardzo odporne na opóźnienia i straty.
ytti
Innym powodem, o którym nie wspomniałem o próbie użycia większej ilości DS3, jest unikanie ładunków seryjnych na łączach GE WAN, które uruchamiają> 100 Mb. Mimo że codziennie wybuchamy powyżej 100 Mb, nie było to wystarczająco długo, by mieć znaczenie (jeszcze).
generalnetworkerror
Możesz zwiększyć ruch do DS3, a nawet zmniejszyć liczbę pakietów, wprowadzając większe opóźnienie. Ale jeśli planujesz zwiększyć natężenie ruchu, problem będzie się nasilał. Pamiętaj, że Ethernet nigdy nie jest niczym innym, jak 100% lub 0%, tak długo, jak długo jest to 100%, zmienia się. Więc zawsze skończysz buforowanie wybuchów spowodowanych przez twoją szybką sieć 1GE.
ytti
2
Moim uzasadnieniem dla 200 pakietów jest opóźnienie potrzebne do wysłania ich na 45 Mb / s, co stanowi 50 ms, co jest nadal tolerowanym opóźnieniem dla aplikacji do przesyłania danych. Powinieneś zadać sobie pytanie, jak długo będziesz tolerować, a następnie określ bufor, aby osiągnąć ten cel. W twojej sytuacji po prostu użyłbym gige.
ytti
8

OQD są zwykle spowodowane jedną z dwóch rzeczy:

  1. Nadużywasz linku; przy stałym wysokim zużyciu lub dużym natężeniu ruchu.

  2. Do interfejsu zastosowano mapę zasad, która jest skonfigurowana do wykonywania działań takich jak nadzorowanie lub kształtowanie części lub całości ruchu

  3. W interfejsie jest jakiś błąd, spójrz na liczniki błędów ( show interface Serial1/0 counters errors) i sprawdź, czy nie upuszcza pakietów z powodu błędu.

Możesz przyjrzeć się (jeśli jeszcze go nie masz) wprowadzeniu mapy zasad, aby zrobić takie rzeczy, jak nadać ruchowi krytycznemu misji swoją własną kolejkę, włączyć unikanie zatorów w zwykłym ruchu (WRED) lub nawet po prostu włączyć uczciwe kolejkowanie w ruchu, aby szerokość pasma jest dzielona między przepływy przesyłające interfejs.

Jak już wspomniałeś, inną opcją byłoby zwiększenie rozmiaru kolejki wyjściowej w interfejsie, ale jeśli miałbyś użyć mapy zasad, to i tak nie byłoby takiej potrzeby, ponieważ polityka tworzyłaby inne pod kolejki.

David Rothera
źródło