Tech
Memory and buffers
Well, wegot to the thread with which the ball began to unravel.
Everything that was above concerned the packet headers – they were separated and subjected to algorithmic executions in the pipeline.
And where did their bodies cool off all this time?
Network chipsets have built-in memory ( OCB – On Chip Buffer ) just for storing bodies. Due to physical limitations, its size is very small (up to 100MB), but for most tasks it is a reasonable compromise.
Thus, at the entrance to the chip, the parser separates the headers from the bodies, the first is sent for analysis to the Match-Action block, the second is added to the buffer.
At the exit, new headers are sewn to the bodies retrieved back and sent to the exit.
Having been repeatedly accused in reviewing this article, I feel the need to repeat this once again: inside the switching chip, the headers are separated from the body of the packet. While the original headers are analyzed, they help to make a lookup, they are destroyed, new ones are formed, the body is in one place in physical memory, without moving. Even at the moment when the Traffic Manager queues packets according to their priorities, dispatches them and Congestion Avoidance, it actually works with internal time headers without moving packets through memory.
Controls access to physical memory MMU – Memory Management Unit . It’s pretty similar to MMU in the computer (in fact is it ). The program accesses the pointer to retrieve data from memory, the MMU translates this to the real address of the cell and returns the data.
The MMU deals with buffering, fetching, or discarding packets. It also controls the division of memory into areas (dedicated, shared, headroom, voq) and their loading.
The TM – Traffic Manager block is responsible for the higher-level management of queues and overloads .
There are two approaches to placing bodies in buffers: Store-and-Forward and Cut-Through .
Memory and buffers:
Store-and-Forward vs Cut-ThroughOverload: causes and placesCauses of overloadsOverload locationsBuffer architectureCrossbarShared BufferOutput queueingInput queuingCombined Input and Output QueueingVirtual Output QueueingCombined Input and Output Queueing w / Virtual Output QueueingShallow vs Deep BuffersHybrid bufferingAre large buffers good or bad