mininet编程注意点

代码

  • 区分constructor and object

    #!/usr/bin/python                                                                            
                                                                                                 
    from mininet.topo import Topo
    from mininet.net import Mininet
    from mininet.util import dumpNodeConnections
    from mininet.log import setLogLevel
    
    class SingleSwitchTopo(Topo):
        "Single switch connected to n hosts."
        def build(self, n=2):
            switch = self.addSwitch('s1')
            # Python's range(N) generates 0..N-1
            for h in range(n):
                host = self.addHost('h%s' % (h + 1))
                self.addLink(host, switch)
    
    def simpleTest():
        "Create and test a simple network"
        topo = SingleSwitchTopo(n=4)
        net = Mininet(topo)
        net.start()
        print( "Dumping host connections" )
        dumpNodeConnections(net.hosts)
        print( "Testing network connectivity" )
        net.pingAll()
        net.stop()
    
    if __name__ == '__main__':
        # Tell mininet to print useful information
        setLogLevel('info')
        simpleTest()
    

    在这里插入图片描述

    一个简单的想法就是,python里面没有 一个类属于另一个类的说法,所以addHost和addLink之类的,前面有self.的,说明这是个构造函数,而不是一个类名


    不过,这里Mininet也是一个构造函数而不是类名 – 要搞清楚
    总之,除了你自己定义的类之外,其他所有网络元素都是一个构造函数,而不是一个instance/object

  • 继承Topo类的时候,mininet2.0之后的版本都是覆盖build类,而不是__init__()

    python不是不可以支持子类覆盖父类函数么?

  • mn命令行相关

  • 使用mininet调用系统进程。reference见官网wiki

架构特性

  • mininet的host与所在服务器共享文件系统
    • 共享的是所在服务器的/etc目录,所以如果要对每个host有不一样的系统配置,可以指定配置放在不用位置(详见官网介绍),否则会冲突。

demo代码学习

code summary is in this github repo

  • consoles.py

    此示例创建一个控制台窗口网格(a grid of console windows),每个节点一个,并允许与每个控制台进行交互和监控,包括图形监控。

  • control.py

    这个例子展示了如何通过实际创建两个 Mininet 对象来对控制网络和数据网络进行建模。

猜你喜欢

转载自blog.csdn.net/Hesy_H/article/details/121538215
今日推荐