Download presentation
Presentation is loading. Please wait.
1
Openstack with OpenDaylight (A Workshop)
Vivekanandan Narasimhan, Ericsson Vishal Thapar, Ericsson Credits: Andre Fredette, Red Hat Isaku Yamahata, Intel Sam Hague, Red Hat
2
Agenda Openstack & OpenDaylight (ODL)
Networking-ODL and ODL Controller Genius NetVirt Demo
3
Quick Overview - Openstack
Openstack is a popular Opensource Cloud Operating System. Can be used to build our own Private or Public clouds. Uses Compute (Nova), Storage (Swift) and Network (Neutron) Virtualization to realize cloud. Hypervisor-agnostic, Storage-array agnostic and Networking-agnostic
4
OpenStack and OpenDaylight Integration
Overview - Openstack & OpenDaylight OpenStack and OpenDaylight Integration Network/Control Node Neutron ML2 DB ML2 Plugin Networking-odl Controller node OpenDaylight* Neutron Northbound ovsdb/NetVirt Yang Model Management Network Compute Node Networking Node Internet Data Network VM VM VM OVS DHCP Agent OVS Public Network Router
5
Overview - OpenDaylight SDN Platform
for Boron
6
Overview - Openstack and ODL Netvirt
OpenStack Neutron networking-odl ODL ML2 Driver OpenDaylight Neutron Northbound NetVirt MD-SAL Southbound Protocols OVSDB OpenFlow
7
Features Delivered in Boron
Overview - Features delivered in Boron Merge of NetVirt and VPNService projects L2 L3 Auto-bridge creation Auto-tunnel creation Floating IP’s VLAN and Flat provider network support for multiple internal and external networks Security Groups Stateful using conntrack Stateless Learn (for OVS-DPDK) NAPT SNAT IPv6 Layer 2 Gateway
8
Features Delivered in Boron
Demo Preparation Prerequisite: You will require a laptop with 8 GB of RAM. Copy and import netvirt_boron_mitaka.ova from the usb drive. The file is 4.1 GB and requires the ex-fat driver. Load the driver if needed. Copy the relevant VirtualBox installer and install if not already installed. 3. Import the ova into VirtualBox. 4. Wait for further instructions to finish the configuration. The instructions will be presented later during the demo portion of the tutorial.
9
Agenda Agenda Openstack & OpenDaylight (ODL)
Networking-ODL and ODL Controller Genius NetVirt Demo
10
Openstack neutron and networking-odl
L2: ML2 plugin L3: ODL L3 plugin services FWaaS L2Gateway QoS LBaaS BGPVPN networking-sfc trunk Neutron Server ML2 Plugin ODL L3 Plugin Service Plugins Type Manager Mechanism Manager FWaaS L2GW QoS ... GRE TypeDriver VLAN TypeDriver VXLAN TypeDriver ODL mech driver SR-IOV ... ODL driver ... ODL driver ODL driver ... ... ... networking-odl
11
Networking-odl Role Networking-odl Role
Push down resource info from neutron into ODL Pass-through Neutron API: create/update/delete network/subnet/port/... to ODL neutron northbound: create/update/delete network/subnet/port/… sounds very simple, but difficult task in distributed environment
12
ODL Neutron Northbound
User Request ODL component REST API for networking-odl Common part of openstack integration Neutron Northbound does RestAPI for networking-odl YangModel for neutron info Mirror of openstack neutron definition Neutron Northbound does NOT Talk southbound protocol to program switches Neutron Neutron DB Networking-ODL RestAPI OpenDaylight MD-SAL Yang Model Neutron Northbound OpenStack Service Provider Openflow OVSDB
13
Agenda Agenda Openstack & OpenDaylight (ODL)
Networking-ODL and ODL Controller OpenFlow & OVSDB Genius NetVirt Demo
14
Brief Overview of Open vSwitch
15
Open vSwitch Components
ovsdb-server Database that holds switch‐level configuration Custom database with nice properties: value constraints, weak references, garbage collection Log based Speaks management protocol (OVSDB, JSON-RPC) to manager and ovs-vswitchd Supports multiple connections ovs-vswitchd: Core component in the system: Communicates with outside world using OpenFlow Communicates with ovsdb-server using management protocol Communicates with kernel module over netlink Communicates with the system through netdev abstract interface Packet classifier supports efficient flow lookup with wildcards and “explodes” these (possibly) wildcard rules for fast processing by the datapath Supports multiple independent datapaths (bridges)
16
OVSDB Southbound OVSDB Southbound Library OVSDB raw protocol layer
Maintains connections to OVSDB nodes Applications register callbacks to receive messages Southbound Owns yang models Controls connections Writes incoming OVSDB messages to operational datastore Sends outgoing OVSDB messages in response to configuration updates
17
Agenda Agenda Openstack & OpenDaylight (ODL)
Networking-ODL and ODL Controller OpenFlow & OVSDB Genius NetVirt Demo
18
GENIUS GENIUS L2 Service Genius L3 Service ACL DHCP SFC GBP NetVirt Interface Manager Resource ID MDSAL Utils MD-SAL Openflow Plugin OVSDB Plugin NETCONF Plugin Tunnel Opendaylight offset 1 project, introduced in ODL-Boron Provides Generic Network Interfaces, Utilities and Services A framework for integration of different network services Provides common view of network interfaces across services Decouples application NSFs from Southbound plugins Allows sharing of openflow resources like table-ids, group-ids etc. Genius is an offset 1 project introduce in ODL boron cycle It has modules to define generic network interfaces and it provides several utilities and services that any ODL application can use, we will talk about these services in following slides Genius is essentially a framework for integration of different networking services, and thus, it allows co-existence of multiple applications, providing networking services Another main feature of genius is that it decouples applications from different southbound plugins. So that applications only talk with genius without bothering about southbound protocols underneeth It also provides a mechanism for sharing different openflow resource like openflow tables, groups, meters etc. Genius resource manager module owns these openflow resources, and allocates them to different applications on demand at runtime, in an interference free manner. Though it is a new project in community, we are using these modules for our SDN controller solution for some time and we are shipping solutions based on genius modules to our customers, it is well tested in scale scenarios in clustered environment
19
Agenda Agenda Openstack & OpenDaylight (ODL)
Networking-ODL and ODL Controller OpenFlow & OVSDB Genius NetVirt Demo
20
NetVirt NetVirt OpenStack Service Provider in OpenDayight
Neutron NSF OpenStack Service Provider in OpenDayight Provides several services like L2, L3, NAT and BGPVPN etc. Uses OpenDaylight Genius framework NetVirt DHCP L2 Service L3 Service NAT Service ACL Service MD-SAL Genius Openflow Plugin OVSDB Plugin
21
L2 Service (ELAN) L2 Service (ELAN)
L2 forwarding service (MAC lookup only) Neutron networks map to ELAN instances and determine corresponding broadcast domains MAC learning on packets hitting the OVS datapath Support for vlan trunk ports, vlan subports, and vlan transparent networks Forwarding between switches using VxLAN overlay Each ELAN maintains Local and remote broadcast groups per switch, for flooding Has lower priority than L3 service in GENIUS based pipeline Can forward non-IP pkts, IPv6 pkts because logic is purely L2 based
22
L3 Service (VPN) L2 Service (ELAN)
Provides Routing-as-a-service (IP lookup) Every Neutron Router is modeled as a VPN instance. Distributed Routing of packets from source to destination (no hops) Supports NATing service enabling VMs to access external networks that are GRE, VLAN and FLAT types Support Extra-Routes for routers Support both IPv4 and IPv6 routing
23
(38*) BGPoMPLS (Ext Tunnel)
OpenDaylight - NetVirt Pipeline Ing. ACL Service (1) (17) Dispatcher L2 Service (4) L3 Service 3) VM port (0) Classifier Provider Network Internal Tunnel BGPoMPLS GW IPv6 ND for Router Interface (45) IPv6 Other packets IPv6 Service (2) (19) DMAC Service Filter Other DMAC L3 DMAC Match Allowed (251) Egress ACL (252) Egress ACL 2 (253*) Egress ACL 3 (18*) BGPoMPLS DHCP (42*) Ingress ACL 3 (41) Ingress ACL 2 Match Allowed (40) Ingress ACL Known SMAC (50) L2 SMAC Learning Unknown SMAC Known DMAC (51) L2 DMAC Filter Unknown DMAC Tunnel In Port (52) L2 Unknown DMACs VM In Port Group Full BC Local BC L.Register + Egress (55) Filter Equal ? Match - Drop VM Dest IP (21) L3 - FIB Floating Dest IP IP - Default Route Non IP ARP (80) Non IP Non-ARP DHCP Non-DHCP (38*) BGPoMPLS (Ext Tunnel) (25) PDNAT (FIP) Associated DFIP Associated SIP (26) PSNAT (FIP) Unknown SIP (44) NAPT Inbound (46) NAPT Outbound (47) NAPT FIB Unknown NAPT Known NAPT Associated DIP (27) DNAT (FIP) Associated SFIP (28) SNAT (FIP) (20) LFIB 21 outputs directly to tunnel ports - bug or correct diagram? Same for 51.. Shouldn’t it go through 220 (though not through egress acl)? What is the group remote VM for? Is the order of services from the Dispatcher and resubmits to the Dispatcher clear enough? Ideas to improve clarity without clutter? Should the BGPoMPLS be shown here, or leave for specific usecase slides? (same for SFC) Ingress/Egress ACLs - clear enough? Is Ingress service really first? Also 3 ACLs in each direction are used for learn, and 2 for other solutions, though behavior is similar What does Filter Equal matches mean? What are the matches for the drop rules? Group Local VM Group Remote VM Group Provider Network (36) Internal Tunnel (220) Egress Dispatcher Output to Controller Output to OpenFlow port Resubmit to Dispatcher (17)
24
Agenda Agenda Openstack & OpenDaylight (ODL)
Networking-ODL and ODL Controller OpenFlow & OVSDB Genius NetVirt Demo
25
Demo Description Agenda
Demonstrate network virtualization using vxlan overlay, L3 and floating ip Three nodes in a single ova that can be consumed by vm players: openstack control, compute, OpenDaylight, CentOS 7, devstack openstack compute, CentOS 7, devstack router for external access, CentOS 6.5 Can be found later here:
26
Topology Agenda
27
Demo Steps: Import VMs and Start DevStack
Agenda Change the vboxnet0 IPv4 Address to Find the setting at File->Preferences->Network->Host-only Networks. Import the OVA into VirtualBox Copy ovsdbtutorial15_2.ova to local system File->Import Appliance, Browse to ovsdbtutorial15_2.ova Do not select “Reinitialize the MAC address of all network cards” Import: odl31-compute, odl31-control and router-node will be imported Note: If VirtualBox complains about the fourth VM Network Adapter when you start the OVA image then go into the settings for the VM, select Network->Adapter 4->Advanced. Change the Adapter Type from Paravirtualized Network (virtio-net) to the type just above it. VB under Windows sometimes has issues with the fourth Network Adapter. Start all three VMs via the VirtualBox interface Log into the odl31-control node. ssh pw: odl Start devstack cd /opt/devstack ./stack.sh Repeat 4 and 5 to start devstack on odl32-compute, ssh pw: odl
28
Demo Steps: Import VMs and Start DevStack
Agenda Change the vboxnet0 IPv4 Address to Find the setting at File->Preferences->Network->Host-only Networks. Import the OVA into VirtualBox Copy netvirt_boron_mitaka.ova to local system File->Import Appliance, Browse to netvirt_boron_mitaka.ova Do not select “Reinitialize the MAC address of all network cards” Import: odl31-compute, odl31-control and router-node will be imported Note: If VirtualBox complains about the fourth VM Network Adapter when you start the VM images then go into the settings for the VM, select Network->Adapter 4->Advanced. Change the Adapter Type from Paravirtualized Network (virtio-net) to the type just above it. VB under Windows sometimes has issues with the fourth Network Adapter. You will likely need to do this for both odl31-control and odl31-compute if you hit the issue. Start all three VMs via the VirtualBox interface Log into the odl31-control node. ssh pw: odl Start devstack cd /opt/devstack ./stack.sh Repeat 4 and 5 to start devstack on odl32-compute, ssh pw: odl
29
Demo Steps: Import VMs and Start DevStack
Agenda Change the vboxnet0 IPv4 Address to Find the setting at File->Preferences->Network->Host-only Networks. Import the OVA into VirtualBox Copy ovsdbtutorial15_2.ova to local system File->Import Appliance, Browse to ovsdbtutorial15_2.ova Do not select “Reinitialize the MAC address of all network cards” Import: odl31-compute, odl31-control and router-node will be imported Note: If VirtualBox complains about the fourth VM Network Adapter when you start the OVA image then go into the settings for the VM, select Network->Adapter 4->Advanced. Change the Adapter Type from Paravirtualized Network (virtio-net) to the type just above it. VB under Windows sometimes has issues with the fourth Network Adapter. Start all three VMs via the VirtualBox interface Log into the odl31-control node. ssh pw: odl Start devstack cd /opt/devstack ./stack.sh Repeat 4 and 5 to start devstack on odl32-compute, ssh pw: odl
30
./stack.sh output Agenda
eth0: management, requires adding VB port-forwarding to reach from host. Use eth3 instead since it is usable without adding port-forwarding eth1: internal data network for tenant traffic, vxlan tunnels eth2: external network for floating-ip’s - note this is eth1 for the router-node eth3: management, reachable from host via the vboxnet0 Host-only Network VM Services eth0 VB NAT eth1 VB Internal 1 eth2 VB Internal 2 eth3 VB vboxnet0 odl31-control control, ODL odl32-compute compute router-node router, DHCP VB internal 2 NA
31
Topology Mappings Agenda Description Name MAC Address IP Address
Floating-IP Node Port ext-net rtr fa:16:3e:5b:ce:2f vx-net0 gw dhcp tap4a3bc435-0a a:16:3e:cc:ba:69 fa:16:3e:05:cd:7d odl31 2 vx-net1 gw tap8e7a4d61-a7 fa:16:3e:94:07:2e fa:16:3e:18:ae:3d 5 vmvx01 tap9100e021-53 fe:16:3e:23:d9:c0 fa:16:3e:23:d9:c0 fa:16:3e:e5:e5:81 3 vmvx11 tap738ad178-43 fe:16:3e:79:69:73 fa:16:3e:79:69:73 fa:16:3e:c8:99:b9 6 vtep tund152e25a97b 96:6b:83:33:6c:59 4 vmvx02 tapafd3542b-03 fe:16:3e:76:91:5f fa:16:3e:76:91:5f fa:16:3e:cb:e2:b8 odl32 vmvx12 tap108e127b-79 fe:16:3e:81:78:40 fa:16:3e:81:78:40 fa:16:3e:42:e9:e5 vtep tun177ea7be544 c2:8a:be:01:b0:d4
32
Neutron Commands (1 of 4) Agenda
source openrc admin admin os_addnano.sh: nova flavor-create m1.nano auto os_addadminkey.sh: nova keypair-add --pub-key ~/.ssh/id_rsa.pub admin_key
33
Neutron Commands (2 of 4) Agenda os_addnet0.sh:
neutron net-create vx-net0 --provider:network_type vxlan --provider:segmentation_id 1500 neutron subnet-create vx-net /24 --name vx-subnet0 --dns-nameserver os_addvms0.sh: nova boot --poll --flavor m1.nano --image $(nova image-list | grep 'uec\s' | awk '{print $2}' | tail -1) --nic net-id=$(neutron net-list | grep -w vx-net0 | awk '{print $2}') vmvx01 --availability-zone=nova:odl31 --key-name admin_key sleep 5 nova boot --poll --flavor m1.nano --image $(nova image-list | grep 'uec\s' | awk '{print $2}' | tail -1) --nic net-id=$(neutron net-list | grep -w vx-net0 | awk '{print $2}') vmvx02 --availability-zone=nova:odl32 --key-name admin_key nova get-vnc-console vmvx01 novnc nova get-vnc-console vmvx02 novnc nova keypair-add --pub-key ~/.ssh/id_rsa.pub admin_key
34
Neutron Commands (3 of 4) Agenda os_addnet1.sh:
neutron net-create vx-net1 --provider:network_type vxlan --provider:segmentation_id 1500 neutron subnet-create vx-net /24 --name vx-subnet0 --dns-nameserver os_addvms1.sh: nova boot --poll --flavor m1.nano --image $(nova image-list | grep 'uec\s' | awk '{print $2}' | tail -1) --nic net-id=$(neutron net-list | grep -w vx-net1 | awk '{print $2}') vmvx11 --availability-zone=nova:odl31 --key-name admin_key sleep 5 nova boot --poll --flavor m1.nano --image $(nova image-list | grep 'uec\s' | awk '{print $2}' | tail -1) --nic net-id=$(neutron net-list | grep -w vx-net1 | awk '{print $2}') vmvx12 --availability-zone=nova:odl32 --key-name admin_key nova get-vnc-console vmvx11 novnc nova get-vnc-console vmvx12 novnc nova keypair-add --pub-key ~/.ssh/id_rsa.pub admin_key
35
Neutron Commands (4 of 4) Agenda os_addrtr.sh:
neutron router-create ext-rtr neutron router-interface-add ext-rtr vx-subnet0 neutron router-interface-add ext-rtr vx-subnet1 os_addextnet.sh: neutron net-create ext-net --router:external --provider:physical_network public --provider:network_type flat neutron subnet-create --name ext-subnet --allocation-pool start= ,end= disable-dhcp --gateway ext-net /24 neutron router-gateway-set ext-rtr ext-net os_addfloatingips.sh: for vm in vmvx01 vmvx02 vmvx11 vmvx12; do vm_id=$(nova list | grep $vm | awk '{print $2}') port_id=$(neutron port-list -c id -c fixed_ips -- --device_id $vm_id | grep subnet_id | awk '{print $2}') neutron floatingip-create --port_id $port_id ext-net done;
36
odl31-control local.conf (1 of 2)
Agenda # flip OFFLINE and RECLONE to lock (RECLONE=no) or update the source. OFFLINE=True RECLONE=no VERBOSE=True # disable everything so we can explicitly enable only what we need disable_all_services # Core compute (glance+keystone+nova+vnc) enable_service g-api g-reg key n-api n-crt n-obj n-cpu n-cond n-sch n-novnc n-xvnc n-cauth # dashboard enable_service horizon # neutron services. Recognize q-agt and q-l3 is not set which means ODL is the l2 agent and l3 provider. enable_service neutron q-dhcp q-meta q-svc # enable one of the two below: # the first is external which assumes the user has ODL running already # make sure to set the ODL_MGR_IP and ODL_PORT because we run in manual mode # the second is allinone where devstack will download (if online) and start ODL # enable_service odl-compute odl-neutron # or use the allinone enable_service odl-server odl-compute # additional services. rabbit for rpm-based vm. enable_service mysql rabbit
37
odl31-control local.conf (2 of 2)
Agenda HOST_IP= HOST_NAME=odl31 SERVICE_HOST_NAME=$HOST_NAME SERVICE_HOST=$HOST_IP Q_HOST=$SERVICE_HOST enable_plugin networking-odl stable/mitaka # PORT and IP are only needed if using manual mode with external ODL. # allinone uses defaults: ODL_PORT=8087, ODL_MGR_IP=$HOST_IP ODL_MODE=allinone # ODL_PORT=8080 # ODL_MGR_IP= NEUTRON_CREATE_INITIAL_NETWORKS=False ODL_PROVIDER_MAPPINGS=public:eth2 SKIP_OVS_INSTALL=True ODL_USING_EXISTING_JAVA=True ODL_JAVA_MAX_MEM=2048m ODL_NETVIRT_KARAF_FEATURE=odl-netvirt-openstack ODL_RELEASE=boron-snapshot-0.5.0 [[post-config|$NEUTRON_CONF]] [DEFAULT] service_plugins = networking_odl.l3.l3_odl.OpenDaylightL3RouterPlugin
38
odl32-compute local.conf
Agenda # disable everything so we can explicitly enable only what we need disable_all_services # Core compute (nova+vnc) enable_service n-cpu n-novnc # next line enables odl as the neutron backend rather than the l2 agent enable_service neutron odl-compute # additional services. rabbit for rpm-based vm. enable_service rabbit HOST_IP= HOST_NAME=odl32 SERVICE_HOST_NAME=odl31 SERVICE_HOST= Q_HOST=$SERVICE_HOST enable_plugin networking-odl stable/mitaka # PORT and IP are only needed if using manual mode with external ODL. # allinone uses defaults: ODL_PORT=8087, ODL_MGR_IP=$HOST_IP ODL_MODE=allinone # ODL_PORT=8080 # ODL_MGR_IP= ODL_PROVIDER_MAPPINGS=public:eth2 SKIP_OVS_INSTALL=True
39
Demo Steps: Create Networks, L3 and Floating IPs
Agenda source openrc admin admin os_addnano.sh: add a nano flavor of the vms os_addadminkey.sh: add ssh keys to have password-less logins to the tenant vms os_addnet0.sh: add vxlan network /24 os_addvms0.sh: launch two vms, one on each compute node os_addnet1.sh: add vxlan network /24 os_addvms1.sh: launch two vms, one on each compute node os_addrtr.sh: add router for the two subnets os_addextnet.sh: add flat external network and set router gw os_addfloatingips.sh: assign floating ip’s to each vm ping away! Or just use /opt/tools/os_doitall.sh: But it’s more fun to do each step and see what happens...
40
After stacking: Topology
Agenda
41
After stacking: OVSDB Agenda
sudo ovs-vsctl show b a6e41 Manager "tcp: :6640" is_connected: true Bridge br-int Controller "tcp: :6653" fail_mode: secure Port "eth2" Interface "eth2" Port br-int Interface br-int type: internal ovs_version: "2.5.1" br-int created eth2 moved to br-int
42
After stacking: Flows Agenda
sudo ovs-ofctl --protocol=OpenFlow13 dump-flows br-int OFPST_FLOW reply (OF1.3) (xid=0x2): cookie=0x , duration= s, table=17, n_packets=0, n_bytes=0, priority=0,metadata=0xa /0xe actions=write_metadata:0xc /0xe ,goto_table:80 cookie=0x , duration= s, table=18, n_packets=0, n_bytes=0, priority=0 actions=goto_table:38 cookie=0x , duration= s, table=19, n_packets=0, n_bytes=0, priority=0 actions=goto_table:80 cookie=0x , duration= s, table=20, n_packets=0, n_bytes=0, priority=0 actions=goto_table:80 cookie=0x , duration= s, table=21, n_packets=0, n_bytes=0, priority=0 actions=goto_table:80 cookie=0x , duration= s, table=22, n_packets=0, n_bytes=0, priority=0 actions=CONTROLLER:65535 cookie=0x , duration= s, table=40, n_packets=0, n_bytes=0, priority=0 actions=goto_table:41 cookie=0x , duration= s, table=41, n_packets=0, n_bytes=0, priority=0 actions=resubmit(,17) cookie=0x , duration= s, table=45, n_packets=0, n_bytes=0, priority=0 actions=resubmit(,17) cookie=0x , duration= s, table=50, n_packets=0, n_bytes=0, priority=0 actions=CONTROLLER:65535,goto_table:51 cookie=0x , duration= s, table=51, n_packets=0, n_bytes=0, priority=0 actions=goto_table:52 cookie=0x , duration= s, table=60, n_packets=0, n_bytes=0, priority=0 actions=resubmit(,17) cookie=0x , duration= s, table=80, n_packets=0, n_bytes=0, priority=0 actions=resubmit(,17) cookie=0x , duration= s, table=251, n_packets=0, n_bytes=0, priority=0 actions=goto_table:252 cookie=0x , duration= s, table=252, n_packets=0, n_bytes=0, priority=0 actions=resubmit(,220)
43
After adding first network: Topology
Agenda
44
After adding first network: OVSDB
Agenda sudo ovs-vsctl show b a6e41 Manager "tcp: :6640" is_connected: true Bridge br-int Controller "tcp: :6653" fail_mode: secure Port "tap4a3bc435-0a" Interface "tap4a3bc435-0a" type: internal Port "eth2" Interface "eth2" Port br-int Interface br-int ovs_version: "2.5.1" dhcp namespace port tap4a3bc435-0a for vxnet0 added to br-int
45
After adding first network: Flows
Agenda sudo ovs-ofctl --protocol=OpenFlow13 dump-flows br-int OFPST_FLOW reply (OF1.3) (xid=0x2): cookie=0x , duration=36.430s, table=0, n_packets=8, n_bytes=648, priority=4,in_port=2 actions=write_metadata:0x /0xffffff ,goto_table:17 cookie=0x , duration=35.540s, table=17, n_packets=5, n_bytes=390, priority=6,metadata=0x /0xffffff actions=write_metadata:0xe /0xfffffffffffffffe,goto_table:50 cookie=0x , duration= s, table=17, n_packets=0, n_bytes=0, priority=0,metadata=0xa /0xe actions=write_metadata:0xc /0xe ,goto_table:80 cookie=0x , duration= s, table=18, n_packets=0, n_bytes=0, priority=0 actions=goto_table:38 cookie=0x , duration= s, table=19, n_packets=0, n_bytes=0, priority=0 actions=goto_table:80 cookie=0x , duration= s, table=20, n_packets=0, n_bytes=0, priority=0 actions=goto_table:80 cookie=0x , duration= s, table=21, n_packets=0, n_bytes=0, priority=0 actions=goto_table:80 cookie=0x , duration= s, table=22, n_packets=0, n_bytes=0, priority=0 actions=CONTROLLER:65535 cookie=0x , duration=35.546s, table=36, n_packets=0, n_bytes=0, priority=5,tun_id=0x1 actions=load:0x100->NXM_NX_REG6[],resubmit(,220) cookie=0x , duration=35.541s, table=36, n_packets=0, n_bytes=0, priority=5,tun_id=0x1388 actions=write_actions(group:209999) cookie=0x , duration=36.343s, table=38, n_packets=0, n_bytes=0, priority=5,tun_id=0x5dc actions=write_metadata:0x /0x1fffffffff000000,goto_table:51 cookie=0x , duration= s, table=40, n_packets=0, n_bytes=0, priority=0 actions=goto_table:41 cookie=0x , duration= s, table=41, n_packets=0, n_bytes=0, priority=0 actions=resubmit(,17) cookie=0x , duration= s, table=45, n_packets=0, n_bytes=0, priority=0 actions=resubmit(,17) cookie=0x , duration=35.546s, table=50, n_packets=5, n_bytes=390, priority=20,metadata=0x /0x1fffffffff000000,dl_src=fa:16:3e:05:cd:7d actions=goto_table:51 cookie=0x , duration= s, table=50, n_packets=0, n_bytes=0, priority=0 actions=CONTROLLER:65535,goto_table:51 cookie=0x , duration=35.548s, table=51, n_packets=0, n_bytes=0, priority=20,metadata=0x /0xffff000000,dl_dst=fa:16:3e:05:cd:7d actions=load:0x100->NXM_NX_REG6[],resubmit(,220) cookie=0x , duration= s, table=51, n_packets=5, n_bytes=390, priority=0 actions=goto_table:52 cookie=0x , duration=35.541s, table=52, n_packets=5, n_bytes=390, priority=5,metadata=0x /0xffff actions=write_actions(group:210000) cookie=0x , duration=35.541s, table=52, n_packets=0, n_bytes=0, priority=5,metadata=0x /0xffff actions=write_actions(group:209999) cookie=0x , duration=35.540s, table=55, n_packets=5, n_bytes=390, priority=10,tun_id=0x1,metadata=0x /0x1fffff actions=drop cookie=0x , duration=35.541s, table=55, n_packets=0, n_bytes=0, priority=9,tun_id=0x1 actions=load:0x100->NXM_NX_REG6[],resubmit(,220) cookie=0x , duration= s, table=60, n_packets=0, n_bytes=0, priority=0 actions=resubmit(,17) cookie=0x , duration= s, table=80, n_packets=0, n_bytes=0, priority=0 actions=resubmit(,17) cookie=0x , duration=36.081s, table=220, n_packets=0, n_bytes=0, priority=7,reg6=0x100 actions=output:2 cookie=0x , duration= s, table=251, n_packets=0, n_bytes=0, priority=0 actions=goto_table:252 cookie=0x , duration= s, table=252, n_packets=0, n_bytes=0, priority=0 actions=resubmit(,220)
46
After adding first network: Groups
Agenda sudo ovs-ofctl --protocol=OpenFlow13 dump-groups br-int OFPST_GROUP_DESC reply (OF1.3) (xid=0x2): group_id=209999,type=all,bucket=actions=set_field:0x1->tun_id,resubmit(,55) group_id=210000,type=all,bucket=actions=group:209999 sudo ovs-ofctl --protocol=OpenFlow13 dump-group-stats br-int OFPST_GROUP reply (OF1.3) (xid=0x2): group_id=209999,duration=36.285s,ref_count=2,packet_count=5,byte_count=390,bucket0:packet_count=5,byte_count=390 group_id=210000,duration=35.981s,ref_count=1,packet_count=5,byte_count=390,bucket0:packet_count=5,byte_count=390
47
After adding first vms: Topology
Agenda
48
After adding first vms: OVSDB
Agenda sudo ovs-vsctl show b a6e41 Manager "tcp: :6640" is_connected: true Bridge br-int Controller "tcp: :6653" fail_mode: secure Port "tap9100e021-53" Interface "tap9100e021-53" Port "tap4a3bc435-0a" Interface "tap4a3bc435-0a" type: internal Port "eth2" Interface "eth2" Port br-int Interface br-int Port "tund152e25a97b" Interface "tund152e25a97b" type: vxlan options: {key=flow, local_ip=" ", remote_ip=" "} ovs_version: "2.5.1" vm vmvx01 tap port tap9100e added to br-int tunnel port tund152e25a97b added to br-int for the VxLAN network
49
After adding first vms: Flows
Agenda sudo ovs-ofctl --protocol=OpenFlow13 dump-flows br-int <SNIP> cookie=0x , duration= s, table=50, n_packets=9, n_bytes=1840, priority=20,metadata=0x /0x1fffffffff000000,dl_src=fa:16:3e:05:cd:7d actions=goto_table:51 cookie=0x , duration=48.392s, table=50, n_packets=26, n_bytes=1900, priority=20,metadata=0x /0x1fffffffff000000,dl_src=fa:16:3e:23:d9:c0 actions=goto_table:51 cookie=0x , duration= s, table=50, n_packets=0, n_bytes=0, priority=0 actions=CONTROLLER:65535,goto_table:51 cookie=0x , duration= s, table=51, n_packets=0, n_bytes=0, priority=20,metadata=0x /0xffff000000,dl_dst=fa:16:3e:05:cd:7d actions=load:0x100->NXM_NX_REG6[],resubmit(,220) cookie=0x , duration=48.392s, table=51, n_packets=2, n_bytes=725, priority=20,metadata=0x /0xffff000000,dl_dst=fa:16:3e:23:d9:c0 actions=load:0x200->NXM_NX_REG6[],resubmit(,220) cookie=0x , duration=30.011s, table=51, n_packets=2, n_bytes=725, priority=20,metadata=0x /0xffff000000,dl_dst=fa:16:3e:76:91:5f actions=set_field:0x3->tun_id,output:4 cookie=0x , duration= s, table=51, n_packets=31, n_bytes=2290, priority=0 actions=goto_table:52 cookie=0x , duration= s, table=52, n_packets=31, n_bytes=2290, priority=5,metadata=0x /0xffff actions=write_actions(group:210000) cookie=0x , duration= s, table=52, n_packets=0, n_bytes=0, priority=5,metadata=0x /0xffff actions=write_actions(group:209999) cookie=0x , duration= s, table=55, n_packets=5, n_bytes=390, priority=10,tun_id=0x1,metadata=0x /0x1fffff actions=drop cookie=0x , duration=48.391s, table=55, n_packets=26, n_bytes=1900, priority=10,tun_id=0x2,metadata=0x /0x1fffff actions=drop cookie=0x , duration= s, table=55, n_packets=49, n_bytes=3674, priority=9,tun_id=0x1 actions=load:0x100->NXM_NX_REG6[],resubmit(,220) cookie=0x , duration=48.391s, table=55, n_packets=23, n_bytes=1774, priority=9,tun_id=0x2 actions=load:0x200->NXM_NX_REG6[],resubmit(,220) sudo ovs-ofctl --protocol=OpenFlow13 dump-groups br-int OFPST_GROUP_DESC reply (OF1.3) (xid=0x2): group_id=209999,type=all,bucket=actions=set_field:0x1->tun_id,resubmit(,55),bucket=actions=set_field:0x2->tun_id,resubmit(,55) group_id=210000,type=all,bucket=actions=group:209999,bucket=actions=set_field:0x1388->tun_id,output:4
50
After adding second network and vms : Topology
Agenda
51
After adding second network and vms: OVSDB
Agenda sudo ovs-vsctl show b a6e41 Manager "tcp: :6640" is_connected: true Bridge br-int Controller "tcp: :6653" fail_mode: secure Port "tap8e7a4d61-a7" Interface "tap8e7a4d61-a7" type: internal Port "tap9100e021-53" Interface "tap9100e021-53" Port "tap738ad178-43" Interface "tap738ad178-43" Port "tap4a3bc435-0a" Interface "tap4a3bc435-0a" Port "eth2" Interface "eth2" Port br-int Interface br-int type: internal Port "tund152e25a97b" Interface "tund152e25a97b" type: vxlan options: {key=flow, local_ip=" ", remote_ip=" "} ovs_version: "2.5.1" dhcp namespace port tap8e7a4d61-a7 for vxnet1 added to br-int vm vmvx02 tap port tap738ad added to br-int
52
After adding floating-ips: Topology
Agenda
53
Now try these PINGS Agenda Intra-subnet - 10.100.5.4 to 10.100.5.3
Inter-subnet to Internet access – to
54
Start From Here Agenda Checkout all the info on the project wiki:
NetVirt Project Wiki Weekly meetings on Tuesday’s at 8:00a PST Getting started: How to pull and build the code Tutorials with slides and ova-packaged virtual machines Connect with active developers in the community on the #opendaylight-ovsdb IRC channel at freenode.net Poke {vishnoianil,shague} on irc #opendaylight-ovsdb NetVirt Trello page for project task tracking: NetVirt Trello Join the conversation through lists.opendaylight.org and ask.opendaylight.org and
55
Thank You
Similar presentations
© 2025 SlidePlayer.com Inc.
All rights reserved.