RYU+mininet——mininet

1. mininet基本操作

Mininet是一个网络仿真器,它在单个Linux内核上运行一组终端主机,交换机,路由器和链接。它使用轻量级虚拟化使单个系统看起来像一个完整的网络,运行相同的内核,系统和用户代码。 Mininet主机的行为就像真机一样;你可以ssh到它并运行任意程序。你运行的程序可以通过看似真正的以太网接口发送数据包,具有给定的链接速度和延迟。数据包会通过一定数量的真实以太网交换机,路由器或中间盒进行处理。详见mininet

1.1 mininet命令(mininet CLI环境)

在终端输入sudo mn,打开mininet进入CLI交互窗口。

  • 基本命令:

在CLI环境下输入help便可以获取可执行命令的信息,在2.3版本中有以下28个命令:

EOF    gterm  iperfudp  nodes        pingpair      py      switch
dpctl  help   link      noecho       pingpairfull  quit    time  
dump   intfs  links     pingall      ports         sh      x     
exit   iperf  net       pingallfull  px            source  xterm

输入:help command便可以获取该命令的详细帮助信息。下面介绍几组常用命令:

mininet>nodes                查看全部节点信息
mininet>net                  查看链路信息
mininet>dump                 查看各节点详细信息
mininet>pingall              测试所有结点是否连通
mininet>pingpair	         两个主机将互 ping

mininet>link s1 h2 up/down   启用/禁用s1跟h2之间的链路
mininet>links                报告所有链路状态
mininet>iperf h1 h2	         两个节点之间用指定简单的 TCP 测试
mininet>iperfudp 10M h1 h2   两个节点之间用指定简单 udp 进行测试,10M指自己设置的带宽
mininet>time [command]	     测量命令所执行的时间

mininet>xterm/gterm s1       打开某结点控制终端
mininet>sh [cmd args]        运行外部 shell 命令
mininet>px/py	             执行 python 语句
mininet>source <file>        从输入文件读入命令
           
mininet>exit/quit/EOF	     退出 mininet 命令行
  • 在节点执行系统命令:

前面提到mininet采用轻量级的虚拟化技术,使得其模拟的每台主机和交换机都是独立的,所以可以像在真实主机的终端中执行命令一样,在模拟的主机或交换机上执行任何系统命令。在CLI环境中执行的格式为:node command,command 格式和用法同Linux主机,如:

mininet>h1 ifconfig                                             查看h1节点网络信息
mininet>h1 ping -c 4 h2                                         实现两主机互连测试
mininet>h1 ifconfig h1-eth0 10.108.126.3 netmask 255.255.255.0  修改虚拟的主机的ip以及mask地址

还可以运行python脚本,比如在主机建立web服务器,并获取HTTP请求:

mininet> h1 python -m SimpleHTTPServer 80 &     #在主机 h1 开启 Web 服务
mininet> h2 wget -O - h1                        #在主机 h2 获取网页内容

这种用法和运行xterm node为节点打开单独的终端,在单独终端中运行系统命令一样。

1.1 dpctl 流表操作:

dpctl 和 ovs-ofctl 都是命令行的OpenFlow交换机管理工具,可以用来操作和管理流表。在CLI中管理流表的用法如下:

mininet>dpctl command [arg1] [arg2]        在所有交换机上运行 dpctl 或 ovs-ofctl 命令

1.2 mininet可视化界面

2.2.0以后版本的mininet支持可视化,在/home/mininet/mininet/examples目录下提供miniedit.py脚本,切换到相应目录下,在终端中执行:

sudo python miniedit.py

便会弹出Min

### Mininet 网络仿真简介 Mininet 是一种用于快速原型设计的轻量级软件定义网络 (SDN) 仿真工具[^1]。它允许用户在一个主机上创建完整的虚拟网络,支持多种复杂的网络拓扑结构以及真实的网络行为模拟[^2]。 以下是关于如何使用 Mininet 的基本教程和一些示例: --- ### 安装 Mininet 在 Ubuntu 或其他基于 Debian 的 Linux 发行版中,可以通过以下命令安装 Mininet 及其依赖项[^3]: ```bash sudo apt-get update sudo apt-get install mininet bridge-utils ``` 要验证 Mininet 是否成功安装并查看当前版本号,可以运行以下命令: ```bash mn --version ``` 如果需要 Python2 和 Python3 支持,则可能需要设置软链接来兼容不同环境下的需求[^4]: ```bash ln -s /usr/bin/python2.7 /usr/local/bin/python ln -s /usr/bin/python3.x /usr/local/bin/python3 ``` --- ### 基本操作指南 #### 启动默认网络拓扑 通过 `mn` 命令启动一个简单的 Mininet 默认网络拓扑: ```bash sudo mn ``` 这会生成一个具有单个交换机和多个主机的基础网络配置。进入交互模式后,可执行如下测试命令以确认连通性: ```bash h1 ping h2 ``` 退出 Mininet 控制台时输入 `exit` 即可停止服务。 --- ### 自定义网络拓扑构建 除了预设选项外,还可以利用脚本来定制复杂场景中的特定布局。下面是一个简单例子演示如何编写自定义拓扑文件 (`custom_topo.py`) 并加载到 Mininet 中去实现两层星型架构连接方式。 **Python 脚本实例:** ```python from mininet.topo import Topo class MyTopo( Topo ): "Simple topology example." def __init__( self ): "Create custom topo." # Initialize topology Topo.__init__( self ) # Add hosts and switches host1 = self.addHost('h1') host2 = self.addHost('h2') switch = self.addSwitch('s1') # Add links between nodes self.addLink(host1, switch) self.addLink(host2, switch) topos = { 'mytopo': ( lambda: MyTopo() ) } ``` 保存上述代码至名为 `custom_topo.py` 文件之后,在终端里调用该脚本建立新的拓扑关系: ```bash sudo mn --topo=mytopo --controller=remote ``` 此命令指定了远程控制器作为 OpenFlow 数据包处理逻辑源端点之一;当然也可以替换为本地内置简易控制单元或其他第三方解决方案比如 Ryu Controller 来增强功能性。 --- ### 高级应用案例分析 #### 模拟 VLAN/QoS 设置 借助 Mininet 提供的功能模块能够轻松再现真实世界里的各种高级特性,例如划分不同的广播域或者实施服务质量保障策略等实际业务流程。 #### 展现路由协议工作原理 无论是 OSPF 还是 BGP 此类动态路径计算算法均可以在受控环境下重现出来以便深入理解它们内部运作机制。 #### 实验网络安全威胁检测 另外值得一提的是,Mininet 不仅限于正面用途方面探索学习价值所在之处还包括恶意活动研究领域——诸如 ARP Spoofing 类型攻击现象均可被精确复制从而帮助我们更好地防范此类风险事件发生概率提升整体防护水平。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值