Packet Processing Pipeline

This example illustrates how you can use pipelines (Chapter 4) and a concurrent hash map (Chapter 5) to implement packet processing such as you might find in a router.

Packet processing is an ideal application for Threading Building Blocks. Packet processing is often done on special devices as well as on computer systems, so this is a good example of how Threading Building Blocks can help embedded designs that take advantage of multi-core processors.

Devices on the Internet communicate using packets of information. Each packet is like a postcard; it has an address to send to and a return address plus a message.On the way from the sender to the receiver, it passes through switches and routers that direct traffic and do other processing on the packets. Packet processing is not unlike mail processing; the router must receive a packet on a connection and send it out to the appropriate connections. It also provides a service called network address translation (NAT), which allows the outside world to communicate with a collection of computers and devices through one address without even knowing it is not a single computer at that one address. This is not unlike the postcard that arrives addressed to an apartment building without the number that indicates the apartment to which to deliver it. The postal delivery person will use other clues, such as the name on the postcard, to determine where it should be delivered.

Get Intel Threading Building Blocks now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.