第一次sdn上机实验

一.Mininet的安装路径

 

3.使用Mininet可视化工具,生成下图所示的拓扑

4.使用Mininet的命令行生成如下拓扑:

a.3台交换机,每个交换机连接1台主机,3台交换机连接成一条线。

b.3台主机,每个主机都连接到同一个交换机上

5.在4 b)的基础上,在Mininet交互界面上新增1台主机

6.编辑(一)中第3步保存的Python脚本,添加如下网络性能限制,生成拓扑

进阶要求

代码如下

from mininet.cli import CLI

from mininet.topo import Topo

from mininet.net import Mininet

from mininet.node import CPULimitedHost, RemoteController, Controller

from mininet.link import TCLink

from mininet.util import dumpNodeConnections

from mininet.log import setLogLevel





class MyTopo(Topo):

    def __init__(self):

        Topo.__init__(self)

        L1 = 2

        L2 = 4

        L3 = 8

        c = []

        a = []

        b = []

        for i in range(L1):

            sw = self.addSwitch('s{}'.format(i + 1))

            a.append(sw)

        for i in range(L2):

            sw = self.addSwitch('s{}'.format(L1 + i + 1))

            b.append(sw)

        for i in range(L3):

            sw = self.addSwitch('s{}'.format(L1 + L2 + i + 1))

            c.append(sw)

        for i in range(L1):

            sw1 = a[i]

            for sw2 in b:

                self.addLink(sw2, sw1)

        for i in range(L2):

            sw1 = b[i]

            if i < L2 / 2:

                for sw2 in c[0:L3 // 2]:

                    self.addLink(sw1, sw2)

            else:

                for sw2 in c[L3 // 2:L3]:

                    self.addLink(sw1, sw2)



        L4 = 16

        d = []

        for i in range(L4):

            h = self.addHost('h{}'.format(i + 1))

            d.append(h)



        for i in range(L3):

            sw1 = c[i]

            h1 = d[i * 2]

            h2 = d[i * 2 + 1]

            self.addLink(sw1, h1)

            self.addLink(sw1, h2)





topos = {'mytopo': (lambda: MyTopo())}





def simpleTest():

    topo = MyTopo()

    net = Mininet(topo,

                  build=False,

                  ipBase='10.0.0.0/8')

    c0 = net.addController('c0', controller=Controller, protocal='tcp', port=6633)

    c0.start()

    net.build()

    dumpNodeConnections(net.hosts)

    CLI(net)

    net.stop()





if __name__ == '__main__':

    setLogLevel('info')

    simpleTest()

运行截图:
image

image

image

个人总结

因为是第一次接触这类软件,在安装上就出现许多问题好在有同学的帮助。还有些命令不懂,在第一次运行mininet时python的命令使用不了,最后通过老师文档里的方法解决了这个问题。在用Mininet命令行创建拓扑时,忘记使用sudo mn -c清除原来的拓扑,导致创建失败。通过这次的实验,我还学习到了如何使用Markdown编写博客,在经过了自己查找资料、请教同学后,不仅解决了问题,还从中学习到许多新的知识,也为之后的学习打下了基础。虽然在实验的过程中遇到了困难,但是通过自己的努力解决这些困难后,也增强了自己的信心,希望在之后学习中能学习到更多相关的知识,期待之后的每次实验。

 

 

posted @ 2021-09-07 16:15    阅读(56)  评论(0)    收藏  举报