+ All Categories
Home > Internet > SDN Project PPT

SDN Project PPT

Date post: 23-Feb-2017
Category:
Upload: ikwhan-chang
View: 516 times
Download: 1 times
Share this document with a friend
26
Final Project Load Balancer Using Software-Defined Network - POX Team Group 4 1 Group Name SJSU ID Class ID Roles Group member 1 Avanish Gupta 010129847 22 Code analysis and debug Group member 2 Kunal Goswami 010772541 20 Code analysis and debug Group member 3 Ayush Sharma 010034141 71 Design, code and implement Group member 4 Ikwhan Chang 010754107 9 Design, code and test
Transcript

Final Project PT

Final ProjectLoad Balancer Using Software-Defined Network - POXTeam Group 4

7-Dec 2015 1

GroupNameSJSU IDClass IDRolesGroup member 1Avanish Gupta 01012984722Code analysis and debugGroup member 2Kunal Goswami 01077254120Code analysis and debugGroup member 3Ayush Sharma01003414171Design, code and implementGroup member 4Ikwhan Chang0107541079Design, code and test

INDEXPart1: SDN AnalysisPOX Controller: OpenFlowOpenFlow Startup eventsOpenFlow ModuleFlow of ControlComponentsPart2: DevelopmentIntroductionModificationsTest CDN EnvironmentsPerformance AnalysisArchitecture & TopologyDemoQ&A 2

Part 1: SDN AnalysisPOX Controller: OpenFlowPOX Startup events. OpenFlow ModuleFlow of ControlComponents

3

POX Controller: OpenFlow POX is an open source controller developed in python language for software defined networking. For the part 1 of our project, we have chosen the OpenFlow module for our analysis. The following image shows the important components of the OpenFlow module.

4

5POX startup events

OpenFlow ModuleIn the accompanying diagram, we go through the outline of the OpenFlow module. The discovery and keep alive components of OpenFlow provide input to the topology module so as to create and manipulate the network topology. The libopenflow module communicates with the lib.packet module in order to handle the packets as well as the events that are fired through the network.

6

Flow of ControlThe flow of control in POX controller can be understood as an outline of the actual flow. We consider the outline/overview for the POX controller flow because of the interdependency between the modules in it. There are well defined classes and events for every single event that occurs in a network, however theyre utilized by multiple components of the POX controller and the flow of control keeps jumping from one component to another. 7

Flow of controlThe startup of the POX controller transfers the control from the main pox.py to openflow/libopenflow component of POX. This file contains the events for the packets that are transferred amongst the switches. The topology is updated simultaneously with the discovery component and the topology component of the POX controller. We now discuss the important components of the OpenFlow module in POX.

8

Component: libopenflow9This file contains the definition of various classes and constants such as the openflow messages in the specification, the methods which deal with the statistics of the packets exchanged. This module is called by the main execution script, pox at the startup as well as it is continuously in scope while checking the topology and manipulating it. Corresponding diagram shows the example of one such class.

Component: of_01The name of_01 denotes the version of the openflow protocol that POX supports, that is version 01. This component deals with the switches with events like connectionUp, connectionDown, portStatus etc. It informs the user about the topology, whether or not a switch is connected to the network. All the communication from the controller to the switches goes through this code, the messages that are sent, the statistics that are received from the switches. These messages can be displayed with the help of the logger available in POX. The unpacked information that is available from the libopenflow module, which is received from the packets that are exchanged is used in this component to send different requests such as HELLO, ECHO, FLOW_REMOVED etc.

10

Component: DiscoveryThe discovery component in openflow deals with the discovery of the nodes in the network. The switches as well as the hosts, this component then communicates with the topology component in Openflow module. The topology component acts like a bridge between POXs topology module and Openflow module and helps the controller to set up and manipulate the network topology. This module communicates with the flow table as well to determine the flow rules for the switches, it updates the flow rules as well as discovers them upon startup. 11

Difficulties facedThe very first obstacle that lied on our path was the interdependency of the python modules with each other. We solved it using line by line execution with the help of pdb.set_trace() from the python debugger. Determining the flow of control in the openflow module wasnt easy, for the same purpose we referred the API calls from one function to another in order to check the flow of control manually.

12

Part 2: Load Balancing in SDNIntroductionModificationsTest CDN EnvironmentsPerformance AnalysisArchitecture & TopologyDemoQ&A

13

IntroductionProject GoalsPOX is a popular Python based open source SDN controller with the help of which we can easily check the configuration of a customized networking environment. Our project will easily setup the CDN(Content-Delivery Network) environments using POX loadbalancerThe POX loadbalancer is modified by our team using Round-Robin Algorithm(prev: Random Select)What is CDN?A large distributed system of proxy servers deployed in multiple data centers via the Internet. Project RequirementsSDN Controller: POXLanguage: Python 1.7 based on POX controllerTopology/VM: Mininet VM SeedWAS: Node.js / Express.js 14(Left) Single server distribution (Right) CDN scheme of distribution

Select the server(self._pick_server())Set up the table entry towards selected serverSet up Openflow actions using selected servers ip/macSet up Openflow match based on request packet(packet, inport)Set up the open flows message using customised action/matchSend message using OpenFlowLoad Balancer Algorithms 15

ModificationsDefault LB: Random Selection

/pox/misc/ip_loadbalancer.py line(193~197)Implemented simple random selection. 16

Modified: Round Robin Selection

/pox/misc/loadbalancer_cmpe207.pyAdd the get_next_server() in order to get the index based on round robinIf there is live server(self.live_servers), get_next_server() will pick the live server and then return in order to connect the clients requests.

Load Balancer Algorithms 17sudo mn --arp --topo single,5 --mac --switch ovsk --controller remote -x

Test Environments 18

Server: index.jsRunning on 10.0.0.1/10.0.0.2/10.0.0.3/10.0.0.4Client: Ajax Requestwith AngularJS

Static Resources:Client: HTML View

Test Environments 19

1. Running LB on 10.0.0.2542. Run Server Application into each servers3. Connect clients web page using Firefox

Test Environments 20

1. Set the # of image from server2. LB will separate the packet into each servers3. The static resource will be requested by each servers.4. Images are loaded

Test Environments 21

Performance Analysis 22

Demo 23

https://www.youtube.com/watch?v=1_1hJZFYn_E

Conclusion SDN works as cutting-edge technologies of Network Virtualization Modified load balancer module to perform round robin scheduling Improved the performance of web resources from servers Showed the improved results in terms of fetching image from the servers 24

Q & A25

Thanks!26

SJSU Fall-2015 CMPE207 Group 4 Final Project Presentation


Recommended