1. 微型网介绍
Mininet 是一个网络模拟器, 更确切地说, 是一个网络模拟系统。 它在单个 Linux 内核上运行一系列终端主机、 开关、 路由器和链接。 它使用轻量级虚拟化来使单个系统看起来像一个完整的网络, 运行相同的内核、 系统和用户代码。 Mininet 主机就像一台真正的机器。 您可以测量它们的 SSH ( 如果您启动 sshd 并将网络连接到主机), 并运行任何程序( 包括在基 Linux 系统中安装的任何程序 ) 。 您可以运行一个程序, 通过发送固定速度和延迟的数据包接口, 来匹配两个( 低端) 网络的性能 。
2. 微型网的优点
快速启动一个简单的网络, 只需几秒钟。 可以创建一个自定义的顶端 : 单开关, 比互联网大一些 。 一个真正的程序可以运行 : 在 Linux 上运行的任何程序都可以从网络服务器运行到 TCP 窗口监视工具, 然后到 Wiresark 。 一个自定义的数据包可以转发 : 使用 OpenFlow 协议可以编程 Mininet 的开关。 一个在 Mininet 操作的自定义网络设计可以很容易地传输到硬件 OpenFlow 开关, 以实施线性数据包 。 一个膝上型、 服务器、 VM 可以运行 Mininet 。 其结果可以共享和复制 : 在包装后, 任何拥有计算机的人都可以操作 。 它可以很容易被使用 : 一个简单的 Python 脚本可以创建并运行 Mininet 实验 。
3. 微型网的缺陷
在单个系统上运行是容易的,但有资源限制,这些资源需要平衡,并在虚拟主机和开关之间共享。 Mininet 为所有虚拟主机使用单一的 Linux 内核; 这意味着不运行依赖 BSD、 Windows 或其他操作系统的软件。 Mininet 没有专用的 OpenFlow 控制器。 如果需要定制路径或交换行为, 则需要找到或开发具有所需功能的控件。 默认情况下, Mininet 网络会与局域网和互联网隔开; 默认情况下, 所有 Mininet 主机都会共享主机文件系统和 PID 空间 。 这意味着, 如果您正在运行一个需要配置在 / etc 中的保障程序, 可能必须小心不要错误地杀死错误的过程 。
4. 微型网使用实例
此处不描述详细的安装步骤。 appet- get 安装命令可以直接用于在 ubuntu 系统中安装 Mininet。 我使用的系统信息如下:
例1:创建以下网络结构并使网络连接起来:
1. 建立一个总机,3个主机,没有控制器 SDN 网络
root@tintin-virtual-machine:~# mn --topo=single,3 --mac --switch=ovsk --controller=remote*** Creating network*** Adding controllerUnable to contact the remote controller at 127.0.0.1:6633*** Adding hosts:h1 h2 h3 *** Adding switches:s1 *** Adding links:(h1, s1) (h2, s1) (h3, s1) *** Configuring hostsh1 h2 h3 *** Starting controllerc0 *** Starting 1 switchess1 ...*** Starting CLI:mininet>
2. 查看网络节点及其触拍
mininet> nodesavailable nodes are: c0 h1 h2 h3 s1mininet>mininet> neth1 h1-eth0:s1-eth1h2 h2-eth0:s1-eth2h3 h3-eth0:s1-eth3s1 lo: s1-eth1:h1-eth0 s1-eth2:h2-eth0 s1-eth3:h3-eth0c0mininet>
查看每个节点的网络配置信息
mininet> dump
3. 在三个主机(h1,h2,h3)上启动 Xterm 并查看当前低位信息
mininet> xterm h1 h2 h3mininet>mininet> dpctl dump-flows*** s1 ------------------------------------------------------------------------NXST_FLOW reply (xid=0x4):mininet>
H1上的Ping h1和h2上的tcppodump 看结果
结果显示Ping失败,没有收到 H2. 的IMCMP 组件。 原因: Toto 没有 SDN 控制器, 我们没有使用 dptcl 在开源开关中添加任何低位条目, 因此开关不会做出前期决定, 只会丢弃 H1 到 H2 的 Ping 软件包 。
5. 在SDN开关中加上双向流条目,加上dpctl,因为Ping袋有一个新的和一个新的。
mininet> dpctl add-flow in_port=1,action=output:2*** s1 ------------------------------------------------------------------------mininet> dpctl add-flow in_port=2,action=output:1*** s1 ------------------------------------------------------------------------mininet> dpctl dump-flows*** s1 ------------------------------------------------------------------------NXST_FLOW reply (xid=0x4): cookie=0x0, duration=28.434s, table=0, n_packets=0, n_bytes=0, idle_age=28, in_port=1 actions=output:2 cookie=0x0, duration=6.801s, table=0, n_packets=0, n_bytes=0, idle_age=6, in_port=2 actions=output:1mininet>
其中 其中其中
dpctl add-flow in_port=1,action=output:2
这意味着在开关中添加了 dpctl, 以便允许从1- eth1 港收到的所有转口器从1- eth2 港发送到 1- eth2 港。
dpctl add-flow in_port=2,action=output:1
在开关中添加含有 dpctl 的流量, 以便从 s1- eth2 端口收到的所有转口都能从 s1- eth1 端口发送到 s1- eth1 端口。
实例2: 配置开开关流程表
让我们来了解开关的底部。
然后使用 dpctl 将 truffic IPv4 型号的两个低端添加到开关中, 命令如下:
第一个命令意味着开关添加到带有 dpctl 的开关中,这样开关从所有EtherType 的 s1-eth2 端口发送到 0x0800 (IPv4),目标 IP 到 10.0.0.2 。 第二个命令意味着开关添加到带有 dpctl 的开关中,这样开关从所有 EthType 的 s1-eth1 端口发送到 0x0800 (IPv4), 并运行 IP 到 10.0.0.1 。
此时此刻,尝试 h1 ping h2 。
众所周知,在同一节下,东道方之间的通信是L2转发,依靠ARP破译MAC地址,而我们以前仅有匹配 0x0800 (IPv4) 的MAC地址,而该地址与 0x08006 (ARP 4)不匹配,因此当开关收到ARP h1 的包件时,无法相应地告知它如何转发ARP 软件包,而开关只能扔掉,导致 H1 ping h2 失败。
在总机上添加一个ARP dpctl命令,以NORMAL(即广播)的形式,从各港口广播所有ARP包件。
再试一次 h1 ping h1,结果如下:
实例3:OVS交换器VLAN网络测试
1. 使用 mn 命令创建两个 h1,h2 主机和一个 s1 开关,每个开关都连接到开关上。
这两个主机与总机的两个港口(S1-eth2,S1-eth2,S1-eth2)相连,所有港口假定都有标签、标签、零,因为卵子中没有流量计,因此网络目前没有连接。
2. OVS开关中继器流动表的配置使开关成为正常的传统开关。
请注意, 卵子开关有两种操作模式, 即 SDN 模式和传统模式。 传统的 卵子开关是通过 Mac 家庭学习进行的框架交换, 而 SDN 模式则是开关和相应的中继动作中流匹配的数据流。 这是允许开关执行 Mac 地址自学功能 。
如您所看到的, h1 和 h2 主机目前已经连接,您可以看到用于 s1 开关的 mac 地址研究表。您现在可以看到开关的端口信息。您可以在两个端口都看到 VLAN 。
3. 将 OVS 端口的标签S1-eth1标签配置为 1, S1-eth2 标签配置为 2。
对主机间连接的测试和对开关地址表信息的查看表明,不同标签的配置导致主机之间的网络隔离。
参考参考资料
1. Introduction to Mininet
https://github.com/mininet/mininet/wiki/Introduction-to-Mininet
2. SDN(软件定义网络)的初步经验 -- -- MIT:
https://zhuanlan.zhihu.com/p/30935141
3. OpenStack网络由Vovs Little Tag实施:
https://www.sdnlab.com/24098.html
注册有任何问题请添加 微信:MVIP619 拉你进入群

打开微信扫一扫
添加客服
进入交流群
发表评论