一种基于OVS的邻居表项的VXLAN报文的转发方法及装置与流程

文档序号:34115683发布日期:2023-05-10 23:54阅读:212来源:国知局
一种基于OVS的邻居表项的VXLAN报文的转发方法及装置与流程

本发明属于网络技术与安全,具体涉及一种基于ovs的邻居表项的vxlan报文的转发方法及装置。


背景技术:

1、open vswitch(简称ovs)是一个开源的虚拟交换机,被广泛地应用在云计算的场景中。同时,为了提高其转发性能,引入了dpdk加速方案,使数据可以在用户态直接转发,极大地提升了ovs的转发性能。

2、在云场景中,普遍使用vxlan对虚拟网络(overlay网络)的报文进行封装,然后将封装后的vxlan报文通过三层转发方式送到基础网络(underlay网络)中。三层转发的关键是ovs要知道下一跳的mac地址。当本地ovs没有保存下一跳的mac地址时,ovs需要通过主动发送arp请求(ipv4地址)或ns报文(ipv6地址)来学习下一跳的mac地址。ovs dpdk在执行上述过程时存在一个明显的缺陷——ovs会丢弃当前需要转发的vxlan隧道报文,直到ovs学习到下一跳的mac地址。

3、总结上述过程,使用ovs dpdk转发vxlan隧道报文时,如果ovs本地的邻居表项中存在下一跳mac,ovs可以正常转发该vxlan报文;如果不存在下一跳mac,ovs则会构造arp请求或ns报文主动学习下一跳mac,并丢弃需要转发的vxlan报文。

4、由于存在该缺陷,会导致虚机通信时存在丢包的风险,直接表现是通信双发的连接建立慢。


技术实现思路

1、本发明实施例的目的是提供一种基于ovs的邻居表项的vxlan报文的转发方法及装置,以解决ovs dpdk转发平面在学习邻居表项时会丢弃当前报文的问题,确保虚机之间能够正常通信。

2、为了解决上述技术问题,本发明是这样实现的:

3、第一方面,本发明实施例提供了一种基于ovs的邻居表项的vxlan报文的转发方法,其特征在于,所述方法包括:

4、在通过ovs转发vxlan报文的情况下,确定目标邻居表项;

5、将所述vxlan报文存入所述目标邻居表项中的缓存队列;

6、构造arp请求或ns报文,以获取所述目标mac地址和目标ip地址;

7、根据所述目标ip地址查找所述目标邻居表项,并将所述目标mac地址更新至所述目标邻居表项中;

8、通过所述ovs在所述目标邻居表项查找所述mac地址,以转发所述vxlan报文。

9、可选地,所述在通过ovs转发vxlan报文且不存在目标mac地址的情况下,确定目标邻居表项包括:

10、在通过ovs转发vxlan报文的情况下,通过下一跳的ip地址查找对应的邻居表项;

11、在不存在所述对应的邻居表项的情况下,创建所述目标邻居表项,并在所述目标邻居表项中建立缓存队列;

12、在存在所述对应的邻居表项且所述对应的邻居表项不存在目标mac地址的情况下,确定所述对应的邻居表项为目标邻居表项。

13、可选地,所述在不存在所述对应的邻居表项的情况下,创建所述目标邻居表项之后,所述方法还包括:

14、设置所述目标邻居表项的状态为第一状态;

15、在所述构造arp请求或ns报文之后,所述方法还包括:

16、将所述目标邻居表项的时间更新为第二状态,并启动第一定时器以记录所述目标邻居表项处于第一状态的时长;

17、在所述构造arp请求或ns报文,以获取所述目标mac地址和目标ip地址之后,所述方法还包括:

18、将所述目标邻居表项的时间更新为第三状态,并启动第二定时器以记录所述目标邻居表项处于第三状态的时长。

19、可选地,在所述将所述目标邻居表项的时间更新为第二状态,并启动第一定时器之后,所述方法还包括:

20、等待针对所述arp请求或ns报文的应答报文;

21、在未收到所述应答报文的情况下,重新发送所述arp请求或ns报文;

22、在收到所述应答报文的情况下,从所述应答报文中获取所述目标mac地址和目标ip地址,将所述目标邻居表项的时间更新为第三状态。

23、可选地,所述在未收到所述应答报文的情况下,重新发送所述arp请求或ns报文之后,所述方法还包括:

24、在重新发送所述arp请求或ns报文的次数大于等于目标次数的情况下,将所述目标邻居表项的时间更新为第一状态;

25、其中,在所述目标邻居表项处于第一状态的情况下,所述目标邻居表项为等待被删除的状态。

26、第二方面,一种基于ovs的邻居表项的vxlan报文的转发装置,其特征在于,包括:

27、确定模块,用于在通过ovs转发vxlan报文的情况下,确定目标邻居表项;

28、缓存模块,用于将所述vxlan报文存入所述目标邻居表项中的缓存队列;

29、构造模块,用于构造arp请求或ns报文,以获取所述目标mac地址和目标ip地址;

30、更新模块,用于根据所述目标ip地址查找所述目标邻居表项,并将所述目标mac地址更新至所述目标邻居表项中;

31、转发模块,用于通过所述ovs在所述目标邻居表项查找所述mac地址,以转发所述vxlan报文。

32、可选地,所述确定模块包括:

33、查找模块,用于在通过ovs转发vxlan报文的情况下,通过下一跳的ip地址查找对应的邻居表项;

34、创建模块,用于在不存在所述对应的邻居表项的情况下,创建所述目标邻居表项,并在所述目标邻居表项中建立缓存队列;

35、确定子模块,用于在存在所述对应的邻居表项且所述对应的邻居表项不存在目标mac地址的情况下,确定所述对应的邻居表项为目标邻居表项。

36、可选地,所述转发装置还包括:

37、设置模块,用于设置所述目标邻居表项的状态为第一状态;

38、第一更新模块,用于将所述目标邻居表项的时间更新为第二状态,并启动第一定时器以记录所述目标邻居表项处于第一状态的时长;

39、第二更新模块,用于将所述目标邻居表项的时间更新为第三状态,并启动第二定时器以记录所述目标邻居表项处于第三状态的时长。

40、可选地,所述转发装置还包括:

41、等待模块,用于等待针对所述arp请求或ns报文的应答报文;

42、发送模块,用于在未收到所述应答报文的情况下,重新发送所述arp请求或ns报文;

43、获取模块,用于在收到所述应答报文的情况下,从所述应答报文中获取所述目标mac地址和目标ip地址,将所述目标邻居表项的时间更新为第三状态。

44、可选地,所述转发装置还包括:

45、第三更新模块,用于在重新发送所述arp请求或ns报文的次数大于等于目标次数的情况下,将所述目标邻居表项的时间更新为第一状态;

46、其中,在所述目标邻居表项处于第一状态的情况下,所述目标邻居表项为等待被删除的状态。

47、本发明实施例提供了一种基于ovs的邻居表项的vxlan报文的转发方法,所述方法包括:在通过ovs转发vxlan报文的情况下,确定目标邻居表项,将所述vxlan报文存入所述目标邻居表项中的缓存队列,构造arp请求或ns报文,以获取所述目标mac地址和目标ip地址,根据所述目标ip地址查找所述目标邻居表项,并将所述目标mac地址更新至所述目标邻居表项中,通过所述ovs在所述目标邻居表项查找所述mac地址,以转发所述vxlan报文。本发明实施例在ovs的邻居表项中增加缓存队列,用于缓存待发送的vxlan报文,以解决ovsdpdk转发平面在学习邻居表项时会丢弃当前报文的问题,确保虚机之间能够正常通信。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1