OPNFV 101: How To Get From Bare Metal to Cloud · OPNFV 101: How To Get From Bare Metal to Cloud...
Transcript of OPNFV 101: How To Get From Bare Metal to Cloud · OPNFV 101: How To Get From Bare Metal to Cloud...
OPNFV 101: How To Get From Bare Metal to Cloud
Wenjing Chu, DellDan Radez, Red HatVinod Pandarinathan, Cisco
From Bare Metal to an NFV Cloud in 3 Steps
1) Create your own OPNFV podWenjing will present a fast paced tutorial on how to bring up an OPNFV Arno SR1 powered pod.
2) Deploy your VNFs on OPNFVDan will show you first hand how to use Tacker to launch VNFs and chain them together.
3) Integrate virtual networkingVinod will dive deeper into Openstack Neutron/ODL and OVS, and provides hands-on tips on debugging.
11/7/15 OPNFV 101 2
Here is the Plan• The goal is to set up an OPNFV pod in lab that can run realistic use cases• We will use the latest OPNFV Arno SR1• We will use Foreman to manage and provision bare metal servers in this tutorial
• Deploy Openstack Juno and Opendaylight Helium• Run Qtip to benchmark
What’s in a pod?
1 jump server
3 control nodes in HA, OR 1 for non-HA
1 or more compute nodes
PXE/admin port
Internet/publicport
NFV/privatePort
• 1 network for PXE boot (Admin)• 1 network for Internet access (P
ublic)• (not shown – Lights Out Manag
ement, e.g. Dell iDRAC)• 1 network (or more) for NFV dat
a path: 10G or higher (Private)• (non shown - additional storage
network if desirable)• There are other options but this
is what we use/recommend
Config/Collect system info for YML spec
1 jump server
3 control nodes in HA, OR 1 for non-HA
1 or more compute nodes
PXE/admin port
Internet/publicport
NFV/privatePort
For each node:
• BIOS enable PXE boot on the admin port, and set it to be the first boot dev.
• Collect these:• MAC of the PXE/admin port: mac_address
• MAC of the LightsOut port (e.g. Dell iDRAC): bmc_mac
• IP of the LightsOut port: bmc_ip• MAC of the Private/NFV port: private_mac
Get the deployment images to your jump server
• Use Foreman ISO to install CentOS7 on the Foreman Jump-Server:https://www.opnfv.org/software/download
• The ISO packs the required files, including CentOS7• Or, if your jump server is already installed with CentOS7, you can download the rest from https://git.opnfv.org/cgit/genesis/snapshot/arno.2015.2.0.zip
• Unzip it and cd to “genesis/foreman/ci”• Either way, you get the ci directory with deployment files and scripts
Edit the YML spec file• Edit:opnfv_ksgen_settings.yml
• Enter the MAC and IP addresses
• Provide login credentials
• Name them• One section for each control and compute node
Now let Foreman deploy it• cd genesis/foreman/ci
• ./deploy.sh –admin_nic <interface_name> -private_nic <interface_name> -public_nic <interface_name> -base_config<full_path_to_opnfv_ksgen_settings.yml>
Expect a few hours…
Monitor progress on Foreman UI …
• After a few minutes…
• On the jump server
• cd /var/opt/opnfv/foreman_vm
• Run “vagrant ssh”
Also check on Opendaylight…• ODL runs on the first controller
• Point web browser to <controller1_ip>:8181/dlux/intex.html
Use Qtip to quickly benchmark it …
• For example: use DPI to benchmark compute
• python qtip.py –s compute –b –dpi-parallel.yaml
Use Qtip to quickly benchmark it …
From Bare Metal to an NFV Cloud in 3 Steps
1) Create your own OPNFV podWenjing will present a fast paced tutorial on how to bring up an OPNFV Arno SR1 powered pod.
2) Deploy your VNFs on OPNFVDan will show you first hand how to use Tacker to launch VNFs and chain them together.
3) Integrate virtual networkingVinod will dive deeper into Openstack Neutron/ODL and OVS, and provides hands-on tips on debugging.
11/7/15 OPNFV 101 14
Project Apex in Bramaputra
• RDO Manager based (http://rdoproject.org)• Triple-O driven install• OpenStack centric components
Project Apex in Bramaputra
Instack ControlNode
ControlNode
ControlNode
ComputeNode
ComputeNode
ComputeNode
Undercloud Overcloud
Tacker in Project Apex
• SFC project needed a VNFM• Tacker existed as a VNF Orchestration Tool• Part of the OpenStack Ecosystem• Began adding SFC support to Tacker
Project Apex / Tacker / SFC Demo
• VFN Definition (yaml template)• VNF Creation (launches VFN from template• SFC (chains VNFs)• Driver Based SDN interaction
− OpenDaylight NetvirtSFC− OpenvSwitch + NSH support
From Bare Metal to an NFV Cloud in 3 Steps
1) Create your own OPNFV podWenjing will present a fast paced tutorial on how to bring up an OPNFV Arno SR1 powered pod.
2) Deploy your VNFs on OPNFVDan will show you first hand how to use Tacker to launch VNFs and chain them together.
3) Integrate virtual networkingVinod will dive deeper into Openstack Neutron/ODL and OVS, and provides hands-on tips on debugging.
11/7/15 OPNFV 101 19
ETSI NFV Architecture - VIM Layer
OpenVSwitch
OVSDB Protocol Library
Bidirectional JSON-‐RPC Library
Netty.io
ConfigurationService
InventoryService
OpenFlow 1.0 Plugin
OpenFlow 1.0 Library
ConnectionService
FlowProgrammer
java.nio.socket
Model Driven SAL (MDSAL)
InventoryService
ConnectionService
FlowProgrammer
OpenFlow 1.3 Plugin
OpenFlow 1.3 Library
Netty io
OVSDB South-‐bound Plugin OpenFlow 1.0 SB Plugin OpenFlow 1.3 SB Plugin
ControllerNeutronML2 Plug-In
OpenDaylight NorthBound API Layer -‐ REST APIs
OpenDaylight Neutron REST-‐API
OVSDB Neutron Application
OpenFlow 1.0
Potential Issues seen during deployment
• Neutron network create fails • Neutron port create fails• Nova boot failure• Can’t Ping VM IP address
Are the required services are up ?
• Check ODL server is started and responds to http requests ? • Check neutron-server is up and running.• Check ML2 config for mechanism driver opendaylight and
url/port/username/password• Openvswitch service is started and opendaylight manages the
bridges.
Check ODL server
• Use karaf console, and check if right features are installed.– Karaf>feature:list | grep openstack– Karaf>feature:list | grep ovs
• Run HTTP requests to check if the service is responding– curl -u admin:admin
http://192.168.1.111:8080/controller/nb/v2/neutron/networks/– curl -u admin:admin
http://192.168.1.111:8080/controller/nb/v2/neutron/ports/
Tracking resource status• CRUD on neutron resource such as networks, ports and subnets.
• Neutron net-‐list• Neutron port-‐list
• [odl@fedora-‐odl-‐1 devstack]$ neutron port-‐list11306910-‐db19-‐484e-‐af96-‐56ed2c1e52dc | fa:16:3e:b1:ba:82 | {"subnet_id": "e340d8fd-‐075a-‐4523-‐984e-‐43aa9782ff52", "ip_address": "10.0.0.1” |
194c2669-‐6111-‐4dc6-‐b5ab-‐b6fd10423bfb | | fa:16:3e:0d:f6:22 | {"subnet_id": "e340d8fd-‐075a-‐4523-‐984e-‐43aa9782ff52", "ip_address": "10.0.0.4”}
• [odl@fedora-‐odl-‐1 devstack]$ curl -‐u admin:admin http://192.168.1.111:8080/controller/nb/v2/neutron/ports/{
"ports" : [ {"id" : "194c2669-‐6111-‐4dc6-‐b5ab-‐b6fd10423bfb","network_id" : "98b8fb6c-‐210c-‐4c54-‐a90f-‐a2fcf178c5cc","name" : "","admin_state_up" : true,"mac_address" : "FA:16:3E:0D:F6:22","fixed_ips" : [ {
"ip_address" : "10.0.0.4","subnet_id" : "e340d8fd-‐075a-‐4523-‐984e-‐43aa9782ff52"
} ],"device_id" : "3d70cd19-‐a831-‐489e-‐b0ae-‐da697d54763f","device_owner" : "compute:None","tenant_id" : "bac644a6c1e7402a86f74567ca855c0d"
}, {
Openstack node topology
Controller/Compute-‐1Fedora-‐odl-‐1
VM1addr:fa:16:3e:cd:09:76
VM2:addr:fa:16:3e:83:42:3b
Compute-‐2Fedora-‐odl-‐2
VM1:addr:fe:16:3e:0d:f6:22
Openvswitch ovs-vsctl show-vs-vs
• [odl@fedora-‐odl-‐2 devstack]$ sudo ovs-‐vsctl show17074e89-‐2ac5-‐4bba-‐997a-‐1a5a3527cf56
Manager "tcp:192.168.1.111:6640"is_connected: true
Bridge br-‐intController "tcp:192.168.1.111:6633"
is_connected: truefail_mode: securePort br-‐int
Interface br-‐intPort "gre-‐192.168.1.111"
Interface "gre-‐192.168.1.111"type: greoptions: {key=flow, local_ip="192.168.1.148", remote_ip="192.168.1.111"}
Port "tap194c2669-‐61"Interface "tap194c2669-‐61"
ovs_version: "2.0.1“
• [odl@fedora-‐odl-‐2 devstack]$ ifconfig tap194c2669-‐61tap194c2669-‐61: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::fc16:3eff:fe0d:f622 prefixlen 64 scopeid 0x20<link>ether fe:16:3e:0d:f6:22 txqueuelen 500 (Ethernet)RX packets 77 bytes 6912 (6.7 KiB)
OVS-OFCTL dump-ports-desc
• [odl@fedora-‐odl-‐2 devstack]$ sudo ovs-‐ofctl -‐O OpenFlow13 dump-‐ports-‐desc br-‐int
OFPST_PORT_DESC reply (OF1.3) (xid=0x2):1(gre-‐192.168.1.1): addr:ce:49:90:8e:7b:a9
config: 0state: 0speed: 0 Mbps now, 0 Mbps max
2(tap194c2669-‐61): addr:fe:16:3e:0d:f6:22config: 0state: 0current: 10MB-‐FD COPPERspeed: 10 Mbps now, 0 Mbps max
LOCAL(br-‐int): addr:ea:34:e4:16:b9:4aconfig: 0state: 0speed: 0 Mbps now, 0 Mbps max
OVS-OFCTL dump-flows• [odl@fedora-‐odl-‐2 devstack]$ sudo ovs-‐ofctl -‐O OpenFlow13 dump-‐flows br-‐intOFPST_FLOW reply (OF1.3) (xid=0x2):cookie=0x0, duration=2814.351s, table=0, n_packets=66, n_bytes=5890, send_flow_remin_port=2,dl_src=fa:16:3e:0d:f6:22 actions=set_field:0x1-‐>tun_id,goto_table:10cookie=0x0, duration=2872.745s, table=0, n_packets=75, n_bytes=7094, send_flow_rem tun_id=0x1,in_port=1 actions=goto_table:20cookie=0x0, duration=2814.278s, table=0, n_packets=0, n_bytes=0, send_flow_rem priority=8192,in_port=2 actions=dropcookie=0x0, duration=3087.912s, table=0, n_packets=574, n_bytes=52234, send_flow_rem dl_type=0x88cc actions=CONTROLLER:56cookie=0x0, duration=2814.047s, table=10, n_packets=0, n_bytes=0, send_flow_rem priority=8192,tun_id=0x1 actions=goto_table:20cookie=0x0, duration=2872.583s, table=10, n_packets=20, n_bytes=1628, send_flow_rempriority=16384,tun_id=0x1,dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 actions=output:1,goto_table:20cookie=0x0, duration=2872.845s, table=10, n_packets=46, n_bytes=4262, send_flow_remtun_id=0x1,dl_dst=fa:16:3e:cd:09:76 actions=output:1,goto_table:20cookie=0x0, duration=2816.521s, table=10, n_packets=0, n_bytes=0, send_flow_remtun_id=0x1,dl_dst=fa:16:3e:83:42:3b actions=output:1,goto_table:20cookie=0x0, duration=2814.011s, table=20, n_packets=46, n_bytes=4262, send_flow_rem priority=8192,tun_id=0x1 actions=dropcookie=0x0, duration=2814.081s, table=20, n_packets=39, n_bytes=3214, send_flow_rempriority=16384,tun_id=0x1,dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 actions=output:2cookie=0x0, duration=2814.149s, table=20, n_packets=51, n_bytes=5118, send_flow_remtun_id=0x1,dl_dst=fa:16:3e:0d:f6:22 actions=output:2
References
1. https://www.rdoproject.org/networking/helium-‐opendaylight-‐juno-‐openstack/2. http://networkstatic.net/opendaylight-‐openstack-‐integration-‐devstack-‐fedora-‐
20/3. http://www.slideshare.net/mestery/opendaylight-‐integration-‐with-‐openstack-‐
neutron-‐a-‐tutorial
Q & A