OVS Vxlan一对一模式VS一对多模式

这篇具有很好参考价值的文章主要介绍了OVS Vxlan一对一模式VS一对多模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

OVS Vxlan模式

OVS 支持 GRE、VXLAN、STT、Geneve和IPsec隧道协议,这些隧道协议就是overlay网络的基础协议,通过对物理网络做的一层封装和扩展,解决了二层网络数量不足的问题,最大限度的减少对底层物理网络拓扑的依赖性,同时也最大限度的增加了对网络的控制。针对VXLAN隧道创建vtep口分为一对一模式和一对多模式,一个一模式是指local_ip和remore_ip都是明确的ipv4地址,而一对多模式local_ip是明确的ipv4地址,remore_ip=flow代表可以到达任何其他的vtep口,但是需要在流表里指定vxlan封装的外层ip,才能发送给对端vtep
vxlan key=flow,网络,云计算,ovs

搭建环境验证

vxlan key=flow,网络,云计算,ovs

// host1
ip netns add ns10
ip l a veth10 type veth peer name ovs-veth10
ip l s veth10 netns ns10
ovs-vsctl add-br br-int
ovs-vsctl add-port br-int ovs-veth10
ip l s ovs-veth10 up
ip netns exec ns10 ip link set veth10 address fe:fe:fe:fe:fe:aa
ip netns exec ns10 ip a a 1.1.1.1/24 dev veth10
ip netns exec ns10 ip l s veth10 up
ip netns exec ns10 arp -s 1.1.1.2 fe:fe:fe:fe:fe:bb

// core: one to one mode remoteIP is a specific ip, set vid to tunnelID
ovs-vsctl add-port br-int aa -- set interface aa type=vxlan options:local_ip=10.128.128.27 options:remote_ip=10.128.128.52 option:key=flow
ovs-ofctl add-flow br-int 'table=0,priority=100,ip,in_port=ovs-veth10 action=set_field:0x7->tun_id,normal' 

// host2
ip netns add ns20
ip l a veth20 type veth peer name ovs-veth20
ip l s veth20 netns ns20
ovs-vsctl add-br br-int
ovs-vsctl add-port br-int ovs-veth20
ip l s ovs-veth20 up
ip netns exec ns20 ip link set veth20 address fe:fe:fe:fe:fe:bb
ip netns exec ns20 ip a a 1.1.1.2/24 dev veth20
ip netns exec ns20 ip l s veth20 up
ip netns exec ns20 arp -s 1.1.1.1 fe:fe:fe:fe:fe:aa


// core: one to one mode remoteIP is a specific ip, set vid to tunnelID
ovs-vsctl add-port br-int aa -- set interface aa type=vxlan options:local_ip=10.128.128.52 options:remote_ip=10.128.128.27 option:key=flow
ovs-ofctl add-flow br-int 'table=0,priority=100,ip,in_port=ovs-veth20 action=set_field:0x7->tun_id,normal' 

// verify one to one packet
// host1 ns10 ping host2 ns20
ip netns exec ns10 ping 1.1.1.2
PING 1.1.1.2 (1.1.1.2) 56(84) bytes of data.
64 bytes from 1.1.1.2: icmp_seq=1 ttl=64 time=0.983 ms
64 bytes from 1.1.1.2: icmp_seq=2 ttl=64 time=0.400 ms
64 bytes from 1.1.1.2: icmp_seq=3 ttl=64 time=0.471 ms
64 bytes from 1.1.1.2: icmp_seq=4 ttl=64 time=0.439 ms

// host1 在vxlan口抓包是未封装vxlan头部的包
 tcpdump -i vxlan_sys_4789 -nn -vv -e
tcpdump: listening on vxlan_sys_4789, link-type EN10MB (Ethernet), capture size 262144 bytes
07:57:18.911039 fe:fe:fe:fe:fe:aa > fe:fe:fe:fe:fe:bb, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 53553, offset 0, flags [DF], proto ICMP (1), length 84)
    1.1.1.1 > 1.1.1.2: ICMP echo request, id 10982, seq 1, length 64
07:57:18.911610 fe:fe:fe:fe:fe:bb > fe:fe:fe:fe:fe:aa, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 29337, offset 0, flags [none], proto ICMP (1), length 84)
    1.1.1.2 > 1.1.1.1: ICMP echo reply, id 10982, seq 1, length 64
07:57:19.911891 fe:fe:fe:fe:fe:aa > fe:fe:fe:fe:fe:bb, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 53650, offset 0, flags [DF], proto ICMP (1), length 84)
    1.1.1.1 > 1.1.1.2: ICMP echo request, id 10982, seq 2, length 64
07:57:19.912243 fe:fe:fe:fe:fe:bb > fe:fe:fe:fe:fe:aa, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 29374, offset 0, flags [none], proto ICMP (1), length 84)
    1.1.1.2 > 1.1.1.1: ICMP echo reply, id 10982, seq 2, length 64

// host1 物理口抓包抓到封装vxlan后的包
tcpdump -i eth0 -nn -vv -e  dst 10.128.128.52
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
07:58:02.418249 00:50:56:95:b0:b2 > 00:50:56:95:59:53, ethertype IPv4 (0x0800), length 148: (tos 0x0, ttl 64, id 62027, offset 0, flags [DF], proto UDP (17), length 134)
    10.128.128.27.42104 > 10.128.128.52.4789: [no cksum] VXLAN, flags [I] (0x08), vni 7
fe:fe:fe:fe:fe:aa > fe:fe:fe:fe:fe:bb, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 59454, offset 0, flags [DF], proto ICMP (1), length 84)
    1.1.1.1 > 1.1.1.2: ICMP echo request, id 11762, seq 1, length 64
07:58:03.419160 00:50:56:95:b0:b2 > 00:50:56:95:59:53, ethertype IPv4 (0x0800), length 148: (tos 0x0, ttl 64, id 62065, offset 0, flags [DF], proto UDP (17), length 134)
    10.128.128.27.42104 > 10.128.128.52.4789: [no cksum] VXLAN, flags [I] (0x08), vni 7
fe:fe:fe:fe:fe:aa > fe:fe:fe:fe:fe:bb, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 59519, offset 0, flags [DF], proto ICMP (1), length 84)
    1.1.1.1 > 1.1.1.2: ICMP echo request, id 11762, seq 2, length 64


tcpdump -i eth0 -nn -vv -e  src 10.128.128.52
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
08:05:34.582869 00:50:56:95:59:53 > 00:50:56:95:b0:b2, ethertype IPv4 (0x0800), length 148: (tos 0x0, ttl 64, id 18217, offset 0, flags [DF], proto UDP (17), length 134)
    10.128.128.52.40479 > 10.128.128.27.4789: [no cksum] VXLAN, flags [I] (0x08), vni 7
fe:fe:fe:fe:fe:bb > fe:fe:fe:fe:fe:aa, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 24861, offset 0, flags [none], proto ICMP (1), length 84)
    1.1.1.2 > 1.1.1.1: ICMP echo reply, id 20116, seq 1, length 64
08:05:35.583508 00:50:56:95:59:53 > 00:50:56:95:b0:b2, ethertype IPv4 (0x0800), length 148: (tos 0x0, ttl 64, id 18395, offset 0, flags [DF], proto UDP (17), length 134)
    10.128.128.52.40479 > 10.128.128.27.4789: [no cksum] VXLAN, flags [I] (0x08), vni 7
fe:fe:fe:fe:fe:bb > fe:fe:fe:fe:fe:aa, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 25007, offset 0, flags [none], proto ICMP (1), length 84)
    1.1.1.2 > 1.1.1.1: ICMP echo reply, id 20116, seq 2, length 64


// 将两个host的vxlan口删掉换成一对多模式,注意一对多模式必须制定tun_dst否则vxlan口收不到数据包
(host1+host2)ovs-vsctl del-port aa
(host1)ovs-vsctl add-port br-int bb -- set interface bb type=vxlan options:local_ip=10.128.128.27 options:remote_ip=flow option:key=flow
(host1)ovs-ofctl add-flow br-int 'table=0,priority=200,ip,in_port=ovs-veth10 action=set_field:0x7->tun_id,set_field:10.128.128.52->tun_dst,normal' 

(host2)ovs-vsctl add-port br-int bb -- set interface bb type=vxlan options:local_ip=10.128.128.52 options:remote_ip=flow option:key=flow
(host2)ovs-ofctl add-flow br-int 'table=0,priority=200,ip,in_port=ovs-veth20 action=set_field:0x7->tun_id,set_field:10.128.128.27->tun_dst,normal' 



// verify one to more packet
// host1 ns10 ping host2 ns20
PING 1.1.1.2 (1.1.1.2) 56(84) bytes of data.
64 bytes from 1.1.1.2: icmp_seq=1 ttl=64 time=1.07 ms
64 bytes from 1.1.1.2: icmp_seq=2 ttl=64 time=0.462 ms
64 bytes from 1.1.1.2: icmp_seq=3 ttl=64 time=0.435 ms
64 bytes from 1.1.1.2: icmp_seq=4 ttl=64 time=0.432 ms

// host1 物理口抓包抓到封装vxlan后的包
tcpdump -i vxlan_sys_4789 -nn -vv -e
tcpdump: listening on vxlan_sys_4789, link-type EN10MB (Ethernet), capture size 262144 bytes
08:29:06.935436 fe:fe:fe:fe:fe:aa > fe:fe:fe:fe:fe:bb, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 37795, offset 0, flags [DF], proto ICMP (1), length 84)
    1.1.1.1 > 1.1.1.2: ICMP echo request, id 46159, seq 1, length 64
08:29:06.936214 fe:fe:fe:fe:fe:bb > fe:fe:fe:fe:fe:aa, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 10425, offset 0, flags [none], proto ICMP (1), length 84)
    1.1.1.2 > 1.1.1.1: ICMP echo reply, id 46159, seq 1, length 64


// host1 物理口抓包抓到封装vxlan后的包,可以看到此时vxlan封装的外层的ip是在流表里指定的ip,外层的mac是host2物理网卡的mac
tcpdump -i ens160 -nn -vv -e  dst 10.128.128.52
tcpdump: listening on ens160, link-type EN10MB (Ethernet), capture size 262144 bytes
08:29:06.935475 00:50:56:95:b0:b2 > 00:50:56:95:59:53, ethertype IPv4 (0x0800), length 148: (tos 0x0, ttl 64, id 5977, offset 0, flags [DF], proto UDP (17), length 134)
    10.128.128.27.42104 > 10.128.128.52.4789: [no cksum] VXLAN, flags [I] (0x08), vni 7
fe:fe:fe:fe:fe:aa > fe:fe:fe:fe:fe:bb, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 37795, offset 0, flags [DF], proto ICMP (1), length 84)
    1.1.1.1 > 1.1.1.2: ICMP echo request, id 46159, seq 1, length 64
08:29:07.936513 00:50:56:95:b0:b2 > 00:50:56:95:59:53, ethertype IPv4 (0x0800), length 148: (tos 0x0, ttl 64, id 5979, offset 0, flags [DF], proto UDP (17), length 134)
    10.128.128.27.42104 > 10.128.128.52.4789: [no cksum] VXLAN, flags [I] (0x08), vni 7
fe:fe:fe:fe:fe:aa > fe:fe:fe:fe:fe:bb, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 38013, offset 0, flags [DF], proto ICMP (1), length 84)
    1.1.1.1 > 1.1.1.2: ICMP echo request, id 46159, seq 2, length 64

总结:一对一模式集群内每两个主机都要互联,每个主机建立n-1个tunnel口,指定本地ip和对端ip,一对多模式每个主机只有1个tunnel口,指定本地ip,对端ip用flow表示,但是需要在流表里指定对端ip文章来源地址https://www.toymoban.com/news/detail-772573.html

到了这里,关于OVS Vxlan一对一模式VS一对多模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • queryWrapper处理一对一,一对多,多对多

    是的,定义一个 BankUser 对象时,通常需要在其内部定义一个 BankCard 字段来表示其与 bank_card 表的关联关系。 例如,在 BankUser 类中定义一个 BankCard 对象作为其属性:```java ``` 然后,在查询 BankUser 对象时,需要使用 LEFT JOIN 将 bank_user 和 bank_card 表进行关联,并使用 select 方法指

    2024年02月04日
    浏览(49)
  • [MySql]实现多表查询-一对一,一对多

    目录 多表关联关系的分类 mybatis中的多表查询: 数据库准备  项目目录  一对一查询(多对一) 方式一:(xml文件映射) 查询结果:  方式二:(注解映射)  一对多查询(一对多) 方式一:(xml文件映射)  方式二:(注解映射) 既然数据库是存储项目中的数据的,项目中的

    2023年04月10日
    浏览(56)
  • TCP一对一聊天

    客户端 服务端  结果展示  第二种 客户端 服务端 结果

    2024年02月04日
    浏览(45)
  • MyBatis关联查询实战:一对一与一对多详细解析

    MyBatis是一款强大的持久层框架,提供了多种方式来处理关联查询,其中包括一对一和一对多的情况。在本文中,我们将深入探讨这两种关联查询的实现方式,并通过具体的示例代码进行详细解释。 实现一对一关联查询的方式有多种,其中包括嵌套查询(Nested Queries)和结果集

    2024年01月19日
    浏览(73)
  • STM32 LWIP UDP 一对一 一对多发送

    之前没有接触过网络的通信,工作需要 UDP 接收和发送通信,在网上没有找到一对一、一对多的相关例程;于是在技术总监对我的指导,用正点原子板子给的例程是从官方的程序修改的,实现了Lwip UDP通信一对一、一对多的发送程序,可以随便指定发送 ip地址 、发送 端口号

    2024年02月15日
    浏览(51)
  • MyBatis案例三:商品的类别(一对一,一对多查询)

    在数据库分别创建一个product、category表: 商品表(product) 商品编号(id) 商品名称(goodsname) 商品单价(price) 商品类别(typeid) 1 电视机 5000 1 2 冰箱 4000 2 3 空调 3000 2 4 洗衣机 2000 2 商品类别表(category) 商品类别编号(id) 商品类别名称(typename) 1 黑色家电 2 白色家电

    2023年04月08日
    浏览(53)
  • TCP实现一对一聊天

    一,创建类 二,类 1.ChatSocketServer类 2.ChatSocketClient类 三,结果(先服务  再客户)

    2024年02月03日
    浏览(47)
  • python#django数据库一对一/一对多/多对多

    搭建 # 一对一 class   TestUser(models.Model):     username=models.CharField(max_length=32)     password = models.CharField(max_length=32) class TestInfo(models.Model):     mick_name=models.CharField(max_length=32)     user=models.OneToOneField(to=TestUser,on_delete=models.CASCADE()#on_delete 删除的模式 CASCADE 级联删除 让后执行数

    2024年02月14日
    浏览(78)
  • Mybatis:一对一查询映射处理

    本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远! MyBatis是一种流行的Java持久化框架,它提供了灵活而强大的查询映射功能。在一些复杂的数据模型中

    2024年02月14日
    浏览(43)
  • EFCore-12 一对一关系配置

    商品订单和快递单的关系,一般情况下是一对一的,在网上购买商品下一个订单,这个订单会生成一个对应的快递单。如下图所示: 新建一个控制台应用程序 控制台项目结构: 项目引用的程序集: Microsoft.EntityFrameworkCore.SqlServer  Microsoft.EntityFrameworkCore.Tools    1.在实体类中

    2024年02月06日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包