+ Cloud Open Source Software Commodity Hardware (Servers, White-Box Switches, I/O Blades) Large number of COs Evolved over 40-50 years 300+ Types of equipment Huge source of CAPEX/OPEX
White Box White Box White Box White Box White Box White Box White Box White Box White Box White Box Open Source SDN-based Bare-metal White Box White Box R,E,M- Access 7 ONOS Controller Cluster vRouter Control XOS (Orchestrator) vSG VNF VNF VNF VNF vSG VNF VNF VNF VNF vSG VNF VNF VNF VNF OVS OVS OVS OVS OVS Residential Mobile Enterprise Underlay Control Underlay Overlay Control Overlay vOLT Control Final CORD Architecture
White Box White Box White Box White Box White Box White Box White Box White Box White Box White Box Open Source SDN-based Bare-metal White Box White Box R,E,M- Access 8 ONOS Controller Cluster vRouter Control XOS (Orchestrator) vSG VNF VNF VNF VNF vSG VNF VNF VNF VNF vSG VNF VNF VNF VNF OVS OVS OVS OVS OVS Residential Mobile Enterprise Underlay Control Underlay Overlay Control Overlay vOLT Control Final CORD Architecture
White Box White Box White Box White Box White Box White Box White Box White Box White Box White Box Open Source SDN-based Bare-metal White Box White Box R,E,M- Access 9 ONOS Controller Cluster vRouter Control XOS (Orchestrator) vSG VNF VNF VNF VNF vSG VNF VNF VNF VNF vSG VNF VNF VNF VNF OVS OVS OVS OVS OVS Residential Mobile Enterprise Underlay Control Underlay Overlay Control Overlay vOLT Control Final CORD Architecture
controller) + OpenVSwitch to control packets. • Use XOS (Service Orchestration) to control all services (VNF) • ONOS/XOS need to communicate with OpenStack component.
vPGW, vSGW, etc • Who owns the NFV? • Vendors • We can’t force them to convert all NFVs to container. • It’s impossible to have a kubernetes solution for CORD now.
vSwitch to control packets. • There’re so many CNI for kubernetes now. • None of them are Open vSwitch based solution. • Linen-CNI is Open vSwitch + Linux Bridge solution • Same subnet traffics between POD are controlled by Bridge NODE POD POD OVS br0 ens0p3
vSwitch to control packets. • Create our own CNI to support pure Open vSwitch version. • Still some problem need to conquer future. NODE POD POD OVS ens0p3 ?
component. • ONOS need to know the IP information of each host (VMs) from neutron component. • In kubernetes, we need to provide the IP information of each POD. • Since we implement our CNI, we can send the IP information after CNI assigns IP to POD. • Send the information via Restful API/gRPC
• The chicken-and-egg conundrum! • Hard to solve, we need to work-around now. • We decide to move the ONOS out of POD. • For each node, it should have multiple network interface including data network and control network. • Out of band.
(multus-CNI) • Provides the multi interface support in a pod • We don’t figure out how to use it first. • We thought it’s a global setting. • We try to implement by ourself.
multiple times. • For CNI, we need to know the namespace location for each POD. • We want to provide a interface to dynamically call CNI for any existing POD. • Input • Pod Name, Network configuration (CNI name, configuration) • Output • Success (add another interface for existing POD) • Error
the namespace location of each POD. • We also need to know the POD name • In the CNI plugin, we can get above information via • Args.Args (many information, separate by semi-colon) • Args.Netns • We store those information in ETCD.
DHCP daemon on each node. • You should setup a DHCP server on your network. • How it works. • Start a DHCP client when a POD is be created. • Forward the DHCP packet to DHCP server(it depends on your CNI forward L2 broadcast) • Official recommend to use MacVLan as CNI. • Limitation • All node in same subnet. • Simple configuration.You only specify “type=dhcp” in CNI configuration.
• Use a local file to record how many IP address has been used. • Lookup the file and choose an available IP address for CNI. • Limitation. • You should prepare a configuration for each Node with different setting. • Complex configuration.You need to specify which subnet the Node will use. • Make sure no duplicate for each Node.
record the subnet of each node. • Simple configuration • Network: 10.12.0.0/16 • Subnet length: 24 • etcd address. • The subnet will from 10.12.1.0/24 to 10.12.255.0/24 • Simple and easy to implement.
CNI. • Make sure the ONOS can control the network. • For the kubernetes internal communication, the ONOS should implement all of them by Openflow, not iptables. NODE POD POD OVS ens0p3 Use openflow rules many iptable rules.