Networking-vpp/L3 routing support
Contents
Overview
This page describes the L3 functionality that will be added to networking-vpp. It will also describe what the team plans to deliver with respect to code, test, documentation and any other deliverables. This project will add code to networking-vpp repository to enable L3 support when the networking-vpp driver is used in conjunction with an fd.io based vswitch in an openstack installation. For this work centralized router (not-dvr) based approach will be provided. There are numerous documents describing the openstack neutron routing model including:
- http://docs.openstack.org/developer/neutron/devref/layer3.html
- https://developer.rackspace.com/blog/neutron-networking-l3-agent/
Functionality that will be added
- Support for Router API operations (http://developer.openstack.org/api-ref/networking/v2/#routers-routers)
- Support for floating-IP API operations (http://developer.openstack.org/api-ref/networking/v2/#floating-ips-floatingips)
- Full support for East-West based routing between tenant networks (only via a centralized network node)
- Floating IP One-to-One NAT support for an instance (http://docs.openstack.org/newton/networking-guide/intro-nat.html)
- Centralized network or control node approach (provide figure)
- Internal gateways hosted on VPP
- External gateways - All traffic from the internal networks on the router are NATed to the router external IP
- Support for IPv4 and IPV6
Functionality not supported
- HA or any VRRP based solutions
- Distributed Virtual Router topologies (DVR)
- VXLAN-GPE
- Setting the "enable_snat = FALSE" API network extension has no affect. IOW in the case of IPv4 NAT will always be used when sending/receiving from an external network
- Any tie in with the dynamic routing or BGPVPN functionality available in Neutron
- No support for additional static routes (normally available to the user via an API call)
Limitations
- Must be coupled with the L2 plugin and run on each compute or network node
- All testing will be based on Newton release of Openstack.
What will be delivered
- Code merged in to the networking-vpp repository to add the functionality described above
- Unit tests merged in to the networking-vpp repository to test the code added in step 1
- Documentation to describe the functionality provided and the usage/installation requirements - via internal wiki
- A TOI and code walk-through to a responsible person that can continue the work after initial merge.
Test methodology
The tests included as part of this deliverable is limited to unit tests and a small number of "smoke tests" with a VPP instance installed. Complete functional tests on physical servers in configuration representative of a real deployment is outside of the scope of this deliverable.
Dependencies
This work will have a few dependencies to properly deliver the functionality. The following are the key items.
- 17.01 based fd.io and fd.io python library RPMs available for installation
- Timely code reviews and code merge from the networking-vpp community and core reviewers
- Support for the necessary L3 functionality from the fd.io vswitch/vrouter including:
- Support for NAT
- Support for proxy ARP
- Support for routing
- Support for an SVI/BVI type interface on an L2 bridge domain.
- Timely response from the fd.io community for any bugs or issues uncovered while testing.
- A responsible party that can continue the work after initial merge and guide this through functional testing.
- For customer release an comprehensive functionality test suite and execution would be required.