例如
现在有 5 个机房 每个机房有 3 台机器
每个机房的 IP 段是/24 相同的
要求单独点对点互联所有机房!
并且点对点时可以设置各个不同连接机房的延迟和宽带限速
例如 A => B 延迟 30ms 宽带 80ms
借助工具写了个这样的 但是不行:
from mininet.net import Mininet
from mininet.node import Node
from mininet.link import Link
from mininet.cli import CLI
from mininet.log import setLogLevel, info
class LinuxRouter(Node):
"A Node with IP forwarding enabled."
def config(self, **params):
super(LinuxRouter, self).config(**params)
# Enable forwarding on the router
self.cmd('sysctl net.ipv4.ip_forward=1')
def terminate(self):
self.cmd('sysctl net.ipv4.ip_forward=0')
super(LinuxRouter, self).terminate()
def create_network():
net = Mininet(topo=None, build=False)
# Create routers for each room
routers = [net.addHost('r%s' % i, cls=LinuxRouter, ip='10.0.%s.1/24' % i) for i in range(1, 6)]
# Create switch and hosts for each room, and connect them
for i in range(1, 6):
switch = net.addSwitch('s%s' % i)
net.addLink(switch, routers[i-1]) # Connect switch to router
for j in range(1, 3):
host = net.addHost('h%s%s' % (i, j), ip='10.0.%s.%s/24' % (i, 10+j), defaultRoute='via 10.0.%s.1' % i)
net.addLink(host, switch)
# Manually create links between routers to simulate the point-to-point connections
for i in range(len(routers)-1):
net.addLink(routers[i], routers[i+1])
net.build()
net.start()
CLI(net)
net.stop()
if __name__ == '__main__':
setLogLevel('debug')
create_network()