In dit document worden bufferfouten en -fouten op de routingprocessor (RP) besproken.
Er zijn geen specifieke vereisten van toepassing op dit document.
Dit document is niet beperkt tot specifieke software- en hardware-versies.
De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk live is, moet u de potentiële impact van elke opdracht begrijpen.
De RP deelt zijn processorgeheugen in pools. Elke poel bevat een aantal geheugenblokken van gelijke grootte. Deze geheugenblokken worden buffers genoemd.
Er zijn zes bufferpools:
Small-104 bytes buffers
Midden-600 byte-buffers
Big—1524 byte-buffers
Zeer groot-4520 bytes buffers
Grote—5024 bytes buffers
Enorme buffers van 18024 bytes
Bijvoorbeeld, als een interfaceprocessor een 20 bytepakket aan RP moet doorgeven, "vraagt" het om een kleine buffer. Als een interfaceprocessor een 500 bytepakket aan de RP moet doorgeven, vraagt hij om een middenbuffer, enzovoort.
Opmerking: de interfaceprocessor moet om een buffer van een bepaalde grootte vragen.
Wanneer de interfaceprocessor om een buffer vraagt, gebeurt dit:
Indien binnen de gevraagde pool een vrije buffer bestaat, wordt de buffer toegekend. Anders genereert het verzoek een "missen" en het bufferalgoritme probeert "meer buffers voor die pool te maken".
Wanneer IOS geen kleine buffer krijgt, laat het pakket niet vallen. Het verhoogt de mislukte teller en valt door naar de volgende level buffer, die de middenbuffer is en daar om een buffer vraagt. Als er geen middenbuffer is, vraagt hij om de volgende level buffer, die een grote buffer is. Dit proces duurt voort totdat het de grote bufferpool bereikt. Als er geen grote buffer is, laat hij het pakje vallen.
Wanneer u de IBM optie gebruikt, genereert een fout bijna altijd een storing.
Hoewel de IBM-functies mogelijk procesgeschakeld zijn, voert de code om een buffer te verkrijgen om een pakket van een interface naar de RP door te geven op interruptieniveau.
Buffers kunnen niet op interruptieniveau worden gecreëerd; dientengevolge stelt een miste zijn verzoek om meer buffers in de RP in de wachtrij.
Omdat een extra buffer niet op de plaats kan worden aangemaakt, mislukt het bufferverzoek en wordt het pakje ingetrokken.
Buffer-defecten zijn een van de meest voorkomende redenen voor pakketverlies. Wanneer pakketdalingen optreden vanwege een defect aan de buffer, gebeurt dit:
Na een bufferstoring heeft de RP een uitstaand verzoek om meer buffers van de juiste grootte voor de specifieke pool te creëren.
Terwijl de RP aan het verzoek om buffers te voldoen, kan er extra mislukkingen in de pool zijn.
De RP kan zelfs nalaten om meer buffers te creëren vanwege geheugenbeperkingen in het systeem wanneer de extra buffers nodig zijn.
In wezen kan de operatie buffers een paar microseconden duren, waarin pakketten voortdurend worden geworpen vanwege het buffertekort.
Bovendien, als buffers zo snel worden gebruikt als zij worden gemaakt, zou de RP gedwongen kunnen worden om meer tijd aan buffercreatie door te brengen dan aan pakketverwerking.
Dit kan de RP ertoe aanzetten om pakketten zo snel te laten vallen dat prestaties afnemen en sessies verloren gaan.
Gelukkig zijn, zoals in dit document wordt besproken, de problemen van buffermislukkingen niet moeilijk te identificeren en op te lossen. Deze opdrachtoutput van buffers toont de huidige status van de bufferpoelen van de router:
dspu-7k#show buffers Buffer elements: 500 in free list (500 max allowed) 2370 hits, 0 misses, 0 created Public buffer pools: Small buffers, 104 bytes (total 16, permanent 10): 11 in free list (0 min, 10 max allowed) 1770 hits, 33 misses, 22 trims, 28 created 9 failures (0 no memory) Middle buffers, 600 bytes (total 90, permanent 90): 89 in free list (10 min, 200 max allowed) 590 hits, 0 misses, 0 trims, 0 created 0 failures (0 no memory) Big buffers, 1524 bytes (total 90, permanent 90): 90 in free list (5 min, 300 max allowed) 126 hits, 0 misses, 0 trims, 0 created 0 failures (0 no memory) VeryBig buffers, 4520 bytes (total 10, permanent 10): 10 in free list (0 min, 300 max allowed) 50 hits, 0 misses, 0 trims, 0 created 0 failures (0 no memory) Large buffers, 5024 bytes (total 10, permanent 10): 10 in free list (0 min, 30 max allowed) 0 hits, 0 misses, 0 trims, 0 created 0 failures (0 no memory) Huge buffers, 18024 bytes (total 2, permanent 0): 0 in free list (0 min, 13 max allowed) 2 hits, 2 misses, 0 trims, 2 created 0 failures (0 no memory)
In de uitvoer van showbuffers:
Totaal identificeert het totale aantal buffers in de pool, waaronder gebruikte en ongebruikte buffers.
Permanent identificeert het permanente aantal toegewezen buffers in de pool. Deze buffers zitten altijd in het zwembad en kunnen niet worden opgeruimd.
In de gratis lijst wordt het aantal buffers in de pool aangegeven dat beschikbaar is voor gebruik.
Min identificeert het minimumaantal buffers dat de RP in de vrije lijst moet proberen te houden:
De min-parameter wordt gebruikt om te anticiperen op de vraag naar buffers uit de pool op een bepaald moment.
Als het aantal buffers in de vrije lijst onder de min waarde daalt, probeert de RP meer buffers voor die pool te creëren.
Max-toegestaan identificeert het maximale aantal buffers dat in de gratis lijst is toegestaan:
De max-toegelaten parameter voorkomt dat een pool buffers monopoliseert die hij niet meer nodig heeft. Het bevrijdt dit geheugen ook terug naar het systeem voor verder gebruik.
Als het aantal buffers in de vrije lijst groter is dan de maximaal toegestane waarde, moet de RP proberen om buffers uit de pool te snijden.
Hits identificeert het aantal buffers dat van de pool is gevraagd. De slagteller biedt een mechanisme om te bepalen welke pool aan de hoogste vraag naar buffers moet voldoen.
Misses identificeert het aantal keren dat een buffer is gevraagd en de RP werd gedetecteerd in welke pool extra buffers nodig waren. Met andere woorden: het aantal buffers in de gratis lijst is onder min. De ontbrekende teller vertegenwoordigt het aantal keren dat de RP gedwongen is om extra buffers te creëren.
Trims identificeert het aantal buffers dat de RP uit de poel heeft opgerekt, wanneer het aantal buffers in de vrije lijst het aantal maximaal toegestane buffers overschreed.
Gemaakt identificeert het aantal buffers dat in de pool is gecreëerd. In deze situaties creëert de RP buffers:
Wanneer de vraag naar buffers is toegenomen tot het aantal buffers in de vrije lijst minder is dan de min buffers.
Een misser gebeurt omdat er geen buffers zijn in de vrije lijst.
Beide situaties deden zich voor.
Fouten identificeren zich wanneer IOS geen Small buffer krijgt, laat het pakket niet vallen. Het verhoogt de mislukte teller en valt door naar de volgende level buffer, die de middenbuffer is en daar om een buffer vraagt. Als er geen middelste buffer is, vraagt hij om de volgende level buffer, een grote buffer. Dit proces duurt voort totdat het de grote bufferpool bereikt. Als er geen grote buffer is, laat hij het pakje vallen.
Geen geheugen identificeert het aantal fouten veroorzaakt door onvoldoende geheugen om extra buffers te creëren.
U kunt de kenmerken van elke pool onderzoeken om te bepalen welke pools (als er al zijn) problemen tegenkomen. De parameters voor een pool kunnen worden aangepast om de router beter voorbereid te zijn om de lading aan te kunnen, als de pool deze kenmerken lijkt te vertonen:
Het aantal missen en creëert een hoge increment (als percentage hits).
Er staat een consequent laag aantal buffers in de vrije lijst.
Het aantal defecten of geen toename van het geheugen.
Met de configuratieopdracht buffers kunt u deze parameters instellen voor elke bufferpool:
eerste —tijdelijke buffers die bij systeemherlading worden toegewezen.
Max-vrij-maximum aantal vrije buffers.
min-vrij - Minimumaantal vrije buffers.
permanent - Aantal permanente buffers.
Stel de buffers van de hoeven in om de barst van het verkeer van de sessie na routerherlading te ontvangen.
buffers small initial 250
Deze buffers worden uiteindelijk ‘geremd' en teruggekeerd naar het systeem.
De eerste buffers zijn ontworpen om sessiebedrijf aan te kunnen, dat altijd procesgeschakeld is.
Tijdens het opzetten van een sessie is het fastswitching cache (gebruikt door andere routeprotocollen) ingevuld; procesgeschakelde buffers zijn niet langer nodig en kunnen naar het systeem worden teruggestuurd.
Voor het instellen van de eerste buffers is de juiste oplossing voor de IBM-optie misschien niet ingeschakeld, omdat vrijwel alle pakketten (na het instellen van de sessie) zijn verwerkt en toch de extra buffering nodig is.
Opmerking: Voor de IBM procesgeschakelde functies moet u permanente buffers instellen in plaats van de tijdelijke eerste buffers.
Tune max-vrije buffers zodat de waarde gelijk is aan of groter is dan de permanente buffers. Als alle permanente buffers in de vrije lijst staan, moet de RP niet proberen om permanente buffers te trim. Max-vrij kan worden gebruikt om er zeker van te zijn dat ongebruikte buffers die worden gecreëerd tijdens onregelmatige bursten, terug worden gegeven in het systeemgeheugen.
buffers small max-free 175 buffers small permanent 125
Kietvrije buffers zodat de waarde het geschatte minimumaantal buffers vertegenwoordigt dat op elk moment vereist is. Min-vrij kan worden gebruikt om te anticiperen op de bufferschaarste en om ervoor te zorgen dat er altijd een minimumaantal buffers beschikbaar is.
buffers small min-free 50
Tune permanente buffers zodat de waarde het geschatte aantal buffers vertegenwoordigt dat nodig is voor een normale verwerking.
buffers small permanent 125
Permanente buffers worden gebruikt om te voldoen aan de normale buffervereisten (inclusief frequente brandwonden) van de router. De bepaling van de normale buffervereisten is een interactief proces, waarbij de output van de bufferbuffer op een bepaald tijdstip de totale buffers in een pool moet tonen. Permanente buffers dienen te worden afgestemd op de vereiste consistente "totale" buffers. Als je permanente buffers afstemt, moet je focussen op de reductie van creaties en de eliminatie van fouten en mislukkingen.
Er zijn twee andere show opdrachten die u kunt gebruiken om problemen met de buffertoewijzing te identificeren:
Laat interface-ID van interfaces zien
brug van de bron tonen
Dit toont interface interface-identifier steekproefuitvoer een teller voor geen buffer:
dspu-7k#show interfaces channel 4/2 Channel4/2 is up, line protocol is up Hardware is cxBus IBM Channel MTU 4472 bytes, BW 98304 Kbit, DLY 100 usec, rely 255/255, load 1/255 Encapsulation CHANNEL, loopback not set, keepalive not set Virtual interface Last input 0:00:04, output 0:00:04, output hang never Last clearing of "show interface" counters never Output queue 0/40, 0 drops; input queue 0/75, 8 drops 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute output rate 0 bits/sec, 0 packets/sec 646 packets input, 27760 bytes, 8 no buffer Received 0 broadcasts, 0 runts, 0 giants 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort 328 packets output, 16959 bytes, 0 underruns 0 output errors, 0 collisions, 0 interface resets, 0 restarts 0 output buffer failures, 0 output buffers swapped out
In de opdrachtoutput van de show interfaces interface-identifier:
De bufferteller stappen wanneer de interface geen buffer voor een inkomende pakket verkrijgt.
Zowel de geen buffer als de (ingangswachtrij) tellen de toename wanneer de interface geen buffer voor een inkomende pakketreis verkrijgt.
Een geen bufferteller die de stappen in de uitvoer van de tonen interfaces correleert met de missen teller die stappen in de show buffers uitvoer. Het geschikte bufferdepot kan worden afgestemd.
Deze voorbeeldopdracht voor bron-bridge bevat een interfaceteller voor trotkels wanneer Source-Route Bridging (SRB) is geconfigureerd voor de interface:
dspu-7k#show source-bridge Local Interfaces: receive transmit srn bn trn r p s n max hops cnt:bytes cnt:bytes drops Ch4/2 666 1 99 * f 7 7 7 652:26020 6:266 0 Global RSRB Parameters: TCP Queue Length maximum: 100 Ring Group 99: This TCP peer: 150.10.20.2 Maximum output TCP queue length, per peer: 100 Peers: state bg lv pkts_rx pkts_tx expl_gn drops TCP TCP 150.10.20.1 open *3 261 266 0 0 0 TCP 150.10.20.2 - *3 0 0 0 0 0 Rings: bn: 1 rn: 888 locvrt ma: 4000.7000.fff1 Buff Ring888 fwd: 0 bn: 1 RN: 666 local ma: 4000.0c48.2e80 Channel4/2 fwd: 261 bn: 1 RN: 88 remote ma: 4000.4000.fff1 TCP 150.10.20.1 fwd: 322 bn: 1 RN: 250 remote ma: 4000.300f.7c09 TCP 150.10.20.1 fwd: 0 Explorers: ------- input ------- ------- output ------- spanning all-rings total spanning all-rings total Ch4/2 0 0 0 0 1 1 Local: fastswitched 0 flushed 0 max Bps 256000 rings inputs bursts throttles output drops Ch4/2 0 0 8 0
In de opdrachtoutput van show source-bridge:
De stappen van de telteller wanneer de interface geen buffer voor een inkomende pakket verkrijgt.
De tellers die die stappen in de opdrachtoutput van de show interfaces correleert met een misses teller die stappen in de opdracht buffers tonen. Het geschikte bufferdepot kan worden afgestemd.