Mininet应用实践
实验环境
- 虚拟机软件(vmware workstation)
- 装有mininet、python2 的Ubuntu20.04
实验目的
- 能够运用mininet可视化工具创建网络拓扑结构
- 能够运用mininet交互界面创建网络拓扑结构
- 能够运用python脚本构建网络拓扑结构
实验内容
- 基础技能:
- 用可视化工具miniedit创建一个网络拓扑;
- 命令行创建拓扑;
- 交互式界面创建主机、交换机等
- 对节点间进行ping测试
- 进阶技能:
- 编写python脚本完成对于计算机网络拓扑结构的构建
实验步骤
-
可视化工具创建拓扑
- 进入
/mininet/examples
目录下,右键在终端打开
- 在终端输入
python2 miniedit.py
- 创建简单拓扑
- 进入
-
命令行创建拓扑
(1) 最小的网络拓扑,一个交换机下挂两个主机。sudo mn --topo minimal
(2) line线性拓扑,每个交换机连接一个主机,交换机间相连接。本例:3个交换机,2个主机。
sudo mn --topo linear,3,2
(3) 单一拓扑,每个主机都连接到同一个交换机上。本例:3个主机,一个交换机。
sudo mn --topo single,3
(4) tree 树形拓扑,定义深度和扇出形成基于树的拓扑。本例:深度3,扇出2。
sudo mn --topo=tree,3,2
-
交互式界面创建主机、交换机等
- 通过命令
sudo mn
,创建出最简单的拓扑结构也就是一个交换机下面直接连接两个主机,并且产生 mininet 的交互界面。 - 输入
py net.addHost('主机名')
为拓扑结构添加主机。 - 输入
py net.addSwitch('交换机名称')
为拓扑结构添加交换机。 - 查看拓扑结构中存在的网络设备,观察设备是否被成功添加。
- 通过命令
-
对节点间进行ping测试
pingall
查看所有主机之间的通信状况。h1 ping -c4 h2
: h1 向 h2 发送四个包,测试 h1 与 h2 之间的通信
-
编写python脚本完成对于计算机网络拓扑结构的构建
- 编写 Python 脚本,定义如下拓扑:
i. topo linear,4
ii. topo single,3from mininet.topo import LinearTopo from mininet.net import Mininet linner4 = LinearTopo(4) net = Mininet(topo=linner4) net.start() net.pingAll() net.stop()
iii. topo tree,depth=2,fanout=2from mininet.topo import SingleSwitchTopo from mininet.net import Mininet single3 = SingleSwitchTopo(k=3) net = Mininet(topo=single3) net.start() net.pingAll() net.stop()
iv. 1 个交换机,2 个主机,并且赋予主机 IP 地址。from mininet.topolib import TreeTopo from mininet.net import Mininet tree22 = TreeTopo(depth=2, fanout=2) net = Mininet(topo=Tree22) net.start() net.pingAll() net.stop()
from mininet.net import Mininet net = Mininet() # Creating nodes in the network c0 = net.addController() h0 = net.addHost('h0') s0 = net.addSwitch('s0') h1 = net.addHost('h1') # Creating links between nodes in network net.addLink(h0, s0) net.addLink(h1, s0) # configurate IP address in interfaces h0.setIP('10.0.0.1', 24) h1.setIP('10.0.0.1', 24) net.start() net.pingAll() net.stop()
- 编写 Python 脚本,对网络性能进行限制。
from mininet.net import Mininet from mininet.node import CPULimitedHost from mininet.link import TCLink net = Mininet(host=CPULimitedHost, link=TCLink) # Creating nodes in the network c0 = net.addController() s0 = net.addSwitch('s0') h0 = net.addHost('h0') h1 = net.addHost('h1', cpu=0.5) h2 = net.addHost('h2', cpu=0.5) # Creating links between nodes in network net.addLink(s0, h0, bw=10, delay='5ms',max_queue_size=1000, loss=10, use_htb=True) net.addLink(s0, h1) net.addLink(s0, h2) net.start() net.pingAll() net.stop()
- 编写 Python 脚本,定义如下拓扑: