-
Notifications
You must be signed in to change notification settings - Fork 1
/
demo4.py
92 lines (67 loc) · 3.17 KB
/
demo4.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/usr/bin/python
'This example shows how to work with Radius Server'
from mininet.net import Mininet
from mininet.node import Controller, OVSKernelAP, OVSSwitch, OVSAP
from mininet.cli import CLI
from mininet.log import setLogLevel
from mininet.link import TCLink
import os
import Parse
################################################################################
def emptynet():
"Create a mininet SDN with custom flow tables."
#host,port,action,protocol = ACL()
x,y = Parse.ACL()
print('Inbound access entry: '+str(x))
print('////////////////////////')
print('Outbound access entry: '+str(y))
net = Mininet( controller=Controller, link=TCLink, accessPoint=OVSAP, switch=OVSSwitch, enable_wmediumd=True, enable_interference=False )
print( '*** Adding controller\n' )
c0 = net.addController( 'c0', controller=Controller, ip='127.0.0.1', port=6633 ) # Disable controller to create flows manually
print( '*** Adding Nodes\n' )
sta1 = net.addStation( 'sta1', ip='192.168.0.1', mac = '00:00:00:00:00:01', position='130,140,0' ) #Desktop connected to home network
sta2 = net.addStation( 'sta2', ip='192.168.0.2', mac = '00:00:00:00:00:02', position='150,140,0' ) #IoT Device LED Light connected to home network
sta3 = net.addStation( 'sta3', ip=x[0], mac ='00:00:00:00:00:03', position='170,140,0' ) ####### IP address allowed for communication
print( '*** Adding accesspoints\n' )
ap1 = net.addAccessPoint( 'ap1', ssid='simplewifi1', mode='a', channel='36', position='140,120,0' )
ap2 = net.addAccessPoint( 'ap2', ssid='simplewifi1', mode='a', channel='36', position='150,100,0' )
ap3 = net.addAccessPoint( 'ap3', ssid='simplewifi1', mode='a', channel='36', position='160,120,0' )
print("*** Adding switch\n")
s4 = net.addSwitch( 's4', position='150,120,0' )
print "*** Configuring Propagation Model"
net.propagationModel("logDistancePropagationLossModel", exp=3.5)
print "*** Configuring wifi nodes"
net.configureWifiNodes()
print( '*** Creating links\n' )
net.addLink( s4, ap1 )
net.addLink( s4, ap2 )
net.addLink( s4, ap3 )
net.addLink( sta1, ap1 )
net.addLink( sta2, ap2 )
net.addLink( sta3, ap3 )
print( '*** Starting network\n')
net.build()
c0.start()
ap1.start( [c0] )
ap2.start( [c0] )
ap3.start( [c0] )
s4.start( [c0] )
sta3.cmdPrint('route add default gw 128.59.105.254 sta3-wlan0')
sta3.cmdPrint('arp -s 128.59.105.254 00:00:00:00:33:33')
sta1.cmdPrint('route add default gw 192.168.0.254 sta1-wlan0')
sta1.cmdPrint('arp -s 192.168.0.254 00:00:00:00:00:11:11')
sta2.cmdPrint('route add default gw 192.168.0.254 sta2-wlan0')
sta2.cmdPrint('arp -s 192.168.0.254 00:00:00:00:00:11:11')
sta3.cmdPrint('sudo python -m SimpleHTTPServer 80 &')
os.system("more tables.txt")
os.system("ovs-ofctl add-flows s4 tables.txt")
print "*** Building graph"
net.plotGraph(max_x=300, max_y=300)
print( '*** Running CLI\n' )
CLI( net )
print( '*** Stoping network' )
net.stop()
if __name__ == '__main__':
setLogLevel( 'info' )
#topology()
emptynet()