--- /dev/null
+#!/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