-
Notifications
You must be signed in to change notification settings - Fork 38
NDP Switch NetFPGA
To get started with the NDP Switch on NetFPGA code, first clone the NDP repository. The code is in the switch/netfpga/ directory. You need a NetFPGA-SUME to run this project. All the information related on how to set up a NetFPGA-SUME box can be found in the NetFPGA-SUME Wiki.
The NDP switch is a layer 2 learning switch with NDP capabilities. The forwarding table is limited to 16 entries.
First, you need to have access to the NetFPGA-SUME codebase. This is because the NDP Switch on NetFPGA is based on the Reference Switch Lite project.
If you are NOT a member of the NetFPGA beta program, then you need to register here to get access to the NetFPGA-SUME-live repo
If you have already access to the NetFPGA-SUME-live repo, then you just need to run the provided script:
sh install_ndp.sh
The scripts will perform the following operations:
- Clone the NetFPGA-SUME-live repository (IMPORTANT: you will be asked to insert your github credentials in order to successfully execute the command.
- Checkout the NetFPGA-SUME release 1.5. This is because, the NDP switch has been successfully tested with that specific NetFPGA version.
- Add the NDP specific modules located in ./ndp_modules/* in the freshly cloned NetFPGA-SUME-live library.
- Patch some NetFPGA specific files to compile the NDP project.
- Create both the NDP and NetFPGA cores (WARNING: this operation will take around 10 minutes, depending on the system).
- Create the NDP bitfile (WARNING: this operation will take around 1 hour, depending on the system).
When the process is finished, the NetFPGA configuration bitfile for NDP will be found in ./NetFPGA-SUME-live/contrib-projects/ndp/bitfiles. Please, refer to the NetFPGA-SUME Wiki for any information related to NetFPGA-SUME programming and bring up.
Once the NetFPGA has been programmed with the freshly generated NDP, the board should behave as described in the apposite section of the NDP paper.
If you plan to try the NDP switch in a FAT TREE topology, then keep in mind that currently the switch DOES NOT implement any kind of spanning tree mechanic. If the spanning tree option would have been available (we are seeking for contributors!!!), you could have try straight away the Fat Tree topology by just connecting the NetFPGA boards and program them with the NDP bitfile. However this is not possible at the moment :(.
To perform the tests described in the paper and dealing with a Fat Tree topology we created two version of the NDP switch to avoid closed loops:
- NDP: this is the classic NDP switch. It is a layer 2 learning switch with NDP capabilities. If the DST-MAC-ADDRESS of the received packet is not recorded in the forwarding table, then the packet is flooded to all the port except the one where the packet has been received.
- NDP-TOR: this is a customised version of the NDP. In this version, if the DST-MAC-ADDRESS of the received packet is not recorded in the forwarding table, then the packet is NOT flooded to all the port (except the one where the packet has been received), but just to specific ones.
The figure below represents the configuration we have used:
Once you have the bitfile created with the install_ndp.sh script, then you have a classic NDP switch that you can use to configure the NetFPGAs named NDP AGG1 and NDP AGG2. To generate the bitfile for the configuration of NDP TOR1, NDP TOR2, NDP TOR3 and NDP TOR4 you need to patch the ndp_mudules with the provided patch ndp_patch_tor.diff. After you apply the patch, then you need to run the synthesis again.