Difference between revisions of "VPP/OVN"

From fd.io
< VPP
Jump to: navigation, search
(Introduction)
 
(10 intermediate revisions by the same user not shown)
Line 4: Line 4:
  
 
Integration of OVN and VPP. The initial phase is to integrate VPP as a VTEP gateway to OVN.
 
Integration of OVN and VPP. The initial phase is to integrate VPP as a VTEP gateway to OVN.
There will be a simple agent written in Python that uses the VTEP OVSDB database on one side and programs the VPP data-plane on the other.
+
ovn-controller-vtep is a simple agent written in Python that uses the VTEP OVSDB database on one side and programs the VPP data-plane on the other.
  
If a packet against all odds does reach VPP (after having been ping-ponged between <n> tables in some openflow setup with a raft of ARP/ND layer violating proxies), VPP will forward the packet onto a VXLAN or Geneve tunnel. Or through a NAT? Or direct if this is IPv6? Of course none of these solutions support IPv6 yet.
+
The agent uses the https://github.com/openvswitch/ovs/tree/master/python/ovs OVS Python language binding to communicate with the hardware_vtep database over OVSDB.  
  
=== Work list ===
+
ovs.db manages a cached copy of the OVSDB database. We can do something similar for VPP, where the VPP side of the agent maintains a local cached copy of VPP's interfaces, interface state, VLANs etc.
  
# Integration bridge. Create the integration bridge and add the physical interface(s) that is used for logical network connectivity. Done outside of the ovn-gateway-vpp?
+
[https://github.com/vpp-dev/ovn-controller-vpp ovn-controller-vpp git repository]
# On agent init:  Register VPP as a Physical_Switch entry in the VTEP database, update rows with ports and tunnels
+
 
 +
=== Work list ===
  
 +
{| class="wikitable"
 +
! style="text-align:left;"| Task
 +
! Owner
 +
! Planned Release
 +
! Status
 +
! Description
 +
|-
 +
|Integration Bridge
 +
|
 +
|
 +
|
 +
| VPP configured to participate in OVN integration bridge. VPP configured separately from agent?
 +
|-
 +
| Initialise connection to OVSDB
 +
|
 +
|
 +
|
 +
| Register in the Physical_Switch table (ports, tunnels) in hardware_vtep database. Populate Physical_Port table.
 +
|-
 +
| VPP Python interface abstraction
 +
|
 +
|
 +
|
 +
| Cache and monitor VPP's interface table, VLAN mapping, ACLs etc.
 +
|-
 +
| Logical_Switch and Logical_Binding table
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
| Ucast_Macs_Local and Ucast_Mcast_Remote tables
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
| ACL integration
 +
|
 +
|
 +
|
 +
| Monitor VTEP ACL table and populate ACLs in VPP
 +
|-
 +
| BFD to tunnel endpoint
 +
|
 +
|
 +
|
 +
| Monitor remote tunnel endpoints using BFD. BFD parameters and configuration from the VTEP Tunnel table.
 +
|-
 +
| Logical_Router Table
 +
|
 +
|
 +
|
 +
| Bridge to VRF
 +
|-
 +
| Support for multicast MACs?
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
| Arp_Sources_Local and Arp_Sources_Remote tables
 +
|
 +
|
 +
|
 +
|
 +
|-
 +
| Geneve support
 +
|
 +
|
 +
|
 +
|
 +
|-
  
 +
|}
  
 
=== Testing ===
 
=== Testing ===

Latest revision as of 08:14, 5 July 2017

Project HotDog

Introduction

Integration of OVN and VPP. The initial phase is to integrate VPP as a VTEP gateway to OVN. ovn-controller-vtep is a simple agent written in Python that uses the VTEP OVSDB database on one side and programs the VPP data-plane on the other.

The agent uses the https://github.com/openvswitch/ovs/tree/master/python/ovs OVS Python language binding to communicate with the hardware_vtep database over OVSDB.

ovs.db manages a cached copy of the OVSDB database. We can do something similar for VPP, where the VPP side of the agent maintains a local cached copy of VPP's interfaces, interface state, VLANs etc.

ovn-controller-vpp git repository

Work list

Task Owner Planned Release Status Description
Integration Bridge VPP configured to participate in OVN integration bridge. VPP configured separately from agent?
Initialise connection to OVSDB Register in the Physical_Switch table (ports, tunnels) in hardware_vtep database. Populate Physical_Port table.
VPP Python interface abstraction Cache and monitor VPP's interface table, VLAN mapping, ACLs etc.
Logical_Switch and Logical_Binding table
Ucast_Macs_Local and Ucast_Mcast_Remote tables
ACL integration Monitor VTEP ACL table and populate ACLs in VPP
BFD to tunnel endpoint Monitor remote tunnel endpoints using BFD. BFD parameters and configuration from the VTEP Tunnel table.
Logical_Router Table Bridge to VRF
Support for multicast MACs?
Arp_Sources_Local and Arp_Sources_Remote tables
Geneve support

Testing

Integration tests will be achieved by extending the existing testing tool coming with ovs/ovn (make check TESTSUITEFLAGS='-k ovn'). Specific tests cases will be built for that purpose.

Contacts

  • Jerome Tollet: jtollet@cisco.com
  • Ole Troan: otroan@cisco.com

Useful links