-
Notifications
You must be signed in to change notification settings - Fork 0
NetFPGA 1G Ported Router OPED 10G
ported_router_oped_10g
contrib-projects/ported_router_oped_10g
- NetFPGA-10G Specific cores
- Xilinx AXI Peripheral
- Microblaze Subsystem
- Contribution
- Other
This section describes the mechanism for integrating existing 1G Output Port Lookup modules into the 10G pipeline. This has been achieved using two newly developed IP cores namely, AXI4-Stream to Packet Bus Bridge and AX4-Lite to Register Bus Bridge. Remainder of the section is on how to use these two bridges in a 10G design. For information on rest of the reference pipeline, visit NetFPGA 10G Reference NIC 1G.
These two libraries are tested using Output Port Lookup Modules (OPL) taken from NetFPGA-1G core library e.g. NIC, Learning CAM Switch and CAM Router. Here we provide a general guideline that will help in setting up the library.
Before starting the porting process, the NetFPGA-1G OPL module is wrapped in an EDK compliant peripheral core. This can be done using the provided sample template which contains a generic top exposing necessary Packet Bus and Register Bus interfaces. Once done, this core is integrated into the 10G desgin using the bridges.
-
Inserting AXI4-Stream and Packet Bus Bridge
- Insert the NetFPGA-1G core in the EDK project.
- Connect the M_PBS bus of the "AXI4-Stream to Packet Bus Bridge" to the S_PBS bus of the NetFPGA-1G core.
- Connect the S_PBS bus of the Bridge to the M_PBS bus of the NetFPGA-1G core.
- Connect the S_AXI bus of the Bridge to the preceding Master module in the design e.g. if you are porting an Output Port Lookup Module, you should connect it to the Input Arbiter.
- Conncet the M_AXI bus of the Bridge to the following Slave module in the design e.g. if you are porting an Output Port Lookup Module you should connect it to the BRAM Output Queues.
-
Inserting AXI4-Lite and Register Bus Bridge
- Connect the M_RBS bus of the "AXI4-Lite to Register Bus Bridge" to the S_RBS bus of the NetFPGA-1G core.
- Connect the S_RBS bus of the Bridge to the M_RBS bus of the NetFPGA-1G core.
- Connect the S_AXI bus of the Bridge to the axi_interconnect.
- In the Master/Slave specifc settings of the axi_interconnect, check the ACLK setting as asynchronous with respect to the Bridge.
In this section, we describe the process of porting the NetFPGA-1G CAM router to the new 10G platform. The steps are:
-
Create a new EDK core for the NetFPGA-1G CAM router library. Replace the black-box CAM with the Virtex5 compatible CAM using the XAPP1151.
-
Insert the AXI4-Lite to Register Bus Bridge in the EDK project. Doing so will set a default address range for this block e.g. 0x76600000 to 0x7660ffff.
-
Set the parameter C_RBS_RING_SIZE to 16.
-
Hardcode the switch parameters with the following values in the defines.vh file
-
IO_QUEUE_STAGE_NUM 'hFF
-
IOQ_SRC_PORT_POS 16
-
IOQ_DST_PORT_POS 48
-
ROUTER_OP_LUT_ROUTE_TABLE_DEPTH 32
-
ROUTER_OP_LUT_ARP_TABLE_DEPTH 32
-
ROUTER_OP_LUT_DST_IP_FILTER_TABLE_DEPTH 32
-
UDP_REG_ADDR_WIDTH (32-2)
-
CPCI_NF2_DATA_WIDTH 32
-
ROUTER_OP_LUT_REG_ADDR_WIDTH 8
-
ROUTER_OP_LUT_BLOCK_ADDR 0
-
ROUTER_OP_LUT_DEFAULT_MAC_0_HI 16'hcafe
-
ROUTER_OP_LUT_DEFAULT_MAC_0_LO 32'hf00d0001
-
ROUTER_OP_LUT_DEFAULT_MAC_1_HI 16'hcafe
-
ROUTER_OP_LUT_DEFAULT_MAC_1_LO 32'hf00d0002
-
ROUTER_OP_LUT_DEFAULT_MAC_2_HI 16'hcafe
-
ROUTER_OP_LUT_DEFAULT_MAC_2_LO 32'hf00d0003
-
ROUTER_OP_LUT_DEFAULT_MAC_3_HI 16'hcafe
-
ROUTER_OP_LUT_DEFAULT_MAC_3_LO 32'hf00d0004
-
ROUTER_OP_LUT_ARP_NUM_MISSES 0 (axi address = 0x76600000)
-
ROUTER_OP_LUT_LPM_NUM_MISSES 1 (axi address = 0x76600004)
-
ROUTER_OP_LUT_NUM_CPU_PKTS_SENT 2 (axi address = 0x76600008)
-
ROUTER_OP_LUT_NUM_BAD_OPTS_VER 3 (axi address = 0x7660000c)
-
ROUTER_OP_LUT_NUM_BAD_CHKSUMS 4 (axi address = 0x76600010)
-
ROUTER_OP_LUT_NUM_BAD_TTLS 5 (axi address = 0x76600014)
-
ROUTER_OP_LUT_NUM_NON_IP_RCVD 6 (axi address = 0x76600018)
-
ROUTER_OP_LUT_NUM_PKTS_FORWARDED 7 (axi address = 0x7660001c)
-
ROUTER_OP_LUT_NUM_WRONG_DEST 8 (axi address = 0x76600020)
-
ROUTER_OP_LUT_NUM_FILTERED_PKTS 9 (axi address = 0x76600024)
-
ROUTER_OP_LUT_MAC_0_HI 10 (axi address = 0x76600028)
-
ROUTER_OP_LUT_MAC_0_LO 11 (axi address = 0x7660002c)
-
ROUTER_OP_LUT_MAC_1_HI 12 (axi address = 0x76600030)
-
ROUTER_OP_LUT_MAC_1_LO 13 (axi address = 0x76600034)
-
ROUTER_OP_LUT_MAC_2_HI 14 (axi address = 0x76600038)
-
ROUTER_OP_LUT_MAC_2_LO 15 (axi address = 0x7660003c)
-
ROUTER_OP_LUT_MAC_3_HI 16 (axi address = 0x76600040)
-
ROUTER_OP_LUT_MAC_3_LO 17 (axi address = 0x76600044)
-
ROUTER_OP_LUT_ARP_TABLE_ENTRY_MAC_HI 18 (axi address = 0x76600048)
-
ROUTER_OP_LUT_ARP_TABLE_ENTRY_MAC_LO 19 (axi address = 0x7660004c)
-
ROUTER_OP_LUT_ARP_TABLE_ENTRY_NEXT_HOP_IP 20(axi address = 0x76600050)
-
ROUTER_OP_LUT_ARP_TABLE_RD_ADDR 21 (axi address = 0x76600054)
-
ROUTER_OP_LUT_ARP_TABLE_WR_ADDR 22 (axi address = 0x76600058)
-
ROUTER_OP_LUT_ROUTE_TABLE_ENTRY_IP 23 (axi address = 0x7660005c)
-
ROUTER_OP_LUT_ROUTE_TABLE_ENTRY_MASK 24 (axi address = 0x76600060)
-
ROUTER_OP_LUT_ROUTE_TABLE_ENTRY_NEXT_HOP_IP 25(axi address = 0x76600064)
-
ROUTER_OP_LUT_ROUTE_TABLE_ENTRY_OUTPUT_PORT 26(axi address = 0x76600068)
-
ROUTER_OP_LUT_ROUTE_TABLE_RD_ADDR 27 (axi address = 0x7660006c)
-
ROUTER_OP_LUT_ROUTE_TABLE_WR_ADDR 28 (axi address = 0x76600070)
-
ROUTER_OP_LUT_DST_IP_FILTER_TABLE_ENTRY_IP 29(axi address = 0x76600074)
-
ROUTER_OP_LUT_DST_IP_FILTER_TABLE_RD_ADDR 30 (axi address = 0x76600078)
-
ROUTER_OP_LUT_DST_IP_FILTER_TABLE_WR_ADDR 31 (axi address = 0x7660007c)
-
-
include "defines.vh" file in all 1G modules.
-
Connect the M_RBS bus of the "AXI4-Lite to Register Bus Bridge" to the S_RBS bus of the NetFPGA-1G core.
-
Connect the S_RBS bus of the Bridge to the M_RBS bus of the NetFPGA-1G core.
-
Connect the S_AXI bus of the Bridge to the axi_interconnect.
-
In the Master/Slave specifc settings of the axi_interconnect, check the ACLK setting as asynchronous with respect to the "AXI4-Lite to Register Bus Bridge".
-
Insert the "AXI4-Stream to Packet Bus Bridge" in the EDK project.
-
Connect the M_PBS bus of the "AXI4-Stream to Packet Bus Bridge" to the S_PBS bus of the NetFPGA-1G core.
-
Connect the S_PBS bus of the Bridge to the M_PBS bus of the NetFPGA-1G core.
Three are the main software utilities provided with the router:
- CLI (Command Line Interface, useful to manage ARP table and Forwarding Table).
- Router Kit Daemon (simple approach to providing hardware acceleration to an unmodified Linux system) - for more information, refer to : Router Kit Daemon Web Page
- SCONE (Software Component of NetFPGA, a user level router that performs IPv4 forwarding) - for more information, refer to: SCONE Web Page
After configuring the system as explained above, functional tests were performed in order to validate the system. For the Datapath, system operates as a CAM Router. The status registers are read and verified using the driver_ctrl utility provided with the NetFPGA-10G reference NIC 10G device driver.
It's worth noticing that using this porting mechanism, the obtained router is faster than when ran on the existing NetFPGA-1G platform but is not fully 10G compatible.