51Openlab上Mininet快速入门

本文详细介绍了Mininet的安装、基本操作、拓扑构建、命令使用,以及如何通过API扩展自定义拓扑。重点在于使用Mininet进行流表应用实战,展示了如何手动添加流表以实现主机间的通信,并通过Wireshark分析OpenFlow协议。此外,还讨论了多数据中心网络拓扑的流量带宽实验,利用iperf测试SDN网络性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

51OpenlabMininet入门

都是来自51Openlab上的资料,因为要做有关的毕设,所以需要学习一下。
大多是复制的,但是其中也有我的一些理解和实验的截图
51Openlab

一、Mininet简介

Mininet是一个可以在有限资源的普通电脑上快速建立大规模SDN原型系统的网络仿真工具。该系统由虚拟的终端节点(End-Host)、OpenFlow交换机、控制器(也支持远程控制器)组成,这使得它可以模拟真实网络,可对各种设想或网络协议等进行开发验证。目前Mininet已经作为官方的演示平台对各个版本的OpenFlow协议进行演示和测试。

Mininet是基于Linux Container这一内核虚拟化技术开发出的虚拟化平台,其实现虚拟化主要是用到了Linux内核的Network namespace资源隔离机制。LinuxNetwork namespace机制可以让每个namespace拥有独立的网络设备、网络协议栈和端口等。Mininet正是利用了Linux这种Network namespace机制,才可以在一台电脑上创建多台虚拟主机。此外,Mininet建立的网络拓扑的交换节点可以是Open vSwitch、Linux Bridge等软件交换机,交换节点之间的链路采用Linuxveth pair(virtual Ethernet pair)机制实现,控制器可以部署在网络可达的任意地方。因此,Mininet可以定制任意灵活的SDN网络拓扑,为实验用户提供快捷可靠的实验环境。

Mininet架构按datapath的运行权限不同,分为kernel datapathuserspace datapath两种,其中kernel datapath把分组转发的逻辑编译进入Linux内核,效率非常高;userspace datapath把分组转发逻辑实现为一个应用程序,叫做ofdatapath,效率虽不及kernel datapath,但更为灵活,更容易重新编译。

Mininetkernel datapath架构如下图所示,控制器和交换机的网络接口都在root 命名空间中,每个主机都在自己独立的命名空间里,这也就表明每个主机在自己的命名空间中都会有自己独立的虚拟网卡eth0。控制器就是一个用户进程,它会在loopback上预留的6633端口监听来自交换机安全信道的连接。每个交换机对应几个网络接口,比如``s0-eth0、s0-eth1以及一个ofprotocol`进程,它负责管理和维护同一控制器之间的安全信道。

image-20220319113000354

Mininetuserspace datapath架构如下图所示,与kernel datapath架构不同,网络的每个节点都拥有自己独立的namespace。因为分组转发逻辑是实现在用户空间,所以多出了一个进程叫ofdatapath。另外,Mininet除了支持kernel datapathuserspace datapath这两种架构以外,还支持OVS交换机。OVS充分利用内核的高效处理能力,它的性能和kernel datapath相差无几。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HxrG8qxN-1647761749137)(https://www.51openlab.com/site_media/media/course/bc49a3e27fa84c79835ad893864250cf/3/49cd355a-c740-4a42-8b3a-4ab72a163287)]

二、安装Mininet

之前我在自己的虚拟机上安装过Mininet,具体可以去看

按着51Openlab的实验指导书安装,再执行./install.sh -a前先更新一下软件:apt-get update

1. 安装完成后的测试

mn --test pingall

image-20220319115415136

image-20220319115458774


三、拓扑构建和命令使用

Mininet能实现如下功能:

  • OpenFlow应用程序提供一个简单、便宜的网络测试平台
  • 启用复杂的拓扑测试,无需连接物理网络
  • 具有拓扑感知和OpenFlow感知的CLI,用于调试或运行网络范围的测试
  • 支持任意自定义拓扑,主机数可达4096,并包括一组基本的参数化拓扑
  • 提供用于网络创建和实验的可扩展Python API

在基于Mininet的使用下,可以轻易的在自己的笔记本上测试一个软件定义网络(software-defined Networks),对基于OpenFlowOpen vSwitch的各种协议等进行开发验证,或者验证自己的想法。且所有的代码几乎可以无缝迁移到真实的硬件环境中,在实验室里,一行命令就可以创建一个支持SDN的任意拓扑的网络结构,并可以灵活的进行相关测试,验证了设计的正确后,可以轻松部署到真实的硬件环境中。

MininetEdit可视化界面:Mininet 2.2.0+内置miniedit 。在mininet/examples下提供miniedit.py脚本,执行脚本后显示可视化界面,可自定义拓扑及配置属性。

1. 一些命令:

(1)网络构建
  • topo:用于指定网络拓扑,Mininet支持创建的网络拓扑为:minimalsinglelineartree

  • minimal:创建一个交换机和两个主机相连的简单拓扑。默认无—topo参数的情况下就是这样。其内部实现就是调用了single,2对应的函数。

  • single,n:设置一个交换机和n个主机相连的拓扑。

  • linear,n:创建n个交换机,每个交换机只连接一个主机,并且所有交换机成线型排列。

  • tree,depth=n,fanout=m:创建深度为n,每层树枝为m的树型拓扑。因此形成的拓扑的交换机个数为(mn-1)/(m-1),主机个数为mn

  • —custom:在上述已有拓扑的基础上,Mininet支持自定义的拓扑,使用一个简单的Python API即可。—custom需和—topo一起使用,如mn —custom file.py —topo mytopo

(2)选项

Mininet常用命令总结:

命令 作用
help 默认列出所有命令文档,后面加命令名将介绍该命令用法 dump打印节点信息
gterm 给定节点上开启gnome-terminal 注:可能导致mn崩溃
xterm 给定节点上开启xterm
intfs 列出所有的网络接口
iperf 两个节点之间进行简单的iPerf TCP测试
iperfudp 两个节点之间用制定带宽UDP进行测试
net 显示网络链接情况
noecho 运行交互式窗口,关闭回应(echoing)
pingpair 在前两个主机之间互Ping测试
source 从外部文件中读入命令
dpctl 在所有交换机上用dptcl执行相关命令,本地为tcp 127.0.0.1:6634
link 禁用或启用两个节点之间的链路
nodes 列出所有的节点信息
pingall 所有主机节点之间互Ping
py 执行Python表达式
sh 运行外部shell命令
quit/exit 退出

2. 创建拓扑实操

(1)单一拓扑
sudo mn --topo=single,3

单一(Single)拓扑指整个网络拓扑中交换机有且只有一个,交换机可以下挂一个或多个主机,本例创建了一个交换机、3个主机,3个主机都下挂在一个交换机下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无法长大的Panda

您的鼓励是最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值