Openstack with OpenDaylight (A Workshop) Vivekanandan Narasimhan, Ericsson Vishal Thapar, Ericsson Credits: Andre Fredette, Red Hat Isaku Yamahata, Intel Sam Hague, Red Hat Agenda • Openstack & OpenDaylight (ODL) • Networking-ODL and ODL Controller • Genius • NetVirt • Demo 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 Overview Openstack & OpenDaylight OpenStack and OpenDaylight Integration Network/Control Node Controller node OpenDaylight* Neutron ML2 Plugin Networking-odl Management Network Data Network Public Network Neutron Northbound ML2 DB ovsdb/NetVirt Compute Node VM VM VM Yang Model OV S Networking Node DHCP Agent OV S Internet Router Overview - OpenDaylight SDN Platform for Boron Overview - Openstack and ODL Netvirt • OpenStack Neutron • networking-odl • ODL ML2 Driver • OpenDaylight • • • • Neutron Northbound NetVirt MD-SAL Southbound Protocols • OVSDB • OpenFlow Features Delivered in Borondelivered in Boron Overview - Features • 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 Features in Boron DemoDelivered Preparation Prerequisite: You will require a laptop with 8 GB of RAM. 1. 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. 2. 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. Agenda • Openstack & OpenDaylight (ODL) • Networking-ODL and ODL Controller • Genius • NetVirt • Demo 9 Openstack networking-odl OpenstackNeutron neutronand and networking-odl • L2: ML2 plugin • L3: ODL L3 plugin • services ML2 Plugin ... ... ... QoS ... ... FWaaS L2GW ODL driver ODL L3 Plugin ODL driver Mechanism Manager ODL driver Type Manager Service Plugins SR-IOV FWaaS L2Gateway QoS LBaaS BGPVPN networking-sfc trunk ODL mech driver ... VXLAN TypeDriver VLAN TypeDriver GRE TypeDriver • • • • • • • Neutron Server networking-odl 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 ODL Neutron Northbound • • • • ODL component REST API for networking-odl Common part of openstack integration Neutron Northbound does User Request Neutron Neutron DB Networking-ODL • RestAPI for networking-odl • YangModel for neutron info • Mirror of openstack neutron definition RestAPI • Neutron Northbound does NOT • Talk southbound protocol to program switches OpenDaylight Neutron Northbound MD-SAL Yang Model OpenStack Service Provider Openflow OVSDB Agenda • Openstack & OpenDaylight (ODL) • Networking-ODL and ODL Controller • OpenFlow & OVSDB • Genius • NetVirt • Demo 13 Brief Overview of Open vSwitch 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) 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 Agenda • Openstack & OpenDaylight (ODL) • Networking-ODL and ODL Controller • OpenFlow & OVSDB • Genius • NetVirt • Demo 17 GENIUS GENIUS DHCP SFC L2 Service L3 Service ACL GBP SFC Tunnel Manager Manager Resourc e Manager • Provides Generic Network Interfaces, Utilities and Services GBP Genius Interface • Opendaylight offset 1 project, introduced in ODLBoron ID MDSAL Manager Utils MD-SAL NetVirt • 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. Openflow Plugin OVSDB Plugin NETCONF Plugin Agenda • Openstack & OpenDaylight (ODL) • Networking-ODL and ODL Controller • OpenFlow & OVSDB • Genius • NetVirt • Demo 19 NetVirt NetVirt Neutron NSF •OpenStack Service Provider in OpenDayight DHCP L2 Service L3 Service NAT ACL Service Service MD-SAL • Provides several services like L2, L3, NAT and BGPVPN etc. NetVirt Genius • Uses OpenDaylight Genius framework Openflow Plugin OVSDB Plugin 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 21 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 22 OpenDaylight - NetVirt Pipeline (17) Dispatcher (0) Classifier (45) IPv6 Ing. ACL Service (1) VM port Provider Network Internal Tunnel BGPoMPLS GW IPv6 ND for Router Interface Other packets IPv6 Service (2) L2 Service (4) L3 Service 3) (19) DMAC Service Filter Other DMAC L3 DMAC (18*) BGPoMPL S DHCP DHCP Non-DHCP (40) Ingress ACL (50) L2 SMAC Learning Match Allowed Known SMAC Unknown SMAC (41) Ingress ACL 2 Match Allowed (38*) BGPoMPLS (Ext Tunnel) (51) L2 DMAC Filter Known DMAC Unknown DMAC (42*) Ingress ACL 3 (20) LFIB (80) Non IP VM Dest IP ARP Floating Dest IP Non-ARP (52) L2 Unknown DMACs Group Full BC Group Local BC Match Allowed (252) Egress ACL 2 Match Allowed Non IP (25) PDNAT (FIP)DFIP Associated (26) PSNAT (FIP)SIP Unknown (28) SNAT (FIP) Associated (27) DNAT (FIP) Associated DIP Group Local VM SFIP (46) NAPT Outbound Unknown NAPT Known NAPT (47) NAPT FIB (44) NAPT Inbound (253*) Egress ACL 3 Group Remote VM Group Provider Network (55) Filter Equal L.Register + Egress ? Match - Drop (251) Egress ACL IP - Default Route Associated SIP Tunnel In Port VM In Port (36) Internal Tunnel (21) L3 - FIB (220) Egress Dispatcher Output to Controller Output to OpenFlow port Resubmit to Dispatcher (17) Agenda • Openstack & OpenDaylight (ODL) • Networking-ODL and ODL Controller • OpenFlow & OVSDB • Genius • NetVirt • Demo 24 Demo AgendaDescription • 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: • https://wiki.opendaylight.org/view/NetVirt 25 Topology Agenda 26 Demo Steps: Import VMs and Agenda Start DevStack 1. 2. 3. 4. 5. 6. Change the vboxnet0 IPv4 Address to 192.168.50.1. Find the setting at File->Preferences->Network>Host-only Networks. Import the OVA into VirtualBox a. Copy ovsdbtutorial15_2.ova to local system b. File->Import Appliance, Browse to ovsdbtutorial15_2.ova c. Do not select “Reinitialize the MAC address of all network cards” d. Import: odl31-compute, odl31-control and router-node will be imported e. 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 [email protected], pw: odl Start devstack a. cd /opt/devstack b. ./stack.sh Repeat 4 and 5 to start devstack on odl32-compute, ssh [email protected], pw: odl 27 Demo Steps: Import VMs and Agenda Start DevStack 1. 2. 3. 4. 5. 6. Change the vboxnet0 IPv4 Address to 192.168.50.1. Find the setting at File->Preferences->Network>Host-only Networks. Import the OVA into VirtualBox a. Copy netvirt_boron_mitaka.ova to local system b. File->Import Appliance, Browse to netvirt_boron_mitaka.ova c. Do not select “Reinitialize the MAC address of all network cards” d. Import: odl31-compute, odl31-control and router-node will be imported e. 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 [email protected], pw: odl Start devstack a. cd /opt/devstack b. ./stack.sh Repeat 4 and 5 to start devstack on odl32-compute, ssh [email protected], pw: odl 28 Demo Steps: Import VMs and Start Agenda DevStack 1. 2. 3. 4. 5. 6. Change the vboxnet0 IPv4 Address to 192.168.50.1. Find the setting at File->Preferences->Network>Host-only Networks. Import the OVA into VirtualBox a. Copy ovsdbtutorial15_2.ova to local system b. File->Import Appliance, Browse to ovsdbtutorial15_2.ova c. Do not select “Reinitialize the MAC address of all network cards” d. Import: odl31-compute, odl31-control and router-node will be imported e. 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 [email protected], pw: odl Start devstack a. cd /opt/devstack b. ./stack.sh Repeat 4 and 5 to start devstack on odl32-compute, ssh [email protected], pw: odl 29 ./stack.sh Agenda output • • • • 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 10.0.2.15 192.168.254.31 0.0.0.0 192.168.50.31 odl32-compute compute 10.0.2.15 192.168.254.32 0.0.0.0 192.168.50.32 router-node router, DHCP 10.0.2.15 192.168.56.1 VB internal 2 NA NA 30 Topology Agenda Mappings Description Name MAC Address IP Address ext-net rtr vx-net0 gw dhcp Floating-IP MAC Address Node Port 192.168.56.9 fa:16:3e:5b:ce:2f 10.100.5.1 10.100.5.2 odl31 tap4a3bc435-0a a:16:3e:cc:ba:69 fa:16:3e:05:cd:7d vx-net1 gw dhcp 10.100.6.1 10.100.6.2 odl31 tap8e7a4d61-a7 fa:16:3e:94:07:2e fa:16:3e:18:ae:3d vmvx01 tap9100e021-53 fe:16:3e:23:d9:c0 fa:16:3e:23:d9:c0 10.100.5.3 192.168.56.10 fa:16:3e:e5:e5:81 odl31 3 vmvx11 tap738ad178-43 fe:16:3e:79:69:73 fa:16:3e:79:69:73 10.100.6.3 192.168.56.12 fa:16:3e:c8:99:b9 odl31 6 vtep 192.168.254.31 tund152e25a97b 96:6b:83:33:6c:59 odl31 4 vmvx02 tapafd3542b-03 fe:16:3e:76:91:5f fa:16:3e:76:91:5f 10.100.5.4 192.168.56.11 fa:16:3e:cb:e2:b8 odl32 2 vmvx12 tap108e127b-79 fe:16:3e:81:78:40 fa:16:3e:81:78:40 10.100.6.4 192.168.56.13 fa:16:3e:42:e9:e5 odl32 4 2 5 31 vtep 192.168.254.32 tun177ea7be544 c2:8a:be:01:b0:d4 odl32 3 Neutron Agenda Commands (1 of 4) source openrc admin admin os_addnano.sh: nova flavor-create m1.nano auto 64 0 1 os_addadminkey.sh: nova keypair-add --pub-key ~/.ssh/id_rsa.pub admin_key 32 Neutron Agenda Commands (2 of 4) os_addnet0.sh: neutron net-create vx-net0 --provider:network_type vxlan --provider:segmentation_id 1500 neutron subnet-create vx-net0 10.100.5.0/24 --name vx-subnet0 --dns-nameserver 8.8.8.8 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 --availabilityzone=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 --availabilityzone=nova:odl32 --key-name admin_key sleep 5 nova get-vnc-console vmvx01 novnc nova get-vnc-console vmvx02 novnc nova keypair-add --pub-key ~/.ssh/id_rsa.pub admin_key 33 Neutron Agenda Commands (3 of 4) os_addnet1.sh: neutron net-create vx-net1 --provider:network_type vxlan --provider:segmentation_id 1500 neutron subnet-create vx-net1 10.100.6.0/24 --name vx-subnet0 --dns-nameserver 8.8.8.8 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 --availabilityzone=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 --availabilityzone=nova:odl32 --key-name admin_key sleep 5 nova get-vnc-console vmvx11 novnc nova get-vnc-console vmvx12 novnc nova keypair-add --pub-key ~/.ssh/id_rsa.pub admin_key 34 Neutron Agenda Commands (4 of 4) 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=192.168.56.9,end=192.168.56.14 --disabledhcp --gateway 192.168.56.1 ext-net 192.168.56.0/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; 35 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 36 odl31-control local.conf (2 of 2) Agenda HOST_IP=192.168.254.31 HOST_NAME=odl31 SERVICE_HOST_NAME=$HOST_NAME SERVICE_HOST=$HOST_IP Q_HOST=$SERVICE_HOST enable_plugin networking-odl http://git.openstack.org/openstack/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=192.168.50.1 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 37 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=192.168.254.32 HOST_NAME=odl32 SERVICE_HOST_NAME=odl31 SERVICE_HOST=192.168.254.31 Q_HOST=$SERVICE_HOST enable_plugin networking-odl http://git.openstack.org/openstack/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=192.168.50.1 ODL_PROVIDER_MAPPINGS=public:eth2 SKIP_OVS_INSTALL=True 38 Demo Steps: Create Networks, L3 and Agenda Floating IPs 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 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 10.100.5.0/24 os_addvms0.sh: launch two vms, one on each compute node os_addnet1.sh: add vxlan network 10.100.6.0/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... 39 After stacking: Topology Agenda 40 After stacking: OVSDB Agenda sudo ovs-vsctl show 38161678-6926-4815-83b2-2632193a6e41 Manager "tcp:192.168.50.1:6640" is_connected: true Bridge br-int Controller "tcp:192.168.50.1:6653" is_connected: true 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 41 After stacking: Flows Agenda sudo ovs-ofctl --protocol=OpenFlow13 dump-flows br-int OFPST_FLOW reply (OF1.3) (xid=0x2): cookie=0x8000000, duration=161.694s, table=17, n_packets=0, n_bytes=0, priority=0,metadata=0xa000000000000000/0xe000000000000000 actions=write_metadata:0xc000000000000000/0xe000000000000000,goto_table:80 cookie=0x6800000, duration=161.582s, table=18, n_packets=0, n_bytes=0, priority=0 actions=goto_table:38 cookie=0x1080000, duration=161.545s, table=19, n_packets=0, n_bytes=0, priority=0 actions=goto_table:80 cookie=0x1030000, duration=161.708s, table=20, n_packets=0, n_bytes=0, priority=0 actions=goto_table:80 cookie=0x8000003, duration=161.707s, table=21, n_packets=0, n_bytes=0, priority=0 actions=goto_table:80 cookie=0x8000004, duration=161.569s, table=22, n_packets=0, n_bytes=0, priority=0 actions=CONTROLLER:65535 cookie=0x6900000, duration=161.709s, table=40, n_packets=0, n_bytes=0, priority=0 actions=goto_table:41 cookie=0x6900000, duration=161.630s, table=41, n_packets=0, n_bytes=0, priority=0 actions=resubmit(,17) cookie=0x4000000, duration=161.657s, table=45, n_packets=0, n_bytes=0, priority=0 actions=resubmit(,17) cookie=0x8050000, duration=161.618s, table=50, n_packets=0, n_bytes=0, priority=0 actions=CONTROLLER:65535,goto_table:51 cookie=0x8030000, duration=161.607s, table=51, n_packets=0, n_bytes=0, priority=0 actions=goto_table:52 cookie=0x6800000, duration=161.643s, table=60, n_packets=0, n_bytes=0, priority=0 actions=resubmit(,17) cookie=0x1030000, duration=161.655s, table=80, n_packets=0, n_bytes=0, priority=0 actions=resubmit(,17) cookie=0x6900000, duration=161.594s, table=251, n_packets=0, n_bytes=0, priority=0 actions=goto_table:252 cookie=0x6900000, duration=161.558s, table=252, n_packets=0, n_bytes=0, priority=0 42 actions=resubmit(,220) After adding first network: Topology Agenda 43 After adding first network: OVSDB Agenda sudo ovs-vsctl show 38161678-6926-4815-83b2-2632193a6e41 Manager "tcp:192.168.50.1:6640" is_connected: true Bridge br-int Controller "tcp:192.168.50.1:6653" is_connected: true fail_mode: secure Port "tap4a3bc435-0a" Interface "tap4a3bc435-0a" type: internal Port "eth2" Interface "eth2" Port br-int Interface br-int type: internal ovs_version: "2.5.1" • dhcp namespace port tap4a3bc435-0a for vxnet0 added to br-int 44 After adding first network: Flows Agenda sudo ovs-ofctl --protocol=OpenFlow13 dump-flows br-int OFPST_FLOW reply (OF1.3) (xid=0x2): cookie=0x8000000, duration=36.430s, table=0, n_packets=8, n_bytes=648, priority=4,in_port=2 actions=write_metadata:0x10000000000/0xffffff0000000001,goto_table:17 cookie=0x8040000, duration=35.540s, table=17, n_packets=5, n_bytes=390, priority=6,metadata=0x10000000000/0xffffff0000000000 actions=write_metadata:0xe000011388000000/0xfffffffffffffffe,goto_table:50 cookie=0x8000000, duration=317.350s, table=17, n_packets=0, n_bytes=0, priority=0,metadata=0xa000000000000000/0xe000000000000000 actions=write_metadata:0xc000000000000000/0xe000000000000000,goto_table:80 cookie=0x6800000, duration=317.238s, table=18, n_packets=0, n_bytes=0, priority=0 actions=goto_table:38 cookie=0x1080000, duration=317.201s, table=19, n_packets=0, n_bytes=0, priority=0 actions=goto_table:80 cookie=0x1030000, duration=317.364s, table=20, n_packets=0, n_bytes=0, priority=0 actions=goto_table:80 cookie=0x8000003, duration=317.363s, table=21, n_packets=0, n_bytes=0, priority=0 actions=goto_table:80 cookie=0x8000004, duration=317.225s, table=22, n_packets=0, n_bytes=0, priority=0 actions=CONTROLLER:65535 cookie=0x9000001, 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=0x9001388, duration=35.541s, table=36, n_packets=0, n_bytes=0, priority=5,tun_id=0x1388 actions=write_actions(group:209999) cookie=0x9051388, duration=36.343s, table=38, n_packets=0, n_bytes=0, priority=5,tun_id=0x5dc actions=write_metadata:0x1388000000/0x1fffffffff000000,goto_table:51 cookie=0x6900000, duration=317.365s, table=40, n_packets=0, n_bytes=0, priority=0 actions=goto_table:41 cookie=0x6900000, duration=317.286s, table=41, n_packets=0, n_bytes=0, priority=0 actions=resubmit(,17) cookie=0x4000000, duration=317.313s, table=45, n_packets=0, n_bytes=0, priority=0 actions=resubmit(,17) cookie=0x8051388, duration=35.546s, table=50, n_packets=5, n_bytes=390, priority=20,metadata=0x11388000000/0x1fffffffff000000,dl_src=fa:16:3e:05:cd:7d actions=goto_table:51 cookie=0x8050000, duration=317.274s, table=50, n_packets=0, n_bytes=0, priority=0 actions=CONTROLLER:65535,goto_table:51 cookie=0x8031388, duration=35.548s, table=51, n_packets=0, n_bytes=0, priority=20,metadata=0x1388000000/0xffff000000,dl_dst=fa:16:3e:05:cd:7d actions=load:0x100->NXM_NX_REG6[],resubmit(,220) cookie=0x8030000, duration=317.263s, table=51, n_packets=5, n_bytes=390, priority=0 actions=goto_table:52 cookie=0x8701388, duration=35.541s, table=52, n_packets=5, n_bytes=390, priority=5,metadata=0x1388000000/0xffff000001 actions=write_actions(group:210000) cookie=0x8701388, duration=35.541s, table=52, n_packets=0, n_bytes=0, priority=5,metadata=0x1388000001/0xffff000001 actions=write_actions(group:209999) cookie=0x8800001, duration=35.540s, table=55, n_packets=5, n_bytes=390, priority=10,tun_id=0x1,metadata=0x10000000000/0x1fffff0000000000 actions=drop cookie=0x8800001, 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=0x6800000, duration=317.299s, table=60, n_packets=0, n_bytes=0, priority=0 actions=resubmit(,17) cookie=0x1030000, duration=317.311s, table=80, n_packets=0, n_bytes=0, priority=0 actions=resubmit(,17) cookie=0x8000007, duration=36.081s, table=220, n_packets=0, n_bytes=0, priority=7,reg6=0x100 actions=output:2 cookie=0x6900000, duration=317.250s, table=251, n_packets=0, n_bytes=0, priority=0 actions=goto_table:252 45 cookie=0x6900000, duration=317.214s, table=252, n_packets=0, n_bytes=0, priority=0 actions=resubmit(,220) 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:pa cket_count=5,byte_count=390 group_id=210000,duration=35.981s,ref_count=1,packet_count=5,byte_count=390,bucket0:pa cket_count=5,byte_count=390 46 After adding first vms: Topology Agenda 47 After adding first vms: OVSDB Agenda sudo ovs-vsctl show • vm vmvx01 tap port tap9100e021-53 added to br-int • tunnel port tund152e25a97b added to br-int for the VxLAN network 38161678-6926-4815-83b2-2632193a6e41 Manager "tcp:192.168.50.1:6640" is_connected: true Bridge br-int Controller "tcp:192.168.50.1:6653" is_connected: true 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 type: internal Port "tund152e25a97b" Interface "tund152e25a97b" type: vxlan options: {key=flow, local_ip="192.168.254.31", remote_ip="192.168.254.32"} ovs_version: "2.5.1" 48 After adding first vms: Flows Agenda sudo ovs-ofctl --protocol=OpenFlow13 dump-flows br-int <SNIP> cookie=0x8051388, duration=148.425s, table=50, n_packets=9, n_bytes=1840, priority=20,metadata=0x11388000000/0x1fffffffff000000,dl_src=fa:16:3e:05:cd:7d actions=goto_table:51 cookie=0x8051388, duration=48.392s, table=50, n_packets=26, n_bytes=1900, priority=20,metadata=0x21388000000/0x1fffffffff000000,dl_src=fa:16:3e:23:d9:c0 actions=goto_table:51 cookie=0x8050000, duration=430.153s, table=50, n_packets=0, n_bytes=0, priority=0 actions=CONTROLLER:65535,goto_table:51 cookie=0x8031388, duration=148.427s, table=51, n_packets=0, n_bytes=0, priority=20,metadata=0x1388000000/0xffff000000,dl_dst=fa:16:3e:05:cd:7d actions=load:0x100->NXM_NX_REG6[],resubmit(,220) cookie=0x8031388, duration=48.392s, table=51, n_packets=2, n_bytes=725, priority=20,metadata=0x1388000000/0xffff000000,dl_dst=fa:16:3e:23:d9:c0 actions=load:0x200->NXM_NX_REG6[],resubmit(,220) cookie=0x8031388, duration=30.011s, table=51, n_packets=2, n_bytes=725, priority=20,metadata=0x1388000000/0xffff000000,dl_dst=fa:16:3e:76:91:5f actions=set_field:0x3->tun_id,output:4 cookie=0x8030000, duration=430.142s, table=51, n_packets=31, n_bytes=2290, priority=0 actions=goto_table:52 cookie=0x8701388, duration=148.420s, table=52, n_packets=31, n_bytes=2290, priority=5,metadata=0x1388000000/0xffff000001 actions=write_actions(group:210000) cookie=0x8701388, duration=148.420s, table=52, n_packets=0, n_bytes=0, priority=5,metadata=0x1388000001/0xffff000001 actions=write_actions(group:209999) cookie=0x8800001, duration=148.419s, table=55, n_packets=5, n_bytes=390, priority=10,tun_id=0x1,metadata=0x10000000000/0x1fffff0000000000 actions=drop cookie=0x8800002, duration=48.391s, table=55, n_packets=26, n_bytes=1900, priority=10,tun_id=0x2,metadata=0x20000000000/0x1fffff0000000000 actions=drop cookie=0x8800001, duration=148.420s, table=55, n_packets=49, n_bytes=3674, priority=9,tun_id=0x1 actions=load:0x100>NXM_NX_REG6[],resubmit(,220) cookie=0x8800002, 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) 49 group_id=210000,type=all,bucket=actions=group:209999,bucket=actions=set_field:0x1388->tun_id,output:4 After adding second network Agenda and vms : Topology 50 After adding second network Agenda and vms: OVSDB sudo ovs-vsctl show 38161678-6926-4815-83b2-2632193a6e41 Manager "tcp:192.168.50.1:6640" is_connected: true Bridge br-int Controller "tcp:192.168.50.1:6653" is_connected: true 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" type: internal Port "eth2" Interface "eth2" Port br-int Interface br-int type: internal Port "tund152e25a97b" Interface "tund152e25a97b" type: vxlan options: {key=flow, local_ip="192.168.254.31", remote_ip="192.168.254.32"} ovs_version: "2.5.1" • dhcp namespace port tap8e7a4d61-a7 for vxnet1 added to br-int • vm vmvx02 tap port tap738ad178-43 added to br-int 51 After adding floating-ips: Topology Agenda 52 Now try these PINGS Agenda Intra-subnet - 10.100.5.4 to 10.100.5.3 Inter-subnet - 10.100.5.4 to 10.100.6.3 Internet access – 10.100.5.4 to www.google.com 53 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 [email protected] 54 Thank You
© Copyright 2026 Paperzz