Once Gatekeeper v1.1 is out, the major roadblock for Gatekeeper to use a mainline version of DPDK is the need to iterate LPM tables for IPv4 and IPv6. There's no sign that this feature is going to make it into DPDK in the near future since DPDK's LPM library is meant to implement a forwarding information base (FIB) instead of a routing information base (RIB). The solution to avoid a patch to add LPM iterators to DPDK is for Gatekeeper to implement a prefix tree to work as a RIB.
Since Gatekeeper would have a FIB (current code) and a RIB (new code), we must make sure that the RIB is not memory hungry. Having a prefix tree would make iterators cheaper than the current implementation, and lookups fast enough for the needs of the interfaces that manage the routing table of Gatekeeper (i.e. Dynamic configuration and CPS blocks). The current FIB would still be used to forward packets at the data plane level.
Once Gatekeeper v1.1 is out, the major roadblock for Gatekeeper to use a mainline version of DPDK is the need to iterate LPM tables for IPv4 and IPv6. There's no sign that this feature is going to make it into DPDK in the near future since DPDK's LPM library is meant to implement a forwarding information base (FIB) instead of a routing information base (RIB). The solution to avoid a patch to add LPM iterators to DPDK is for Gatekeeper to implement a prefix tree to work as a RIB.
Since Gatekeeper would have a FIB (current code) and a RIB (new code), we must make sure that the RIB is not memory hungry. Having a prefix tree would make iterators cheaper than the current implementation, and lookups fast enough for the needs of the interfaces that manage the routing table of Gatekeeper (i.e. Dynamic configuration and CPS blocks). The current FIB would still be used to forward packets at the data plane level.