commit etree topology 47/80347/1
authorsantanude <santanu.de@xoriant.com>
Fri, 15 Feb 2019 07:22:42 +0000 (08:22 +0100)
committersantanude <santanu.de@xoriant.com>
Fri, 15 Feb 2019 07:22:42 +0000 (08:22 +0100)
Change-Id: I10788ff5675db55ca2caaf8cbb879d064a85617e
Signed-off-by: santanude <santanu.de@xoriant.com>
resources/create_etree_topology.py [new file with mode: 0755]

diff --git a/resources/create_etree_topology.py b/resources/create_etree_topology.py
new file mode 100755 (executable)
index 0000000..a0bb394
--- /dev/null
@@ -0,0 +1,116 @@
+#!/usr/bin/python\r
+\r
+"""\r
+Copyright (c) 2018 Xoriant Corporation and others. All rights reserved.\r
\r
+This script creates E-tree topology to experiment with ovs drivers.\r
+"""\r
+\r
+import re\r
+import sys\r
+import os\r
+import time\r
+\r
+from mininet.cli import CLI\r
+from mininet.log import setLogLevel, info, error\r
+from mininet.net import Mininet\r
+from mininet.link import Intf\r
+from mininet.util import quietRun\r
+from mininet.node import Controller, RemoteController\r
+from mininet.topo import Topo\r
+from mininet.node import Node\r
+from mininet.util import waitListening\r
+from functools import partial\r
+from mininet.node import OVSSwitch\r
+\r
+class PocTopo( Topo ):\r
+       "Topology prepared for Presto NRP tutorial"\r
+\r
+       def __init__( self ):\r
+\r
+        # Initialize topology\r
+               Topo.__init__( self )\r
+\r
+               # Add hosts and switches\r
+               l1 = self.addHost( 'L1' )\r
+               \r
+               \r
+               l20 = self.addHost( 'L20' )\r
+               \r
+\r
+               r1 = self.addHost( 'R1' )\r
+               \r
+\r
+               s1 = self.addSwitch( 's1' )\r
+               s2 = self.addSwitch( 's2' )\r
+               s3 = self.addSwitch( 's3' )\r
+                s4 = self.addSwitch( 's4' )\r
+        # Add links\r
+               self.addLink( l1, s1 )\r
+               \r
+\r
+               self.addLink( l20, s3 )\r
+               \r
+\r
+               self.addLink( r1, s2 )\r
+               \r
+\r
+               self.addLink( s1, s4 )\r
+                self.addLink( s2, s4 )\r
+                self.addLink( s3, s4 )\r
+\r
+\r
+#topos = { 'poctopo': ( lambda: PocTopo() ) }\r
+\r
+if __name__ == '__main__':\r
+       setLogLevel( 'info' )\r
+\r
+       os.system('ovs-vsctl set-manager ptcp:6640')\r
+\r
+       defaultIF1 = 'enp0s3'\r
+       defaultIF2 = 'enp0s8'\r
+        defaultIF3 = 'enp0s9'\r
+    #    defaultIF4 = 'enp0s10'\r
+       defaultControllerIP = '127.0.0.1'\r
+       defaultInputSwitch = 0\r
+       defaultOutputSwitch = 1\r
+\r
+    # try to get hw intfs from the command line; by default, use eth1 and eth2\r
+       odl_controller_ip = sys.argv[ 1 ] if len( sys.argv ) > 1 else defaultControllerIP\r
+       intfName = sys.argv[ 2 ] if len( sys.argv ) > 2 else ""\r
+       intfName2 = sys.argv[ 3 ] if len( sys.argv ) > 3 else ""\r
+        intfName3 = sys.argv[ 4 ] if len( sys.argv ) > 4 else ""\r
+        intfName4 = sys.argv[ 5 ] if len( sys.argv ) > 5 else ""\r
+       input_switch0 = 0\r
+       input_switch1 = 1\r
+        input_switch2 = 2\r
+     #   input_switch3 = 3\r
+\r
+       OVSSwitch13 = partial( OVSSwitch, protocols='OpenFlow13' )\r
+\r
+       topo = PocTopo( )\r
+\r
+       net = Mininet(topo, switch=OVSSwitch13, controller=partial( RemoteController, ip=odl_controller_ip, port=6633 ) )\r
+\r
+       if intfName != "":\r
+               switch = net.switches[ input_switch0 ]\r
+               info( '*** Adding hardware interface', intfName, 'to switch', switch.name, '\n' )\r
+               Intf( intfName, node=switch )\r
+\r
+       if intfName2 != "":\r
+               switch2 = net.switches[ input_switch1 ]\r
+               info( '*** Adding hardware interface', intfName2, 'to switch', switch2.name, '\n' )\r
+               Intf(intfName2, node=switch2)\r
+\r
+        if intfName3 != "":\r
+                switch3 = net.switches[ input_switch2 ]\r
+                info( '*** Adding hardware interface', intfName3, 'to switch', switch3.name, '\n' )\r
+                Intf(intfName3, node=switch3)\r
+        \r
+\r
+       net.start()\r
+\r
+#      os.system('ovs-ofctl -O OpenFlow13 del-flows s'+str(input_switch+1))\r
+#      os.system('ovs-ofctl -O OpenFlow13 del-flows s'+str(output_switch+1))\r
+       CLI( net )\r
+       net.stop()\r