IXP1200 Network Processor Family ATM
3.3IP-Router Microengine
The IP Router microengine consumes packets from the ATM receive microengine via a message queue, and routes them to the appropriate Ethernet transmit packetq. In the IXP1200
3.3.1Structure
All threads are identical. In
3.3.2High Level Algorithm
Figure 14. IP Router High Level Algorithm
while(1)
msgq_receive() packet from ATM RX engine ip_filter() out SNMP, IGMP
ip_addr_validation() to discard packets from reserved addresses
ip_dbcast_check() to filter out packets from directed broadcast addresses ip_proc()
ip_verify() check TTL and checksum ip_modify() update TTL
ip_route_lookup()
port_enabled_check() to discard packets from disabled port update Ethernet MAC Source Address with our own
#ifdef ATM_LOOPBACK //Allow hardware configurations with ATM outputs //connected directly to ATM inputs
if(output port == ATM port)
#endif
packetq_send() packet to destination Ethernet port
3.4Ethernet Receive Microengine
The Ethernet Receive microengine is based on rx_ether100m.uc, an extended version of the Ethernet receive threads from the Software Development Kit’s (SDK's)
Semantically, there are only a few differences from the SDK Ethernet design.
•IP lookup can return an ATM destination port, or an Ethernet destination port.
•For ATM destinations, prepend the LLC/SNAP to the payload.
•For ATM destinations, append the AAL5 trailer.
1.The SDK (Software Development Kit) 2.01 CD contains a number of earlier IXP1200 Ethernet example designs that have remained relatively unchanged from previous releases of the SDK. The Ethernet receive and transmit code in this example design reuses that code with few modifications
Application Note | 23 |
Modified on: 3/20/02,