• Home
  • pcDuino
  • WiKi
  • Store
  • Distributors
  • Home
  • pcDuino
  • WiKi
  • Store
  • Distributors
HomeProjectOpenFlow Switch with Hardware Flow Table
Previous Next

OpenFlow Switch with Hardware Flow Table

Posted by: Alvin Jin , February 2, 2016

[vc_row][vc_column width=”1/1″][vc_tour][vc_tab title=”Introduction” tab_id=”1454482023-1-25″][vc_column_text]18

 

An OpenFlow switch is a software program or hardware device that forwards packets in a software-defined networking (SDN) environment. OpenFlow switches are either based on the OpenFlow protocol or compatible with it.

The OpenFlowSwitch(HWFT, with Hardware Flow Table) reference design provides a set of board-specific projects.

This design achieves a hardware accelerated OpenFlow switch, using multiple stages of FPGA-implemented hardware flow tables, which are cascaded with software flow tables inside the vSwitch running in the CPU.

Demo runs at Linux level.

 

 

 

 

 

 

 

 

[/vc_column_text][/vc_tab][vc_tab title=”Features” tab_id=”1454482023-2-11″][vc_column_text]

Feature Description
Network STD. IEEE 802.3, IEEE 802.3u, IEEE 802.3ab
Physical Layer 1. 1000/100/10Mbps Copper RJ45
2. support Auto MDIX, support Auto Neg.
DataLink Layer 1. RGMII(ONS45 ONS20)/SGMII(ONS30)
2. support Promiscuous Mode (default promiscuous)
3. support MDIO management to all PHYs
Switch Method Mixed (Store-and-Forward in software, cut-through in FPGA)
Switch Rate Line rate, FPGA internal BW is 8Gbps
OpenFlow v1.3
Flow Table Multiple, pipelined, default 64, max 3 impl. by FPGA
Meter Table Supported
Match Fields L2-L4 fields
QoS WRR queuing
Metadata Supported
VLAN Support tag-remove/add/modify

[/vc_column_text][/vc_tab][vc_tab title=”Project List” tab_id=”1454482059749-2-7″][vc_column_text]

ons30-app52-ref_ofshw

[/vc_column_text][/vc_tab][vc_tab title=”Pre-Built Images” tab_id=”1454482060591-3-7″][vc_column_text]

  • For quick start demo.
File ONetSwitch30
boot.bin Download
devicetree Download
kernel Download
rootfs (EXT) Download
sw-lib Download
sw-app Download
  • For image assembling.
File ONetSwitch30
system.bit Download
dt source Download
fsbl Download
u-boot (FAT) Download
u-boot (EXT) Download
rootfs (FAT) Download
  • Additional init./config. script.
File ONetSwitch30
script Download

[/vc_column_text][/vc_tab][vc_tab title=”Block Diagram” tab_id=”1454482061742-4-9″][vc_column_text]

  • System level
    HW FT = Hardware-implemented Flow Table
    SW FT = Software-implemented Flow Table
    We allow n stages of logical flow tables to be mapped into m stages of physical flow tables, in order to get better flexibility. The physical FTs can be either software-implemented or hardware-implemented.
    When implementing HW FTs, the hardware abstraction layer translates the software logic into the values of hardware registers.

18-1

 

  • FPGA Diagram

18-2

Notice the difference of priority level between software linked list and hardware TCAM.

18-3

 

[/vc_column_text][/vc_tab][vc_tab title=”Address Map” tab_id=”1454482077920-5-3″][vc_column_text]

Base Address

For Zynq PS address map, please refer to Appx. B of Xilinx UG585.
For MAC and DMA register offset and description, please refer to Xilinx PG138 and Xilinx PG021.

ONS20/30/45 BaseAddr Notes
axi_dma0 0x40400000
axi_ethernet0 0x43c00000 eth1, MDIO master
axi_ethernet1 0x43c40000 eth2
axi_ethernet2 0x43c80000 eth3
axi_ethernet3 0x43cc0000 eth4
packet_pipeline 0x48000000 range to 0x48ffffff

[/vc_column_text][/vc_tab][vc_tab title=”Demo” tab_id=”1454482078856-6-3″][vc_column_text]This is a demo without any controller in the scenario. Here’s another page showing how to run with RYU applications.

  • Prepare the images in SD/TF card, following the instructions here.
  • Setup the topo like below.

18-4

  • Without connecting to any controller, manually send entries to enable the bidirectional communication between the two PCs.
*** example ***

zynq> <ofsoftswitch-path>/utilities/dpctl tcp:127.0.0.1:6632 flow-mod cmd=add,table=0,prio=1 in_port=1 apply:output=2
zynq> <ofsoftswitch-path>/utilities/dpctl tcp:127.0.0.1:6632 flow-mod cmd=add,table=0,prio=0 in_port=2 apply:output=1


  • Ping each other, should get the response.

[/vc_column_text][/vc_tab][/vc_tour][/vc_column][/vc_row]

Share!
Tweet

Alvin Jin

About the author

Leave a Reply Cancel reply

You must be logged in to post a comment.

Category

  • Home
  • pcDuino
  • WiKi
  • Store
  • Distributors