mininet / examples / natnet.py @ 18aab5b7
History  View  Annotate  Download (1.9 KB)
1 
#!/usr/bin/python


2  
3 
"""

4 
natnet.py: Example network with NATs

5 

6 

7 
h0

8 


9 
s0

10 


11 


12 
 

13 
nat1 nat2

14 
 

15 
s1 s2

16 
 

17 
h1 h2

18 

19 
"""

20  
21 
from mininet.topo import Topo 
22 
from mininet.net import Mininet 
23 
from mininet.nodelib import NAT 
24 
from mininet.log import setLogLevel 
25 
from mininet.cli import CLI 
26 
from mininet.util import irange 
27  
28 
class InternetTopo(Topo): 
29 
"Single switch connected to n hosts."

30 
def __init__(self, n=2, **opts): 
31 
Topo.__init__(self, **opts)

32  
33 
# set up inet switch

34 
inetSwitch = self.addSwitch('s0') 
35 
# add inet host

36 
inetHost = self.addHost('h0') 
37 
self.addLink(inetSwitch, inetHost)

38  
39 
# add local nets

40 
for i in irange(1, n): 
41 
inetIntf = 'nat%deth0' % i

42 
localIntf = 'nat%deth1' % i

43 
localIP = '192.168.%d.1' % i

44 
localSubnet = '192.168.%d.0/24' % i

45 
natParams = { 'ip' : '%s/24' % localIP } 
46 
# add NAT to topology

47 
nat = self.addNode('nat%d' % i, cls=NAT, subnet=localSubnet, 
48 
inetIntf=inetIntf, localIntf=localIntf) 
49 
switch = self.addSwitch('s%d' % i) 
50 
# connect NAT to inet and local switches

51 
self.addLink(nat, inetSwitch, intfName1=inetIntf)

52 
self.addLink(nat, switch, intfName1=localIntf, params1=natParams)

53 
# add host and connect to local switch

54 
host = self.addHost('h%d' % i, 
55 
ip='192.168.%d.100/24' % i,

56 
defaultRoute='via %s' % localIP)

57 
self.addLink(host, switch)

58  
59 
def run(): 
60 
"Create network and run the CLI"

61 
topo = InternetTopo() 
62 
net = Mininet(topo=topo) 
63 
net.start() 
64 
CLI(net) 
65 
net.stop() 
66  
67 
if __name__ == '__main__': 
68 
setLogLevel('info')

69 
run() 