Professional Documents
Culture Documents
Talk Gatech Ixp 2002
Talk Gatech Ixp 2002
Plan
Software architecture for network processor Intel Internet Exchange Architecture ACE programming framework How to compile and run the simple count ACE app ilab network setup
http://www.intel.com
Hardware Abstraction
consistent software interfaces regardless of the
underlying hardware implementation
Extensibility
easy to add new service and protocol layer
Customability
Flow based packet processing Reusable software building blocks (ACEs) Great portability, runs on IXP12xx, Intel CPU Extensible, app specific ACEs
Packet Flow
Bernie Keany. Benefits of Software APIs for the Network Processing Market. Intel Architecture Labs
Target of upstream ACEs are bound to downstream ACEs. Packet flows from an upstream ACE to a downstream ACE.
Type of ACEs
User ACEs Developed by users
Library ACEs Predefined ACEs such as L2 bridging ACE and L3 forwarding ACE. Supplied by Intel or other third party developers.
System ACEs Platform dependent ACEs. Include interface ACEs (remember HW1?) and protocol ACEs (stack ACEs). ACEs implemented in Microcode are called MicroACEs. MicroACEs hide the underlying hardware details from other ACEs.
Rule
Rule check_src {ip.src==192.168.10.20} { action_one() } Rule check_http{tpc&&(tcp.sport==80)}{action_scan()} The meaning of rule check_src is: if source ip address is 192.168.10.20, then execute action function "action_one()"
Control ACEs
such as Mac address and IP address set up, routing table entry insertion and removal
MicroACEs
Apps or other ACEs communicate with a ACE via the core component
Microblock
A microcode macro that either receives, sends, or operates on packets
#macro Counter()
.local input_port exception_code stats_addr DL_GetInputPort[input_port] immed[dl_next_block, 1] DL_SetQueueNum[input_port] immed32[stats_addr, _COUNT_STATS_BLOCK] Count_IncrementPacketCounter[stats_addr] .endlocal #endm
MicroACE Binding
Only static binding supported for MicroACEs Hard coded MicroACE connections (dispatch loop). For non-MicroACEs, binding can be configured through scripting.
Dispatch Loop
Each microblock sets two global registers
dl_buffer_handle dl_next_block handle for the current packet destination microblock number (if set IX_EXCEPTION, the packet is delivered to the ACE core component)
.while (1) DL_SASource[] .if (dl_buffer_handle == IX_BUFFER_NULL) br[Main_Dispatch#] .elif (dl_next_block == IPFILTER_TAG ) br[IPFilter#] .elif (dl_next_block == IPFWD_TAG) br[IPFwd#] .endif
Stack ACE
A kernel-mode Ethernet device driver implemented as a conventional ACE. To the Linux kernel, the stack ACE works as an Ethernet device, to other IXA modules, it is an ACE.
Count the number of packets which are input from each port Display packet count
The default Makefile rule copies the result CountMicroAce to /opt/ixasdk/bin/arm-be Permission deny error if you do this on ilabx without modifying the makefile.
Goto your project directory Modify ixsys_count_8_1.config Type make to copy it to /opt/ixasdk/bin/arm-be
iLab Setup
Switch Connecting to CoC
10/100BT 10/100BT
to CoC
10/100BT
ilab1
IP over PCI
ilab2
IP over PCI
ilab8
IP over PCI
BV Board
BV Board
10/100BT
BV Board
10/100BT 10/100BT
Internal Switch Each BV board only has two ports connected to the internal switch. There is no gig port. The Count App must be modified in order to run on theBV board.