Changes between Version 1 and Version 2 of Documentation/fSDN/bMininet


Ignore:
Timestamp:
Dec 7, 2014, 10:38:42 PM (9 years ago)
Author:
ssugrim
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Documentation/fSDN/bMininet

    v1 v2  
    140140 [#multi 2.1 Multiple Controllers ][[BR]]
    141141 [#fv 2.2 Network virtualization/slicing ][[BR]]
    142 == 2.1 Multiple Controllers == #multi
     142==== 2.1 Multiple Controllers ==== #multi
    143143You may have multiple controllers in the same logical space of the control plane for various reasons - special applications, fail-over, distributed control planes, etc.
    144144 
     
    146146 * 2.1.2 On the same host
    147147
    148 === 2.1.1 On multiple hosts ===
     148''' 2.1.1 On multiple hosts '''
    149149If each controller is running on its own host (machine, VM, etc.), there is little to change; if you have hosts A,B, and C, and Floodlight instances running on each, switches can be pointed to targets A:6633, B:6633, C:6633, or any combination thereof (switches can be pointed to multiple controllers). 
    150150
    151 === 2.1.2 On the same host === #s2_1_2
    152 ==== The Floodlight configuration file ====
     151''' 2.1.2 On the same host ''' #s2_1_2
     152
     153''' The Floodlight configuration file '''
    153154Multiple instances of Floodlight may be run on the same host, as long as each controller listens on a separate set of sockets. In this case, all controllers would be on the same IP address(es), so you must change the ports they are listening on. These ports include the !OpenFlow control port (TCP 6633), REST API (TCP 8080), and debug (TCP 6655).
    154155
     
    220221This should launch three backgrounded instances of Floodlight.
    221222
    222 == 2.2 Network virtualization/slicing == #fv
     223==== 2.2 Network virtualization/slicing ====
    223224A more typical case you might encounter is a network that is sliced, or virtualized.
    224225
     
    246247
    247248
    248 === 2.2.2 Virtualization with multiple hosts ===
     249''' 2.2.2 Virtualization with multiple hosts '''
    249250We begin by introducing a simple example of a virtualized topology:
    250251{{{
     
    267268
    268269
    269 === 2.2.3 On the same host ===
     270''' 2.2.3 On the same host '''
    270271As with the case of multiple controllers on the same VM/host, you must be careful that neither !FlowVisor nor the controllers listen on the same sets of ports. For the multiple controllers, this can be avoided as described in [#s2_1_2 Section 2.1.2]. !FlowVisor and Floodlight conflict on ports 6633 and 8080.     
    271272
    272 ----
    273 = III Installation = #III
    274 The following are the installation steps and basic usage for the software that are found on the image. For more information, refer to their respective pages; Floodlight and Mininet in particular have very thorough docs.
    275 
    276 Quick links: [[BR]]
    277  [#floodlight 3.1 Floodlight][[BR]]
    278  [#mn 3.2 Mininet][[BR]]
    279  [#cbench 3.3 CBench] [[BR]]
    280  [#loft 3.4 liboftrace] [[BR]]
    281  [#ws 3.5 Wireshark] [[BR]]
    282  [#fvisor 3.6 FlowVisor] [[BR]]
    283 
    284 Note, the following examples are for Ubuntu, since that's what is used at WINLAB. A quick search will often bring up hints/steps for CentOS/RHEL and OSX, but for the most part, you will have to experiment a bit.
    285  
    286 == 3.1 Floodlight == #floodlight
    287 docs: http://docs.projectfloodlight.org/display/floodlightcontroller/Floodlight+Documentation [[BR]]
    288 
    289 For the most part the following is a repetition of some of the things there. Truth be told, if you plan to modify/develop on Floodlight it is better to just install it on a local machine where you can use eclipse (either that, or you can try to X11 forward, but that doesn't always go well).
    290 === dependencies ===
    291 {{{
    292 sudo apt-get install git-core build-essential default-jdk ant python-dev eclipse
    293 }}}
    294 === installation ===
    295 The following fetches and builds the latest stable release:
    296 {{{
    297 git clone git://github.com/floodlight/floodlight.git
    298 cd floodlight
    299 git checkout fl-last-passed-build
    300 ant
    301 }}}
    302 To import as a project on Eclipse, run the following while in the same directory:
    303 {{{
    304 ant eclipse
    305 }}}
    306 === run ===
    307 Assuming everything worked out:
    308 {{{
    309 java -jar target/floodlight.jar
    310 }}}
    311 from the floodlight/ directory launches Floodlight. It will output a bunch of messages while it searches for, loads, and initializes modules. You can refer to the output attached below for what it should look like - there may be warnings, but they should be harmless. 
    312 
    313 This command also launches in the foreground, so you can either launch it in a terminal multiplexer like `screen` or `tmux`, or with a `1>logfile 2>&1 &` tacked to the end. The former is probably recommended.   
    314 === development ===
    315 Tutorials and other information can be found here: http://docs.projectfloodlight.org/display/floodlightcontroller/For+Developers
    316 
    317 == 3.2 Mininet == #mn
    318 website: http://mininet.org/ [[BR]]
    319 It is highly recommended to run trough the docs, especially the following:
    320  * FAQs: https://github.com/mininet/mininet/wiki/FAQ
    321  * Getting Started: http://mininet.org/download/ Getting Started
    322  * Sample Workflow: http://mininet.org/sample-workflow/ Sample Workflow
    323  * Walkthrough: http://mininet.org/walkthrough/   
    324 
    325 If you post to the list especially before you read the FAQ's, you will likely just be asked if you have checked them.
    326  
    327 === installation/build ===
    328 The [https://github.com/mininet/mininet/downloads/ VM] is the recommended way to run Mininet on your machine. [[BR]]
    329 The following is for a native install (as on the node image).
    330 
    331 The method differs for different versions of Ubuntu. The following is for 12.04. For others, refer to [http://www.projectfloodlight.org/getting-started/ this] page.
    332 The following also takes care of the dependencies.
    333 {{{
    334 sudo apt-get install mininet/precise-backports
    335 }}}
    336 Then disable `ovs-controller`:
    337 {{{
    338 sudo service openvswitch-controller stop
    339 sudo update-rc.d openvswitch-controller disable
    340 }}}
    341 You may also need to start open Vswitch:
    342 {{{
    343 sudo service openvswitch-switch start
    344 }}}
    345 You can verify that it works with the following:
    346 {{{
    347 sudo mn --test pingall
    348 }}}
    349 This sets up a 2-host, 1-switch topology and pings between the hosts. The output looks similar to this:
    350 {{{
    351 *** Creating network
    352 *** Adding controller
    353 *** Adding hosts:
    354 h1 h2
    355 *** Adding switches:
    356 s1
    357 *** Adding links:
    358 (h1, s1) (h2, s1)
    359 *** Configuring hosts
    360 h1 h2
    361 *** Starting controller
    362 *** Starting 1 switches
    363 s1
    364 *** Ping: testing ping reachability
    365 h1 -> h2
    366 h2 -> h1
    367 *** Results: 0% dropped (0/2 lost)
    368 *** Stopping 2 hosts
    369 h1 h2
    370 *** Stopping 1 switches
    371 s1 ...
    372 *** Stopping 1 controllers
    373 c0
    374 *** Done
    375 completed in 0.460 seconds
    376 }}}
    377 === run ===
    378 There are many flags and options associated with launching Mininet. `mn --help` will display them. [[BR]]
    379 For example, to start the same topology as the pingall test, but with a controller running separately from Mininet:
    380 {{{
    381 # mn --topo=single,2 --controller=remote,ip=10.18.1.1 --mac
    382 *** Creating network
    383 *** Adding controller
    384 *** Adding hosts:
    385 h1 h2
    386 *** Adding switches:
    387 s1
    388 *** Adding links:
    389 (h1, s1) (h2, s1)
    390 *** Configuring hosts
    391 h1 h2
    392 *** Starting controller
    393 *** Starting 1 switches
    394 s1
    395 *** Starting CLI:
    396 mininet>
    397 }}}
    398  * --topo=single,2 : one switch with two hosts
    399  * --controller=remote,ip=10.18.1.1 : controller at 10.18.1.1 
    400  * --mac : non-random MAC addresses
    401 Some useful ones are:
    402  * controller external to Mininet, at IP addr and port p:
    403 {{{
    404 --controller=remote,ip=[addr],port=[p]
    405 }}}
    406  * non-random host MAC addresses (starting at 00:00:00:00:00:01 for h1)
    407 {{{
    408 --mac
    409 }}}
    410 === usage ===
    411 You can find available commands for the command line by typing `?` at the prompt. `exit` quits Mininet. [[BR]]
    412 Some basic examples:
    413  * display topology:
    414 {{{
    415 mininet> net
    416 c0
    417 s1 lo:  s1-eth1:h1-eth0 s1-eth2:h2-eth0
    418 h1 h1-eth0:s1-eth1
    419 h2 h2-eth0:s1-eth2
    420 }}}
    421  * display host network info:
    422 {{{
    423 mininet> h1 ifconfig
    424 h1-eth0   Link encap:Ethernet  HWaddr 00:00:00:00:00:01 
    425           inet addr:10.0.0.1  Bcast:10.255.255.255  Mask:255.0.0.0
    426           inet6 addr: fe80::200:ff:fe00:1/64 Scope:Link
    427           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
    428           RX packets:135 errors:0 dropped:124 overruns:0 frame:0
    429           TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
    430           collisions:0 txqueuelen:1000
    431           RX bytes:8906 (8.9 KB)  TX bytes:558 (558.0 B)
    432 
    433 lo        Link encap:Local Loopback 
    434           inet addr:127.0.0.1  Mask:255.0.0.0
    435           inet6 addr: ::1/128 Scope:Host
    436           UP LOOPBACK RUNNING  MTU:16436  Metric:1
    437           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    438           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    439           collisions:0 txqueuelen:0
    440           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
    441 }}}
    442  * ping host 1 from host 2
    443 {{{
    444 mininet> h2 ping h1
    445 PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
    446 64 bytes from 10.0.0.1: icmp_req=1 ttl=64 time=10.0 ms
    447 ^C
    448 --- 10.0.0.1 ping statistics ---
    449 1 packets transmitted, 1 received, 0% packet loss, time 0ms
    450 rtt min/avg/max/mdev = 10.026/10.026/10.026/0.000 ms
    451 }}}
    452 === scripting ===
    453 Mininet has a Python API, whose docs can be found online: http://mininet.org/api/ [[BR]]
    454 Examples can also be found here: https://github.com/mininet/mininet/tree/master/examples
    455 
    456 Once you write a script, you can run it as a script:
    457 {{{
    458 python mn_script.py
    459 }}}
    460 
    461 == 3.3 Cbench == #cbench
     273==== 3.3 Cbench ==== #cbench
    462274website: http://docs.projectfloodlight.org/display/floodlightcontroller/Cbench+(New)
    463275
     
    638450You should see openflow.so in the list of plugins if you go to Help > About Wireshark > plugins.
    639451
    640 === 3.6 FlowVisor === #fvisor
     452
     453
     454
     455==== Refrences ====
     456
     457''' Floodlight '''
     458 * Tutorials and other information can be found at http://docs.projectfloodlight.org/display/floodlightcontroller/For+Developers
     459
     460''' Mininet '''
     461 * FAQs: https://github.com/mininet/mininet/wiki/FAQ
     462 * Getting Started: http://mininet.org/download/ Getting Started
     463 * Sample Workflow: http://mininet.org/sample-workflow/ Sample Workflow
     464 * Walkthrough: http://mininet.org/walkthrough/ 
     465
     466''' FlowVisor '''
    641467website: http://onlab.us/flowvisor.html