SDN上机第1次作业

巧了我就是萌 提交于 2019-12-03 02:20:22

1. 安装轻量级网络仿真工具Mininet

使用github源安装

安装步骤:

  • clone github
  • 使用 sudo ./install.sh -a 命令安装
  • 安装完成

    2. 用字符命令搭建拓扑,要求写出命令

    • 第一题
      sudo mn --topo linear,4
    • 第二题
      sudo mn --topo tree, fanout=3,depth=2

      3. 利用可视化工具搭建拓扑,并要求支持OpenFlow 1.0 1.1 1.2 1.3,设置h1(10.0.0.10)、h2(10.0.0.11)、h3(10.0.0.12),拓扑搭建完成后使用命令验证主机ip,查看拓扑端口连接情况。

      • 图形界面
      • 支持OpenFlow 1.0 1.1 1.2 1.3,设置h1(10.0.0.10)、h2(10.0.0.11)、h3(10.0.0.12)
      • 单击run
      • net命令查看拓扑

      • 使用命令验证主机ip,查看拓扑端口连接情况

        4. 利用Python脚本完成一个Fat-tree型的拓扑(交换机和主机名需与图中一致,即s1~s6,h1~h8,并且链路正确,请给出Mininet相关截图

        • 截图
        • 代码
        • from mininet.topo import Topo
          from mininet.net import Mininet
          from mininet.node import RemoteController,CPULimitedHost
          from mininet.link import TCLink
          from mininet.util import dumpNodeConnections
           
          class MyTopo( Topo ):
              "Simple topology example."
           
              def __init__( self ):
                  "Create custom topo."
           
                  # Initialize topology
                  Topo.__init__( self )
                  L1 = 2
                  L2 = L1 * 2 
                  L3 = L2
                  c = []
                  a = []
                  e = []
                    
                  # add core ovs  
                  for i in range( L1 ):
                          sw = self.addSwitch( 's{}'.format( i + 1 ) )
                          c.append( sw )
              
                  # add aggregation ovs
                  for i in range( L2 ):
                          sw = self.addSwitch( 's{}'.format( L1 + i + 1 ) )
                          a.append( sw )
              
                  # add links between core and aggregation ovs
                  for i in range( L1 ):
                          sw1 = c[i]
                          for sw2 in a[i/2::L1/2]:
                                  self.addLink( sw2, sw1 )
           
                  #add hosts and its links with edge ovs
                  count = 1
                  for sw1 in a:
                          for i in range(2):
                              host = self.addHost( 'h{}'.format( count ) )
                              self.addLink( sw1, host )
                              count += 1
          topos = { 'mytopo': ( lambda: MyTopo() ) }