The SP-Gateway datapath has the responsibility of managing all the packet flows between the SGi interface and eNodeB S1U interface. This includes:
- GTP encapsulation when sending to eNodeB, and GTP extraction/mapping when receiving from eNodeB
- NAT services (Ue Ip addresses are NAT-ed before leaving the SGi, and unNAT-ed when entering
This is currently implemented using linux NFQUEUE libraries. These libraries allow the application to receive and thus modify frames targeted for other IP addresses but at the expense of cpu/kernel-stack consumption.
A more-cpu efficient method is needed to handle the network interface of these frames. Netmap is a new library and network interface which gives a linux application direct access to the Ethernet interface ingress and egress frames, bypassing the kernel network processing. The gateway target platform is the iProc Northstar+.
In order to use the netmap libraries,
- changes must be done in the existing Ethernet drivers. These changes are Ethernet-interface specific.
- The s-p gateway application needs to change to use netmap instead of NFQUEUE
This project consist of the first requirement above, integrating the Netmap libraries with the iProc Ethernet interface. Changing the s-p gateway application is a separate project.
A second part of this project involves making use of the NAT services in the iProc hardware (FA). These services are normally autonomously managed with the standard stack and libraries. Methods are needed to still provide NAT services while netmap is in operation.
The netmap libraries are platform-independent, however these libraries require changes to the Ethernet driver (source code) in order to be integrated with the system.
The developer should
- view the changes made to ixgbe_netmap_linux.h to see the best explanations for the strategies
- view the installed changes to the PC netmap version installed using e1000e Ethernet card, which has been installed on a FreeBSD PC platform and ubuntu linux. The file netmap.c contains the conditional-compile calls to the
- (in part 2) familiarize with how driver manages NAT services in the FA, and ensure similar service is available when netmap is active.
- Familiarize with iProc Ethernet drivers (iproc/bcmdrivers/gmac/src/et/sys, particularly et_linux.c and etcgmac.c are good places to start)
- Provide new <if_iProcNorthstar_netmap.h>. This will contain board-specific source code functions needed to integrate to netmap
- Modify driver source changes with conditional compile calls to netmap functions either in existing netmap library or to functions defined in < if_iProcNorthstar_netmap.h>.
- Verification and measurement of operation (including cpu-usage and data rates) using pkt-gen netmap function
- (NAT-specific) provide api to enable NAT support in platform hardware accelerator such that the NAT facility can be used in conjunction with netmap