mininet入门

Abstract 介绍mininet的基本使用方法
**参考链接**:[**SDN(软件定义网络)初体验----Mininet**](https://zhuanlan.zhihu.com/p/30935141) # sudo mn 最简单的命令,创建一台交换机(switch)——s1,两台主机(host)——h1,h2,一个控制器;创建两条链路,(h1,s1),(h2.s1)。 # mininet几个重要的option 1. --topo= 指定mininet创建的网络类型 - minimal-即sudo mn 指令, - single,X-一个交换机,下面直连X个主机 - ![图片](/uploads/a7097900d47e46bc978d8de5b6df3eef.png) - linear,X-创建X个链表状链路的交换机,每个交换机下面直连一个主机 - ![图片](/uploads/c5c53d072f19407f8fbcc27c7b246924.png) - tree,X-树状形拓扑,有X个fanout(扇出,每个树节点有X个子结点) - tree,3如下图所示 - ![图片](/uploads/021f072ca54b4cc19a08c5bfb66fb90f.png) - torus,X,Y - 二维平面拓扑结构,行和列会成环 2. --switch= 创建不同类型的交换机 - ovsk - mininet默认自带的Open vSwitch - user - 比ovsk慢 3. --controller= 即SDN Controller - ovsc - mininet默认自带的OVS Controller - nox - NOX controller - remote - 不创建Controller,尝试连接外部Controller,例如Ryu控制器 4. --mac 创建自定义的MAC地址 # 常用指令 ```bash (venv_ryu) yu@yu-System-Product-Name:~/桌面/simple66$ sudo mn *** No default OpenFlow controller found for default switch! *** Falling back to OVS Bridge *** Creating network *** Adding controller *** Adding hosts: h1 h2 *** Adding switches: s1 *** Adding links: (h1, s1) (h2, s1) *** Configuring hosts h1 h2 *** Starting controller *** Starting 1 switches s1 ... *** Starting CLI: ``` ## 查看网络节点 ```bash mininet> nodes available nodes are: h1 h2 s1 ``` ## 查看物理拓扑 ```bash mininet> net h1 h1-eth0:s1-eth1 h2 h2-eth0:s1-eth2 s1 lo: s1-eth1:h1-eth0 s1-eth2:h2-eth0 ``` ## 查看各个节点的信息 ```bash mininet> dump <Host h1: h1-eth0:10.0.0.1 pid=3439465> <Host h2: h2-eth0:10.0.0.2 pid=3439467> <OVSBridge s1: lo:127.0.0.1,s1-eth1:None,s1-eth2:None pid=3439472> ``` ## ping测试 ```bash mininet> h1 ping h2 PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data. 64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.253 ms 64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=0.031 ms 64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=0.025 ms 64 bytes from 10.0.0.2: icmp_seq=4 ttl=64 time=0.038 ms ^C --- 10.0.0.2 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3091ms rtt min/avg/max/mdev = 0.025/0.086/0.253/0.096 ms ``` ## 退出Cli ```bash mininet> exit ``` ## 清空创建的节点和链路 ```bash sudo mn -c ``` > 强烈建议每次运行退出后,运行清空指令 # 脚本模式 ## 基础 > 下面的脚本创建的拓扑,等价sudo mn 指令 > > 控制器需要显式添加 ```python from mininet.net import Mininet from mininet.node import Controller # 1. 引入 Controller 类 from mininet.cli import CLI # 2. 初始化网络 net = Mininet() # 3. 显式添加控制器 # 我们创建一个名为 'c0' 的控制器实例 c0 = net.addController('c0', controller=Controller) # 4. 添加主机和交换机 h1 = net.addHost('h1') h2 = net.addHost('h2') s1 = net.addSwitch('s1') # 5. 添加链路 net.addLink(h1, s1) net.addLink(h2, s1) # 6. 启动网络 # 注意:net.start() 会自动启动刚才添加的 c0 控制器 net.start() CLI(net) net.stop() ``` 1. h1,h2之间可以互相ping通 2. 不能用交换机去ping主机

评论

使用 GitHub 登录参与讨论,评论公开可见。

在 GitHub 查看讨论 ↗