实验2:Open vSwitch虚拟交换机实践

发布时间:2022-07-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了实验2:Open vSwitch虚拟交换机实践脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

实验2:OPEn vSwITch虚拟交换机实践

一、实验目的

能够对Open vSwitch进行基本操作; 能够通过命令行终端使用OVS命令操作Open vSwitch交换机,管理流表; 能够通过Mininet的Python代码运行OVS命令,控制网络拓扑中的Open vSwitch交换机

二、实验环境

下载虚拟机软件oracle VisualBox 或 VMware; 在虚拟机中安装Ubuntu 20.04 Desktop amd64,并完整安装Mininet;

三、实验要求

(一)基本要求

创建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,子网掩码为255.255.255.0;最后测试p0和p1的连通性。 代码如下


sudo ovs-vsctl add-br ovs-switch086#创建ovs交换机,以ovs-switch086命名


sudo ovs-vsctl add-port ovs-switch086 p0
sudo ovs-vsctl set Interface p0 ofport_request=100 type=internal#创建端口p0,设置编号为100,类型为“internal”


sudo ovs-vsctl add-port ovs-switch086 p1
sudo ovs-vsctl set Interface p1 ofport_request=101 type=internal#创建端口p1,设置编号为101,类型为“internal”


sudo ethtool -i p0 
sudo ethtool -i p1#查询p0、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#创建一个虚拟网络空间ns0,把p0接口移入网络空间ns0,并配置IP地址为 192.168.0.100


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 p1 PRomisc up#创建一个虚拟网络空间ns1,把p1接口移入网络空间ns1,并配置IP地址为 192.168.0.101

sudo ovs-vsctl show
sudo ip netns exec ns0 ping 192.168.0.101
sudo ip netns exec ns1 ping 192.168.0.100#测试

测试截图

实验2:Open vSwitch虚拟交换机实践

实验2:Open vSwitch虚拟交换机实践

使用Mininet搭建的SDN拓扑,如下图所示,要求支持OpenFlow 1.3协议,主机名、交换机名以及端口对应正确。 可视化拓扑视图如下选择OpenFlow1.3版本

实验2:Open vSwitch虚拟交换机实践

将拓扑文件保存在lab2文件夹并修改代码

实验2:Open vSwitch虚拟交换机实践

实验2:Open vSwitch虚拟交换机实践

通过命令行终端输入“ovs-ofctl”命令,直接在s1和s2上添加流表,划分出所要求的VLAN。 VLAN_ID Hosts 0 h1 h3 1 h2 h4 添加流表:

#建立S1下发流表
sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4096->vlan_vid,output:3

sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4097->vlan_vid,output:3

sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,dl_vlan=0,actions=pop_vlan,output:1

sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,dl_vlan=1,actions=pop_vlan,output:2

#建立S2下发流表
sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4096->vlan_vid,output:3

sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4097->vlan_vid,output:3

sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,dl_vlan=0,actions=pop_vlan,output:1

sudo ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,dl_vlan=1,actions=pop_vlan,output:2

实验2:Open vSwitch虚拟交换机实践

查看流表 S1流表

实验2:Open vSwitch虚拟交换机实践

S2流表

实验2:Open vSwitch虚拟交换机实践

主机连通性要求: h1 – h3互通 h2 – h4互通 其余主机不通 pingall查看连通性

实验2:Open vSwitch虚拟交换机实践

可得h1与h3连通,h2与h4连通 利用Wireshark抓包,抓取s1的3号端口 在Mininet命令行输入pingall ,在另外的终端命令行输入sudo wireshark

实验2:Open vSwitch虚拟交换机实践

可知ID为0

实验2:Open vSwitch虚拟交换机实践

可知ID为1

(二)进阶要求

阅读SDNLAB实验使用Mininet,编写Python代码,生成(一)中的SDN拓扑,并在代码中直接使用OVS命令,做到可以直接运行Python程序完成和(一)相同的VLAN划分。

(三)实验报告

请用Markdown排版;

(一)所有操作均在目录:/home/用户名/学号/lab2/下进行;

(一)1只需要提交ovs-vsctl show命令、以及p0和p1连通性测试的执行结果截图和附图说明,其余文字请勿赘述;234只需提交实验步骤截图和附图说明:最终的连通性测试,交换机流表,wireshark抓包,其余各类安装操作过程请勿赘述;

(二)不做必须要求,有完成的同学请提交最终的Python代码和执行结果截图和附图说明。

个人总结,包括但不限于实验难度、实验过程遇到的困难及解决办法,个人感想,不少于200字。

个人总结:本次实验遇到问题相对上次来说较多 问题1: 由于不清楚在测试连通性时需要中断导致测试过程中运行数千次浪费不少时间 问题2: 在建立可视化拓扑时显示错误,经过查找资料后了解到是之前已建的相同的拓扑图还存在导致错误,输入命令sudo mn -c后即正常运行 问题3: 在添加流表时显示ovs-ofctl: s1 is not a bridge or a socket错误,后发现添加的流表的同时需要mininet在后台同时运行才行 在这次实验中遇到问题较多,时间耗费较多,主要还是对于实验系统环境不够熟悉导致,实验的效率还有待提高,往后做实验还需好好理解实验的目的和原理,如此做实验才能事功倍。

脚本宝典总结

以上是脚本宝典为你收集整理的实验2:Open vSwitch虚拟交换机实践全部内容,希望文章能够帮你解决实验2:Open vSwitch虚拟交换机实践所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。