最近在做靜態(tài)路由轉(zhuǎn)發(fā)實(shí)驗(yàn)(計(jì)算機(jī)網(wǎng)絡(luò)課程實(shí)驗(yàn)),實(shí)驗(yàn)課程給出了一定的代碼,不過(guò)老師在實(shí)驗(yàn)上挖了一些坑需要我們填補(bǔ)。
先貼出實(shí)驗(yàn)代碼:
#!/usr/bin/python
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.cli import CLI
class RouterTopo(Topo):
def build(self):
h1 = self.addHost('h1')
h2 = self.addHost('h2')
h3 = self.addHost('h3')
r1 = self.addHost('r1')
self.addLink(h1, r1)
self.addLink(h2, r1)
self.addLink(h3, r1)
if __name__ == '__main__':
topo = RouterTopo()
net = Mininet(topo = topo, controller = None)
h1, h2, h3, r1 = net.get('h1', 'h2', 'h3', 'r1')
h1.cmd('ifconfig h1-eth0 10.0.1.11/24')
h2.cmd('ifconfig h2-eth0 10.0.2.22/24')
h3.cmd('ifconfig h3-eth0 10.0.3.33/24')
h1.cmd('route add default gw 10.0.1.1')
h2.cmd('route add default gw 10.0.2.1')
h3.cmd('route add default gw 10.0.3.1')
for h in (h1, h2, h3):
h.cmd('./scripts/disable_offloading.sh')
h.cmd('./scripts/disable_ipv6.sh')
r1.cmd('ifconfig r1-eth0 10.0.1.1/24')
r1.cmd('ifconfig r1-eth1 10.0.2.1/24')
r1.cmd('ifconfig r1-eth2 10.0.3.1/24')
r1.cmd('./scripts/disable_arp.sh')
r1.cmd('./scripts/disable_icmp.sh')
r1.cmd('./scripts/disable_ip_forward.sh')
net.start()
CLI(net)
net.stop()
在Ubuntu下運(yùn)行該router_topo.py程序時(shí),使用命令 sudo mn --custom router_topo.py --topo router 出現(xiàn)了 invalid topo name 錯(cuò)誤。截圖如下:
后面查看stackflow后解決了該問(wèn)題。
在class RouterTopo定義前添加一行 TOPOS = {'router':(lambda:RouterTopo())}
這樣就可以解決了,注意不要縮進(jìn)。成功截圖如下:
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
