利用mininet构建下面的拓扑,并测试能否ping通:
在这里插入图片描述路由器会自动生成本路由器激活端口所在网段的路由条目,即直接路由,因此要让两主机之间能ping通,只要造A, B中分别添加静态路由即可 (当然还要在两主机之间添加默认路由)。
上述拓扑的代码如下 (构建四个主机h0, h1, h2, h3, 最后其中h1, h2作为路由器) :

#!/usr/bin/python

from mininet.net import Mininet
from mininet.node import Controller, RemoteController
from mininet.cli import CLI
from mininet.log import setLogLevel, info
from mininet.link import Link, TCLink
from mininet.topo import Topo
import logging
import os

class HostTopo(Topo):

    def create_nodes(self, length):
        for i in range(0, length):
            self.host_list.append(self.addHost('h' + str(i)))

    def create_links(self, length):
        for i in range(0, length-1):
            self.addLink(self.host_list[i], self.host_list[i+1])

    def __init__(self, length):
        logger.debug("Class SimpleTopo init")
        self.host_list = []
        Topo.__init__(self)

        self.create_nodes(length)
        self.create_links(length)

def create_topo(length):
    topo = HostTopo(length)
    net = Mininet(topo = topo, link = TCLink, controller = None)
    net.start()
    CLI(net)
    net.stop()

if __name__ == '__main__':
    logger = logging.getLogger(__name__)
    setLogLevel('info')
    if os.getuid() != 0:
        logger.debug("You are NOT root")
    elif os.getuid() == 0:
        create_topo(4)
        

先给每个接口配置相应的IP地址:
在这里插入图片描述
添加路由:
在这里插入图片描述
dev interface, interface是指本路由器 (不是相连的另一个路由器) 转发分组所用的接口,gw Getway, Getway是指相连的另一个路由器的接口IP地址。

接下来给h1, h2启动ipv4转发功能:
在这里插入图片描述
测试h0 -> h3, h3 -> h0:
在这里插入图片描述
测试成功。

小结

1 . 直接路由在给接口分配IP地址的时候就自动生成直连路由了,静态路由需要手动配置。
2 . 添加路由的时候,interface, Getway 指代的对象要清楚。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐