首页 > 其他分享 >实验2 Open vSwitch虚拟交换机实践

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

时间:2022-09-18 12:01:01浏览次数:74  
标签:ovs p0 数据包 sudo 端口 交换机 vSwitch Open

Open vSwitch虚拟交换机实践

实验目的

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

(一)基本实验

实验1 创建OVS交换机

  1. 创建OVS交换机
    image
    image

  2. 为OVS交换机配置p0端口
    image

  3. 创建虚拟空间ns0,将p0移入虚拟网络空间ns0,并配置IP
    image

  4. 为OVS交换机配置p1端口
    image

image

  1. 创建虚拟空间ns1,将p0移入虚拟网络空间ns1,并配置IP
    image

  2. 测试联通性
    image

成功ping通

实验2 Mininet下发流表

1. 自定义拓扑

image

image

运行拓扑
image

2. 划分VLAN

需求:
VLAN划分:
image
联通性要求:
h1-h3
h2-h4,其余不通

为s1配置流表项:
image
查看下发的流表项:
image

这四条命令原理:
1、2条命令:

  • 首先对输入端口进行匹配,如果输入端口为1(即为h1),执行action:将h1设置为vlan0虚拟局域网的主机,并将数据包向3号端口转发
    如果输入端口为3(即为h3),执行action:将h2设置为vlan1虚拟局域网的主机,并将数据包向3号端口转发
    3、4条命令:
    这两条命令处理接受到的数据包,匹配域:Vlan标签
    如果Vlan号属于0,(h3属于Vlan0),则将数据包往1号端口发,也就是发给主机h1,从而实现h1和h3之间的通信;第四条同理,不再赘述

为s2配置流表项:
原理与s1配置类似

  • 从1号或2号端口输入的数据包,则配上Vlan标签,1号端口输入的配上Vlan0(和h1在同一虚拟局域网),并向3号端口转发
  • 2号端口输入的配上Vlan1标签(和h2在同一局域网),并向3号端口转发
  • 从3号段口输入的数据包已经打过Vlan标记,对Vlan标记进行匹配,若为0则为发送给h3的数据包,若为1则为发送给h4的数据包
    image

验证结果

image

符合h1和h3联通,h2和h4联通,其余不连通要求。

(二)进阶实验

要求:利用Python代码实现VlAN划分

  1. 分配ip
    由于虚拟实现h1和h3在同一局域网,因此分配ip如下
    image
  2. code
    编写topo.py文件并运行

image

  1. 验证结果
    验证1:直接在python脚本中验证
    image
    结果:
    image

结果符合要求
验证2:通过wireshark验证
image
image
成功打上Vlan标签

  1. 错误总结
  • 忘记为两台交换机设置连接,导致ping不通,太蠢了TAT

总结

实验总结

1)此次实验我学习了如何使用OvS命令让数据包打上Vlan标签,并学习了如何使用控制行实现流表下发。
2)通过进阶实验,我学习了如何使用python文件实现流表下发,并能在python文件中进行测试。编写python文件的过程中遇到不少bug,但通过不断尝试最终进行了解决,提升了我的问题解决能力及创新能力。

附:知识总结

实验原理:用VLAN技术可以设计广播域构成,交换机收到广播帧后,从而防止广播风暴

命令总结

创建ovs交换机过程

  1. 自动创建类型为internal的ovs-switch000网桥
sudo ovs-vsctl add-port ovs-switch000 p0

(通过ovs-vsctl show解决报错)
2. 查询p0网口相关信息

sudo ethtool -i p0
  1. 创建虚拟网络空间ns0,把p0接口移入ns0,并配置IP
sudo ip netns add ns0
sudo ip link set p0 netns ns0
sudo ip netns exec ns0 ip addr add 192.168.1.100/24 dev p0
sudo ip netns exec ns0 ifconfig p0 promisc up
  1. 测试
sudo ip netns exec ns0 ping 192.168.1.101

  1. OVS命令
    image
sudo ovs-ofctl show ovs-switch000
  1. OVS下发流表命令
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

查看流表项命令:

sudo ovs-ofctl -O OpenFlow13 dump-flows s1

标签:ovs,p0,数据包,sudo,端口,交换机,vSwitch,Open
From: https://www.cnblogs.com/hhhf/p/16702352.html

相关文章