imelamory - Fotolia

Tip

4 switch ASIC interfaces to drive SDN and machine learning growth

Learn how four interfaces that are designed to control switch ASICs and packet forwarding can help accelerate developments in SDN and machine learning.

We know history repeats itself, and remembering that can prove useful in determining how interfaces that are used to control application-specific integration circuits in switches can spur SDN development.

The four interfaces -- Switch Abstraction Interface, the Fast Data Plane Project, Broadcom's Software Development Kit Logical Table and the P4 programming language -- work with data plane chipsets and switch ASICs. But they also have the potential to drive SDN and machine learning growth by advancing open interfaces and programmability capabilities. To fully grasp how, however, let's first look at the history of compute systems and hard drive interfaces.

Going back in time, one of the seminal moments in compute history was the standardization and adoption of the International Standard Architecture (ISA) in the 1980s. When IBM tried to replace the ISA with the Micro Channel Architecture in the late 1980s, the other system manufacturers effectively rebelled and held to the ISA standard. In 1996, Intel developed the Peripheral Component Interconnect (PCI) bus, which the compute industry then widely adopted. The PCI bus has largely been superseded by PCI Express, initially released in 2004.

Hard drive interfaces have a similar history. Hard drive interfaces began with controller cards that supported modified frequency modulation, run-length limited and Small Computer System Interface formats. These formats were followed by the Integrated Drive Electronics (IDE) movement and the Parallel Advanced Technology Attachment and, finally, Serial ATA.

So, what's the lesson learned? After the industry introduced a standardized way to access each of these systems, new developments surged and the market for that hardware broadened. ISA led to clone system builders that eventually became the dominant force in compute system building, for example, while IDE eventually led to rapid development in storage technology.

Again, this repeated pattern alerts us to the importance of the four interfaces commonly used to control today's data plane chipsets: the Switch Abstraction Interface (SAI), the Fast Data Plane Project (FD.io), Broadcom's Software Development Kit Logical Table (SDKLT) and the P4 programming language.

How four switch ASIC interfaces can drive SDN growth

A standardized set of interfaces used to control packet flow could accelerate the development of controllers and agents needed to drive software-defined networks.

These four interfaces can fuel the software-defined revolution. A standardized set of interfaces used to control packet flow could accelerate the development of controllers and agents needed to drive software-defined networks, for example.

These standardized interfaces can also drive a revolution in building networks that interact with machine learning and closed-formula analytics that self-adjust to their operating environment.

Understanding and supporting these types of open interfaces presents many advantages, even if the end user doesn't directly see them. While you might not see the interface any more than you can see the PCI Express bus in your computer, it's possible to see the results of the standard in the variety of hardware and in the available software that can run on that hardware.

As a customer, you should be educated on these interfaces and standards and ask your vendors whether the products you buy support them. So, let's take a closer look.

1. Switch Abstraction Interface

SAI is the oldest of these interfaces, with initial releases reaching back to 2014. Essentially, SAI is a unifying container, or wrapper, for many different switch ASIC drivers, as shown in Open Compute Project diagram below.

SAI in a switch system architecture
A switch system architecture using SAI

The Switch Abstraction Interface exposes the same set of operations to the host adapters for the data plane ASICs used in many switches and routers. The advantage of this kind of wrapper is to allow a single software adapter to control different brands and versions of switch ASICs.

The disadvantage is a wrapper interface will tend to support only those features that every supported switching ASIC supports -- the lowest common denominator of the available features. Further, translating calls from the Switch Abstraction Interface into the switch ASIC software development kit -- and then into the switch ASIC driver -- negatively affects performance.

2. The Fast Data Project

The Fast Data Project (FD.io) focuses on creating a pipeline between software-based switching in virtual or software-based network devices.

A virtual packet inspection service or a virtual network function, for example, can use the FD.io interface to draw packets from the interface, process them and then push them back onto the hardware interface. Devices that originate packets, such as database servers, can also take advantage of FD.io's direct connection to the network interface.

3. Broadcom's SDKLT

Broadcom's Software Development Kit Logical Table is similar to, and yet different from, SAI. It is similar in its design to provide an interface into the forwarding ASICs many switches or routers use, particularly those in large-scale data centers.

SDKLT differs from SAI because it is a Broadcom-only effort and because of the way its interface is built. SDKLT isn't a standard set of calls used to access chipset functions but is table-based instead. This means tables contain all of the ASIC's characteristics, switchport parameters and forwarding tables. These tables are manipulated to program the ASIC's forwarding characteristics. This process is similar to programming the registers on a general-purpose processor -- or the video memory pool on a video processing chip -- directly.

4. The P4 programming language

Finally, P4 is aimed at the same kind of chipset as the previous interfaces, but it is a programming language instead of an interface. A set of calls can control any actions the ASIC takes for each packet, while a set of data structures can manage the tables the ASIC uses to process packets.

To switch a packet, for example, the following code might be used:

V1Switch(
Parser(),
VerifyChecksum(),
Ingress(),
ComputeChecksum(),
Egress(),
) main;

This code would tell the ASIC to call each of the functions listed, causing the ASIC to parse the packet, verify the checksum, perform any ingress processing (which would likely include determining the outbound interface, determining the next hop information and rewriting any headers), compute a new checksum and perform any egress processing (queueing and other quality-of-service processing). This presents a completely different way of interacting with switch ASICs.

Why these interfaces are important

End users probably won't end up creating software that directly uses these interfaces, but they're still important. Just like the ISA bus in the original desktop systems, and the PCI and PCI Express bus in more modern systems, these interface standards can enable a rapid expansion in the number of vendors developing products. They can also cause rapid progress in the features and capabilities of the associated devices.

If a product supports one of these interfaces, for example, it might be much easier to build a customized platform for your network or an individual vertical, such as healthcare or data analytics. As the interface to the forwarding plane becomes more standardized, developers will be able to spend more time developing features, rather than adapting their software to the hardware on which they need to run it.

Dig Deeper on