OpenvSwitch实现简单VLAN
2021/11/4 6:13:18
本文主要是介绍OpenvSwitch实现简单VLAN,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
需求:
现有拓扑结构如下的网络结构(s1-s4为交换机,h1-h9为主机),现欲让单数主机(h1、h3、h5、h7、h9)之间互相能ping通,双数主机之间互相能够ping通,但单数和双数主机之间不能访问。
# 拓扑结构: ------------------------------------------------------ -------------------------s1--------------------------- ---------------------/---|---\------------------------- -----------------/-------|------\--------------------- --------------/----------|---------\------------------ ------------/------------|------------\--------------- ---------s2--------------s3--------------s4----------- -------/--|--\---------/--|--\---------/--|--\-------- ------h1--h2--h3------h4--h5--h6------h7--h8--h9------ ------------------------------------------------------ ------------------------------------------------------
OpenvSwitch实现VLAN
第一步,打开mininet 连接控制器
打开控制器
这里选择任意控制器均可,但是控制器要支持openflow1.3协议
打开mininet
mn --controller=remote,ip=127.0.0.1--mac --nat --topo=tree,depth=2,fanout=3 --switch ovs,protocols=OpenFlow13
- –controller=remote,ip=127.0.0.1。指定了控制器为本地控制器
- –topo=tree,depth=2,fanout=3。创建深度为2,度为3的树形结构的拓扑结构网络
- –switch ovs,protocols=OpenFlow13。指定交换机为ovs,协议为OpenFlow1.3
第二步:
先在mininet里面pingall
用来生成初始流表
然后删除除了s1以外 其它控制器的流表
ovs-ofctl -O OpenFlow13 del-flows s2 ovs-ofctl -O OpenFlow13 del-flows s3 ovs-ofctl -O OpenFlow13 del-flows s4
第三步,添加流表:
自定义转发规则,单数主机和双数主机分别添加进入不同的VLAN组内,交换机分发报文时根据来源的组判断发往的端口。
# s2 ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4096-\>vlan_vid,output:4 ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4097-\>vlan_vid,output:4 ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,in_port=3,actions=push_vlan:0x8100,set_field:4096-\>vlan_vid,output:4 ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,dl_vlan=0,actions=pop_vlan,output:1,output:3 ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,dl_vlan=1,actions=pop_vlan,output:2 # ovs-ofctl -O OpenFlow13 add-flow s2 priority=1,dl_vlan=0,actions=pop_vlan,output:3 # s3 ovs-ofctl -O OpenFlow13 add-flow s3 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4097-\>vlan_vid,output:4 ovs-ofctl -O OpenFlow13 add-flow s3 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4096-\>vlan_vid,output:4 ovs-ofctl -O OpenFlow13 add-flow s3 priority=1,in_port=3,actions=push_vlan:0x8100,set_field:4097-\>vlan_vid,output:4 ovs-ofctl -O OpenFlow13 add-flow s3 priority=1,dl_vlan=1,actions=pop_vlan,output:1,output:3 ovs-ofctl -O OpenFlow13 add-flow s3 priority=1,dl_vlan=0,actions=pop_vlan,output:2 # ovs-ofctl -O OpenFlow13 add-flow s3 priority=1,dl_vlan=1,actions=pop_vlan,output:3 # s4 ovs-ofctl -O OpenFlow13 add-flow s4 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4096-\>vlan_vid,output:4 ovs-ofctl -O OpenFlow13 add-flow s4 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4097-\>vlan_vid,output:4 ovs-ofctl -O OpenFlow13 add-flow s4 priority=1,in_port=3,actions=push_vlan:0x8100,set_field:4096-\>vlan_vid,output:4 ovs-ofctl -O OpenFlow13 add-flow s4 priority=1,dl_vlan=0,actions=pop_vlan,output:1,output:3 ovs-ofctl -O OpenFlow13 add-flow s4 priority=1,dl_vlan=1,actions=pop_vlan,output:2 # ovs-ofctl -O OpenFlow13 add-flow s4 priority=1,dl_vlan=0,actions=pop_vlan,output:3
含义:
从sx的in_port对应的机器分到set_field/vlan_id,通过4号口(对应s1)发出去
来自dl_vlan的数据包发送给output端口。
目前存在的问题:
同一个交换机内部的组内总是ping不通,例如s2下的h1和h3 ping不通
可以通过继续添加流表(交换机内部节点之间的转发规则)解决
这篇关于OpenvSwitch实现简单VLAN的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-14Fetch / Axios学习:入门教程与实战指南
- 2024-11-14Typescript 类型课程入门教程
- 2024-11-14Fetch / Axios课程:初学者必看的网络请求教程
- 2024-11-14Styled-components课程:初学者指南
- 2024-11-13pre-commit 自动化测试课程:入门教程与实践指南
- 2024-11-13什么是AIGC?如何使用AIGC技术辅助办公?
- 2024-11-13Slicm 框架怎么进行用户认证?-icode9专业技术文章分享
- 2024-11-13在查询时将 map_coord 列的值转换为字符串有哪些方法?-icode9专业技术文章分享
- 2024-11-13如何将微信地区改成自定义文案?-icode9专业技术文章分享
- 2024-11-13DNS 缓存存在问题有哪些症状和解决方法?-icode9专业技术文章分享