1-2 Mininet启动参数以及应用实践

一、原理
前面我们已经介绍过Mininet的安装以及可视化界面等功能详情见:1 Mininet可视化网络虚拟编辑界面与导出python代码。为了更好地使用Mininet,以下是一些常用的Mininet启动参数:

1 --topo 参数

–topo: 指定拓扑类型。例如,–topo single,3表示使用单交换机和3个主机的拓扑。常见的属性参数还有:

–topo linear, n: 创建线性拓扑,其中n是主机数量。例如,–topo linear,3表示创建一个线性拓扑,包含3个主机和一个交换机,主机按顺序连接。

–topo single, n: 创建单交换机拓扑,其中n是主机数量。例如,–topo single,4表示创建一个单交换机拓扑,包含4个主机和一个交换机。

–topo tree, depth: 创建树状拓扑,其中depth是树的深度。例如,–topo tree,2表示创建一个深度为2的树状拓扑。

–topo custom, file: 使用自定义拓扑文件创建拓扑。即通过指定自定义拓扑文件的路径来创建自定义拓扑。例如,–topo custom,topo.py表示使用名为topo.py的自定义拓扑文件来创建拓扑。

2 --controller参数

–controller: 指定控制器类型和地址。例如,–controller=remote,ip=127.0.0.1,port=6653表示使用远程控制器,IP地址为127.0.0.1,端口为6653,当然ip和port的具体取值要根据环境中对应的值来设置

3–switch参数

–switch: 指定交换机类型。例如,–switch ovs表示使用Open vSwitch交换机。ovs: 使用Open vSwitch作为交换机。这是一种使用OpenFlow协议进行编程的灵活虚拟交换机。当没有指定–switch参数时,默认的交换机类型是ovsk,即使用Open vSwitch Kernel模式作为交换机

ivs: 使用Indigo Virtual Switch作为交换机。Indigo Virtual Switch是一种基于OpenFlow的虚拟交换机。

4 --host参数

–host: 指定主机类型。例如,–host cfs表示使用基于CFS(Completely Fair Scheduler)的主机。除了cfs,Mininet还提供了其他一些可用的主机类型(default: 默认,使用Linux当前宿主主机;CPULimitedHost: 使用cgroups限制主机的CPU使用率;Docker: 在Mininet主机中运行Docker容器;
UserSwitchHost: 将主机作为Open vSwitch交换机的一个端口,可以根据实际项目背景选择)

5 --link参数

–link: 指定链路类型和属性。例如,–link tc,bw=10,delay=10ms表示使用TC(Traffic Control)链路,带宽为10 Mbps,延迟为10毫秒。常见的链路属性参数还有:

delay: 设置链路的延迟,可以指定为固定延迟或随机延迟。例如,–link delay=10ms表示设置链路的固定延迟为10毫秒。

bw: 设置链路的带宽,可以指定为固定带宽或随机带宽。例如,–link bw=10表示设置链路的固定带宽为10 Mbps。

loss: 设置链路的丢包率。例如,–link loss=10%表示设置链路的丢包率为10%。
corrupt: 设置链路的损坏率(corruption rate)。例如,–link corrupt=0.5%表示设置链路的损坏率为0.5%。
jitter: 设置链路的抖动(jitter),即延迟的变化量。例如,–link jitter=5ms表示设置链路的抖动为5毫秒。

6 --mac参数

–mac: 指定主机的MAC地址。例如,–mac选项可以在主机之间分配唯一的MAC地址。如–mac=00:00:00:00:00:01

7 --ip参数如

–ip: 指定主机的IP地址。例如,–ip选项可以为主机分配静态IP地址信息,如–ip=192.168.0.1/24 --gateway=192.168.0.254。

8 --innamespace

–innamespace: 将主机放置在单独的网络命名空间中。

9–custom参数

–custom: 使用自定义脚本启动拓扑。例如,–custom my_topology.py表示使用名为my_topology.py的自定义脚本来启动拓扑

二、应用实践
1 创建一个txt文件,拷贝以下以下代码,然后另存为topo1.txt


from mininet.topo import Topo
from mininet.net import Mininet

class MyTopology(Topo):
    def build(self):
        # 创建交换机
        switch = self.addSwitch('s1')

        # 创建主机
        host1 = self.addHost('h1')
        host2 = self.addHost('h2')

        # 创建链路
        self.addLink(host1, switch)
        self.addLink(host2, switch)

topo = MyTopology()
net = Mininet(topo)
net.start()
net.pingAll()
net.stop()

2 把topo1.py 拷贝到某个目录下,如(本文存放于VM共享文件夹,其在ubuntu中的路径/mnt/hgfs/vmshare,如图1.因此对应的命令为:
sudo mn --custom /mnt/hgfs/vmshare/topo1.py

该命令使用存于共享磁盘上的拓扑文件topo1.py来启动mn,启动后的效果如图2所示1-2 Mininet启动参数以及应用实践_第1张图片
图1 物理机上的共享文件夹中的文件
1-2 Mininet启动参数以及应用实践_第2张图片
图2 启动以及测试

注意以上各个参数默认情况下都可以省略,即,直接用:sudo mn 即可启动。这种情况下所有参数的值用默认值。
特别注意的是在mn启动环境中使用参数时,如 sudo mn --custom /mnt/hgfs/vmshare/topo1.py --link tc,bw=10,delay=10ms
以上命令是对拓扑中的所有链路统一设置。如果只针对网路拓扑中的某条链路进行针对性的设置,则需要在拓扑定义中进行代码设置。如

from mininet.topo import Topo
from mininet.net import Mininet
from mininet.link import TCLink

class MyTopology(Topo):
    def build(self):
        # 创建交换机
        switch = self.addSwitch('s1')

        # 创建主机
        host1 = self.addHost('h1')
        host2 = self.addHost('h2')

        # 创建链路,并设置带宽和延迟
        self.addLink(host1, switch, cls=TCLink, bw=10, delay='100ms')  # 设置带宽为10 Mbps,延迟为100秒
        self.addLink(host2, switch)  # 使用默认属性

topo = MyTopology()
net = Mininet(topo)
net.start()
net.pingAll()
net.stop()

1-2 Mininet启动参数以及应用实践_第3张图片
测试延时变化

你可能感兴趣的:(软件定义安全,python3,python)