SDN实验一:mininet应用实践

此为中国大学MOOC上温州大学所开设的SDN软件定义网络课程配套实验。

镜像地址:https://pan.baidu.com/s/1qYN_MtUboPmruHda1DgrTA  提取码:mhfi

实验指导书地址:链接:https://pan.baidu.com/s/1XpDrV2car4qH-sXJq1zbPA  提取码:s8un

实验步骤:

1、用可视化界面创建拓扑

(1)下载镜像源并装入VMware虚拟机

(2)进入mininet/examples文件夹,输入sudo py miniedit.py

 

 (3)创建简单拓扑

    

      (4)在"Edit"->"Preference"可以配置支持的OpenFlow版本、默认终端、默认交换机等参数。

         

  2、用命令行创建拓扑

    (1)拓扑已预置好几种类型,各类型介绍可参考:

    https://blog.csdn.net/wuliangtianzu/article/details/82689347

    (2)命令

类型 命令 参数说明
最小拓扑 sudo mn --topo minimal 1台交换机,底下连接2台主机
单交换机 sudo mn --topo single,5 1台交换机,底下挂5台主机,呈放射状
线性拓扑 sudo mn --topo linear,3,2 线性拓扑,交换机个数,每台交换机下主机数
树形拓扑 sudo mn --topo tree,3,2 树形拓扑,层数,每层下交换机(主机)个数 

 

    例如创建树形拓扑:

      3、用python程序创建拓扑

(1)官方api说明:http://mininet.org/api/functions_a.html#index_a

(2)例子:

from mininet.net import Mininet
from mininet.node import CPULimitedHost
from mininet.link import TCLink
net =Mininet(host=CPULimitedHost, link=TCLink)
c0 = net.addController()
s0 = net.addSwitch('s0')
h0 = net.addHost('h0')
h1 = net.addHost('h1', cpu=0.5)
h2 = net.addHost('h1', cpu=0.5)
net.addLink(s0, h0, bw=10, delay='5ms',max_queue_size=1000, loss=10)//带宽10M,延时5ms,最大队列大小为1000,损耗率为10%
net.addLink(s0, h1)
net.addLink(s0, h2)
net.start()
net.pingAll()
net.stop()

使用sudo python mytopo.py运行

 ping测试成功。

(3)主要api说明

  1)addHost(self,name,cls=None,params)

  •  Name:加入的节点名字
  •     Cls:custom host class
  •     Params:可选参数
    • cpu: desired overall system CPU fraction
    • cores: (real) core(s) this host can run on

  可选参数见mininet/mininet/node.py中的config()

  例如:h1 = net.addHost('h1', cpu=0.5)

2)addLink(self,node1,node2,source_port,dest_port,cls,params)

  •  Node1:节点1
  •     Node2:节点2
  •     Sour_port(可选):源端口
  •     Dest_port(可选):目的端口
  •     Cls(可选):Link class
  •     Params:可选参数,具体见mininet/mininet/link.py的config()
    •    bw: bandwidth in b/s (e.g. '10m')
    •    delay: transmit delay (e.g. '1ms' )
    •     jitter: jitter (e.g. '1ms')
    •     loss: loss (e.g. '1%' )
    •     gro: enable GRO (False)
    •     txo: enable transmit checksum offload (True)
    •     rxo: enable receive checksum offload (True)
    •     speedup: experimental switch-side bw option
    •     use_hfsc: use HFSC scheduling
    •     use_tbf: use TBF scheduling
    •      latency_ms: TBF latency parameter
    •      enable_ecn: enable ECN (False)
    •      enable_red: enable RED (False)
    •      max_queue_size: queue limit parameter for netem

   例子:

  self.addLink( node1, node2, bw=10, delay='5ms', max_queue_size=1000, loss=10, use_htb=True): adds a bidirectional link with bandwidth, delay and loss characteristics, with a maximum queue size of 1000 packets using the Hierarchical Token Bucket rate limiter and netem delay/loss emulator. The parameter bw is expressed as a number in Mbit; delay is expressed as a string with units in place (e.g. '5ms', '100us', '1s'); loss is expressed as a percentage (between 0 and 100); and max_queue_size is expressed in packets.

posted @ 2020-06-06 17:13  浩天107  阅读(1279)  评论(0编辑  收藏  举报