Intel IXA SDK ACE Programming Framework - Department of ...
Intel IXA SDK ACE Programming Framework - Department of ...
Intel IXA SDK ACE Programming Framework - Department of ...
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