opendaylight LoadBalancing

Embed Size (px)

DESCRIPTION

This is our Project as a part of ME(Computer Networks) Program

Citation preview

  • Ryerson University | Load Balancing Using SDN with

    Open Daylight Controller4

    Table of Contents Table of Figures.............................................................................................................................................................5LIST OF TABLES.........................................................................................................................................................8LIST OF ABBREVIATION..........................................................................................................................................9ABSTRACT................................................................................................................................................................10CHAPTER I INTRODUCTION...............................................................................................................................11

    1.1 OpenDaylightController(SDN..................................................................................................................111.2 HowDoesSDNorSoftwareDefinedNetworkingWork?...........................................................................121.3 AdvantagesofSDN.....................................................................................................................................131.4 GeneralSDNFramework............................................................................................................................141.5 SDN&OpenFlow.......................................................................................................................................151.6 LayersinSDNwithOpenDaylight(CurrentStableRelease.).....................................................................161.7 MininetNetworktopologyemulator.......................................................................................................161.8 Iperf............................................................................................................................................................171.9 OpenvSwitchwithOpenFlow.....................................................................................................................171.10 ServerLoadBalancing................................................................................................................................19

    CHAPTER II TECHNICAL BACKGROUND........................................................................................................202.1 Objective&ProjectScope..........................................................................................................................202.2 Setup..........................................................................................................................................................21

    CHAPTER III DESIGN AND IMPLEMENTATION.............................................................................................233.1 Topology:....................................................................................................................................................233.2 Implementation:........................................................................................................................................243.3 HowtorunourProject:............................................................................................................................253.4 ObservationandResults:...........................................................................................................................30

    3.4.1 Network Load balancing...................................................................................................................30Conclusion (Network Load balancing without STP enabled).............................................................................41Conclusion (Network Load balancing with STP )..............................................................................................443.4.2 Server Load Balancing Round Robin Demonstration.......................................................................443.6.3 Server Load Balancing Random Demonstration...............................................................................49Conclusion (Sever Load Balancing Round Robin/Random)..............................................................................55

    Appendix.....................................................................................................................................................................56References:..................................................................................................................................................................66

  • Ryerson University | Load Balancing Using SDN with

    Open Daylight Controller5

    Table of Figures

    Figure 1.1 SDN & Open Flow

    Figure 1.2 Open Flow versions & their Release dates

    Figure 1.3 High Level Plane distribution of SDN

    Figure 1.4 SDN Frame Work

    Figure 1.5 Opendaylight SDN Framework

    Figure 1.6 SDN Open flow Integration

    Figure1.7 Opendaylight Lithium layer Diagram

    Figure1.8 Mininet high level layer Diagram

    Figure1.9 Open flow Match Action

    Figure 1.10 Flow table Components

    Figure 2.1 Our Project Problem Description

    Figure 3.1 Given Topology with Port Assignement

    Figure 3.2 Port assignement in Python Script

    Figure 3.3 Running Controller

    Figure 3.4 Running Mininet Topology

    Figure 3.5 Wireshark Filter

    Figure 3.6 Ping Result

    Figure 3.7 ODL portal Topology display

    Figure 3.8 Shell script to create Server load Balancing Topologies

    Figure 3.9 Running Round Robin Topology

    Figure 3.10 Running Random Topology

    Figure 3.11 Controller message when connecting to Mininet

    Figure 3.12 Portal display of OSGI bundles

    Figure 3.13 OSGI switch bundles

    Figure 3.14 OSGI load Balancer Bundles

    Figure 3.15 OSGI Host tracker bundle

    Figure 3.16 OSGI Open flow bundle

    Figure 3.17 OSGI Topology Manager

  • Ryerson University | Load Balancing Using SDN with

    Open Daylight Controller6

    Figure 3.18 Wireshark arp message display, OFPT_PACKET_IN

    Figure 3.19 TCP Packet for ARP

    Figure 3.20 ARP PACKET_IN and PACKET_OUT

    Figure 3.21 IP Packet and Open flow Packet information

    Figure 3.22 Controller instruction OFPT_FLOW_MOD

    Figure 3.23 Open flow Packet Details, FLOW_MOD

    Figure 3.24 Ports and links

    Figure 3.25 Open flow switch port dumps

    Figure 3.26 Ping between hosts in mininet

    Figure 3.27 Port dump after ping

    Figure 3.28 ODL Portal packet stats after ping port between switch 2 and switch 7

    Figure 3.29 ODL Portal packet stats after ping port between switch 1 and switch 7

    Figure 3.30 ODL Portal packet stats after ping ports between switch 2and switch 6

    Figure 3.31 ODL Portal packet stats after ping ports between switch 5 and switch 2

    Figure 3.32 ODL Portal packet stats after ping ports between switch 4 and switch 1

    Figure 3.33 Enabling STP in ovsdb switches

    Figure 3.34 STP convergence switch1 as Root

    Figure 3.35 ODL Portal View when Switch1 is root

    Figure 3.36 STP convergence switch2 as Root

    Figure 3.37 H9 as client 32 iperf flow with only two servers listenin

    Figure 3.38 H1 response, two host up and rest down

    Figure 3.39 H3 response, two host up and rest down

    Figure 3.40 Client H9 32 flows 20MB window and 1 sec delay all hosts up round Robin

    Figure 3.41 Server H1 response ,all hosts up round Robin

    Figure 3.42 Server H3 response ,all hosts up round Robin

    Figure 3.43 Random topology creation

    Figure 3.44 Random topology H9 Client 32 flows two servers up

    Figure 3.45 Random topology H9 Client Server H1 response

    Figure 3.46 Random topology H9 Client ,Server H1 response

    Figure 3.47 Random topology H9 Client Server H3 response all servers up

  • Ryerson University | Load Balancing Using SDN with

    Open Daylight Controller7

    Figure 3.48 Random topology H9 Client Server H3 response all servers up

    Figure 3.49 Random topology H9 Client Server H1 response all servers up

  • Ryerson University | Load Balancing Using SDN with

    Open Daylight Controller8

    LIST OF TABLES

    Table Contents

    Table 3.1 Host IP Assignment

    Table 3.2 Bundle and respective function description

    Table 3.3 Filter details wireshark

  • Ryerson University | Load Balancing Using SDN with

    Open Daylight Controller9

    LIST OF ABBREVIATION

    IP Internet Protocol LAN Local Area Network SDN Software Defined Networking ODL Open Day Light OVS Open Virtual Switch VIP Virtual IP ARP Address Resolution Protocol JDK Java Development Kit JRE Java Runtime Environment OSGI Open Service Gateway Initiative SAL Service Abstraction Layer

  • Ryerson University | Load Balancing Using SDN with

    Open Daylight Controller10

    ABSTRACT

    Our Project is to implement and study server load balancing in the Software Defined Networking (SDN) environment using Round Robin and Random Policy. The load balancing Policies are run at the SDN Controller. Load balancing is very important concept in Data centers where high availability as well as performance is required.

    In this Project we used open source Opendaylight Controller which provides the North Bound interface to

    implement the load balancing Policies and also provides the south bound interface to communicate with OpenFlow switches. The entire data center is emulated in the Mininet platform.

    During our work on this project we learned about Software defined networking, how it is different from

    traditional Networking, we got a greater insight about ODL, Mininet, and OpenFlow vSwitch.

  • The main iSDN controthe networcontroller a1.1 Open

    Open Dbuilt fabstracsouthbSDN huses thopen sComm(ReprecontroswitchThe soFlow (SAL)determcontro

    dea of SDN is oller. Only the rking devices tare made progra Daylight ConDaylight (ODLfor SDN deployction platform bound protocolshas becoming pohis protocol. Alsource project

    munity Project esentational Staller provides f

    hing, security etcouthbound inter1.0, Open Flow. The SAL is

    mine the best wller and the netw

    Fo

    CH

    to decouple thedata plane fun

    through the souammable througntroller (SDN

    L) is a highly avyments on modthat allows u

    s. opular with the lso Open Dayliwhich is writtunder (Open S

    ate Transfer - a framework for c. face provides su

    w 1.3, BGP-LSa service whic

    way to achieve work devices.

    Following figure

    Source (htt

    R

    HAPTER I

    e control plane nctions left in thuth bound progh the north bouN) vailable, moduladern heterogensers to write a

    Open Flow Proight can use othten in Java, it Services Gatewweb based) APpluggable mo

    upport for diffeS, etc. These mch links these s

    service reques

    e illustrates the

    Figure 1tp://www.slides

    Ryerson Univer

    INTROD

    from the data phe networking dtocol, such as

    und API.

    ar, extensible, sneous multi-venapps that easil

    otocol widely acher southbound

    uses maven fway initiative) PI and implemeodules to perfo

    erent protocols (modules can besouth bound dested and take c

    Openflow as th

    .1(Openflow as share.net/Vijaya

    rsity | Load BalO

    DUCTION

    plane and movedevices. The coOpenFlow. N

    scalable and mundor networks. ly work across

    ccepted as indud protocol, not jfor Package D

    for the north ents open flow orm network t

    (via separate pe linked in realevices to northcare of the und

    he component of

    Part of SDN) aguruJayaram/c

    lancing Using SOpen Daylight C

    e the control plontroller comm

    Network applica

    ulti-protocol coIt provides a

    s a wide varie

    ustry Standard. Ojust open flow.eployment. Opbound interfabased policies

    tasks. These ta

    plugins); some ol time to Servi

    h bound applicaderlying protoc

    f SDN Platform

    cisco-openflow)

    SDN with Controller

    11

    lane to the centrmunicates and coations running

    ontroller infrastrmodel-driven sety of hardwar

    Open daylight P. Open Daylighpen Daylight isace it exposes

    for Southbounasks include ro

    of examples arece Abstraction ations. The SAcol used betwe

    m:-

    )

    ralized ontrols at the

    ructure service re and

    Project ht is an s open REST

    nd. The outing,

    e Open Layer

    AL will een the

  • Followflow sprotoc

    1.2 How DTrde SanAanNco

    wing is the Roadwitches for ourol.

    Does SDN or raditionally, moecouples contro

    SDN Controllernd enables Adm

    APIs to send insnd is used as s

    Northbound APIontrol and polic

    dmap of the Opr Project Imple

    F

    Software Deost network deol plane from d

    r works as the imin to program

    truction to the southbound pros at the SDN co

    ces.

    R

    pen flow Protocementation. As

    Figure 1.2(Versi

    fined Networevices have condata plane. The

    intelligent part the underlying switches and ro

    otocol to send ontroller to com

    Ryerson Univer

    col implementaof our Project

    ions of OpenFlow

    rking Work?ntrol plane andcontrol plane is

    of the networkNetwork (switcouters. OpenFloinstructions to

    mmunicate with

    rsity | Load BalO

    ation. We are usOF1.4 specific

    w with Release

    d data plane in s moved to a ce

    k, it offers centrches and routerow is the first s

    o underlay netwexternal world

    lancing Using SOpen Daylight C

    sing mininet emcation is the c

    Date)

    the same netwentralized contro

    ral control of ths).The controllestandard adoptework. The netwd to implement t

    SDN with Controller

    12

    mulator to creatcurrent release

    working deviceoller.

    he complete neer utilizes southed by SDN prowork applicatiothe desirable Ne

    te open of this

    e. SDN

    etwork, hbound viders,

    ons use etwork

  • 1.3 Adva

    ntages of SDNApplication DForwarding fuDynamic Codemand. Centralized Mthe network a

    Diagram below

    N Driven: one canfunctions. ontrol: Separatin

    Management: Nand for applicat

    R

    w shows high le

    Figure

    n directly progra

    ng control from

    Network control ions and instruc

    Ryerson Univer

    vel plane distri

    1.3(Simplified S

    am Network as

    m forwarding

    is centralizedctions provides

    Applica

    ControContr

    Switc

    SouthInterface

    rsity | Load BalO

    ibution of the SD

    SDN Plane)

    control is separ

    allows users t

    d in SDN controa single logical

    ations

    lPlane roller

    ches

    NorthInterface South

    Interface

    lancing Using SOpen Daylight C

    DN based netwo

    rated from

    to adjust netwo

    oller which mainl switch.

    SDN with Controller

    13

    orks.

    ork- traffic flo

    ntains overall v

    ows on

    view of

  • InSiWsiprInbechau

    1.4 Gener

    H

    Inw

    Based on opedesign and op

    n theory SDN shince control is m

    When packet is lngle packet losroduction netwon SDN Control meen achieved vhannels betweeuxiliary connect

    ral SDN FramHere is the Gene

    Sn the above diag

    was that SDN OS

    en Standard anperation and elim

    hould be Ideamoved to Centrlost between thess may be toleraork deploymentmessages could

    via some sort oen one controlltion will be use

    DeSo

    mework ral conceptual v

    ource (http://biggram two versiS and controller

    R

    nd vendor indminates Vendor

    al solution to toralized Controlle Controller andated to some ext. d get lost and coof parallelism bler and switch

    ed for data messetailed explanatource (https://bo

    view of SDN Fr

    Figurgswitch.com/sitions of SDN frar have been bun

    Ryerson Univer

    dependent: As Sr dependency.

    days data netwer, controller shd switches, it wxtent as these n

    ould lead to delaby using multi

    h. Primary connsages or for UDtion for SDN plooks.google.ca/

    rame Work

    re 1.4(SDN Framtes/default/filesamework has bndled together in

    rsity | Load BalO

    SDN follows o

    working problemhould be capabl

    will have larger networks have a

    ay in transmissiiple controllers

    nnections will bDP messages.

    lanes can be fou/sdn/ paul_goran

    me Work) s/_/213479.1_sdbeen depicted, tn 2.0 framewor

    lancing Using SOpen Daylight C

    open Standard,

    ms, but it has itle of handling limpact, where

    always backup

    ion or data losss with the switbe used for C

    und at : nsoon/)

    dn-blog-graphicthe basic differerk.

    SDN with Controller

    14

    it simplifies ne

    ts own disadvanlot of processinas in legacy nepaths available

    . Solution to thitch or using m

    Control message

    c.jpeg) ence between th

    etwork

    ntages. g load.

    etwork, e in the

    is have multiple

    es and

    he two

  • de

    1.5 SDN &

    Source (http:In the diagrameal with physica

    & Open Flow

    ://www-935.ibmm . 1.5 ODL fram

    al and virtual swhas s

    w

    R

    Figure 1.5(Om.com/services/mework has beewitches whereassome extension

    Ryerson Univer

    Open Daylight S/image/systems

    en shown, this ds northbound in

    ns which perform

    rsity | Load BalO

    SDN Frameworks_networking_sdiagram clearly

    nterface deal wim all network f

    lancing Using SOpen Daylight C

    k) olutions_od_di

    y depicts that soith client and apfunctions.

    SDN with Controller

    15

    agram3_rev6.jpouthbound interpplications. Con

    pg) rfaces ntroller

  • 1.6 Layer

    S1.7 Minin

    MusmcoToThN

    rs in SDN wit

    ource(https://wnet - Network

    Mininet is the nesing single Lin

    mininet run opeontroller). It proopologies. he following d

    Network topolog

    Source (http

    th Open Dayl

    ww.opendayligk topology emetwork emulato

    nux kernel. It aen flow and conovides rich API

    diagram shows gy quickly inste

    R

    Figure1.6ps://www.clear.

    light (Curren

    Figure1.7(Opeght.org/sites/ww

    mulator or which providacts as a real Nnnects to remotI interface whic

    how an emulaad of using exp

    Ryerson Univer

    6(SDN Openflowrice.edu/comp5

    t Stable Relea

    n daylight Lithiww.opendayligh

    am_lrgr.jpg

    des user a tool Network once ete SDN controllch provides Ne

    ated mininet nepensive hardwar

    rsity | Load BalO

    w Integration)529/www/paper

    ase.)

    ium layer Diagrht.org/files/pageg)

    to emulate Netemulated topoller(in our case

    etwork engineer

    etwork simulatire testbed.

    lancing Using SOpen Daylight C

    rs/tutorial_4.pd

    ram) es/images/opend

    tworks, it runs logy is createdwe have used O

    rs way to emul

    ion helps Netw

    SDN with Controller

    16

    df)

    daylight_lithium

    emulated Topo. Switches creaOpendaylight aate different Ne

    work engineers

    mdiagr

    ologies ated in

    as SDN etwork

    to test

  • Thus

    1.8 Iperf

    IpM

    It Ip

    Ei It

    1.9 Open

    OOOAfowimThw

    he simulated Nsing mininet or

    perf is a w used Measure the thro

    can measure thperf has a client ither unidirectiois open source

    vSwitch withOpenvswitch is Openvswitch hasOne of them is suA switch functioorwarding/flow

    which allows tamplement these his setup is dif

    which requires nSource (h

    Source

    Networks can bevise versa.

    network testingughput of a net

    he bandwidth anand server func

    onal or bidirectisoftware and ru

    h OpenFlow an alternate o

    s made enhanceupport of Openon can be broke

    table, and dataaking the contRules.

    fferent from theetwork Adminittp://en.community

    R

    Figure1.8( M(http://netsemi

    e tested on the r

    g tool that can ctwork that is carnd the quality ofctionality, and cional. uns on various p

    f Linux bridgeement as compnFlow protocol.en into: Controla plane will follrol plane func

    e proprietary Vstrators to imply.dell.com/techcen

    Ryerson Univer

    Mininet high levnar.stanford.ed

    real hardware te

    create TCP and rrying them. f a network linkcan measure the

    platforms includ

    e module and ipared to other B l plane, data plalow these rulesctionality to ce

    Vendor setup inlement changes nter/networking/w

    rsity | Load BalO

    vel layer Diagramdu/seminars/11_

    est bed once the

    UDP data strea

    k. e throughput be

    ding Linux, UN

    it has been avBridges. The de

    ane. The contros for the incomientral controlle

    n which these ru at each node s

    w/wiki/3820.openv

    lancing Using SOpen Daylight C

    m) _14_13.pdf )

    e Network topo

    ams and

    etween the two e

    NIX and Windo

    vailable since letail is availabl

    ol plane is the ping packets. Oper and allows

    ules are implemseparately. vswitch-openflow-

    SDN with Controller

    17

    ologies are fully

    ends,

    ws.

    inux kernel 2.4e at openvswitc

    plane which crepenFlow is a prcentral contro

    mented at each

    lets-get-started)

    y tested

    4. The ch.org.

    eates a rotocol

    oller to

    h node,

  • O

    OpenFlow Switc Po Flo Flo Ma Mo

    ch comprises of orts ow tables ows atch Classifiers odifiers and Ac

    R

    f switch data Pla

    tions

    Ryerson Univer

    ane, which inclu

    Figure1.9(Ope

    rsity | Load BalO

    udes:

    en flow Match A

    lancing Using SOpen Daylight C

    Action)

    SDN with Controller

    18

  • Ryerson University | Load Balancing Using SDN with

    Open Daylight Controller19

    Figure 1.10(Flow table Components)

    Above Diagrams shows how OpenvSwitch works and how match action counter is performed, and once match found it finally forward the packet to desired port otherwise packet is dropped.

    1.10 Server Load Balancing

    The main idea of using load balancing is to implement the following three things:- Scalability: Load can be distributed to different servers Manageability: Application can be transferred from one server to another within same

    cluster (server group). Availability: To reduce downtime in Production Systems. In our case load balancer service is running on controller which acts as a reverse proxy to distributes network traffic across a number of servers based on predefined polices: Round Robin or Random. Load Balancing in servers can be implemented by two methods:- Stateless: The controller does not keep track of state of servers and will send the information based on policy to server even the particular server is down. State-full: The controller keeps track of state of servers and monitors the state of the related servers.

  • 2.1 OSe

    S1-S7 are Obetween s1bandwidth The Open looking forThe first floThe secondThe third flThe fourth The fifth flo

    Objectivetup the follow

    OpenVswitches/s2 and s3/s4/s5of 400Mbps. daylight shoulr is this: ow between H9d flow between low between H9flow between How between H9

    CHAPTE

    ve & Prowing topology in

    (OVSs), H1 to5/s6 should hav

    ld have a built-

    9 and a virtual seH9 and a virtua9and a virtual seH9 and a virtual9 and a virtual s

    R

    ER II TEC

    oject Scon the Mininet:

    Figure2.1

    o H8 are serversve a bandwidth o

    -in network loa

    erver will use thal server uses S7erver uses S7-Sl server uses S7erver uses S7-S

    Ryerson Univer

    CHNICAL B

    ope

    1 (Our Project P

    s. H9 is the hostof 100Mbps eac

    ad balancer. T

    he path S7-S1-S7-S2-S4-H2;

    S1-S5-H3; 7-S2-S6-H4; S2-S3-H5;

    rsity | Load BalO

    BACKGRO

    Problem Descrip

    t that generates ch; the links bet

    est if it is the c

    S3-H1;

    lancing Using SOpen Daylight C

    OUND

    ption)

    traffic to the setween s7 and s1

    case. The patte

    SDN with Controller

    20

    ervers. The link1/s2 have the

    rn that you are

    s

    e

  • Ryerson University | Load Balancing Using SDN with

    Open Daylight Controller21

    The sixth flow between H9and a virtual server uses S7-S1-S4-H6; And so on Study if this is the case. If not, record the paths taken. Use iperf traffic generator to generate TCP traffic and measure the delay and throughput. Generate 32 flows with data rate of 20Mbps each. Compare the results with only two servers (says H1 and H2). The idea here is to show that by using more servers, we can use more available network bandwidth, thus reduce the delay and increase the throughput. Compare the delay and throughput between the round-robin and random policies. To accomplish our desired project, we use the following devices and tools:

    2.2 Setup 1. Two Virtual Machines each one with Ubuntu 14.04 32 bit 2. Oracle VirtualBox 3. GIT 4. Apache Maven 5. MobaXterm 6. VBox Guest Addition for Linux 7. WireShark 8. Mininet 9. ODL Controller Code

    2.2.1: Two Virtual Machines each one with Ubuntu 14.04 32 bit: We need to download Ubuntu with version 14.04 version 32bit and configure it as virtual Machine. We need two machines for our project, one will be used as controller and other will be used for Mininet.

    2.2.2: Oracle VirtualBox We have installed our Virtual machines using Oracle Virtual Box. 2.2.3: GIT GIT is open source version control tool; we have used git to get the current version from ODL repository. 2.2.4: Apache Maven.

    Apache Maven is the tool used to build Java projects; we have used Apache Maven to build ODL OSGI bundles after downloading them, details are in the installation appendix.

    2.2.5: MobaXterm We have used this tool as our ssh client .

    2.2.6: VBox Guest Addition: This is an ISO which is helpful to maximize the size of Linux OS while working in Windows 2.2.7: WireShark:

  • Ryerson University | Load Balancing Using SDN with

    Open Daylight Controller22

    We have used wireshark to analyze open flow packets. This can be configured on Linux and windows both. We have installed version which includes openflow plugin. 2.2.8: MiniNet: This tool is used to emulate the network. 2.2.9: ODL : We downloaded opendaylight(ODL) OSGI bundles using Git and compiled them locally using Maven.

  • 3.1 T

    The topoloOur Initial balancing aS1-S7 are Obetween s1bandwidth

    C

    Topology

    gy given to us Study scope

    as well and studOpenVswitches1/s2 and s3/s4/of 400Mbps. C

    CHAPTER I

    y:

    was with 4 serwas to impleme

    dy which ODL bs (OVSs), H1 t/s5/s6 should hontroller has Ro

    R

    III DESIG

    Figure3.1

    rvers but later ient Server load bundle will be uto H8 are servehave a bandwidound Robin and

    Node IP AH1 10.0H2 10.0H3 10.0H4 10.0H5 10.0H6 10.0H7 10.0H8 10.0H9 10.0

    Ryerson Univer

    GN AND IM

    1(Given Topolo

    it was modifiedbalancing only

    used for networkers. H9 is the hdth of 100Mbpd Random Polic

    Address Designa0.0.1 Serv0.0.2 0.0.3 0.0.4 0.0.5 0.0.6 0.0.7 0.0.8 0.0.9 Client

    rsity | Load BalO

    MPLEMENT

    ogy with Port A

    d to above topoy but later we wrk load balancinhost that generaps each; the lincies running in

    ation vers

    lancing Using SOpen Daylight C

    TATION

    Assignment)

    ology with morewere advised to ong. ates traffic to tnks between s7it.

    SDN with Controller

    23

    e scope of workobserve Networ

    the servers. The7 and s1/s2 ha

    k to it. rk load

    e links ave the

  • Ryerson University | Load Balancing Using SDN with

    Open Daylight Controller24

    3.2 Implementation: Software tools requirements to install Opendaylight and Mininet. Opendaylight can be installed in more than one way depending on the intention of the future use; also it can be installed on Linux, UNIX and Windows machine. Opendaylight has 03 major releases for now, Hydrogen, Helium and Lithium, we have used current Stable release which is Helium. Also we need to have Java JDK, git and Maven installed on the box before one begins installation of the ODL. Here are the 03 methods one can use to install ODL: 1. Using Karaf 2. Pulling the code from CLI and build locally using Maven. (We have used this method for our Project) 3. Import Code into Eclipse and re-compiling using Maven. 1) Installation Using Karaf This is the easiest way one can install ODL, one needs to be familiar with Karaf commands, this link provides nice introduction to karaf. http://www.liquid-reality.de/display/liquid/2011/02/15/Karaf+Tutorial+Part+1+-+Installation+and+First+application To install ODL on Ubuntu, Opendaylight wiki provides step by step procedure. https://wiki.opendaylight.org/view/Install_On_Ubuntu_14.04 2) Pulling the code from CLI and build locally using Maven. We have followed this procedure in our installation; following are the steps we have followed in our ODL setup. This is specific to Ubuntu. The detailed Procedure is in the Appendix. 3) Eclipse Installation and build the code in Eclipse using Maven. This method is used if one is developer and wants to see the code of all the packages or needs to write new custom application this method should be used; we have imported code in the Eclipse, but havent used it for the Project. Following references can be used to use Eclipse:- https://wiki.opendaylight.org/view/Getting_Started:Eclipse:Installing_Eclipse_on_Ubuntu https://wiki.opendaylight.org/view/GettingStarted:_Eclipse http://networkstatic.net/importing-opendaylight-into-eclipse/ 3.4 Load Balancing Methods Used and VIP VIP (Virtual IP), in server load balancing: VIP acts as the proxy between the external world and the server group. We have demonstrated opendaylight controller load Balancer bundle (org.opendaylight.controller.samples.loadbalancer.internal) two features round robin and random policies. RoundRobin policy: This policy will send traffic to group of servers in orderly manner one after the other Random policy: This policy will select servers randomly based on random algorithm

  • 3.3 HWe have iminstalled, wVMs to coWe have crscripts whic

    As the snanumbers whOn the ODLto Both VM

    How to mplemented ou

    whereas on the sommunicate. reated Python sch helped us in

    apshot shows when the link is bL box we have

    Ms via their Hos

    run our ur project usingsecond box we

    script on the miidentifying por

    we have used thbetween switch wrapper shell s

    st only IPs:

    R

    Project:g two virtual m

    have installed t

    ininet box to rurt numbers when

    Figure 3.

    hree digit portand host.

    scripts which w

    Ryerson Univer

    : machines each h

    the opendayligh

    un the mininet tn running the te

    2 (Port assignm

    numbers when

    will create the lo

    rsity | Load BalO

    having Ubuntu ht controller. W

    topology; We ests.

    ment in Python S

    n the link is be

    ad Balancer To

    lancing Using SOpen Daylight C

    Linux, One haWe are using ho

    have port assig

    Script)

    etween switche

    opologies. Open

    SDN with Controller

    25

    as mininet, Wirost only IP of th

    gnment in our P

    es and two dig

    n Secure CRT to

    reshark he both

    Python

    git port

    o login

  • ODL VM wcontroller tOnce the coon the mini

    we have createdo be up and runontroller is runninet.

    d alias $ctl in thnning fully. Thening we will st

    R

    Figure 3.

    he user .bashrc en you will notictart our Python

    Figure 3.

    Ryerson Univer

    3( Running Con

    file which startce a prompt as Oscript for our t

    4(Running Min

    rsity | Load BalO

    ntroller)

    ts the controllerOSGI> which itopology in the

    ninet topology )

    lancing Using SOpen Daylight C

    r. It takes from is prompt of conMininet VM, a

    )

    SDN with Controller

    26

    3 to 5 minutes ntroller. and run the wir

    for the

    reshark

  • We have amessages. Once we pi

    applied filter on

    ing between the

    n the particular

    e hosts the topol

    R

    Figure 3.

    r port, between

    logy will be upd

    Figure 3.

    Ryerson Univer

    5( Wireshark F

    n mininet and

    dated in the in t

    6(Ping Result)

    rsity | Load BalO

    Filter)

    ODL VM, and

    the ODL portal

    lancing Using SOpen Daylight C

    d it only filter

    .

    SDN with Controller

    27

    s openflow and

    d TCP

  • Then we haRobin and R

    Above snapWe will run

    ave to open anoRandom Policy

    pshot shows then Round robin P

    other instance oy.

    e related scripts Policy as follow

    R

    Figure3.7

    of Secure CRT

    Figure 3.

    on the ODL VMws:-

    Ryerson Univer

    7(ODL portal T

    and connect it t

    8(Shell script to

    M:

    rsity | Load BalO

    Topology displa

    to controller in

    o create Server

    lancing Using SOpen Daylight C

    ay)

    order to run ot

    load Balancing

    SDN with Controller

    28

    ther scripts for

    g Topologies)

    Round

  • We have crcan run Ran

    The messag

    reated round rondom Topology

    ge below shows

    obin pool with 8y by following s

    s OSGI info me

    R

    Figure 3.

    8 hosts and addscript.

    Figure 3.

    essage when min

    Ryerson Univer

    9(Running Rou

    ded them in the

    10(Running Ra

    ninet connects t

    rsity | Load BalO

    und Robin Topo

    e Pool, and assi

    andom Topolog

    to controller.

    lancing Using SOpen Daylight C

    ology)

    igned VIP to th

    gy)

    SDN with Controller

    29

    hat Pool. Similaarly we

  • The above

    3.4 O3.4.1 N First step foFor this we Here is the

    snapshot shows

    ObservaNetwork Loador us was to stue identified the O

    snap shot of th

    s OSGI bundle

    ation andd balancing

    udy the Open daOSGI bundles we bundles (Swit

    R

    Figure 3.

    Figure 3.

    information in O

    d Result

    aylight should hwhich will be ustch bundles)

    Ryerson Univer

    11( Controller m

    12(Portal displa

    ODL Portal.

    ts:

    have a built-in nsed during this

    rsity | Load BalO

    message when

    ay of OSGI bun

    network load bastudy,

    lancing Using SOpen Daylight C

    connecting to M

    ndles)

    alancer,

    SDN with Controller

    30

    Mininet)

  • Load Balan

    Host Track

    Openflow

    Topology M

    We have instudy.

    Package/O

    org.opendayligh

    ncer Bundles

    ker bundle

    bundle

    Manager bundle

    ncluded the OS

    SGiBundleht.controller.arphand

    e

    SGI bundle and

    dler.internal

    R

    Figure 3.

    Figure 3.

    Figure 3.

    Figure 3.

    Figure 3.

    the functions d

    Exporte

    Ryerson Univer

    13 ( OSGI swit

    14(OSGI load B

    15(OSGI Host

    16(OSGI openf

    17(OSGI Topo

    description from

    edInterfaces

    IHostFinder

    rsity | Load BalO

    tch bundles)

    Balancer Bundl

    tracker bundle)

    flow bundle)

    ology Manager b

    m the ODL wik

    lancing Using SOpen Daylight C

    les)

    )

    bundle)

    ki which are be

    Descriptio

    Component rehost location.

    SDN with Controller

    31

    eing used in ou

    onesponsible for learnin. It achieves the goal

    ur Case

    ng about by

  • Ryerson University | Load Balancing Using SDN with

    Open Daylight Controller32

    IListenDataPacket looking at the ARP conversation between an host and the controller. This is an application that show case a possible host tracking mechanism, especially useful in the cases like OpenFlow where the controller can see all the packets if instructed to.

    org.opendaylight.controller.forwarding.staticrouting.internal IForwardingStaticRouting ICacheUpdateAware IfNewHostNotify IConfigurationContainerAware

    Provide the necessary hooks to inject in the area controlled by the controller, routes to reach traditional IP networks.

    org.opendaylight.controller.forwardingrulesmanager.internal IContainerListener ISwitchManagerAware IForwardingRulesManager IInventoryListener ICacheUpdateAware IConfigurationContainerAware IFlowProgrammerListener

    Manager of all the Forwarding Rules, this component take case of forwarding rules and is the one that manage conflicts between them.

    org.opendaylight.controller.hosttracker.internal ISwitchManagerAware IInventoryListener IfIptoHost IfHostListener ITopologyManagerAware

    Track the location of the host relatively to the SDN network.

    org.opendaylight.controller.protocol_plugin.openflow.internal IContainerListener IController IDataPacketListen IDataPacketMux IDiscoveryService IFlowProgrammerNotifier IInventoryShimExternalListener IMessageListener

    Protocol plugin for OpenFlow 1.0. Include the openflow J library as well the necessary glue logic to adapt to SAL layer along with a discovery mechanism for learning the graph of the OpenFlow network portion.

  • org.opendayligh

    org.opendayligh

    org.opendayligh

    org.opendayligh

    org.opendayligh

    Table3.2( BMininet sen

    ht.controller.samples

    ht.controller.samples

    ht.controller.statistic

    ht.controller.switchm

    ht.controller.topolog

    Bundle and respnd Packet_IN op

    s.loadbalancer.interna

    s.simpleforwarding.in

    smanager.internal

    manager.internal

    ymanager.internal

    pective functionpenflow messag

    R

    al

    nternal

    n description) ge to controller

    Ryerson Univer

    IOFStatisticsMan

    IPluginInDataPac

    IPluginInFlowPro

    IPluginInInventor

    IPluginInReadSer

    IPluginInTopolog

    IPluginReadServi

    IRefreshInternalP

    IStatisticsListener

    ITopologyService

    IListenDataPacke

    IConfigManager

    IInventoryListene

    IfNewHostNotify

    IListenRoutingUp

    IStatisticsManage

    IListenInventoryU

    ISwitchManager

    ICacheUpdateAw

    IConfigurationCo

    IListenTopoUpda

    ITopologyManag

    IConfigurationCo

    r to get the path

    rsity | Load BalO

    nager

    cketService

    ogrammerService

    ryService

    rvice

    gyService

    iceFilter

    Provider

    r

    eShimListener

    et

    er

    y

    pdates

    er

    Updates

    ware

    ontainerAware

    ates

    ger

    ontainerAware

    information.

    lancing Using SOpen Daylight C

    ImplementatiThis componeusage of the f

    Sample implesimulating a tcomponent wof the functio

    Component inReadService several statist

    Component hinformation fcontroller. Alto have accesnode name orwill find themcomponent.

    Component hgraph. Providupdates to wh

    SDN with Controller

    33

    ion of a simple load-bent wants to show cafunctional modules.

    ementation of an apptraditional IP network

    wants to show case thonal modules.

    n charge of using thefrom SAL, in order ttics from the SDN ne

    holding the inventoryfor all the known nodll the components thass to let say a port namr any inventory informm via query to this

    holding the whole netde notifications on edho wants to listen abo

    balancer. ase the

    plication rk. This e usage

    e to collect etwork.

    y des in the at wants me or mation,

    twork dges out it.

  • The ARP b

    broadcast is showw as below, wh

    R

    Figure 3.

    Figure 3.

    hich is sent betw

    Figure 3.

    Ryerson Univer

    18(Wireshark a

    19(TCP packet

    ween controller

    20 (ARP PACK

    rsity | Load BalO

    arp message dis

    t for ARP)

    and switches w

    KET_IN and PA

    lancing Using SOpen Daylight C

    splay ,OFPT_PA

    when there is no

    ACKET_OUT)

    SDN with Controller

    34

    ACKET_IN)

    matching entryy.

  • Controllerwusedopenf

    willdecidetheflow1.0protoco

    bestpathwitholbetweencon

    R

    Figure 3.

    FLOW_MODwntrollerandsw

    Figure 3.

    Ryerson Univer

    21(IP Packet an

    whichcontainsitches,whichu

    22 ( Controller

    rsity | Load BalO

    nd Open flow P

    flowinstructiouseonetablefo

    instruction OF

    lancing Using SOpen Daylight C

    Packet informati

    oninthiscaseitortheflows.

    FPT_FLOW_MO

    SDN with Controller

    35

    ion)

    tisflow0asw

    OD)

    ehave

  • We have us

    Message OFPT_PA

    OFPT_PAOFPT_FL

    This is thebetween coWe have ta

    sed following fi

    ACKET_IN

    ACKET_OUT LOW_MOD

    e snapshot we ontroller and Opaken the list of p

    ilters for the wir

    TypeSwitc

    ContrContr

    had taken befopenflow switcheports and links i

    R

    Figure 3.

    reshark trace.

    e ch->Controlle

    roller->Switchroller->Switch

    Table 3.3

    ore Network dies for network din mininet

    Ryerson Univer

    23 (Openflow P

    Descr A pa

    tableinstr

    h Conth Cont

    table3 (Filter details

    iscovery in thediscovery.

    rsity | Load BalO

    Packet Details,

    cription acket receivede entry , switchruction troller sends totroller sends toe wireshark)

    e controller, wh

    lancing Using SOpen Daylight C

    FLOW_MOD)

    d doesnt match sends to cono switch one oo switch to ad

    hich were indic

    SDN with Controller

    36

    )

    ch switch flowntroller for or more ports.dd entry in the

    cation arp bein

    w

    e flow

    ng sent

  • R

    Figure 3.

    Ryerson Univer

    24(Ports and lin

    rsity | Load BalO

    nks)

    lancing Using SOpen Daylight C

    SDN with Controller

    37

  • As we havefrom each hsnapshot in

    e used ping betwhost to host 9 an

    n the ODL porta

    ween the hosts tnd once ping coal and OVSDB s

    R

    Figure 3.

    to observe the Nompleted, we obswitch interface

    Ryerson Univer

    25(Openflow sw

    Network load bbserved the pathes.

    rsity | Load BalO

    witch port dum

    alancing featurhs taken by the

    lancing Using SOpen Daylight C

    mps)

    re of the ODL, wpackets to reac

    SDN with Controller

    38

    we have sent onch host 9 by taki

    ne ping ing the

  • We observeinterface du

    ed that the conumps at the con

    ntroller does loantroller portal an

    R

    Figure 3.

    ad Balancing usnd in the ovsdb

    Ryerson Univer

    26(ping betwee

    sing simple loadump On minin

    rsity | Load BalO

    en hosts in mini

    ad Balancer monet side.

    lancing Using SOpen Daylight C

    inet)

    odule which is

    SDN with Controller

    39

    clear from the switch

  • This snapsh

    This is snap

    This snapshbetween the

    hot shows the d

    pshot of switch

    hot is between ese switches) S

    dump from ovsd

    2 to switch 7 w

    switch1---switcame is the case

    R

    Figure 3.

    db interfaces

    Figure 3.28

    which indicates

    Figure 3.29

    ch 7 and show between acces

    Ryerson Univer

    27(Port dump a

    8 (ODL Portal pac

    4 packets were

    9(ODL Portal pack

    4 packets weres level switches

    rsity | Load BalO

    after ping)

    cket stats after pin

    sent between tw

    ket stats after ping

    e sent betweens

    lancing Using SOpen Daylight C

    ng port between sw

    wo switches.

    g port between swi

    n them (which i

    SDN with Controller

    40

    witch 2 and switch

    itch 1 and switch 7

    indicates load s

    7)

    7)

    sharing

  • Switch 6 sn

    Switch 5 sn

    And all the

    From our Odoes the Ne We have ta

    napshot 2 pack

    napshot 2 packe

    e ports connect

    CObservation weetwork load bal

    aken the results

    kets received fro

    ets received fro

    ted have been u

    Conclusion (Ne have concludancing along w

    one more time,

    R

    Figure 3.30

    om h9

    Figure 3.31

    om h9

    Figure 3.32

    used almost equa

    Network Loaded that ODL b

    with Server load

    this time we ha

    Ryerson Univer

    0(ODL Portal pack

    1(ODL Portal pack

    2(ODL Portal pack

    ally.

    ad balancingbundle (org.opebalancing when

    ave enabled ST

    rsity | Load BalO

    ker stats after ping

    ker stats after ping

    ket stats after ping

    without STPendaylight.contn STP is not en

    TP in the switch

    lancing Using SOpen Daylight C

    g port between swi

    g port between swi

    g port between swi

    P enabled) troller.samples.nabled.

    es.

    SDN with Controller

    41

    itch 2and switch 6

    itch 5 and switch 2

    itch 4 and switch 1

    loadbalancer.in

    )

    2)

    1)

    nternal)

  • We observeed that all the h

    Figu

    osts discovered

    R

    Figure 3.33

    ure 3.34( STP con

    d H9 by using sw

    Ryerson Univer

    3(Enabling STP in

    nvergence switch

    witch1 this time

    rsity | Load BalO

    n ovsdb switches)

    1 as Root )

    e, switch 2 was

    lancing Using SOpen Daylight C

    s not used due t

    SDN with Controller

    42

    to STP.

  • Whereas on

    n the 2nd occasio Fig

    on switch 2 was

    Figu

    R

    ure 3.35( ODL Po

    s used and Swit

    ure 3.36( STP con

    Ryerson Univer

    ortal View when S

    tch 1 was not us

    nvergence switch2

    rsity | Load BalO

    Switch1 is root, all

    sed to discover

    2 as Root )

    lancing Using SOpen Daylight C

    l ) H9.

    SDN with Controller

    43

  • From our Odoes the Netimes this w

    3.4.2 SWe have sdescribe ouusing 32 ipH3 as servewe will hav

    Observation weetwork load balwas the case afte

    erver Load Buccessfully dem

    ur observations perf flows each ers and H9 as cve time outs wh

    Concluse have concludlancing at the coer STP was full

    Balancing Romonstrated both

    for Round Robwith 20MB wi

    client, and havehen client wants

    Figu

    R

    sion (Networkded that ODL bore level switchly converged.

    ound Robin Dh round Robin abin policies. Asindow, and sende generated resp to send traffic

    ure 3.37 (H9 as cli

    Ryerson Univer

    k Load balanbundle (org.opehes and it takes

    Demonstratiand Random Ses our Case studd these flows epective flows. Wto those hosts ,T

    ent 32 iperf flow w

    rsity | Load BalO

    ncing with Sendaylight.conta while before

    ion ever Load-balandy was to demoevery 1sec.In thWe have kept rThere snapshot

    with only two serv

    lancing Using SOpen Daylight C

    TP ) troller.samples.it is fully conv

    ncing Policies. Ionstrate server Rhe first section wrest of the hostst clearly indicat

    vers listening)

    SDN with Controller

    44

    loadbalancer.inverged. We tried

    In this section wRound Robin Pwe have used Hs down, which tes these time ou

    nternal) d many

    we will Policies H1 and means

    uts.

  • We have uswhen some

    The above max:7.5 wh

    sed jperf, whiche of the Paths w

    snapshot indichich indicates t

    h is GUI based ere down betwe

    Figu

    cates we have hthere was clear

    R

    iperf and our obeen host and cli

    ure 3.38(Server 1 r

    had input bandloss of bandwid

    Ryerson Univer

    bservation indicient.

    response, two host

    dwidth of aroundth and not all b

    rsity | Load BalO

    cates we were n

    t up and rest down

    nd 32 MB/s anbandwidth was

    lancing Using SOpen Daylight C

    not able to utiliz

    n)

    nd each of the h utilized.

    SDN with Controller

    45

    ze the max band

    host through pu

    dwidth

    ut was

  • Same is the 2nd case: wtime it was

    e case of H3.

    hen all the hostfully distribute

    Figu

    ts are up. We hed. All servers ru

    R

    ure 3.39(Server 3 r

    have achieved aunning and 32 f

    Ryerson Univer

    response, two host

    almost 100% effflows generated

    rsity | Load BalO

    t up and rest down

    fficiency, we had by following s

    lancing Using SOpen Daylight C

    n)

    ad same bandwiscript.

    SDN with Controller

    46

    idth available bbut this

  • Snap shot oof the client.

    Figu

    R

    ure 3.40(Client H9

    Ryerson Univer

    9 32 flows 20MB w

    rsity | Load BalO

    window and 1 sec

    lancing Using SOpen Daylight C

    delay all hosts up

    SDN with Controller

    47

    round Robin )

  • We have tasever was g

    aken host H1 angetting approx.

    Figu

    nd H3 snap shotat 4MB, and w

    R

    ure 3.41(Server H1

    t this time and wwe have almost r

    Ryerson Univer

    1 response ,all hos

    we can see maxreached 100% e

    rsity | Load BalO

    sts up round Robin

    x bandwidth waefficiency.

    lancing Using SOpen Daylight C

    n )

    s utilized as we

    SDN with Controller

    48

    e had 32 MB annd each

  • 3.6.3 SThis time wtwo servers

    erver Load Bwe used STP ens running, which

    Figu

    Balancing Ranabled Networkh was the case o

    Figu

    R

    ure 3.42 (Server H

    andom Demok and the rest ofof Round Robin

    ure 3.43 (Random

    Ryerson Univer

    3 response ,all hos

    onstration f the simulationn sever Simulat

    topology creation

    rsity | Load BalO

    sts up round Robi

    n setting were stion.

    )

    lancing Using SOpen Daylight C

    in )

    same, which me

    SDN with Controller

    49

    eans first time w

    we had

  • Figu

    R

    ure 3.44 (Random

    Ryerson Univer

    topology H9 Clien

    rsity | Load BalO

    nt 32 flows two se

    lancing Using SOpen Daylight C

    ervers up )

    SDN with Controller

    50

  • Figu

    R

    ure 3.45 (Random

    Ryerson Univer

    m topology H9 Clie

    rsity | Load BalO

    ent Server H1 resp

    lancing Using SOpen Daylight C

    ponse )

    SDN with Controller

    51

  • We almost servers are

    have same resuup as we can se

    ults as Round Ree from the snap

    R

    Figure 3.46 (Rand

    Robin, even we pshot.

    Ryerson Univer

    dom topology H9

    changed Netwo

    rsity | Load BalO

    Client Server H3 r

    ork to STP enab

    lancing Using SOpen Daylight C

    response )

    bled, we have lo

    SDN with Controller

    52

    osses when not

    all the

  • Figu

    R

    ure 3.47 (Random

    Ryerson Univer

    topology H9 Clien

    rsity | Load BalO

    nt 32 flows all ser

    lancing Using SOpen Daylight C

    rvers up)

    SDN with Controller

    53

  • Figu

    R

    ure 3.48 (Random

    Ryerson Univer

    topology H9 Clien

    rsity | Load BalO

    nt Server H3 respo

    lancing Using SOpen Daylight C

    onse all servers up

    SDN with Controller

    54

    p )

  • When we Robin topo

    We have received maNote:- Thisbut if this is

    have all the selogy also.

    Csuccessfully deax throughput ws is Ideal condits not the case th

    ervers in listenin

    Conclusion (Semonstrated bowhen all the sertion, for STP enhen we will hav

    R

    Figure 3.49 (Ran

    ng mode in Ran

    Sever Load Both Round Robrvers are availabnabled Networkve less throughp

    Ryerson Univer

    ndom topology H9

    ndom LB, we g

    Balancing Robin and Randomble irrespective k, as network input as not all the

    rsity | Load BalO

    Client Server H1

    get 100% effici

    ound Robin/Rm Server Loadof the load bala

    n not overloadede links are utiliz

    lancing Using SOpen Daylight C

    response all serve

    iency, which w

    Random) d-balancing anancing method.d , we can achiezed when STP i

    SDN with Controller

    55

    ers up )

    was the case of

    nd concluded th. eve 100% throuis enabled.

    Round

    hat we

    ughput,

  • Ryerson University | Load Balancing Using SDN with

    Open Daylight Controller56

    Appendix Openday light Wrapper scripts for Load BalancerCreate_8_load_balance_Round_Robin_topo.bash

    echo "Create load balancer pool with round robin load balancing policy "

    curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X POST http://192.168.56.105:8080/one/nb/v2/lb/default/create/pool -d '{"name":"PoolRR","lbmethod":"roundrobin"}'

    if [[ $? == 0 ]] ; then

    echo " load balancer pool Created "

    fi

    curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X POST http://192.168.56.105:8080/one/nb/v2/lb/default/create/vip -d '{"name":"VIP-RR","ip":"10.0.0.20","protocol":"TCP","port":"5550","poolname":"PoolRR"}'

    echo " Create load balancer VIP "

    curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X PUT http://192.168.56.105:8080/one/nb/v2/lb/default/update/vip -d '{"name":"VIP-RR","poolname":"PoolRR"}'

    if [[ $? == 0 ]] ; then

    echo " load balancer VIP Created "

    fi

    echo "Creating Pool Members"

    for members in 1 2 3 4 5 6 7 8

    do

    curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X POST http://192.168.56.105:8080/one/nb/v2/lb/default/create/poolmember -d '{"name":"PM'$members'","ip":"10.0.0.'$members'","poolname":"PoolRR"}'

  • Ryerson University | Load Balancing Using SDN with

    Open Daylight Controller57

    if [[ $? == 0 ]] ; then

    echo " Pool Member PM"$members" Created "

    fi

    done

    Create_load_balance_random.bash

    echo "Create load balancer pool with Random load balancing policy "

    curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X POST http://192.168.56.105:8080/one/nb/v2/lb/default/create/pool -d '{"name":"PoolRA","lbmethod":"random"}'

    if [[ $? == 0 ]] ; then

    echo " load balancer pool Created "

    fi

    curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X POST http://192.168.56.105:8080/one/nb/v2/lb/default/create/vip -d '{"name":"VIP-RA","ip":"10.0.0.20","protocol":"TCP","port":"5550","poolname":"PoolRA"}'

    echo " Create load balancer VIP "

    curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X PUT http://192.168.56.105:8080/one/nb/v2/lb/default/update/vip -d '{"name":"VIP-RA","poolname":"PoolRA"}'

    if [[ $? == 0 ]] ; then

    echo " load balancer VIP Created "

    fi

    echo "Creating Pool Members"

    for members in 1 2 3 4 5 6 7 8

    do

    curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X POST http://192.168.56.105:8080/one/nb/v2/lb/default/create/poolmember -d '{"name":"PM'$members'","ip":"10.0.0.'$members'","poolname":"PoolRA"}'

    if [[ $? == 0 ]] ; then

  • Ryerson University | Load Balancing Using SDN with

    Open Daylight Controller58

    echo " Pool Member PM"$members" Created "

    fi

    done

    deletepools_topo.bash

    for members in 1 2 3 4 4 5 6 7 8

    do

    curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X DELETE http://192.168.56.105:8080/one/nb/v2/lb/default/delete/poolmember/PM"$members"/PoolRR

    done

    echo "Delete VIP"

    curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X DELETE http://192.168.56.105:8080/one/nb/v2/lb/default/delete/vip/VIP-RR

    echo "Delete Pool"

    curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X DELETE http://192.168.56.105:8080/one/nb/v2/lb/default/delete/pool/PoolRR

    Mininet Scripts

    Python topology Script from mininet.topo import Topo

    from mininet.net import Mininet

    from mininet.link import Link

    from mininet.util import quietRun

    from mininet.log import setLogLevel, info

    from mininet.node import Controller, RemoteController, OVSController

    from mininet.node import CPULimitedHost, Host, Node

    from mininet.node import OVSKernelSwitch, UserSwitch

    from mininet.util import dumpNodeConnections

    from mininet.cli import CLI

    from mininet.log import setLogLevel, info

    from mininet.link import TCLink, Intf

    from subprocess import call

  • Ryerson University | Load Balancing Using SDN with

    Open Daylight Controller59

    setLogLevel('info')

    net = Mininet(link=TCLink)

    # Servers

    Host1 = net.addHost('h1',cls=Host, ip="10.0.0.1")

    Host2 = net.addHost('h2',cls=Host, ip="10.0.0.2")

    Host3 = net.addHost('h3', cls=Host,ip="10.0.0.3")

    Host4 = net.addHost('h4', cls=Host,ip="10.0.0.4")

    Host5 = net.addHost('h5', cls=Host,ip="10.0.0.5")

    Host6 = net.addHost('h6', cls=Host,ip="10.0.0.6")

    Host7 = net.addHost('h7', cls=Host,ip="10.0.0.7")

    Host8 = net.addHost('h8', cls=Host,ip="10.0.0.8")

    # Clients

    Host9 = net.addHost('h9', ip="10.0.0.9")

    Switch1 = net.addSwitch('s1')

    Switch2 = net.addSwitch('s2')

    Switch3 = net.addSwitch('s3')

    Switch4 = net.addSwitch('s4')

    Switch5 = net.addSwitch('s5')

    Switch6 = net.addSwitch('s6')

    Switch7 = net.addSwitch('s7')

    # Adding Switches

    #

    linksw400 = dict(bw=400)

    linksw100 = dict(bw=100)

    linkclients = dict(bw=100)

  • Ryerson University | Load Balancing Using SDN with

    Open Daylight Controller60

    linkservers = dict(bw=100)

    # links between switches and hosts

    net.addLink(Host1, Switch3,port1=13,port2=31 ,**linkservers)

    net.addLink(Host5,Switch3,port1=53,port2=35 , **linkservers)

    net.addLink(Host2,Switch4,port1=24,port2=42 , **linkservers)

    net.addLink(Host6 , Switch4,port1=64,port2=46 ,**linkservers)

    net.addLink(Host3 ,Switch5, port1=35,port2=53 ,**linkservers)

    net.addLink(Host7, Switch5, port1=75,port2=57 ,**linkservers)

    net.addLink(Host4, Switch6 , port1=46,port2=64, **linkservers)

    net.addLink(Host8, Switch6 ,port1=86,port2=68 , **linkservers)

    net.addLink(Host9, Switch7,port1=97,port2=79 ,**linkclients)

    #net.addLink(Host5, Switch7,port1=5711,port2=7511,intf1Name='h7s70-eth570', intf2Name='s7h50-eth70', **linkclients)

    # links between switches

    # links between switch 2 and 4

    net.addLink(Switch2, Switch4 , port1=240, port2=420, intf1Name='s24-eth240', intf2Name='s42-eth420' ,**linksw100)

    net.addLink(Switch2, Switch5,port1=250, port2=520, intf1Name='s25-eth250', intf2Name='s52-eth520' , **linksw100)

    net.addLink(Switch2, Switch6 , port1=260, port2=620, intf1Name='s26-eth260', intf2Name='s62-eth620' , **linksw100)

    net.addLink(Switch2, Switch3 ,port1=230, port2=320, intf1Name='s23-eth230', intf2Name='s32-eth320' ,**linksw100)

    net.addLink(Switch1, Switch4 ,port1=140, port2=410, intf1Name='s14-eth140', intf2Name='s41-eth410' ,**linksw100)

    net.addLink(Switch1, Switch5 ,port1=150, port2=510, intf1Name='s15-eth150', intf2Name='s51-eth510' ,**linksw100)

  • Ryerson University | Load Balancing Using SDN with

    Open Daylight Controller61

    net.addLink(Switch1, Switch6,port1=160, port2=610, intf1Name='s16-eth160', intf2Name='s61-eth610' ,**linksw100)

    net.addLink(Switch1, Switch3 ,port1=130, port2=310, intf1Name='s13-eth130', intf2Name='s31-eth310' ,**linksw100)

    net.addLink(Switch7, Switch1, port1=710, port2=170, intf1Name='s71-eth710', intf2Name='s17-eth170' , **linksw400)

    net.addLink(Switch7, Switch2, port1=720, port2=270, intf1Name='s72-eth720', intf2Name='s27-eth270' , **linksw100)

    net.addController('c0', controller=RemoteController, ip='192.168.56.105', port=6633)

    net.build()

    net.start()

    CLI(net)

    #simpleTest()

    net.stop()Get Interface Stats Script echo "Port , Transmitted , Recieved " > result.txt

    sudo ovs-vsctl list interface|grep name |grep "-"|awk -F":" '{print $2}'|sed -e 's/"//' -e 's/"//' > a.txt

    >b.txt

    >c.txt

    line=$(sudo ovs-vsctl list interface|grep -n name |grep "-"|awk -F":" '{print $1}')

    for X in $line

    do

    let Y=$X;

    let Z=$Y+5

    sudo ovs-vsctl list interface|awk '(NR=='$Z') {print $0}' |awk -F"rx_packets=" '{print $2}'|awk -F"," '{print ","$1}' >>b.txt

    sudo ovs-vsctl list interface|awk '(NR=='$Z') {print $0}' |awk -F"tx_packets=" '{print ","$2}'|sed -e "s/}//" >> c.txt

    done

    paste a.txt b.txt c.txt >>result.txtEnable STP Script

    sudo ovs-vsctl set bridge s1 stp_enable=true

    sudo ovs-vsctl set bridge s2 stp_enable=true

    sudo ovs-vsctl set bridge s3 stp_enable=true

  • Ryerson University | Load Balancing Using SDN with

    Open Daylight Controller62

    sudo ovs-vsctl set bridge s4 stp_enable=true

    sudo ovs-vsctl set bridge s5 stp_enable=true

    sudo ovs-vsctl set bridge s6 stp_enable=true

    sudo ovs-vsctl set bridge s7 stp_enable=true

    echo "Bridge s1 status"

    sudo ovs-vsctl get bridge s1 stp_enable

    echo "Bridge s2 status"

    sudo ovs-vsctl get bridge s2 stp_enable

    echo "Bridge s3 status"

    sudo ovs-vsctl get bridge s3 stp_enable

    echo "Bridge s3 status"

    sudo ovs-vsctl get bridge s3 stp_enable

    echo "Bridge s4 status"

    sudo ovs-vsctl get bridge s4 stp_enable

    echo "Bridge s5 status"

    sudo ovs-vsctl get bridge s5 stp_enable

    echo "Bridge s6 status"

    sudo ovs-vsctl get bridge s6 stp_enable

    echo "Bridge s7 status"

    sudo ovs-vsctl get bridge s7 stp_enable

  • Ryerson University | Load Balancing Using SDN with

    Open Daylight Controller63

    Installation steps ODL ( Pulling Code from Git Repository and compiling it Locally using Maven

    Install Java JDK 8

    sudo apt-add-repository ppa:webupd8team/java

    sudo apt-get update

    sudo apt-get install oracle-java8-installer

    set path

    ------------

    sudo vi .bashrc

    ------------

    #----------------------------

    #Java home

    #----------------

    JAVA_HOME=/usr/lib/jvm/java-8-oracle

    export JAVA_HOME

    #------------

    PATH=$PATH:$JAVA_HOME

    export PATH

    Maven Install

    sudo mkdir -p /usr/local/apache-maven

    sudo wget http://ftp.wayne.edu/apache/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.tar.gz

    sudo mv apache-maven-3.3.3-bin.tar.gz /usr/local/apache-maven

    sudo tar -xzvf /usr/local/apache-maven/apache-maven-3.3.3-bin.tar.gz -C /usr/local/apache-maven/

    sudo update-alternatives --install /usr/bin/mvn mvn /usr/local/apache-maven/apache-maven-3.3.3/bin/mvn 1

    sudo update-alternatives --config mvn

    sudo apt-get install vim

    vim ~/.bashrc

    ------------add

    export M2_HOME=/usr/local/apache-maven/apache-maven-3.3.3

    export MAVEN_OPTS="-Xms256m -Xmx512m" # Very important to put the "m" on the end

    Resource:

    https://wiki.opendaylight.org/view/Install_On_Ubuntu_14.04

  • Ryerson University | Load Balancing Using SDN with

    Open Daylight Controller64

    Git Install

    sudo add-apt-repository ppa:git-core/ppa -y

    sudo apt-get update

    sudo apt-get install git

    git version

    Resource

    http://unix.stackexchange.com/questions/33617/how-can-i-update-to-a-newer-version-of-git-using-apt-get

    ODL installation

    Once Environment is setup , we can pull code from ODL repository, we have used anonymous

    Pull in our setup. Following are the steps:

    Move the desired directory, in our case it is user $HOME

    git clone https://git.opendaylight.org/gerrit/p/controller.git

    saif@saif-SDN:~$ wget -q -O - https://raw.githubusercontent.com/opendaylight/odlparent/master/settings.xml > ~/.m2/settings.xml

    saif@saif-SDN:~$ cd controller/

    saif@saif-SDN:~/controller$ sudo git checkout stable/helium

    Checking out files: 100% (3975/3975), done.

    Branch stable/helium set up to track remote branch stable/helium from origin.

    Switched to a new branch 'stable/helium'

    saif@saif-SDN:~/controller$

    mvn clean install DskipTests

    It takes a while to install depending on the Machine hardware and memory.

    Once Installation is successful , it will show summary of installation on the Screen.

    setting up Mininet

    git clone git://github.com/mininet/mininet

    mininet/util/install.sh -n3f

    sudo apt-get install scons

    git clone https://github.com/CPqD/ofdissector

    cd ofdissector/src

    scons install

    It may fail with complain

    scons: Reading SConscript files ...

  • Ryerson University | Load Balancing Using SDN with

    Open Daylight Controller65

    scons: done reading SConscript files.

    scons: Building targets ...

    g++ -o openflow-common.os -c -fPIC -I. -I/usr/include/wireshark -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include openflow-common.cpp

    In file included from openflow-common.cpp:5:0:

    ./openflow-common.hpp:10:20: fatal error: config.h: No such file or directory

    you need to install

    apt-get install wireshark-dev

    after that you may get lib missing

    scons install

    scons: Reading SConscript files ...

    scons: done reading SConscript files.

    scons: Building targets ...

    g++ -o openflow-common.os -c -fPIC -I. -I/usr/include/wireshark -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include openflow-common.cpp

    In file included from openflow-common.cpp:9:0:

    ./of13/openflow-130.hpp:12:0: warning: "PROTO_TAG_OPENFLOW_VER" redefined [enabled by default]

    apt-get install libgtk2.0-dev

    apt-get install glade

    pkg-config --list-all | grep glib

    vi openflow-common.cpp

    scons install

    substitute 'dissector_add' with 'dissector_add_uint', not with 'dissector_add_unint'

    scons install

    resources:

    https://github.com/CPqD/ofdissector/issues/14

    http://sdn-lab.com/2014/03/19/how-to-analyze-openflow-packets-in-wireshark-at-ubuntu-12-04/

    https://github.com/CPqD/ofdissector/issues/13

  • Ryerson University | Load Balancing Using SDN with

    Open Daylight Controller66

    References: https://www.opendaylight.org/sites/opendaylight/files/bk-user-guide.pdf http://roan.logdown.com/posts/191801-set-openvswitch http://conferences.sigcomm.org/sigcomm/2012/hotsdn.php https://wiki.opendaylight.org/view/OpenDaylight_dlux:Dlux_Karaf_Feature https://wiki.opendaylight.org/view/OpenDaylight_Controller:Main http://blog.jcuff.net/2013/09/my-first-steps-with-openflow.html https://wiki.opendaylight.org/view/OpenDaylight_Controller:Eclipse_Setup http://askubuntu.com/questions/420281/how-to-update-maven-3-0-4-3-1-1 https://git-scm.com/book/en/v2/Getting-Started-Installing-Git https://wiki.opendaylight.org/view/OpenDaylight_Controller:Installation https://wiki.opendaylight.org/view/OpenDaylight_Controller:Load_Balancer_Service https://wiki.opendaylight.org/view/OpenDaylight_Toolkit:Main:Windows http://www.slideshare.net/joelwking/introduction-to-openflow-41257742