1.能够对Open vSwitch进行基本操作;
2.能够通过命令行终端使用OVS命令操作Open vSwitch交换机,管理流表;
3.能够通过Mininet的Python代码运行OVS命令,控制网络拓扑中的Open vSwitch交换机
1.下载虚拟机软件Oracle VisualBox 或 VMware;
2.在虚拟机中安装Ubuntu 20.04 Desktop amd64,并完整安装Mininet;
1.创建OVS交换机,并以ovs-switchxxx命名,其中xxx为本人在选课班级中的序号,例如ovs-switch001, ovs-switch088等。在创建的交换机上增加端口p0和p1,设置p0的端口号为100,p1的端口号为101,类型均为internal;为了避免网络接口上的地址和本机已有网络地址冲突,需要创建虚拟网络空间(参考命令netns)ns0和ns1,分别将p0和p1移入,并分别配置p0和p1端口的ip地址为190.168.0.100、192.168.0.101,
#创建ovs交换机
sudo ovs-vsctl add-br ovs-switch082
#增加端口p0和p1,并按要求设置
sudo ovs-vsctl add-port ovs-switch082 p0 sudo ovs-vsctl set Interface p0 ofport_request=100 type=internal sudo ovs-vsctl add-port ovs-switch082 p1 sudo ovs-vsctl set Interface p0 ofport_request=101 type=internal
端口P0添加及设置
端口p1添加及设置
#查询网口相关信息
sudo ethtool -i p0 sudo ethtool -i p1
#创建虚拟网络空间
sudo ip netns add ns0 sudo ip link set p0 netns ns0 sudo ip netns exec ns0 ip addr add 192.168.0.100/24 dev p0 sudo ip netns exec ns0 ifconfig p0 promisc up
sudo ip netns add ns1 sudo ip link set p1 netns ns1 sudo ip netns exec ns1 ip addr add 192.168.0.101/24 dev p1 sudo ip netns exec ns1 ifconfig p0 promisc up
#查看网络状态
sudo ovs-vsctl show
#连通性测试
sudo ip netns exec ns0 ping 192.168.1.101
2.使用Mininet搭建的SDN拓扑,如下图所示,要求支持OpenFlow 1.3协议,主机名、交换机名以及端口对应正确。
**#使用mininet搭建拓扑##
#支持Open Flow1.3协议
#拓扑图
#将拓扑保存为py文件,并命名为“102192108.py”
#打开py文件,并修改对应端口代码
代码修改后保存提示只读文件无法保存,可在mininet的lab2层文件里面输入以下代码,更改为开放文件。
sudo chmod 666 102192108.py
#mininet命令打开网络拓扑
在lab2文件层内输入以下命令
sudo python3 102192108.py
3.通过命令行终端输入“ovs-ofctl”命令,直接在s1和s2上添加流表,划分出所要求的VLAN。
VLAN_ID | Hosts |
---|---|
0 | h1 h3 |
1 | h2 h4 |
#s1添加流表
#s2添加流表
4.主机连通性要求:
#交换机流表
#wireshark抓包
阅读SDNLAB实验使用Mininet,编写Python代码,生成(一)中的SDN拓扑,并在代码中直接使用OVS命令,做到可以直接运行Python程序完成和(一)相同的VLAN划分。
请用Markdown排版;
(一)所有操作均在目录:/home/用户名/学号/lab2/下进行;
(一)1只需要提交ovs-vsctl show命令、以及p0和p1连通性测试的执行结果截图和附图说明,其余文字请勿赘述;234只需提交实验步骤截图和附图说明:最终的连通性测试,交换机流表,wireshark抓包,其余各类安装操作过程请勿赘述;
(二)不做必须要求,有完成的同学请提交最终的Python代码和执行结果截图和附图说明。
个人总结,包括但不限于实验难度、实验过程遇到的困难及解决办法,个人感想,不少于200字。
一、基础语法要常练习
实验一部分命令无法完全准确的记忆并使用,需要整理并总结复习使用,以便后续能快速做衔接。基础的操作语法要多练习保证熟悉度。
另外,由于操作不是很熟练,需要打开旧的文档查看,做作业的时候也大多跟随文档进行操作,但是部分步骤语焉不详,边做边查以及请教同学勉强能做出来,可是没有多余花时间形成文档,可以单独将操作步骤及相应代码以及说明做成文档,便于反复学习。
二、实验过程遇到的问题
1.头几步按照老师pdf教程操作,可以执行。但是一开始的时候没有直接按可截图的作业来做,导致操作部分后,p0 p1;ns0 ns1混合操作不适合截图,后面又重新操作一遍。这一过程需要把旧的交换机等删除,依照命令可以执行,但虚拟网络空间则一开始不懂得如何删除,后面自己对比交换机的创建及删除命令,摸索尝试出虚拟网络空间的删除命令应也为创建的“add”更改为“del”,后查阅别人经验分享时,有查的此命令,有所验证。
2.在操作过程中,出现几个问题,不懂如何解决,基本上要靠同辈交流跟网上查阅解决
虚拟网络空间测试时,出现“Network is unreachable”的情况,检查好几遍,查阅论坛,分享需要修改网卡等。但是并不懂如何操作。最后综合其他同学提交的作业情况,推测应将p0的ID改为192而非190才可以,可能是题目问题,也可能是我们操作有误导致。前后两次操作截图关于id的代码有一定出入。
3.虚拟网络空间测试时,^C这个代码我们试了好几次,都没办法使得测试代码停下来,我们后面在其他同学提交分享的作业中看到关怀与如何令测试运行代码结束所用到的符号,但是我们一直在使用shift+6+c是错误的,后面是有个舍友误打误撞输入“CTRL+c”可以了,不禁感叹我们真的什么都不懂,对有一定基础经验的同学来说,这个可能不是什么问题,但是我们想当然的对应做输入,却一直没成功,以为是我们前面哪里的步骤产生错误。代码基础要尽快补上了。
4.拓扑文件的保存
拓扑文件建立完成后,另存到lab2文件内,需在文件内双击打开,并在里面设置相应的端口配置。修改完之后,出现“只读无法保存”的情况,后舍友告知查询得到,可以通过mininet命令行“sudo chmod 666 文件名.py”,可以将文件属性设置为开放,即可保存。
5.抓包查询设置
抓包命令输入后,打开的是一个新页面,需要找到相应的交换机的对应端口的对应行,双击打开后,跳出新页面。但页面是空白的,需要在mininet>里面再输入pingall命令测试,然后回到该页面,即可产生数据。
三、总体感受
这次的实验操作,比之前一两次难度更大一些。主要在于,其中一部分步骤需要一些细节的关键的步骤操作去解决完成,但是这些我们要花比较多的时间去查资料、学习、请教交流才有这些关键点解决步骤。其次是代码基础比较差,对于简单的代码还比较能快速理解,但是关于流表创建那部分,代码比较长,很容易输错,需要练习并培养细心度,也要快速学习码代码的能力。