Presentation is loading. Please wait.

Presentation is loading. Please wait.

Www.opendaylight.org Okinawa open laboratory First hand on seminar OpenDaylight edition July 29, 2014 Satoshi Hieda Takahiro Oshima.

Similar presentations


Presentation on theme: "Www.opendaylight.org Okinawa open laboratory First hand on seminar OpenDaylight edition July 29, 2014 Satoshi Hieda Takahiro Oshima."— Presentation transcript:

1 www.opendaylight.org Okinawa open laboratory First hand on seminar OpenDaylight edition July 29, 2014 Satoshi Hieda Takahiro Oshima

2 www.opendaylight.org Part 1: OpenDaylight  Introduction to OpenDaylight project  Introduction to OpenDaylight Hydrogen  OpenDaylight hands on  Break Part 2: VTN (Virtual Tenant Network)  Introduction to VTN  VTN hands on  Practice problems Agenda 2

3 Part 1: OpenDaylight 3

4 Introduction to OpenDaylight project 4

5 www.opendaylight.org  Separate network control and data forwarding  Make network control programmable SDN 5 control forwarding control forwarding control forwarding control forwarding control application API Control/Data plane Interface SDN Current network (Software Defined Networking)

6 www.opendaylight.org  Part of Linux Foundation Collaborative Project  Main activities  SDN controller development  Develop SDN controller for commercial use from the development resources committed by participating vendors.  Make it Open source  Offer SDN controller as OSS to a wide range of users and vendors  Promote SDN market  Accelerate the rise of SDN market and promote its commercial use with the above activities. OpenDaylight project 6

7 www.opendaylight.org  Participation of both network vendors and IT vendors.  39 vendors at present. The participants are increasing. Multi-vendor 7 (from http://www.opendaylight.org/project/members, as of 7/19)http://www.opendaylight.org/project/members

8 www.opendaylight.org  Project proposal by many participants/vendors  There are 25 projects at present. Multi-project 8 AAA Service Affinity Metadata Service BGP-LS/PCEP Controller dlux - openDayLight User eXperience Documentation Project Defense4All Dynamic Resource Reservation Group Policy Plugin Project Integration Group LISP Flow Mapping Open DOVE OpenFlow Plugin OpenFlow Protocol Library OpFlex Implementation Project OVSDB Open vSwitch Database Integration ProjectOVSDB Open vSwitch Database Integration Project OSCP Project PacketCable PCMM Project Secure Network Bootstrapping Infrastructure (SNBI) projectSecure Network Bootstrapping Infrastructure (SNBI) project Service Function Chaining SNMP4SDN Table Type Patterns (TTPs)/Negotiable Datapath Models (NDMs)Table Type Patterns (TTPs)/Negotiable Datapath Models (NDMs) Toolkit Project Virtual Tenant Network (VTN) YANG Tools (from https://wiki.opendaylight.org/view/Main_Page, as of 7/19)https://wiki.opendaylight.org/view/Main_Page

9 www.opendaylight.org  Vendor neutral  Only vendor neutral projects can be proposed  Check by TSC in creation review of project  Governance  Board: Collegiate system with focus on Platinum member.  TSC: Committer elected by Core project representative (focus is on Platinum member for now because it is just after the inauguration)  Contents of discussion have been published on Internet Open community 9 TSC: Technical Steering Committee. Organization controlling the overall design/development of OpenDaylight TSC: Technical Steering Committee. Organization controlling the overall design/development of OpenDaylight

10 Introduction to OpenDaylight Hydrogen 10

11 www.opendaylight.org  SDN controller released in February, 2014  First OpenDaylight release  License: Eclipse Public License  Three release edition  Base Edition  Basic features only  For SDN, OpenFlow investigation  Virtualization Edition  Base Edition + virtualization  For data centers  Service Provider Edition  Base Edition + multiple protocol support  For providers, carriers OpenDaylight Hydrogen 11 Eclipse Public License(EPL) The receiver of EPL-licensed programs can use, modify, copy and distribute the work and modified versions. However, certain obligations are attributed to the distribution of the modified version, like revealing the method to acquire the source code. (from http://ja.wikipedia.org/wiki/Eclipse_Public_License)http://ja.wikipedia.org/wiki/Eclipse_Public_License Eclipse Public License(EPL) The receiver of EPL-licensed programs can use, modify, copy and distribute the work and modified versions. However, certain obligations are attributed to the distribution of the modified version, like revealing the method to acquire the source code. (from http://ja.wikipedia.org/wiki/Eclipse_Public_License)http://ja.wikipedia.org/wiki/Eclipse_Public_License

12 www.opendaylight.org  Rapid increase in short period of time after OpenDaylight inauguration(May, 2013)  Many contribution of existing code as well Code volume 12 OpenDaylight 発足 Hydrogen release (total: 1.5ML, code: 1.0ML) (from http://www.ohloh.net/p/opendaylight)http://www.ohloh.net/p/opendaylight

13 www.opendaylight.org  Announcement of products with OpenDaylight base  Cisco: XNC (Extensible Network Controller)  One PK, OpenFlow 1.0 support  IBM: SDN VE (Software Defined Network for Virtual Environment)  Adopt same technology as OpenDOVE  PoC of OpenDaylight starts in Deutsche Telekom, Italtel etc.  Ericsson launches laboratory for validation Adoption 13

14 www.opendaylight.org  Many vendor-led projects  Depending on the project, committers are limited to one company  Non vendor-led projects are also increasing  University of Kentucky, ITRI,...  Community is diversifying  Projects with multiple vendor participation  Integration between projects Community 14

15 www.opendaylight.org  Contributors: 154 (as of February,2014) (Reference: OpenStack 1974, Floodlight 52) Community 15 Commit count Line count (from http://events.linuxfoundation.org/sites/events/files/slides/OpenDaylight-Year1%20v4-ext.pdf )http://events.linuxfoundation.org/sites/events/files/slides/OpenDaylight-Year1%20v4-ext.pdf

16 www.opendaylight.org Projects in the Hydrogen Release 16 Project nameActivitiesProposed vendors OpenDaylight ControllerSDN controller framework and basic featuresCisco OpenFlow PluginPlugin to control OpenFlow compliant network devicesEricsson, IBM, Cisco OpenFlow Protocol LibraryLibrary supporting OpenFlow 1.3 and above versionsPantheon YANG ToolsTools and library to set network devices using NETCONF and YANG Cisco VTNVirtualization technology for realizing multi tenants across multiple SDN controllers NEC OVSDB IntegrationConfiguration/management feature of OVSDB mediated OVS(Open vSwitch) Kentucky Univ. Open DOVEVirtualization technology for realizing multi tenant with overlay technology IBM Affinity Metadata ServiceAPI for expressing relationship and service level of workloadPlexxi Defense4AllFeature controlling the detection/defense of DDoS attackRadware BGP-LS/PCEPFeature controlling BGP-LS and PCEP compliant network devicesCisco LISP Flow MappingFeature controlling LISP compliant network devicesConteXtream SNMP4SDNSNMP supportITRI (From https://wiki.opendaylight.org/images/2/24/ODL_2013.11-IETF-final.pptx)https://wiki.opendaylight.org/images/2/24/ODL_2013.11-IETF-final.pptx

17 www.opendaylight.org 17 (From OpenDaylight_Briefing_Deck_06.30.14.ppt http://bit.ly/ZPgDut)http://bit.ly/ZPgDut

18 OpenDaylight Hydrogen Base Edition 18

19 www.opendaylight.org 19 (From http://www.opendaylight.org/software/base-edition )http://www.opendaylight.org/software/base-edition

20 www.opendaylight.org  Framework of SDN controller  Constitutes of OSGi Framework + bundle  Major features  Base Network Service Function  Bundle the basic controller features and offer it as REST API  Topology Manager, Stats Manager, Switch Manager,...  SAL (Service Abstraction Layer)  HA, Clustering  Northbound API  GUI OpenDaylight Controller 20

21 www.opendaylight.org  Abstraction layer between Controller Platform and Protocol Plugin  Control data sharing, request calls etc.  Two types of SAL are defined  AD-SAL (API-Driven SAL)  MD-SAL (Model-Driven SAL)  Supported SAL differs based on Plugin SAL 21

22 www.opendaylight.org  SAL defines the service APIs offered to upper layers  Higher applications use SB Plugin via service API  Degree of support provided for service APIs differ based on SB Plugin, and it is necessary to be aware of the return code AD-SAL 22 (From https://wiki.opendaylight.org/view/OpenDaylight_Controller:AD-SAL )https://wiki.opendaylight.org/view/OpenDaylight_Controller:AD-SAL AD-SAL

23 www.opendaylight.org  Java bindings(API/Plugin) are created via YANG Tools, based on the data model defined in YANG MD-SAL 23 (From https://wiki.opendaylight.org/images/7/78/ONF_NBI_Leadership_Roundtable_Presentation_-_ODL.pptx )https://wiki.opendaylight.org/images/7/78/ONF_NBI_Leadership_Roundtable_Presentation_-_ODL.pptx

24 www.opendaylight.org  Application and SB plugin operate model data, and execute request (RPC) and notification via the generated Java bindings MD-SAL 24 (From https://wiki.opendaylight.org/images/e/e3/Os2014-md-sal-tutorial.pdf )https://wiki.opendaylight.org/images/e/e3/Os2014-md-sal-tutorial.pdf

25 www.opendaylight.org  OpenFlow Plugin  Protocol plugin that controls OpenFlow switch  Supports OF 1.0, 1.3.x  OpenFlow Protocol Library  Library for transmitting and receiving OpenFlow protocol data OpenFlow Plugin & Protocol Library 25 (From https://wiki.opendaylight.org/view/File:Openflow_Protocol_Library.pdf )https://wiki.opendaylight.org/view/File:Openflow_Protocol_Library.pdf

26 www.opendaylight.org  Tools and libraries to configure network devices by using NETCONF and YANG  Generates Java binding from model described in YANG  Service module of MD-SAL can be easily created from YANG model YANG Tools 26

27 OpenDaylight Hydrogen Virtualization Edition 27

28 www.opendaylight.org 28 (From http://www.opendaylight.org/software/virtualization-edition )http://www.opendaylight.org/software/virtualization-edition

29 www.opendaylight.org  Virtualization technology that realizes a multi tenant that spans across multiple SDN controllers  Offers VTN API for higher applications to control the virtual network  Refer details in Part 2 VTN! VTN 29

30 www.opendaylight.org  OVS(Open vSwitch) configuration and management features via OVSDB  Offers features for OVS like creation of bridge, port etc., modification of settings, deletion, information retrieval and tunnel control  Possible to integrate with OpenStack OVSDB 30 (From http://www.1-4-5.net/~dmm/talks/OpenDaylight_SDN_Workshop_AZ.pdf )http://www.1-4-5.net/~dmm/talks/OpenDaylight_SDN_Workshop_AZ.pdf

31 www.opendaylight.org  Virtualization technology with overlay technology (VxLAN)  Tenants can connect with each other on L2 and L3 (ACL control)  Has a gateway feature with the existing physical network  Integrates with OpenStack OpenDOVE 31 (From https://wiki.opendaylight.org/view/Open_DOVE:Proposal )https://wiki.opendaylight.org/view/Open_DOVE:Proposal

32 www.opendaylight.org  Metadata to realize network model  This service does not look into how metadata is expressed as config and flow entry Affinity Metadata Service 32 (From https://wiki.opendaylight.org/view/Project_Proposals:Affinity_Metadata_Service )https://wiki.opendaylight.org/view/Project_Proposals:Affinity_Metadata_Service

33 www.opendaylight.org  Feature to control detection and defense for DDoS attacks  When a DDoS attack is detected, it mitigates the attack by directing target flows to mitigation systems Defence4All 33 (From https://wiki.opendaylight.org/view/Project_Proposals:Defense4All )https://wiki.opendaylight.org/view/Project_Proposals:Defense4All

34 www.opendaylight.org  Offers one northbound for the controller  Plugin individual implementations of each project under it OpenStack Service 34  Supported projects  VTN,OVSDB,OpenDOVE  Resources  Resources used differs for different projects VTN Provider VTN Provider DOVE Provider DOVE Provider OVSDB Provider OVSDB Provider ResourceVTNOVSDBOpenDOVE NetworkYes Subnet--Yes PortYes Router--Yes FloatingIP--Yes (From http://www.1-4-5.net/~dmm/talks/OpenDaylight_SDN_Workshop_AZ.pdf )http://www.1-4-5.net/~dmm/talks/OpenDaylight_SDN_Workshop_AZ.pdf hop by hopoverlay VTN Provider VTN Provider DOVE Provider DOVE Provider

35 OpenDaylight Hydrogen Service Provider Edition 35

36 www.opendaylight.org 36 (From http://www.opendaylight.org/software/service-provider-edition )http://www.opendaylight.org/software/service-provider-edition

37 www.opendaylight.org  LISP Mapping Service  Controls network devices that support LISP  Offers mapping feature between EID/Locator of LISP  BGP-LS/PCEP  Controls network devices that support BGP-LS and PCEP  Allows topology detection via BGP-LS and path programming via PCEP  SNMP4SDN  Controls network devices via SNMP LISP, BGP, PCEP, SNMP 37

38 Conclusion 38

39 www.opendaylight.org  OpenDaylight Helium (incoming SDN controller)  Under development, release planned for September 29  Projects that plan to participate (25 projects)  AAA Service  BGPCEP  Controller  dLux  Defense4All  Docs  Group Based Policy  Integration Group  L2 Switch  Lisp Flow Mapping Service  ODL-SDNi App  OpenFlow Plugin  Openflow Protocol Library Future of OpenDaylight  OpFlex protocol Agent  OVSDB  PacketCablePCMM  Secure Network Bootstrapping Infrastructure  Service Function Chaining  Southbound plugin to the OpenContrail platform  Reservation  SNMP4SDN  Table Type Patterns  Toolkit  VTN Project  YANG Tools 39

40 www.opendaylight.org  We now have an overview of OpenDaylight project and OpenDaylight Hydrogen  For those who are interested in the projects, please refer this page! https://wiki.opendaylight.org/view/Main_Page https://wiki.opendaylight.org/view/Main_Page Conclusion 40

41 www.opendaylight.org OpenFlow overview 41

42 www.opendaylight.org Status of OpenFlow OpenDaylight Controller Architecture One of the protocols supported by OpenDaylight (Southbound Interface) 42

43 www.opendaylight.org Basic overview of OpenFlow (version 1.0) PriorityHeader FieldsActionCount 10000 DMAC = AA:AA:… Port 1250 5000SIP=10.0.0.1Port 2300 4000L4-port=23Drop892 1ANYController11 ▌Controller enters the rules for packet processing into the switch tables. Switch will process the packets based on this table information. = Separating control and forwarding features ▌OpenFlow specification defines - message format between controller and switch - necessary switch capabilities OF1.0 43

44 www.opendaylight.org OpenFlow utilization (Overlay or Hop-by-hop) OF Legacy ▌Overlay technology▌Hop-by-hop technology OpenFlow in edge only Maintains existing network devices Central management of core NW is not possible → Cannot visualize physical path → Traffic path control is difficult OpenFlow in its entirety Replaces existing network devices Central management of core NW is possible → Visualize physical path → Traffic path control is easy 44

45 Server Flow 1 Flow 2 App 1 App 2 App 1 App 2 ① ① OpenFlow controller OpenFlow switch specifically, such things are possible Traffic path control specifically, such things are possible ■ Sophistication of traffic path control with Open flow ① Effective use of network bandwidth by path control of each flow (multi-path) ② Improvement in network device maintainability by moving flows to one side ③ Place network appliances like Firewall, Load balancer etc. between the path and allow passage of specific flows (WayPoint feature) Page 45

46 Server ② Move flows to one side ② Maintenance possible specifically, such things are possible Traffic path control specifically, such things are possible OpenFlow controller OpenFlow switch Page 46 ■ Sophistication of traffic path control with Open flow ① Effective use of network bandwidth by path control of each flow (multi-path) ② Improvement in network device maintainability by moving flows to one side ③ Place network appliances like Firewall, Load balancer etc. between the path and allow passage of specific flows (WayPoint feature) Flow 1 Flow 2 App 1 App 2 App 1 App 2

47 FW LB Firewall Load balancer ③ specifically, such things are possible Traffic path control specifically, such things are possible OpenFlow controller OpenFlow switch Page 47 ■ Sophistication of traffic path control with Open flow ① Effective use of network bandwidth by path control of each flow (multi-path) ② Improvement in network device maintainability by moving flows to one side ③ Place network appliances like Firewall, Load balancer etc. between the path and allow passage of specific flows (WayPoint feature) Flow 1 Flow 2 App 1 App 2 Server App 1 App 2

48 Distinguish communication traffic with any combination of address/ identifier in each of the L1(physical port etc. ), L2(MAC), L3(IP) and L4(port number) layers and define actions accordingly for more flexible control. [What happens in OpenFlow?] Packet header fields used in Match conditions Uses total of twelve header fields as Match conditions from L1 to L4 L1L2L3L4 Data Src MAC VLAN Priority Src IP TCP/UDP Src Port TCP/UDP Dst Port Dst MAC Dst IP Ingress Port Ether Type VLAN id IP ToS IP Proto [Conventional network devices] L2 (MAC) switchingL3 (IP) routing Controls forwarding to individual network devices according to destination address of L2/L3 layers (Firewall etc.) OF1.0

49 Action for each flow (Action)  As Action, it is possible to update packet header (Modify-Field), output to specified port (OUTPUT) or add to specified queue (ENQUEUE).  Drop action is performed if action is not specified Type of actionDescription Forward PORT specification Specify physical port number of switch IN_PORTForward packets to input port of packets TABLE Perform flow table match operations (during Packet Out messages) NORMALForward packets using legacy switch features FLOOD Output to all ports except the port that received the packet and the port where NO_FLOOD is set in OpenFlow ALL Transmit packets from all ports except the input port of packets CONTROLLERTransmit packets to controller LOCALTermination process in protocol stack inside switch EnqueueAdd to specified queue Modify-fieldUpdate packet header OF1.0

50 www.opendaylight.org OpenDaylight hands on 50

51 www.opendaylight.org  In this session, we will operate and experience the following sample applications preset in Hydrogen.  Simple Forwarding  Static Flow Installation  Manual setting from GUI (filtering)  Manual setting from REST API (L2 communication)  Load Balancer Service  Load distribution with L4 load balancing Agenda 51

52 www.opendaylight.org  Check VM start User name : mininet Password : mininet  Modify keyboard layout to Japanese  sudo dpkg-reconfigure keyboard-configuration  Select “Japanese” on the second screen ( leave the rest as default )  BackSpace enable  stty erase ^H  Record above in ~/.bash_profile as well Environment preparation 52

53 www.opendaylight.org  Start controller with Base Edition.  cd ~/controller-base/opendaylight/ ./run.sh ※ Startup takes some time ( few seconds )  Check start  Open browser and access the following. http://127.0.0.1:8080/ User name : admin Password : admin Start OpenDaylight controller 53

54 www.opendaylight.org  Confirm the start of OpenDaylight controller. OpenDaylight GUI screen 54

55 www.opendaylight.org  Next, prepare OpenFlow switch.  Use the emulator Mininet this time.  Open new terminal, run the following sudo mn --controller=remote,ip=127.0.0.1  Please reload the GUI page after start. Was a switch displayed? # Please drag it if hidden in screen corner. Start Mininet 55

56 www.opendaylight.org Since one switch is not enough, we will use custom topology.  Stop mininet. mininet> exit  Store the downloaded USB.zip to home directory (/home/mininet)  Start Mininet with custom topology. sudo mn --controller=remote,ip=127.0.0.1 --custom ~/handson/topo- tree-depth2.py --topo mytopo Start Mininet 56

57 www.opendaylight.org  With this, the ODL controller and OF switch are connected.  The link between switches is detected automatically and displayed on GUI.  ODL controller is able to detect link by… Explanation : Topology detection P2P1 S1S3 S1 S3 OpenDayLight Controller P2P1 OF|P1@ | OF | OFS2 OF|P2@ | OF | OFS1 OF|P1@ | OF | OFS2 OF|P2@ | OF | OFS1 S2 57 LLDP packet

58 www.opendaylight.org  Check for correct topology recognition in GUI. Check in GUI 58

59 www.opendaylight.org Simple Forwarding 59

60 www.opendaylight.org  Now, let us ping the traffic in data plane. mininet> h11 ping h12 → Communication was possible.  It is obvious that the OpenFlow switch is just a box until the controller sets flows. There will be no communication if controller does not set flows. Simple Forwarding 60

61 www.opendaylight.org  What happens after Ping start is ・・・ Simple Forwarding S3 h11 h12 10.0.0.1 10.0.0.2 S1S1 h13 10.0.0.3 S2 OpenDayLight Controller ① ARP Req ② Forward ARP Req ③ Forward ARP Req 61

62 www.opendaylight.org  ARP Reply Explanation : Simple Forwarding S3 h11 h12 10.0.0.1 10.0.0.2 S1S1 h13 10.0.0.3 S2 OpenDayLight Controller ③ ARP Reply ④ Forward ARP Reply 62

63 www.opendaylight.org  Flow Entry setting Explanation : Simple Forwarding S3 h11 h12 10.0.0.1 10.0.0.2 S1S1 h13 10.0.0.3 S2 OpenDayLight Controller ④ Set Flow Entry in each switch Match condition : dstIP=10.0.0.1 63

64 www.opendaylight.org  The application Simple Forwarding runs by default and communication was possible because it configured the Flow entry.  The mechanism is simple but we have just seen an example of how the controller establishes communication after detecting each host by central management of the switches. Simple Forwarding 64

65 www.opendaylight.org Static Flow Installation - set from GUI 65

66 www.opendaylight.org  In the example above, Simple Forwarding automatically configured the flows.  In OpenDaylight controller, you can also set each flow manually.  Next, we will use this feature to manually set the rules(flow) on switch to block specific traffic. Static Flow Installation – set from GUI 66

67 www.opendaylight.org Static Flow Installation – set from GUI  Flow to set manually S3 h11 h12 10.0.0.1 10.0.0.2 S1S1 h13 10.0.0.3 S2 Set the rule to drop packets bound for 10.0.0.2 at a higher priority than the flow set by Simple Forwarding. 67

68 www.opendaylight.org  Setting example Static Flow Installation – set from GUI Name : Drop_dst_h12(optional) Node : 00:00: ~ :00:01 InputPort : s1-eth1 Priority : 500 Dst-IP : 10.0.0.2 Action : Drop 68

69 www.opendaylight.org  Operation check  No communication between h11 – h12 due to drop flow mininet> h11 ping h12  Communication possible between H11 – h13 with Simple Forwarding mininet> h11 ping h13  Cleanup  Stop the controller. Static Flow Installation – set from GUI 69

70 www.opendaylight.org  We were able to see how traffic filtering is possible by setting flows manually from GUI.  Were you able to understand OpenFlow better and feel the flexibility after setting the flows manually? Static Flow Installation – set from GUI 70

71 www.opendaylight.org Static Flow Installation - set from REST API 71

72 www.opendaylight.org  This time we will set flows manually with Rest API.  The aim is to set flows without relying on Simple Forwarding and establish communication. (not easy though)  REST API reference can be found below. https://wiki.opendaylight.org/view/OpenDaylight_Controller:REST_Referenc e_and_Authentication https://wiki.opendaylight.org/view/OpenDaylight_Controller:REST_Referenc e_and_Authentication Static Flow Installation – set from REST API 72

73 www.opendaylight.org  In the topology below, all hosts are to communicate with each other.  Use Mac address as Match condition of flow. Static Flow Installation – set from REST API h11 h13 Mac_h11 Mac_h12 h14 Mac_h13 S1S1S2 S4S3S3 h12 Mac_h14 73

74 www.opendaylight.org  Start OpenDaylight controller  cd ~/controller-base/opendaylight/ ./run.sh  Start Mininet  sudo mn --controller=remote,ip=127.0.0.1 --custom ~/handson/topo-fullyMesh.py --topo mytopo  Stop Simple Forwarding. (in osgi console)  Give command “ss simple”, get Bundle id  Stop simple forwarding with “stop 112” ( in GUI )  Modify the “Operation Mode” of each switch to [Proactive Forwarding Only] Static Flow Installation – set from REST API 74

75 www.opendaylight.org  Check for no ping mininet> h11 ping h12 → Check for failure here Static Flow Installation – set from REST API 75

76 www.opendaylight.org  Set the flows like this. Static Flow Installation – Fully Mesh topology h11 h13 Mac_h11 Mac_h12 h14 Mac_h13 S1S1S2 S4S3S3 h12 Mac_h14 Match : Inport=1 dlDst=MAC_h12 dlSrc=MAC_h11 Action : Output=2 1 2 76

77 www.opendaylight.org Similarly ・・・ Static Flow Installation – Fully Mesh topology 77

78 www.opendaylight.org  You need to set a total of 6 flows to forward packets from single host to each host  Since there are 4 hosts, a total of 24 flows are required for intercommunication. Static Flow Installation – Fully Mesh topology h11 h13 Mac_h11 Mac_h12 h14 Mac_h13 S1S1S2 S4S3S3 h12 Mac_h14 1 2 78

79 www.opendaylight.org  Set as per the sequence below.  Assign the Mac address of each host in variable ( at the mininet prompt)  Display Mac address of h11 with mininet> h11 ifconfig  Copy it to clipboard ( in Linux shell )  Mac_h11=86:15:23:67:d8:6d ※ paste address from clipboard. Similarly, perform the above operation for h12 ~ h14 as well. Static Flow Installation – Fully Mesh topology 79

80 www.opendaylight.org Static Flow Installation – Fully Mesh topology curl --user "admin":"admin" -X PUT -H 'content-type: application/json' -H 'ipaddr:127.0.0.1' -d "{\"installInHw\":\"true\",\"name\":\"ofs1h11h12\",\"node\":{\"id\":\"00:00:00:00:00:00:00:01\",\"type\":\"OF\"},\"ingressPort\":\"1\",\"priority\":\"500\",\"etherType\":\"0x800\",\"dlDst\":\"$Mac_h12\",\"dlSrc\":\"$Mac_h11\",\"actions\":[\"OUTPUT=2\"]}" http://127.0.0.1:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:01/staticFlow/ofs1h11h12 curl --user "admin":"admin" -X PUT -H 'content-type: application/json' -H 'ipaddr:127.0.0.1' -d "{\"installInHw\":\"true\",\"name\":\"ofs1h11h13\",\"node\":{\"id\":\"00:00:00:00:00:00:00:01\",\"type\":\"OF\"},\"ingressPort\":\"1\",\"priority\":\"500\",\"etherType\":\"0x800\",\"dlDst\":\"$Mac_h13\",\"dlSrc\":\"$Mac_h11\",\"actions\":[\"OUTPUT=3\"]}" http://127.0.0.1:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:01/staticFlow/ofs1h11h13 curl --user "admin":"admin" -X PUT -H 'content-type: application/json' -H 'ipaddr:127.0.0.1' -d "{\"installInHw\":\"true\",\"name\":\"ofs1h11h14\",\"node\":{\"id\":\"00:00:00:00:00:00:00:01\",\"type\":\"OF\"},\"ingressPort\":\"1\",\"priority\":\"500\",\"etherType\":\"0x800\",\"dlDst\":\"$Mac_h14\",\"dlSrc\":\"$Mac_h11\",\"actions\":[\"OUTPUT=4\"]}" http://127.0.0.1:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:01/staticFlow/ofs1h11h14 curl --user "admin":"admin" -X PUT -H 'content-type: application/json' -H 'ipaddr:127.0.0.1' -d "{\"installInHw\":\"true\",\"name\":\"ofs1h12h11\",\"node\":{\"id\":\"00:00:00:00:00:00:00:01\",\"type\":\"OF\"},\"ingressPort\":\"2\",\"priority\":\"500\",\"etherType\":\"0x800\",\"dlDst\":\"$Mac_h11\",\"dlSrc\":\"$Mac_h12\",\"actions\":[\"OUTPUT=1\"]}" http://127.0.0.1:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:01/staticFlow/ofs1h12h11 curl --user "admin":"admin" -X PUT -H 'content-type: application/json' -H 'ipaddr:127.0.0.1' -d "{\"installInHw\":\"true\",\"name\":\"ofs1h13h11\",\"node\":{\"id\":\"00:00:00:00:00:00:00:01\",\"type\":\"OF\"},\"ingressPort\":\"3\",\"priority\":\"500\",\"etherType\":\"0x800\",\"dlDst\":\"$Mac_h11\",\"dlSrc\":\"$Mac_h13\",\"actions\":[\"OUTPUT=1\"]}" http://127.0.0.1:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:01/staticFlow/ofs1h13h11 curl --user "admin":"admin" -X PUT -H 'content-type: application/json' -H 'ipaddr:127.0.0.1' -d "{\"installInHw\":\"true\",\"name\":\"ofs1h14h11\",\"node\":{\"id\":\"00:00:00:00:00:00:00:01\",\"type\":\"OF\"},\"ingressPort\":\"4\",\"priority\":\"500\",\"etherType\":\"0x800\",\"dlDst\":\"$Mac_h11\",\"dlSrc\":\"$Mac_h14\",\"actions\":[\"OUTPUT=1\"]}" http://127.0.0.1:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:01/staticFlow/ofs1h14h11 curl --user "admin":"admin" -X PUT -H 'content-type: application/json' -H 'ipaddr:127.0.0.1' -d "{\"installInHw\":\"true\",\"name\":\"ofs2h12h11\",\"node\":{\"id\":\"00:00:00:00:00:00:00:02\",\"type\":\"OF\"},\"ingressPort\":\"1\",\"priority\":\"500\",\"etherType\":\"0x800\",\"dlDst\":\"$Mac_h11\",\"dlSrc\":\"$Mac_h12\",\"actions\":[\"OUTPUT=2\"]}" http://127.0.0.1:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:02/staticFlow/ofs2h12h11 curl --user "admin":"admin" -X PUT -H 'content-type: application/json' -H 'ipaddr:127.0.0.1' -d "{\"installInHw\":\"true\",\"name\":\"ofs2h12h13\",\"node\":{\"id\":\"00:00:00:00:00:00:00:02\",\"type\":\"OF\"},\"ingressPort\":\"1\",\"priority\":\"500\",\"etherType\":\"0x800\",\"dlDst\":\"$Mac_h13\",\"dlSrc\":\"$Mac_h12\",\"actions\":[\"OUTPUT=3\"]}" http://127.0.0.1:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:02/staticFlow/ofs2h12h13 curl --user "admin":"admin" -X PUT -H 'content-type: application/json' -H 'ipaddr:127.0.0.1' -d "{\"installInHw\":\"true\",\"name\":\"ofs2h12h14\",\"node\":{\"id\":\"00:00:00:00:00:00:00:02\",\"type\":\"OF\"},\"ingressPort\":\"1\",\"priority\":\"500\",\"etherType\":\"0x800\",\"dlDst\":\"$Mac_h14\",\"dlSrc\":\"$Mac_h12\",\"actions\":[\"OUTPUT=4\"]}" http://127.0.0.1:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:02/staticFlow/ofs2h12h14 curl --user "admin":"admin" -X PUT -H 'content-type: application/json' -H 'ipaddr:127.0.0.1' -d "{\"installInHw\":\"true\",\"name\":\"ofs2h11h12\",\"node\":{\"id\":\"00:00:00:00:00:00:00:02\",\"type\":\"OF\"},\"ingressPort\":\"2\",\"priority\":\"500\",\"etherType\":\"0x800\",\"dlDst\":\"$Mac_h12\",\"dlSrc\":\"$Mac_h11\",\"actions\":[\"OUTPUT=1\"]}" http://127.0.0.1:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:02/staticFlow/ofs2h11h12 curl --user "admin":"admin" -X PUT -H 'content-type: application/json' -H 'ipaddr:127.0.0.1' -d "{\"installInHw\":\"true\",\"name\":\"ofs2h13h12\",\"node\":{\"id\":\"00:00:00:00:00:00:00:02\",\"type\":\"OF\"},\"ingressPort\":\"3\",\"priority\":\"500\",\"etherType\":\"0x800\",\"dlDst\":\"$Mac_h12\",\"dlSrc\":\"$Mac_h13\",\"actions\":[\"OUTPUT=1\"]}" http://127.0.0.1:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:02/staticFlow/ofs2h13h12 curl --user "admin":"admin" -X PUT -H 'content-type: application/json' -H 'ipaddr:127.0.0.1' -d "{\"installInHw\":\"true\",\"name\":\"ofs2h14h12\",\"node\":{\"id\":\"00:00:00:00:00:00:00:02\",\"type\":\"OF\"},\"ingressPort\":\"4\",\"priority\":\"500\",\"etherType\":\"0x800\",\"dlDst\":\"$Mac_h12\",\"dlSrc\":\"$Mac_h14\",\"actions\":[\"OUTPUT=1\"]}" http://127.0.0.1:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:02/staticFlow/ofs2h14h12 curl --user "admin":"admin" -X PUT -H 'content-type: application/json' -H 'ipaddr:127.0.0.1' -d "{\"installInHw\":\"true\",\"name\":\"ofs2h13h11\",\"node\":{\"id\":\"00:00:00:00:00:00:00:03\",\"type\":\"OF\"},\"ingressPort\":\"1\",\"priority\":\"500\",\"etherType\":\"0x800\",\"dlDst\":\"$Mac_h11\",\"dlSrc\":\"$Mac_h13\",\"actions\":[\"OUTPUT=2\"]}" http://127.0.0.1:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:03/staticFlow/ofs2h13h11 curl --user "admin":"admin" -X PUT -H 'content-type: application/json' -H 'ipaddr:127.0.0.1' -d "{\"installInHw\":\"true\",\"name\":\"ofs2h13h12\",\"node\":{\"id\":\"00:00:00:00:00:00:00:03\",\"type\":\"OF\"},\"ingressPort\":\"1\",\"priority\":\"500\",\"etherType\":\"0x800\",\"dlDst\":\"$Mac_h12\",\"dlSrc\":\"$Mac_h13\",\"actions\":[\"OUTPUT=3\"]}" http://127.0.0.1:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:03/staticFlow/ofs2h13h12 curl --user "admin":"admin" -X PUT -H 'content-type: application/json' -H 'ipaddr:127.0.0.1' -d "{\"installInHw\":\"true\",\"name\":\"ofs2h13h14\",\"node\":{\"id\":\"00:00:00:00:00:00:00:03\",\"type\":\"OF\"},\"ingressPort\":\"1\",\"priority\":\"500\",\"etherType\":\"0x800\",\"dlDst\":\"$Mac_h14\",\"dlSrc\":\"$Mac_h13\",\"actions\":[\"OUTPUT=4\"]}" http://127.0.0.1:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:03/staticFlow/ofs2h13h14 curl --user "admin":"admin" -X PUT -H 'content-type: application/json' -H 'ipaddr:127.0.0.1' -d "{\"installInHw\":\"true\",\"name\":\"ofs2h11h13\",\"node\":{\"id\":\"00:00:00:00:00:00:00:03\",\"type\":\"OF\"},\"ingressPort\":\"2\",\"priority\":\"500\",\"etherType\":\"0x800\",\"dlDst\":\"$Mac_h13\",\"dlSrc\":\"$Mac_h11\",\"actions\":[\"OUTPUT=1\"]}" http://127.0.0.1:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:03/staticFlow/ofs2h11h13 curl --user "admin":"admin" -X PUT -H 'content-type: application/json' -H 'ipaddr:127.0.0.1' -d "{\"installInHw\":\"true\",\"name\":\"ofs2h12h13\",\"node\":{\"id\":\"00:00:00:00:00:00:00:03\",\"type\":\"OF\"},\"ingressPort\":\"3\",\"priority\":\"500\",\"etherType\":\"0x800\",\"dlDst\":\"$Mac_h13\",\"dlSrc\":\"$Mac_h12\",\"actions\":[\"OUTPUT=1\"]}" http://127.0.0.1:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:03/staticFlow/ofs2h12h13 curl --user "admin":"admin" -X PUT -H 'content-type: application/json' -H 'ipaddr:127.0.0.1' -d "{\"installInHw\":\"true\",\"name\":\"ofs2h14h13\",\"node\":{\"id\":\"00:00:00:00:00:00:00:03\",\"type\":\"OF\"},\"ingressPort\":\"4\",\"priority\":\"500\",\"etherType\":\"0x800\",\"dlDst\":\"$Mac_h13\",\"dlSrc\":\"$Mac_h14\",\"actions\":[\"OUTPUT=1\"]}" http://127.0.0.1:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:03/staticFlow/ofs2h14h13 curl --user "admin":"admin" -X PUT -H 'content-type: application/json' -H 'ipaddr:127.0.0.1' -d "{\"installInHw\":\"true\",\"name\":\"ofs2h14h11\",\"node\":{\"id\":\"00:00:00:00:00:00:00:04\",\"type\":\"OF\"},\"ingressPort\":\"1\",\"priority\":\"500\",\"etherType\":\"0x800\",\"dlDst\":\"$Mac_h11\",\"dlSrc\":\"$Mac_h14\",\"actions\":[\"OUTPUT=2\"]}" http://127.0.0.1:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:04/staticFlow/ofs2h14h11 curl --user "admin":"admin" -X PUT -H 'content-type: application/json' -H 'ipaddr:127.0.0.1' -d "{\"installInHw\":\"true\",\"name\":\"ofs2h14h12\",\"node\":{\"id\":\"00:00:00:00:00:00:00:04\",\"type\":\"OF\"},\"ingressPort\":\"1\",\"priority\":\"500\",\"etherType\":\"0x800\",\"dlDst\":\"$Mac_h12\",\"dlSrc\":\"$Mac_h14\",\"actions\":[\"OUTPUT=3\"]}" http://127.0.0.1:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:04/staticFlow/ofs2h14h12 curl --user "admin":"admin" -X PUT -H 'content-type: application/json' -H 'ipaddr:127.0.0.1' -d "{\"installInHw\":\"true\",\"name\":\"ofs2h14h13\",\"node\":{\"id\":\"00:00:00:00:00:00:00:04\",\"type\":\"OF\"},\"ingressPort\":\"1\",\"priority\":\"500\",\"etherType\":\"0x800\",\"dlDst\":\"$Mac_h13\",\"dlSrc\":\"$Mac_h14\",\"actions\":[\"OUTPUT=4\"]}" http://127.0.0.1:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:04/staticFlow/ofs2h14h13 curl --user "admin":"admin" -X PUT -H 'content-type: application/json' -H 'ipaddr:127.0.0.1' -d "{\"installInHw\":\"true\",\"name\":\"ofs2h11h14\",\"node\":{\"id\":\"00:00:00:00:00:00:00:04\",\"type\":\"OF\"},\"ingressPort\":\"2\",\"priority\":\"500\",\"etherType\":\"0x800\",\"dlDst\":\"$Mac_h14\",\"dlSrc\":\"$Mac_h11\",\"actions\":[\"OUTPUT=1\"]}" http://127.0.0.1:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:04/staticFlow/ofs2h11h14 curl --user "admin":"admin" -X PUT -H 'content-type: application/json' -H 'ipaddr:127.0.0.1' -d "{\"installInHw\":\"true\",\"name\":\"ofs2h12h14\",\"node\":{\"id\":\"00:00:00:00:00:00:00:04\",\"type\":\"OF\"},\"ingressPort\":\"3\",\"priority\":\"500\",\"etherType\":\"0x800\",\"dlDst\":\"$Mac_h14\",\"dlSrc\":\"$Mac_h12\",\"actions\":[\"OUTPUT=1\"]}" http://127.0.0.1:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:04/staticFlow/ofs2h12h14 curl --user "admin":"admin" -X PUT -H 'content-type: application/json' -H 'ipaddr:127.0.0.1' -d "{\"installInHw\":\"true\",\"name\":\"ofs2h13h14\",\"node\":{\"id\":\"00:00:00:00:00:00:00:04\",\"type\":\"OF\"},\"ingressPort\":\"4\",\"priority\":\"500\",\"etherType\":\"0x800\",\"dlDst\":\"$Mac_h14\",\"dlSrc\":\"$Mac_h13\",\"actions\":[\"OUTPUT=1\"]}" http://127.0.0.1:8080/controller/nb/v2/flowprogrammer/default/node/OF/00:00:00:00:00:00:00:04/staticFlow/ofs2h13h14 80

81 www.opendaylight.org Static Flow Installation – Fully Mesh topology Operation check mininet> h11 ping h12 mininet> h11 ping h13 Cleanup Stop controller. Stop mininet 81

82 www.opendaylight.org  That is all for the static injection of Flow Entry.  It is not an easy task.  If the switch and host count increase, the required flow entries also increase and it is difficult to set one by one.  We hope you have understood the fact that the controller should conceal the physical layer and must offer an abstract interface for the operator. → Next, we will see an example of this. The actual VTN is in Hands on part two ・・・ Static Flow Installation – Fully Mesh topology 82

83 www.opendaylight.org Load Balancer Service 83

84 www.opendaylight.org Next, we will try a sample application - Load Balancer Service.  Overview Load Balancer Service h1 h2 h4 h3 仮想 IP メンバ IP 1 メンバ IP 2 メンバ IP 3 Load Balancer 84

85 www.opendaylight.org  Settings Load Balancer Service h1 h2 h4 h3 PoolRR 仮想 IP MemberIP 1 Member IP 2 Member IP 3 85

86 www.opendaylight.org  Setting sequence  Creation of Pool curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X POST http://127.0.0.1:8080/one/nb/v2/lb/default/create/pool -d '{"name":"PoolRR","lbmethod":"roundrobin"}‘  Registration of virtual IP curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X POST http://127.0.0.1:8080/one/nb/v2/lb/default/create/vip -d '{"name":"VIP- RR","ip":"10.0.0.20","protocol":"TCP","port":"5550","poolname":"PoolRR"}' curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X PUT http://127.0.0.1:8080/one/nb/v2/lb/default/update/vip -d '{"name":"VIP- RR","poolname":"PoolRR"}' Load Balancer Service 86

87 www.opendaylight.org  Setting sequence(continued)  Registration of member IP curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X POST http://127.0.0.1:8080/one/nb/v2/lb/default/create/poolmember -d '{"name":"PM2","ip":"10.0.0.2","poolname":"PoolRR"}' curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X POST http://127.0.0.1:8080/one/nb/v2/lb/default/create/poolmember -d '{"name":"PM3","ip":"10.0.0.3","poolname":"PoolRR"}' curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X POST http://127.0.0.1:8080/one/nb/v2/lb/default/create/poolmember -d '{"name":"PM4","ip":"10.0.0.4","poolname":"PoolRR"}' Load Balancer Service 87

88 www.opendaylight.org  Check operation  Start mininet sudo mn --topo=tree,2,4 --controller=remote,ip=127.0.0.1,port=6633  Display virtual host(h1 ~ h4) console ( on mininet prompt, ) xterm h1 h2 h3 h4  Start server ・ Run the following on each console in h2 ~ h4 iperf -s -p 5550  Accessing server from client ・ Run the following on h1 console arp -s 10.0.0.20 00:00:10:00:00:20 iperf -c 10.0.0.20 -p 5550 ・ Connect to 10.0.0.20:5550 again iperf -c 10.0.0.20 -p 5550 Load Balancer Service 88

89 www.opendaylight.org  Specify in Pool Load Balancer Service S3 h1 h2 10.0.0.1 10.0.0.2 S1S1 h3 10.0.0.3 S2 OpenDayLight Controller ① Traffic to 10.0.0.2 ( Destination TCP port=5550 Source TCP port=36001 ) ② Forward to controller srcL4=36001 → 10.0.0.2 srcL4=36002 → 10.0.0.3 srcL4=36003 → 10.0.0.4 89

90 www.opendaylight.org  That is all for hands-on part one(OpenDaylight edition).  Were you able to understand the possibilities with Base edition of Hydrogen?  You now have a deeper understanding of OpenFlow as well.  You might think that Base Edition is not enough to perform advanced operations. In part 2, we will see more advanced features with VTN of existing project as an example. Summary 90

91 www.opendaylight.org End of part one ! 91

92 Break 92

93 Part 2: VTN 93

94 Introduction to VTN 94

95 www.opendaylight.org  Application for providing multi-tenant type virtual network on SDN controller VTN 95 “Virtual network” is A network where you can modify network configuration logically without modifying the configuration and settings of physical network device. “Virtual network” is A network where you can modify network configuration logically without modifying the configuration and settings of physical network device. “Multi-tenant” is ・ Create multiple virtual planes isolated from each other on physical network and expose each virtual plane as tenants to the user. ・ You can reduce CAPEX,OPEX compared to having physically independent network configuration in each tenant. “Multi-tenant” is ・ Create multiple virtual planes isolated from each other on physical network and expose each virtual plane as tenants to the user. ・ You can reduce CAPEX,OPEX compared to having physically independent network configuration in each tenant.

96 www.opendaylight.org  Realize virtual network by combining the components below VTN model 96 ComponentDescription Virtual node (vNode) vBridgeVirtual L2 switch vRouterVirtual L3 router vTepTEP(Tunnel End Point) vTunnelOverlay tunnel vBypassConnectivity between control network Virtual Interface interfaceEnd point of virtual node Virtual linkvLinkLink between virtual interface

97 www.opendaylight.org  Virtual network provisioning  Add, remove, modify VTN  Add, remove, modify VTN model  Flow control on virtual network  flow filter(pass, abandon, redirect, remarking)  QoS control on virtual network  policing (pass, abandon, penalty)  Virtual network monitoring  Stats info of traffic  Failure event VTN features 97

98 www.opendaylight.org VTN workflow 98 Basic workflow Virtual network provisioning Set flow filter on virtual network flow filter Set QoS on virtual network policing Y Y N N Virtual network provisioning VTN creation Create VTN Add vNode Addition of interface and vLin k Addition of interface and vLin k Physical resource mapping Y Y N N

99 www.opendaylight.org VTN workflow 99 flow filter Create flow list (set match condition) Create flow list (set match condition) Set flow filter to interface (set action) Set flow filter to interface (set action) QoS Create flow list (set match condition) Create flow list (set match condition) Create policing profile (set rate, action) Create policing profile (set rate, action) Set policing profile to interface Set policing profile to interface

100 www.opendaylight.org  You can create VTN spanning multiple data centers  You can create VTN spanning different type of SDN controllers Multi-controller orchestration 100 DC 1 DC 2 DC 3 Inter-DC network Controller 1 Controller 3 VTN vRouter vBridge vBypass Controller 2

101 www.opendaylight.org  Control packet flowing on virtual network by mapping the physical network resource Physical resource mapping 101 Mapping Mapping key Description PhysicalLogical Port mapping Switch ID, Port ID (VLAN ID option) vBridge interface Support for Untagged frame as well VLAN mapping VLAN ID (Switch ID option) vBridge MAC mapping MAC addressvBridge To be supported in Helium release

102 www.opendaylight.org  Filtering features for packets flowing on virtual network  You can specify match condition and action as filter  You can set filter on any vNode interface Flow filter 102

103 www.opendaylight.org  You can set the following fields as match condition  MAC address (source/destination)  Ether type  VLAN priority  IP address (source/destination)  DSCP  IP Protocol  TCP/UDP port number (source/destination)  ICMP type  ICMP code Flow filter match condition 103

104 www.opendaylight.org  You can set the following actions in Flow filter Flow Filter action 104 ActionDescription ACL PassPass the packets matching the conditions specified DropDrop the packets matching the conditions specified Redirection - WayPoint routing Redirect packet to specific virtual interface You can modify MAC address (source/destination) (assuming L3 firewall) RemarkingRemark VLAN priority, DSCP

105 www.opendaylight.org  VTN offers WebAPI (REST)  GET/PUT/POST/DELETE to virtual network resource  Supports XML, JSON format  Resources accessible via API  VTN  vBridge  vRouter  vTep  vTunnel  vBypass  vLink  interface APIs for VTN 105  Port mapping  VLAN mapping  Flow Filter  Controller  Physical Switch / Port / Link (Read only)  Alarm (Read only)

106 www.opendaylight.org VTN API use case 106 OpenStack Neutron Plug-in VTN Coordinator VTN Manager Application for appliance GUI System Center 3 rd party Orchestration

107 www.opendaylight.org  Consists of VTN Coordinator and VTN Manager VTN software configuration 107 VTN Coordinator ・ Offers VTN API ・ Build VTN model using OpenDaylight API ・ Control VTN spanning multiple SDN controllers ・ Offers VTN API ・ Build VTN model using OpenDaylight API ・ Control VTN spanning multiple SDN controllers ・ Offers virtual node feature ・ Does packet forwarding control as per VTN model ・ Offers virtual node feature ・ Does packet forwarding control as per VTN model VTN Manager VTN Coordinator: VTN Manager:

108 VTN Manager 108

109 www.opendaylight.org  VTN Manager is implemented as OSGi bundle and loaded on OpenDaylight Controller. Software configuration (1) 109

110 www.opendaylight.org  VTN Manager is implemented as AD-SAL Application.  MD-SAL is not supported.  Only OpenFlow switches are managed  At present, only OpenFlow 1.0 is supported. Software configuration (2) 110

111 www.opendaylight.org  Control OpenFlow switch via AD-SAL and internal information management component. Software configuration (3) 111

112 www.opendaylight.org  VTN (Virtual Tenant Network)  Virtual network environment  Network inside a different VTN are managed as independent networks.  vBridge (Virtual Bridge)  Virtual L2 switch inside VTN  Build virtual broadcast domain by mapping physical network to vBridge. How to realize multi tenant : Virtual network environment 112

113 www.opendaylight.org  Map the VLAN on physical port of specific switch to vBridge.  You cannot map physical ports to which other OpenFlow switches are connected. How to realize multi tenant : Port mapping 113

114 www.opendaylight.org  Map any VLAN to vBridge.  When physical switch is specified, only the VLAN on specified physical switch is mapped.  When a physical switch is not specified, the VLAN on all managed switches are mapped.  Physical port connected to OpenFlow switch is not in scope for VLAN mapping.  Port mapping settings are given priority.  VLAN on port mapped physical port is not in scope for VLAN mapping. How to realize multi tenant : VLAN mapping 114

115 www.opendaylight.org  A unique vBridge to map packets is determined by VLAN and the physical port of switch where input packets are detected.  You cannot map same VLAN on same physical port to multiple vBridge. How to realize multi tenant : mapping of input packets 115

116 www.opendaylight.org  The source host information of packet mapped to vBridge is recorded in a MAC address table inside vBridge.  Source MAC address  Physical port of switch that detects packet  VLAN ID  When performing unicast communication inside vBridge, search destination MAC address from MAC address table and determine the destination physical network.  Since you determine destination VLAN with only the MAC address, it is not possible to map the same MAC address belonging to different VLAN to a single vBridge. How to realize multi tenant : determining the output destination 116

117 www.opendaylight.org  The broadcast and multicast packets are forwarded to all physical networks that are mapped to vBridge with PACKET_OUT.  No forwarding to physical networks with PACKET_IN.  Flow entry is not set. Broadcast communication 117

118 www.opendaylight.org  Set flow entry if the destination MAC address of unicast packet is recorded inside vBridge.  If the address is not recorded, broadcast is done to all physical networks mapped to the vBridge.  The flow entry passing a path with minimum hop count is set. Unicast communication 118

119 www.opendaylight.org  All flow entries passing links that are down get deleted.  If the link state changes, the shortest path graph is updated. During failure : Link down( 1 ) 119

120 www.opendaylight.org  PACKET_IN happens when there is communication after removal of flow entry and a flow entry passing a substitute path gets set. During failure : Link down( 2 ) 120

121 www.opendaylight.org  All flow entries passing through switch that is down are deleted.  The shortest route graph is updated if switch information is deleted. During failure : Switch down( 1 ) 121

122 www.opendaylight.org  PACKET_IN happens when there is communication after removal of flow entry and a flow entry passing an alternate path gets set. During failure : Switch down( 2 ) 122

123 www.opendaylight.org  Automatically map OpenStack Neutron network with vBridge.  Shared networks are not supported.  Only VLAN mapping is supported in Hydrogen release.  Specify VLAN to map in Neutron network attribute. OpenStack ( Neutro n ) integration 123

124 VTN hands on (1) “Multi-tenancy” 124

125 www.opendaylight.org  Build two virtual networks on a single physical network.  Check that the virtual networks are mutually isolated  Communication is possible between the hosts contained in same virtual network  Communication is not possible between the hosts contained in different virtual networks Hands-on contents 125

126 www.opendaylight.org  Use “mininet”(emulator software of OpenFlow network) to build a physical network as shown below Physical Network 126 S5 S1S2 S6 S3S4 S7 h11h12h13h14 10.0.0.110.0.0.210.0.0.310.0.0.4

127 www.opendaylight.org  Build a virtual network like the one shown below on the physical network Virtual network to build 127 vBridge vtn1 vtn2 vtn1: Connect h11 and h14 with L2 switch vtn1: Connect h11 and h14 with L2 switch vtn2: Connect h12 and h13 with L2 switch vtn2: Connect h12 and h13 with L2 switch

128 Advance preparations 128

129 www.opendaylight.org  Keep three terminals open  Use the three terminals for VTN, for controller and for mininet  Follow the terminal specified when running command. If terminal is not specified, run on terminal for VTN Open terminal 129

130 www.opendaylight.org  Set alias for a compact command display Set alias 130 alias curl="curl -H 'content-type: application/json' -H 'username: admin' -H 'password: adminpass' -H 'ipaddr:127.0.0.1'"

131 www.opendaylight.org 1. Start OpenDaylight Hydrogen 2. Setup DB 3. Start VTN Coordinator Start controller, VTN 131 cd ~/controller-virt/opendaylight/./run.sh -virt vtn sudo /usr/local/vtn/sbin/db_setup sudo /usr/local/vtn/bin/vtn_start sudo /usr/share/java/apache-tomcat- 7.0.39/bin/catalina.sh start Controller: From Helium release onwards, you will be able to start Tomcat as well with vtn_start command

132 www.opendaylight.org  Get version information to confirm VTN startup  The result should be as below Check VTN startup 132 curl -X GET http://127.0.0.1:8081/vtn- webapi/api_version.json {"api_version":{"version":"V1.0"}} The port number used by VTN (Coordinator) of hands on version is 8081 but VTN of Hydrogen release uses 8080, and VTN from Hydrogen onwards uses 8083 The port number used by VTN (Coordinator) of hands on version is 8081 but VTN of Hydrogen release uses 8080, and VTN from Hydrogen onwards uses 8083 In Helium release,“V1.2” will be displayed for version

133 www.opendaylight.org  Start mininet. The scenario used is topo-tree- depth3.py Start-up physical network 133 sudo mn --custom ~/handson/topo-tree-depth3.py -- topo mytopo --controller=remote,ip=127.0.0.1 mininet:

134 Virtual Network Provisioning 134

135 www.opendaylight.org  Run VTN API and build virtual network  The concrete operation is as follows  Registration of controller  Register OpenDaylight Hydrogen(ODC) in VTN  Provisioning of virtual network(2 tenants)  Creation of VTN  Creation of vBridge  Creation of interface  port-mapping Virtual network provisioning 135

136 www.opendaylight.org  Register the controller started in “Start controller, VTN” Registration of controller 136 curl -X POST -d '{"controller": {"controller_id": "odc1", "ipaddr": "127.0.0.1", "type": "odc", "version": "1.0", "auditstatus": "enable"}}' http://127.0.0.1:8081/vtn- webapi/controllers.json

137 www.opendaylight.org  Check the controller registered  The result should be as follows Confirm controller registration 137 curl -X GET http://127.0.0.1:8081/vtn- webapi/controllers/detail.json {"controllers":[{"controller_id":"odc1","ipaddr":"127.0.0. 1","auditstatus":"enable","operstatus":"up","actual_vers ion":"1.0.0.0","version":"1.0"}]}

138 www.opendaylight.org  Create VTN  This is the image of virtual network at this point of time. We have created a box for us to work on Creation of VTN 138 curl -X POST -d '{"vtn": {"vtn_name": "vtn1"}}' http://127.0.0.1:8081/vtn-webapi/vtns.json vtn1

139 www.opendaylight.org  Next, create vBridge inside VTN  With this, we have placed a switch inside the box Creation of vBridge 139 curl -X POST -d '{"vbridge": {"vbr_name": "vbr1", "controller_id": "odc1", "domain_id": "(DEFAULT)"}}' http://127.0.0.1:8081/vtn- webapi/vtns/vtn1/vbridges.json vtn1 vBridge

140 www.opendaylight.org  Create two interface  With this, we have created two interfaces in L2 switch Creation of interface 140 curl -X POST -d '{"interface": {"if_name": "if1"}}' http://127.0.0.1:8081/vtn- webapi/vtns/vtn1/vbridges/vbr1/interfaces.json curl -X POST -d '{"interface": {"if_name": "if2"}}' http://127.0.0.1:8081/vtn- webapi/vtns/vtn1/vbridges/vbr1/interfaces.json vtn1 vBridge

141 www.opendaylight.org  To do port-mapping, it is necessary to know the port information of s1, s4 connected to h11, h14 Before port mapping 141 vBridge vtn1 Which port of s1 to map to? Which port of s4 to map to?

142 www.opendaylight.org  Get logical-port. logical-port refers to the port information etc. recognized by the controller  From the output result, get the logical-port of target switch, port based on the DPID, port name etc. In this example, get the following logical-port Get logical-port 142 curl -v -X GET http://127.0.0.1:8081/vtn- webapi/controllers/odc1/domains/\(DEFAULT\)/logical_p orts.json "PP-OF:00:00:00:00:00:00:00:01-s1-eth1" "PP-OF:00:00:00:00:00:00:00:04-s4-eth1"

143 www.opendaylight.org  Now, port map the logical-port to the interface created before port-mapping settings 143 curl -v -X PUT -d '{"portmap":{"logical_port_id": "PP- OF:00:00:00:00:00:00:00:01-s1-eth1"}}' http://127.0.0.1:8081/vtn- webapi/vtns/vtn1/vbridges/vbr1/interfaces/if1/portmap.json curl -v -X PUT -d '{"portmap":{"logical_port_id": "PP- OF:00:00:00:00:00:00:00:04-s4-eth1"}}' http://127.0.0.1:8081/vtn- webapi/vtns/vtn1/vbridges/vbr1/interfaces/if2/portmap.json

144 www.opendaylight.org  With this we have finished the settings for one tenant port-mapping settings 144 vBridge vtn1 PP-OF:00:00:00:00:00:00:00:01-s1-eth1 PP-OF:00:00:00:00:00:00:00:04-s4-eth1

145 www.opendaylight.org  Now, create another tenant the same way. Creation of second VTN 145 curl -v -X POST -d '{"vtn": {"vtn_name": "vtn2"}}' http://127.0.0.1:8081/vtn- webapi/vtns.json curl -v -X POST -d '{"vbridge": {"vbr_name": "vbr1", "controller_id": "odc1", "domain_id": "(DEFAULT)"}}' http://127.0.0.1:8081/vtn- webapi/vtns/vtn2/vbridges.json curl -v -X POST -d '{"interface": {"if_name": "if1"}}' http://127.0.0.1:8081/vtn- webapi/vtns/vtn2/vbridges/vbr1/interfaces.json curl -v -X POST -d '{"interface": {"if_name": "if2"}}' http://127.0.0.1:8081/vtn- webapi/vtns/vtn2/vbridges/vbr1/interfaces.json curl -v -X PUT -d '{"portmap":{"logical_port_id": "PP-OF:00:00:00:00:00:00:00:02-s2- eth1"}}' http://127.0.0.1:8081/vtn- webapi/vtns/vtn2/vbridges/vbr1/interfaces/if1/portmap.json curl -v -X PUT -d '{"portmap":{"logical_port_id": "PP-OF:00:00:00:00:00:00:00:03-s3- eth1"}}' http://127.0.0.1:8081/vtn- webapi/vtns/vtn2/vbridges/vbr1/interfaces/if2/portmap.json

146 www.opendaylight.org  Now, let us check for communication between hosts  Execute ping on mininet console  Ping will succeed between hosts contained in the same virtual network  Ping will fail between hosts contained in different virtual networks Check communication 146 mininet > h11 ping h14 mininet > h12 ping h13 mininet > h11 ping h12 mininet > h13 ping h14 mininet:

147 www.opendaylight.org  We built two virtual networks on a single physical network  We confirmed that the virtual network is logically separated  Communication is possible between hosts contained in same virtual network  Communication is not possible between hosts contained in different virtual networks Summary 147

148 www.opendaylight.org  Now, stop VTN  Stop the controller as well  Stop mininet too Cleanup 148 sudo /usr/share/java/apache-tomcat- 7.0.39/bin/catalina.sh stop sudo /usr/local/vtn/bin/vtn_stop mininet > exit mininet: From Helium release onwards, you can also terminate Tomcat with vtn_stop command

149 VTN hands on (2) Building virtual networks for VLAN 149

150 www.opendaylight.org  Build virtual network containing same VLAN communication  Experience amazing ease in configuring virtual networks for VLAN Hands on contents 150

151 www.opendaylight.org  This time, use mininet to build a physical network as shown below  This topology was also used in OpenDaylight hands-on Physical Network 151 h11 h13 10.0.0.1 10.0.0.3 h14 10.0.0.2 S1S2 S4S3 h12 10.0.0.4

152 www.opendaylight.org  Build a virtual network as shown below on the physical network Virtual network to build 152 vBridge vtn3 VLAN mapping (no VLAN tag)

153 www.opendaylight.org  Now, let us start the controller and VTN once again. The command is same as before. Start controller,VTN 153 cd ~/controller-virt/opendaylight/./run.sh -virt vtn sudo /usr/local/vtn/sbin/db_setup sudo /usr/local/vtn/bin/vtn_start sudo /usr/share/java/apache-tomcat- 7.0.39/bin/catalina.sh start Controller:

154 www.opendaylight.org  Now, start mininet. The script to use is topo- fullyMesh.py Physical network start-up 154 sudo mn --custom ~/handson/topo-fullyMesh.py --topo mytopo --controller=remote,ip=127.0.0.1 mininet:

155 www.opendaylight.org  Run VTN API and perform provisioning  Registration of controller  Register OpenDaylight Hydrogen(ODC) in VTN  VTN provisioning  Creation of VTN  Creation of vBridge  VLAN mapping Provisioning in VTN 155

156 www.opendaylight.org  The sequence is same as before till creation of vBridge  With this, we were able to complete till here Creation of controller ~ creation of vBridge 156 curl -v -X POST -d '{"controller": {"controller_id": "odc1", "ipaddr": "127.0.0.1", "type": "odc", "version": "1.0", "auditstatus": "enable"}}' http://127.0.0.1:8081/vtn-webapi/controllers.json curl -v -X POST -d '{"vtn": {"vtn_name": "vtn3"}}' http://127.0.0.1:8081/vtn-webapi/vtns.json curl -v -X POST -d '{"vbridge": {"vbr_name": "vbr1", "controller_id": "odc1", "domain_id": "(DEFAULT)"}}' http://127.0.0.1:8081/vtn- webapi/vtns/vtn3/vbridges.json vBridge vtn3

157 www.opendaylight.org  In VLAN mapping, you can specify the VLANID(or Untagged packet) handled by all switches and map it to vBridge  Consequently, interface creation is not required  Now, let us try and do VLAN mapping  We will map an Untagged packet here VLAN mapping 157 curl -v -X POST -d '{"vlanmap": {"no_vlan_id": "true"}}' http://127.0.0.1:8081/vtn- webapi/vtns/vtn3/vbridges/vbr1/vlanmaps.json

158 www.opendaylight.org  Such ease in packing virtual networks for VLAN! VLAN mapping 158 vBridge vtn3 VLAN mapping (Untagged packet)

159 www.opendaylight.org  Now, check the communication between hosts  Do ping on mininet console  Ping is successful between every host  Ping packet is an Untagged packet Check for communication 159 mininet > h11 ping h12 mininet > h11 ping h13... mininet > h13 ping h14 mininet:

160 www.opendaylight.org  We built a virtual network with same VLAN  You must have realized how easy it is to configure virtual networks for VLAN Summary 160

161 www.opendaylight.org  Now, stop VTN  Stop OpenDaylight Hydrogen as well  Stop mininet. Cleanup 161 sudo /usr/share/java/apache-tomcat- 7.0.39/bin/catalina.sh stop sudo /usr/local/vtn/bin/vtn_stop mininet > exit mininet:

162 Practice Problems 162

163 www.opendaylight.org  Assume a network inside a building  Companies A,B and C are on the first and second floor. VLAN ID is different for each company. Physical Network 163 S5 S1S2 S6 S3S4 S7 h11 10.0.0.1 h12 10.0.0.2 h13 10.0.0.3 h14 10.0.0.4 h15 10.0.0.5 h16 10.0.0.6 h17 10.0.0.7 h18 10.0.0.8 Network on 1F Network on 2F CompanyA (VID:100) CompanyB (VID:200) Company A (VID:100) Company C (VID:300)

164 www.opendaylight.org  Problem: Build VTN for company A, B and C Virtual network to build 164 vBridge vtn4 vtn5 vBridge vtn6 VLAN mapping VLAN ID:200 VLAN mapping VLAN ID:300 VLAN mapping VLAN ID:100

165 www.opendaylight.org  Now, start controller and VTN once again. The command is same as before. Start controller, VTN 165 cd ~/controller-virt/opendaylight/./run.sh -virt vtn sudo /usr/local/vtn/sbin/db_setup sudo /usr/local/vtn/bin/vtn_start sudo /usr/share/java/apache-tomcat- 7.0.39/bin/catalina.sh start Controller:

166 www.opendaylight.org  First, start mininet. The script to use is topo- tree-depth3-host8.py Physical network startup 166 sudo mn --custom ~/handson/topo-tree-depth3-host8.py -- topo mytopo --controller=remote,ip=127.0.0.1 mininet:

167 www.opendaylight.org  Startup xterm on host h11~h18 and set VLAN ID  Run the following commands on each xterm  Read host name whenever required  VLAN ID is allocated to each host by executing set_vlan.sh VLAN ID allocation to host 167 mininet > xterm h11 h12 h13 h14 h15 h16 h17 h18 root@mininet-vm:~\> ~/handson/set_vlan.sh h11 root@mininet-vm:~\> exit mininet: mininet(xterm):

168 Think ! 168

169 www.opendaylight.org  Were you able to? Check the answers 169 curl -v -X POST -d '{"controller": {"controller_id": "odc1", "ipaddr": "127.0.0.1", "type": "odc", "version": "1.0", "auditstatus":"enable"}}' http://127.0.0.1:8081/vtn-webapi/controllers.json curl -v -X POST -d '{"vtn": {"vtn_name": "vtn4"}}' http://127.0.0.1:8081/vtn-webapi/vtns.json curl -v -X POST -d '{"vtn": {"vtn_name": "vtn5"}}' http://127.0.0.1:8081/vtn-webapi/vtns.json curl -v -X POST -d '{"vtn": {"vtn_name": "vtn6"}}' http://127.0.0.1:8081/vtn-webapi/vtns.json curl -v -X POST -d '{"vbridge": {"vbr_name": "vbr1", "controller_id": "odc1", "domain_id": "(DEFAULT)"}}' http://127.0.0.1:8081/vtn-webapi/vtns/vtn4/vbridges.json curl -v -X POST -d '{"vbridge": {"vbr_name": "vbr1", "controller_id": "odc1", "domain_id": "(DEFAULT)"}}' http://127.0.0.1:8081/vtn-webapi/vtns/vtn5/vbridges.json curl -v -X POST -d '{"vbridge": {"vbr_name": "vbr1", "controller_id": "odc1", "domain_id": "(DEFAULT)"}}' http://127.0.0.1:8081/vtn-webapi/vtns/vtn6/vbridges.json curl -v -X POST -d '{"vlanmap": {"vlan_id": "100"}}' http://127.0.0.1:8081/vtn- webapi/vtns/vtn4/vbridges/vbr1/vlanmaps.json curl -v -X POST -d '{"vlanmap": {"vlan_id": "200"}}' http://127.0.0.1:8081/vtn- webapi/vtns/vtn5/vbridges/vbr1/vlanmaps.json curl -v -X POST -d '{"vlanmap": {"vlan_id": "300"}}' http://127.0.0.1:8081/vtn- webapi/vtns/vtn6/vbridges/vbr1/vlanmaps.json

170 www.opendaylight.org  You can check for successful build with mininet. Start- up xterm in h11  Ping should be successful from host h11 to h12, h15, h16  Also check that there is no ping from host h11 to h13, h14, h17, h18 Check connectivity 170 mininet > xterm h11 root@mininet-vm:~\> ping 10.0.0.2 root@mininet-vm:~\> ping 10.0.0.5 root@mininet-vm:~\> ping 10.0.0.6 mininet: mininet(xterm):

171 www.opendaylight.org  Increased understanding about VTN through introduction to VTN and hands-on  VTN is a vendor neutral virtual network technology adopted in Hydrogen release. It is an easy to use technology and anyone can participate in the development.  Detailed information regarding VTN can be found on the following page. For those who are interested, please refer this page! https://wiki.opendaylight.org/view/OpenDaylight_Virtual_Tenant_ Network_(VTN):Main Summary 171

172 Thank you for your time! 172


Download ppt "Www.opendaylight.org Okinawa open laboratory First hand on seminar OpenDaylight edition July 29, 2014 Satoshi Hieda Takahiro Oshima."

Similar presentations


Ads by Google