mininet入门实战 学习指南

mininet入门实战 学习指南

课程链接:https://www.51openlab.com/platform/curriculum/a18026230ad04063a70b6bb625212f3f/detail/

实验一:mininet源码安装与验证

指令说明

ll命令:实际上是ls -l,以长格式显示目录下的内容列表,包括文件名、文件类型、权限模式等信息

cat INSTALL | more命令:显示文件INSTALL的内容,其中more参数是为了控制文件内容的输出速度,可更换为less达到同样效果,不同之处在于使用| less格式,需要输入q才能退出命令

mn --test pingall:测试基本功能,包括添加主机、交换机、链路,以及pingall操作等功能

mn --version:查看当前mininet版本

tips for experiment

util目录下,即使使用./install.sh -a命令安装mininet,也要先执行apt-get update

实验二:mininet拓扑构建与命令使用

重点内容

使用mininet构建网络时,参数topo用于指定网络拓扑

  • --topo=single,n:一个交换机与n台主机相连
  • --topo=linear,n:n个交换机线性连接,每个交换机连接一台主机
  • --topo=tree,depth=n,fanout=m:深度为n的m叉树,每个分支节点是一台交换机,每个叶节点是一台主机
  • --custom:与--topo一起使用,支持自定义拓扑

指令说明

sudo mn --custom topo-2sw-2host.py --topo mytopo:py文件是目录下已编写好的创建自定义拓扑的文件,--topo后面跟的mytopo,是由于配置文件中定义了topos={'mytopo':(lambda:MyTopo())},如果将这里的mytopo进行修改,则命令中也要进行相应的修改

net:查看链接信息

nodes:查看节点;links:查看链路是否连通

xterm +主机名:进入可视化操作界面

mn -c:清除mininet配置的交换机和主机

chmod:修改文件权限

tips for experiment

如果需要验证minimal网络拓扑,直接运行sudo mn即可

运行miniedit之后,右键长按交换机,选择List bridge details可查看交换机的bridge信息,右键长按host可打开主机终端

DPID:OpenFlow 规范指定每个数据路径(交换机)都具有唯一的数据路径 ID,即DPID

实验三:mininet调用API扩展自定义拓扑

指令说明

dump:显示每个节点的接口设置,以及表示每个节点的进程的PID

attach():添加端口

py:执行python表达式

py net.addLink(s3,net.get(‘h3’)):添加s3到h3之间的链路,但此时如果执行h3 ping s3,会提示network is unreachable,因为s3还没有配置端口

tips for experiment

第一次执行dump命令时,会发现h3-eth0=None,无法看到h3的ip地址,是因为还没有被发现,而不是没有配置,如果执行pingall命令后再次dump,就可以看到h3的ip地址了

如果执行cd /home/openlab/openlab/mininet/custom这种从home目录开始的,不要漏掉home前面的/符号

拓展

py 主机名.setIP()可以重设某台主机的IP地址

实验四:mininet可视化构建网络拓扑

与实验二中的第三部分完全相同,参考实验二指南即可

实验五:手动添加流表

指令说明

vim +文件名:若该文件不存在,则创建一个文件,若存在,则使用vim读取文件

本实验提供的拓扑文件,构造的拓扑为交换机s1连接h1和h2,s2连接h3,且s1和s2互连

--controller=remote,ip=127.0.0.1,port=6653:用于指定一个不存在的控制器,使交换机没有控制器控制

dpctl dump-flows:查看交换机流表信息

tcpdump -n -i h2-eth0:抓包指令,其中-n选项阻止网络地址显示为名字,-i选项用于指定监听的网络接口

ping -c 3 10.0.0.2:其中-c选项用于设置ping的次数,例如这条命令设置为3次

dpctl add-flow in_port=1,actions=output:2:向交换机添加端口流表,从s1-eth1端口接收到的数据包都转发到s1-eth2端口

dpctl add-flow dl_type=0x0800,nw_dst=10.0.0.2,actions=output:2:使交换机将EtherType(以太网类型字段)=0x0800(代表ipv4报文),且目标ip为10.0.0.2的数据包,转发到eth-2端口

actions=NORMAL:从各个端口广播出去

tips for experiment

vim的简易使用:输入i即可进入编辑模式,按Esc退出编辑模式后,输入:wq即可保存并退出,输入:q!可强制不保存并退出

当eth1与eth2建立双向的端口流表之后,h1只能ping通h2但不能ping通h3,是因为通过net指令可以看到,交换机s1与s2连接是通过eth3端口的,在这个地方没有配置任何流表,所以无法ping通h3

常见的EtherType:IPv4: 0x0800;ARP:0x0806;IPV6: 0x86DD

由于一开始h1并不知道h2的ip所对应的MAC地址,需要进行ARP解析,所以只配置了ipv4协议流表时,交换机会把进行ARP的帧默认丢弃,导致h1无法ping通h2

实验六:控制器下发流表协议分析

指令说明

netstat -an|grep 6653netstat -an命令本身,可以显示活跃的网络连接(包括本地地址、外部地址、状态等信息),|grep就是把上个命令的运行结果带入grep的参数中进行,在这里的效果就是通过端口号进行过滤

tips for experiment

创建拓扑并测试通信部分:

  • 步骤1,2,10是在controller处进行的,步骤3-9是在host处进行的
  • 步骤一中,应执行netstat -an|grep 6653命令,在这里用netstate命令会出现报错
  • 步骤六中,远程控制器ODL的ip地址,要与步骤二中eth0的inet addr的ip地址相同
  • 步骤十中,直接输入http://127.0.0.1:8181/index.html#/topology即可

Wireshark的基本使用:单击蓝色鱼鳍图标开始抓包,单击旁边的红色方块停止,通过过滤器对数据包进行过滤,选中数据包即可在下方查看数据包的详细信息

实验七:Mininet多数据中心网络拓扑流量带宽实验

指令说明

mkdir -p:递归创建目录,可以一次创建多级文件夹

需要用vi可以用vim代替

iperf命令:一种网络性能测试工具

tips for experiment

“编写网络带宽测试程序”中的所有操作都在host1中执行,教程中提到的mininet主机就是host1

建议需要修改文件时,先进入文件所在的目录再用vim打开,注意~/openlab/mininet/mininet是在~目录下的

bin/mn文件下添加'iperfmulti':'iperfMulti'时,注意上一行需要加逗号

posted @ 2022-10-25 09:22  瑞图恩灵  阅读(939)  评论(0编辑  收藏  举报