【发布时间】:2020-06-15 03:38:14
【问题描述】:
我正在尝试设置一个 mininet 拓扑,该拓扑由一个连接到三个主机的交换机组成。下面的代码做同样的事情,并且很好地提出了拓扑。但我明白了,host.cmd 都没有生效。如果我将命令复制粘贴到设备控制台上,那么它们可以正常工作。
下面的命令不起作用:
h1.cmd('ifconfig lo 122.1.1.1 netmask 255.255.255.255')
类似地,下面的命令配置的是mac,而不是接口上的IP。
link_h1s1.intf1.config(ip='100.168.0.1/24', mac = '00:00:00:00:00:01')
如果特定于主机,看起来像问题。 在程序结束时,我粘贴输出拓扑。
请有使用 mininet 的专家帮忙
from mininet.net import Mininet
from mininet.node import Controller, OVSKernelSwitch, UserSwitch, DefaultController
from mininet.cli import CLI
from mininet.log import setLogLevel, info
from mininet.link import Link, TCLink
#reference : http://intronetworks.cs.luc.edu/current/html/mininet.html
def topology():
net = Mininet()
#Add Controller to the Topology
c0 = net.addController( 'c0',
controller=DefaultController)
# Add hosts and switches
h1 = net.addHost( 'h1')
h2 = net.addHost( 'h2')
h3 = net.addHost( 'h3')
#Add L2 Switch
s1 = net.addSwitch( 's1')
#Add links
link_h1s1 = net.addLink( h1, s1 , intfName1 = 'h1-s1', intfName2 = 's1-h1')
link_h2s1 = net.addLink( h2, s1 , intfName1 = 'h2-s1', intfName2 = 's1-h2')
link_h3s1 = net.addLink( h3, s1 , intfName1 = 'h3-s1', intfName2 = 's1-h3')
link_h1s1.intf1.config(ip='100.168.0.1/24', mac = '00:00:00:00:00:01')
link_h2s1.intf1.config(ip='100.168.0.2/24', mac = '00:00:00:00:00:02')
link_h3s1.intf1.config(ip='100.168.0.3/24', mac = '00:00:00:00:00:03')
link_h1s1.intf2.config(ip=None, mac = '00:00:00:00:00:04')
link_h2s1.intf2.config(ip=None, mac = '00:00:00:00:00:05')
link_h3s1.intf2.config(ip=None, mac = '00:00:00:00:00:06')
#h1.setIP('122.1.1.1/32')
h1.cmd('ifconfig h1-s1 100.168.0.1 netmask 255.255.255.0')
h2.cmd('ifconfig h2-s1 100.168.0.2 netmask 255.255.255.0')
h3.cmd('ifconfig h3-s1 100.168.0.3 netmask 255.255.255.0')
#Setting lo IP addresses
h1.cmd('ifconfig lo 122.1.1.1 netmask 255.255.255.255')
h2.cmd('ifconfig lo 122.1.1.2 netmask 255.255.255.255')
h3.cmd('ifconfig lo 122.1.1.3 netmask 255.255.255.255')
#finished building the Topology
net.build()
#Star the Controller
#c0.start()
#start the Switches
#s1.start( [c0] )
net.start()
print "*** Running CLI"
CLI( net )
print "*** Stopping network"
net.stop()
if __name__ == '__main__':
setLogLevel( 'info' )
topology()
主机 h1 的输出
mininet> h1 ifconfig
h1-s1 Link encap:Ethernet HWaddr 00:00:00:00:00:01
inet addr:10.0.0.1 Bcast:10.255.255.255 Mask:255.0.0.0 << default IP 10.1.1.1/8 is taken
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.255.255.255 << Default loopback addr is taken
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
【问题讨论】:
标签: networking tcp routes mininet