13.06.2015 Views

Intel IXA SDK ACE Programming Framework - Department of ...

Intel IXA SDK ACE Programming Framework - Department of ...

Intel IXA SDK ACE Programming Framework - Department of ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

The <strong>ACE</strong> <strong>Programming</strong> <strong>Framework</strong> for Packet Handling<br />

An <strong>ACE</strong> is defined by several distinct source code files. An initialization part, which<br />

creates and initializes needed structures and variables, and the action part, which<br />

defines the associated action functions, are written in C/C++. The classification part <strong>of</strong><br />

the <strong>ACE</strong>, which defines a set <strong>of</strong> packet classification rules, is written in Network Classification<br />

Language (NCL )<br />

Each <strong>ACE</strong> generally performs one type <strong>of</strong> packet handling or data control task. You<br />

can distribute tasks among <strong>ACE</strong>s, and <strong>ACE</strong>s among code modules in any way that is<br />

logical for your application. The following figure shows the high-level architecture <strong>of</strong><br />

a typical <strong>IXA</strong> application.<br />

Managing application<br />

Object creation,<br />

flow control<br />

Error handling, status<br />

<strong>ACE</strong><br />

Control module<br />

<strong>ACE</strong><br />

Data<br />

management<br />

Data initialization,<br />

configuration<br />

Exception cases<br />

Input interface<br />

Output interface<br />

Packet flow<br />

<strong>ACE</strong><br />

<strong>ACE</strong><br />

Data processing modules<br />

You can create your own <strong>ACE</strong>s using the <strong>IXA</strong> API, or you can use predefined <strong>ACE</strong>s<br />

that perform specific network processing tasks, as described below in “Predefined<br />

<strong>ACE</strong>s.”<br />

Your application defines the flow <strong>of</strong> packets among <strong>ACE</strong>s by creating packet destinations<br />

called targets and by binding the targets to other <strong>ACE</strong>s; see “Defining the Traffic<br />

Flow Path with Targets” on page 11.<br />

Writing <strong>ACE</strong>s<br />

using C, NCL<br />

and <strong>IXA</strong> IDL<br />

In the initialization part <strong>of</strong> an <strong>ACE</strong>, you create the <strong>ACE</strong> structure itself, with its<br />

related communication methods and data structures, using the ASL core C library.<br />

In the classification part <strong>of</strong> an <strong>ACE</strong>, rules can compare packet contents against static<br />

values or against dynamic data. You define these rules using the Network Classification<br />

Language (NCL) provided with the <strong>IXA</strong> <strong>SDK</strong>. NCL is a domain-specific objectoriented<br />

language for defining packet classification rules and identifying the associated<br />

actions to be taken when matches occur. This language-based approach makes<br />

it easy for you to specify the required classification criteria.<br />

6 Introduction and Overview<br />

Revision 3.3, August 2001

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!