Understanding OpenDaylight VTN and the Redirection Function
Shreyansh Jain NEC Technologies India Pvt. Ltd. shreyansh.jain@{nectechnologies.in, gmail.com}
Understanding OpenDaylight VTN and the Redirection Function - - PowerPoint PPT Presentation
Understanding OpenDaylight VTN and the Redirection Function Shreyansh Jain NEC Technologies India Pvt. Ltd. shreyansh.jain@{nectechnologies.in, gmail.com} Next 45 Minutes A brief introduction to OpenDaylight VTN OpenDaylight
Shreyansh Jain NEC Technologies India Pvt. Ltd. shreyansh.jain@{nectechnologies.in, gmail.com}
2
3
4
Image from: http://www.opendaylight.org/project/technical-overview
VTN Coordinator is responsible for interfacing between multiple controller environment, and providing RESTful APIs for Northbound Applications VTN Manager is available as AD- SAL bundle for OpenDaylight
PACKET_OUT handling
basic VTN Semantics
OpenFlow Switches (FLOW_MOD)
5
Image from: http://www.opendaylight.org/project/technical-overview
Northbound Applications
RESTful APIs Coordination RESTful APIs <<Java API>> <<Java API>> Coordination
same physical plane
6 VLAN100 VLAN200 VLAN300 VLAN100 VLAN100 VLAN200
Physical Network
V V V
Virtual Network
V
V V vRouter vBridge Virtual Interface OpenFlow Switch
7 Some other semantics also exist; vTerminal, vTep, vTunnel, vBypass – designed for defining networks linking multiple controlled domains (network stretching across multiple DCs)
8
Defining VTN Semantics for one
Networks Creating a Physical Topology; One in which one
exist Linking together the Virtual and Physical network using mapping functions
Physical network having multiple paths would allow VTN to reroute traffic in case of link failures Define multiple VTNs for all unrelated logical networks Mapping, represented by flow entries, provides entry/exit point for traffic on virtual network
match
untagged frames, for a particular vBridge
“manager/../MacMap.java and MacMapConfig.java”> 9
[1] From: https://wiki.opendaylight.org/view/OpenDaylight_Virtual_Tenant_Network_%28VTN%29:Helium_Release_Notes
physical plane graph
10
Image from Slide 23 of ODL-MiniSummit-Virt-Final_20150224.pdf from https://wiki.opendaylight.org/images/3/30/ODL-MiniSummit-Virt-Final.pdf extracted on 24/Feb/2015
if ARP hasn’t yet been learned
11
Image from Slide 24 of ODL-MiniSummit-Virt-Final_20150224.pdf from https://wiki.opendaylight.org/images/3/30/ODL-MiniSummit-Virt-Final.pdf extracted on 24/Feb/2015
12 POST /controller/nb/v2/vtn/default/vtns/BLUE
"0"}
Name of the new VTN
Creating a VTN
[2] VTN Manager REST APIs: https://wiki.opendaylight.org/view/OpenDaylight_Virtual_Tenant_Network_(VTN):VTN_Manager:RestApi [3] VTN Manager Java APIs: https://wiki.opendaylight.org/view/OpenDaylight_Virtual_Tenant_Network_(VTN):VTN_Manager:JavaApi
Virtual Network
13 POST /controller/nb/v2/vtn/default/vtns/GREEN
"0"}
Name of the new VTN
Creating another VTN Virtual Networks
14 POST /controller/nb/v2/vtn/default/vtns/BLUE/vbridges/Br100
Virtual Networks
Name of the new vBridge for VLAN 100
V
Br100
A vBridge on a VTN
L2 switch
15 POST /controller/nb/v2/vtn/default/vtns/BLUE/vbridges/Br100/interfaces/IF1
An Interface on vBridge Br100 Virtual Networks
V
Br100 IF1
L2 switch
16 POST /controller/nb/v2/vtn/default/vtns/BLUE/vbridges/Br100/interfaces/IF2
Another Interface on vBridge Br100 Virtual Networks
V
Br100 IF1 IF2
being received or sent
17 POST /controller/nb/v2/vtn/default/vtns/GREEN/vbridges/Br300
Virtual Networks
V
Br100 IF1 IF2
POST /controller/nb/v2/vtn/default/vtns/GREEN/vbridges/Br300/interfaces/IF1
V
Br300 IF1
being received or sent
18 POST /controller/nb/v2/vtn/default/vtns/BLUE/vbridges/Br200
Virtual Networks
V
Br100 IF1 IF2
POST /controller/nb/v2/vtn/default/vtns/BLUE/vbridges/Br200/interfaces/IF1
V
Br300 IF1
V
Br200 IF1
VLAN 200
plane, until reduced in scope by specifying a particular switch
19 POST /controller/nb/v2/vtn/default/vtns/BLUE/vbridges/Br200/vlanmaps
"vlan": “200", "node": {"type": "OF", "id": "00:00:00:00:00:00:00:02"} }
Virtual Networks
V
Br100 IF1 IF2
V
Br300 IF1
V
Br200 IF1 Some internal interface
Adding a VLAN Map to the Br200 of BLUE VLAN Map doesn’t require an interface on vBridge. For any physical plane node on which packet with specified VLAN comes, an internal interface would be created.
Only packets with VLAN 200 on this device would be considered part of this vBridge
00:00:00:00:00:00:00:02
20 PUT /controller/nb/v2/vtn/default/vtns/BLUE/vbridges/Br100/interface/IF1/portmap
"vlan": 100, "node": {"type": "OF", "id": "00:00:00:00:00:00:00:01"}, "port": {"type": "OF", "id": "2", "name": "s1-eth2"} }
Virtual Networks
V
Br100 IF1 IF2
V
Br300 IF1
V
Br200 IF1 Some internal interface
Adding a PORT Map to the Br100 of BLUE
VLAN 200
Specifying the Switch and its port
Port Map is to a specific port of a specific switch of the physical plane. Unlike VLAN Map, it requires an interface in vBridge to map onto.
00:00:00:00:00:00:00:01
21 PUT /controller/nb/v2/vtn/default/vtns/GREEN/vbridges/Br300/interface/IF1/portmap
"vlan": 300, "node": {"type": "OF", "id": "00:00:00:00:00:00:00:01"}, "port": {"type": "OF", "id": "2", "name": "s1-eth1"} }
Virtual Networks
V
Br100 IF1 IF2
V
Br300 IF1
V
Br200 IF1 Some internal interface
VLAN 200
00:00:00:00:00:00:00:01 00:00:00:00:00:00:00:02
22 PUT /controller/nb/v2/vtn/default/vtns/GREEN/vbridges/Br300/vlanmaps
"vlan": 300, "node": {"type": "OF", "id": "00:00:00:00:00:00:00:02"}, }
Virtual Networks
V
Br100 IF1 IF2
V
Br300 IF1 Some internal interface
V
Br200 IF1 Some internal interface
VLAN 200
00:00:00:00:00:00:00:01 00:00:00:00:00:00:00:02
VLAN 300
23 GET /controller/nb/v2/vtn/default/vtns/GREEN/vbridges/vlanmaps
"vlanmap": [ { "id": "OF-00:00:00:00:00:00:00:03.0", "vlan": "0", "node": { "type": "OF", "id": "00:00:00:00:00:00:00:03“ } }, ... # More vlanmap configuration for this bridge ] } DELETE /controller/nb/v2/vtn/default/vtns/GREEN/vbridges/OF-00:00:00:00:00:00:00:03.0
24 GET /controller/nb/v2/vtn/default/vtns/GREEN/vbridges/Br100/interfaces/IF1/portmap
"vlanmap": [ { "id": "OF-00:00:00:00:00:00:00:03.0", "vlan": "0", "node": { "type": "OF", "id": "00:00:00:00:00:00:00:03“ } }, ... # More vlanmap configuration for this bridge ] } DELETE /controller/nb/v2/vtn/default/vtns/GREEN/vbridges/Br100/interfaces/IF1/portmap
(PUT) or delete operation without arguments
25
Image from https://wiki.opendaylight.org/view/Release/Helium/VTN/Developer_Guide dated 02/Apr/2015
Northbound Applications
RESTful APIs
GET /vtn-webapi/controllers.json POST /vtn-webapi/controllers.json DELETE /vtn-webapi/controllers.json
Create-Read-Delete of VTN Controllers (site)
GET /vtn-webapi/vtns.json ...
Create-Read-Delete of VTNs – across all controllers
GET /vtn-webapi/vtns.json ...
Create-Read-Delete of vBridge, specific to a Controller
. . .
<Some of the APIs are still mentioned as ‘planned’ in the Wiki>
26
tied together by some core flows
27
V V
VTN
A single L3 VTN, having 3
through vRouter Flow color represent their equivalent part on then physical plane Client A Client B Sever B Server A
ports and tied together by some core flows.
28
V V
VTN
Making matched frames jump from one vBridge
in Client A Client B Sever B Server A
29
V V
VTN
V V
Client A Client B Firewall Load Balancer
30
V V
VTN
V V
Client A Client B Lab Firewall Org Firewall
31
V V
VTN
V V
Client A HTTP Server ICMP Monitor
HTTP
Even though the figures above show “going into an interface”, redirection would be much simpler if packets are direction from “in” of a vBridge to “out” of another vBridge
32
[4] For Complete list of match conditions, see https://wiki.opendaylight.org/view/OpenDaylight_Virtual_Tenant_Network_(VTN):VTN_Coordinator:Flow_List_Entry_Functions. Even though this for VTN Coordinator, same fields are also available for VTN Manager FlowCondition API
{ "name": "cond_1", "match": [ { "index": 1, "inetMatch": { "inet4": { "dst": "10.0.0.4" } } } ] }
API: /controller/nb/v2/vtn/default/flowconditions/{Name of Condition} Conditions are part of the Global scope of a VTN Controller Multiple such blocks, with unique index number, can be defined. Multiple conditions in each of them can be defined. All the blocks work as OR matches and all conditions in them work as AND matches
33 PUT /controller/nb/v2/vtn/default/flowconditions/AllTCPonVLAN100 Request JSON: { "name": “AllTCP", "match": [ { "index": 1, “ethernet”: { “vlan”: “100” }, "inetMatch": { "inet4": { “proto": “6“ ... ... } Request JSON: { "index": 10, "condition": “AllTCPonVLAN100", "filterType": { "redirect": { "destination": { "bridge": “Br200", "interface": "IF1" }, "output": true ... } PUT /controller/nb/v2/vtn/default/vtns/BLUE/vbridge/Br100/interfaces/IF1/flowfilters/in/10
Flow Condition, global for a particular VTN controller, having a single matching condition, containing two match fields (ANDed) Ethernet: vlan==100 IP: Protocol==6 (TCP) In the VTN BLUE, applying the condition on all frames coming IN the vBridge Br100 and matching the condition AllTCPonVLAN100 Action being Redirection of the traffic onto vBridge Br200 interface IF1
Network A: {DPID: OFS#1, Port:04} ... Service A: {DPID:OFS#2, Port:0/4} Service B: {DPID:OFS#4, Port:0/5}
34 Network A Network B Services A Services B
Network C
V Northbound Applications
VTN Manager OpenFlow OVS SB Plugin Service Location (Physical) and Properties (Access Lists)
OFS#1 OFS#2 OFS#3 OFS#4 Redirect all traffic originating from ‘Network A’, destined for ‘Services B’ to interface of Service A vBridge. Corresponding reverse rule on Services A vBridge
vBridgeA vBridgeB vBridgeC
Network A: {DPID: OFS#1, Port:04} ... Service A: {DPID:OFS#2, Port:0/4} Service B: {DPID:OFS#4, Port:0/5}
35 Network A Network B Services A Services B
Network C
V Northbound Applications
VTN Manager OpenFlow OVS SB Plugin Service Location (Physical) and Properties (Access Lists)
OFS#1 OFS#2 OFS#3 OFS#4 Redirect all traffic originating from ‘Network B’, destined for ‘Services A’ to interface of Service B vBridge. Corresponding reverse rule on Services B vBridge
Network A: {DPID: OFS#1, Port:04} ... Service A: {DPID:OFS#2, Port:0/4} Service B: {DPID:OFS#4, Port:0/5}
36 Network A Network B Services A Services B
Network C
V Northbound Applications
VTN Manager OpenFlow OVS SB Plugin Service Location (Physical) and Properties (Access Lists)
OFS#1 OFS#2 OFS#3 OFS#4 Or, maybe drop all traffic
(physical ~ virtual) and Application Service path request
flow filter
learning
37
are expected to added to an existing network
flows to the service is much more scalable and robust way to inject new services
interfaces as part of one or more vBridge
locations
towards waypoint edges
38
[5] “Initial thoughts on custom network processing via waypoint services”, http://yuba.stanford.edu/~nickm/papers/waypoint- cgo11.pdf
form a strings of routing services
Router with push functions
functions: Input, Output, Parameter, Action and Event
39
[6] “Fresco: Modular Composable Security Services for Software-Defined Networks”, http://www.csl.sri.com/users/vinod/papers/fresco.pdf [7] “The Click Modular Router”, http://pdos.csail.mit.edu/papers/click:tocs00/paper.pdf
physical location
policy management
VTN configurations
into the network
conditions, packet inspection scope can be dynamically altered
physical hosts with hierarchical OVS installations (network namespaces) [8]
40
[8] “OVSForest: Mininet based testbed for emulating large scale networks”, https://github.com/cosanti/OVSForest
41
42
43
Milestone Offset 2 Date Deliverables M1 1/8/2015 Name Status Description Release Plan DONE Candidate Release Plan M2 2/5/2015 Name Status Description Release Plan DONE Final Release Plan M3 3/19/2015 Name Status Description Feature Freeze DONE M4 4/16/2015 Name Description API Freeze Migrating inventory handling to MD-SAL Completing to migrate the code related to inventory handling from AD-SAL to MD- SAL. M5 5/14/2015 Name Description Code Freeze Migrating flow handling to MD-SAL Completing to migrate the code related to flow handling from AD-SAL to MD-SAL. RC0 5/28/2015 RC1 6/4/2015 RC2 6/11/2015 Name Description Release Review Formal Release 6/25/2015
“...presents service chaining functionality to external user-centric applications via the ODL Northbound REST APIs. … network operators may create, update, and delete service chains, as well as specify the exchange of opaque metadata with network and service nodes in a service path…” [10]
44
[9] From: https://wiki.opendaylight.org/view/Project_Proposals:Main [10] From: https://wiki.opendaylight.org/view/Project_Proposals:Service_function_chaining [11] From: https://wiki.opendaylight.org/images/8/89/Ericsson-Kumbhare_Joshi-OpenDaylight_Service_Function_Chaining.pdf; Page 17