Global Sources
EE Times-Asia
Stay in touch with EE Times Asia
EE Times-Asia > Embedded

Multi-core networking in Linux user space with zero overhead

Posted: 02 Jul 2012 ?? ?Print Version ?Bookmark and Share

Keywords:accelerators? application software? Partitioning?

In the networking and communications industry, system-on-chip (SoC) architectures consisting of multiple general purpose CPU cores together with specialized accelerators have become increasingly common.

These multicore SoCs are used in network equipment including layer 2/3 switches and routers, load balancing devices, wireless base stations, and security appliances, among others. The network equipment vendors have traditionally used ASICs or network processors for datapath processing but are migrating to multicore SoCs.

Multi-core SoCs offer high performance and scalability, and include multiple general purpose cores and acceleration engines with in-chip distribution of workloads. However, exploiting their capabilities requires intimate knowledge of SoC hardware and deep software expertise.

In this article we discuss multicore SoC capabilities and how to leverage these capabilities efficiently for data path processing, limitations of current software programming models, and finally discuss a zero-overhead user space software framework.

Multicore SoC hardware elements
As shown in figure 1, a multicore SoC has multiple general purpose cores that run application software. It has hardware units that assist with data path acceleration. Incoming packets are usually directed toward the general purpose cores, where application processing takes place.

Figure 1: A multicore SoC has multiple general purpose cores that run application software. It has hardware units that assist with data path acceleration.

Application cores make use of hardware accelerator engines to offload standard processing functions. Implementing networking applications on multicore SoCs need certain basic requirements to be met by the SoC.

1. Partitioning: the SoC must provide the flexibility to partition available general purpose cores to run multiple application modules, or even different applications

2. Parsing, classification and distribution: Once partitioned, there must be flexibility and intelligence in the hardware to parse and classify incoming packets, and then direct them to appropriate partitions and/or cores.

3. Queuing and scheduling: When parsing is completed, the parsing unit must have a mechanism to direct the packet, and also for the system to have a mechanism to direct that incoming packet to a desired processing unit or core. This requires a queuing and scheduling unit within the hardware.

4. Look-aside processing: The queuing & scheduling unit must manage the flow of packets between cores and acceleration engines. Cryptography, pattern matching, compression/ de-compression, de-duplication, timer management, and protocol processing (IPSec, SSL, PDCP etc.) are some standard examples of acceleration units in multicore SoCs.

5. Egress processing: The queuing & scheduling unit must direct the packets to their interface destinations at very high rate Here QoS algorithms for shaping and congestion avoidance are required to offload these standard tasks from application cores.

6. Buffer management: Packet buffers need to be allocated by hardware, and often freed by hardware as packets leave the SoC. Therefore hardware packet buffer pool managers are a necessity.

7. Interfaces to cores: The multicore SoC architecture need to present a unified interface to the cores, to work with packet processing units.

1???2???3???4???5???6?Next Page?Last Page

Article Comments - Multi-core networking in Linux user ...
*? You can enter [0] more charecters.
*Verify code:


Visit Asia Webinars to learn about the latest in technology and get practical design tips.

Back to Top