一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种实现跨VPC网络流量转发中会话溯源的方法与流程

2022-07-23 12:39:17 来源:中国专利 TAG:

一种实现跨vpc网络流量转发中会话溯源的方法
技术领域
1.本发明涉及虚拟网络转发领域,尤其涉及一种实现跨vpc网络流量转发中会话溯源的方法。


背景技术:

2.伴随着云计算,数字化产业中网络技术的不断革新,越来越多的基础架构逐步向基于通用处理器平台的架构方向演进,从传统的物理网络到虚拟网络,从扁平化的网络过度到基于sdn分层的网络架构。随着硬件网卡技术的快速迭代,对通用处理器平台的要求越来越高,在cpu技术迭代速度远不如硬件网卡的时代下,通用处理器平台对网络报文的处理严重阻碍了网络性能的提升,为了应对高速网络的要求,dpdk(data plane development kit),这个以软件优化为主的高性能网络数据处理框架横空出世,它不同于传统通用处理器平台兼容并包的设计为初衷,而更加专注于网络应用中数据包的高速处理,区别于传统通用服务器平台,dpdk绕过了其通用的内核网络协议栈,将数据包的处理直接放到了用户空间进行处理,bypass很多内核无用且复杂的处理机制。从内核看,dpdk只是一个普通的用户态软件程序,这使得dpdk可以在不同系统上应用广泛。
3.云计算虚拟化技术的兴起,通过虚拟私有云vpc为云资源建立隔离的、独立的虚拟网络环境,早期虚拟私有云vpc技术采用vlan进行资源隔离,但是vlan的使用就限制住网络规模最多到4k个租户,对于海量用户而言,4k数量级是远远不够的,经过技术迭代,现代虚拟私有云vpc一般基于vxlan或者geneve或者类似技术实现云资源的隔离,突破了vlan 4k的限制,通过vni标识进行虚拟网络vpc的隔离,vni被协议扩展到了24bit,能够支持大量客户的增长需求,但是随着租户数量的增长,多租户在访问类似公共资源服务时,由于不同租户虚拟私有云vpc之间网络是隔离的,则必然出现地址重叠的租户端应用,跨vni,跨租户的流量访问同一公共资源服务的应用场景。
4.目前对于上述场景的解决方式主要是通过nat(网络地址转换)技术,将同源地址,通过nat方式,变更为非同源地址,这样相同目的端的服务可以区分出不同的流量,这要求转发设备上需要维护nat表项,对回包进行nat地址转换,重新溯源回原有的真实地址。通过nat地址转换可以将同源地址更换成非同源地址,然而需要在转发设备上维护相应的nat表项,增加了nat表的维护和查找nat表所带来额外的性能开销。


技术实现要素:

5.有鉴于此,本发明提出一种实现跨vpc网络流量转发中会话溯源的方法,报文通过一次查表便可以精确识别同源流量从而做出正确的转发行为,规避维护nat转换表的代价和查表时间等问题。
6.一方面,本发明提供一种实现跨vpc网络流量转发中会话溯源的方法,包括:步骤s1:转发主机根据客户端请求报文的五元组建立对应的会话表项,将客户端请求报文的五元组记录到会话表项中,并为该会话表项分配唯一的会话序列号;
步骤s2:转发主机将会话序列号更新到客户端请求报文的源mac地址内,将修改后的客户端请求报文,通过隧道协议封装成客户端请求隧道报文后发送到目标主机;步骤s3:目标主机对客户端请求隧道报文进行解隧道封装处理,得到客户端请求报文,目标服务处理后,回复服务端应答报文,目标主机对服务端应答报文进行隧道封装,形成服务端应答隧道报文并发送至转发主机;步骤s4:转发主机对服务端应答隧道报文进行解隧道封装处理,得到服务端应答报文,进行会话的查找,从步骤s1的会话表项中获取记录的客户端请求报文的五元组信息;步骤s5:转发主机根据步骤s4中获得的客户端请求报文的五元组信息确定客户端位置,将服务端应答报文发送至正确的客户端。
7.进一步地,本发明的步骤s1,包括:步骤s11:转发主机上的硬件网卡根据客户端请求报文的五元组信息,将收到的客户端请求报文散列到不同的硬件网卡队列上;步骤s12:将步骤s11中每个硬件网卡队列分别与转发主机上不同的cpu进行绑定,并行收取客户端请求报文;步骤s13:根据客户端请求报文的五元组查询转发主机上指定cpu上的服务配置,如果客户端请求报文采用tcp/udp协议进行通信,并且为tcp/udp协议的首包,则在该cpu上建立会话表项,记录客户端请求报文的五元组信息;步骤s14:根据客户端请求报文的五元组信息、当前时间值获得唯一的会话序列号,将生成的会话序列号分配给该会话表项。
8.进一步地,本发明的步骤s2中,步骤s2中,转发主机将会话序列号更新到客户端请求报文的源mac地址内,包括:客户端请求报文的源mac地址的前16bit采用固定的前缀:fe:00,中间5bit用于承载cpu号,后27bit用于承载步骤s1中产生的会话序列号。
9.进一步地,本发明的步骤s3,包括:步骤s31:在目标主机上将服务端应答报文封装成服务端应答隧道报文后发送到转发主机上;步骤s32:通过转发主机硬件网卡上的rte_flow功能在硬件网卡上下发对应的网卡策略;步骤s33:网卡策略对服务端应答报文的目的mac地址中的中间5bit进行匹配;步骤s34:将匹配上的服务端应答隧道报文通过硬件网卡队列发送到与硬件网卡队列绑定的cpu上。
10.进一步地,本发明的步骤s33中,所述服务端应答报文的目的mac地址为步骤s2中修改的客户端请求报文的源mac地址。
11.进一步地,本发明的步骤s4,包括:s41:cpu对服务端应答隧道报文进行解封装,获得服务端应答报文,提取服务端应答报文的目的mac地址;s42:获取服务端应答报文的目的mac地址的后27bit,得到会话序列号;s43:采用会话序列号查询会话表项,匹配获得步骤s1建立的会话表项;s44:从会话表项中获取记录的客户端请求报文的五元组信息。
12.另一方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,所述程
序被处理器执行时实现所述方法的步骤。
13.最后,本发明还提供一种终端设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现所述方法的步骤。
14.本发明实现跨vpc网络流量转发中会话溯源的方法,具有以下有益效果:1)在不扩充报文字段的情况下,利用报文mac地址属性,承载多核cpu队列匹配识别符和会话查找标识符,在跨vpc访问相同后端的场景下,同时实现了cpu的溯源和会话表的溯源,从而精确识别同源流量;2)降低了维护代价,解决了nat过程中的性能损耗,在有状态报文的交互过程中,利用特殊mac传递信息,提升转发设备的性能;3)不使用nat等地址转换等技术进行换地址处理,使得服务端能够知道真实的客户端地址信息。
附图说明
15.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
16.图1为本发明第一实施例的一种实现跨vpc网络流量转发中会话溯源的方法的流程图。
17.图2为本发明第二实施例的一种实现跨vpc网络流量转发中会话溯源的方法的流程图。
18.图3为本发明第三实施例的一种实现跨vpc网络流量转发中会话溯源的方法的流程图。
19.图4为本发明第四实施例的一种实现跨vpc网络流量转发中会话溯源的方法的流程图。
具体实施方式
20.下面结合附图对本发明实施例进行详细描述。
21.需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合;并且,基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
22.需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本公开,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目各方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
23.本发明的理论技术简述如下:在多租户场景下,由于租户不同,则标识不同租户vpc的vni亦不相同,当不同租户
地址重叠的客户端,在访问同一目标机器时,会有概率出现,访问流量的sip,sport,dip,dport,protocol(即报文五元组)完全相同,仅仅vni不同,这样的流量送到转发设备上时,由于rss hasd的算法,同样也有概率会hash到同一个网卡队列上,被同一个cpu进行处理,由于vni不同,则该cpu上会建立两条会话表项,除vni不同外,报文五元组完全相同。由于目标机器是同一个,则会将vni改成同一个数值后,发送出去。目标机器收到报文,处理完后进行回复,回复的报文被送到转发设备上,转发设备根据目标机器的五元组,将会查找到两条会话,这两条会话除了vni不同,其他字段均相同,在不做nat方案时,流量将无法进行处理。
24.所以在非nat方案时,本发明需要解决的第一个问题是,回复的报文如何回到之前发送请求报文的cpu上,因为数据结构是per-cpu的,请求报文建立的会话表只存在于之前的cpu上,如果送到其他cpu上,报文将被无情的丢弃。第二个要解决的问题是,就算回复报文回到了之前发送请求报文的cpu上,转发设备如何根据回复报文选择匹配哪一条会话表,两条会话表除了vni不同,其他五元组是完全一致的。
25.为了解决上述两个问题,本发明设计实现了一种mac地址,通过该mac地址,解决了上述两个问题,因为网卡队列是和cpu一一绑定的,且针对每一条流量,其五元组多变,无法找到共性,所以本发明为每一个cpu分配一个特殊的mac地址,通过这个特殊的mac地址,来标识这个流量是由哪一个cpu发送出去的,回程的报文只需要携带这个特殊的mac地址返回,就能够实现命中相同cpu的功能。对于第二个问题,在同一cpu上如何区分两条五元组相同,vni不同的会话表,传统的依据五元组查找的方式无法生效,必须引入一个不同标识,我们知道mac地址有48bit,vni有24bit,本发明中,对解决第一个问题所产生的cpu特殊mac进行二次改造,使用特殊mac的前21bit用作识别cpu号,后27bit用来承载会话标识符,即,在创建会话时,同时生成一个会话序列号,记录到会话表中,则能支持2^27=13000万左右的会话表项,将会话序列号记录在特殊mac上,从回程报文中取出特殊mac的后27bit,获得会话序列号,通过会话序列号去查找会话,将传统的五元组查找变为一元组查找,极大的提高了查询效率。
26.本发明的方案中,通过特殊mac,同时实现了cpu的溯源和会话表的溯源,降低了维护代价,解决了nat过程中的性能损耗,在有状态报文的交互过程中,利用特殊mac传递信息,提升转发设备的性能。
27.图1为根据本发明示例性第一实施例的一种实现跨vpc网络流量转发中会话溯源的方法的流程图,如图1所示,本实施例所述方法,包括:步骤s1:转发主机根据客户端请求报文的五元组建立对应的会话表项,将客户端请求报文的五元组记录到会话表项中,并为该会话表项分配唯一的会话序列号;步骤s2:转发主机将会话序列号更新到客户端请求报文的源mac地址内,将修改后的客户端请求报文,通过隧道协议封装成客户端请求隧道报文后发送到目标主机;步骤s3:目标主机对客户端请求隧道报文进行解隧道封装处理,得到客户端请求报文,目标服务处理后,回复服务端应答报文,对服务端应答报文进行隧道封装,形成服务端应答隧道报文并发送至转发主机;步骤s4:转发主机对服务端应答隧道报文进行解隧道封装处理,得到服务端应答报文,进行会话查找,从步骤s1的会话表项中获取记录的客户端请求报文的五元组信息;步骤s5:转发主机根据步骤s4中获得的客户端请求报文的五元组信息确定客户端
位置,将服务端应答报文发送至正确的客户端。
28.本实施例方法的步骤s2中,转发主机将会话序列号更新到客户端请求报文的源mac地址内,包括:客户端请求报文的源mac地址的前16bit采用固定的前缀:fe:00,中间5bit用于承载cpu号,后27bit用于承载步骤s1中产生的会话序列号。该步骤中承载的cpu号用于记录客户端请求隧道报文是哪一个cpu转发的。在实际应用中,转发设备在建立完s1中的会话表项后,需要将客户端请求报文封装客户端请求隧道报文,再发送到真正提供目标服务的主机上。
29.图2为根据本发明示例性第二实施例的一种实现跨vpc网络流量转发中会话溯源的方法的流程图,本实施例是图1所示方法的优选实施例,如图2所示,本实施例方法的步骤s1,包括:步骤s11:转发主机上的硬件网卡根据客户端请求报文的五元组信息,将收到的客户端请求报文散列到不同的硬件网卡队列上;步骤s12:将步骤s11中每个硬件网卡队列分别与转发主机上不同的cpu进行绑定,并行收取客户端请求报文;步骤s13:根据客户端请求报文的五元组查询转发主机上指定cpu上的服务配置,如果客户端请求报文采用tcp/udp协议进行通信,并且为tcp/udp协议的首包,则在该cpu上建立会话表项,记录客户端请求报文的五元组信息;步骤s14:根据客户端请求报文的五元组信息、当前时间值获得唯一的会话序列号,将生成的会话序列号分配给该会话表项。
30.图3为根据本发明示例性第三实施例的一种实现跨vpc网络流量转发中会话溯源的方法的流程图,本实施例是图1所示方法的优选实施例,如图3所示,本实施例方法的步骤s3,包括:步骤s31:在目标主机上将服务端应答报文封装成服务端应答隧道报文后发送到转发主机上;步骤s32:通过转发主机硬件网卡上的rte_flow功能在硬件网卡上下发对应的网卡策略;步骤s33:网卡策略对服务端应答报文的目的mac地址中的中间5bit进行匹配;步骤s34:将匹配上的服务端应答隧道报文通过硬件网卡队列发送到与硬件网卡队列绑定的cpu上。
31.本实施例方法的步骤s33中,所述服务端应答报文的目的mac地址为步骤s2中修改的客户端请求报文的源mac地址。
32.本实施例方法通过步骤s34实现在同一个cpu上处理同一个客户端的访问,应答流量的收、发包。
33.图4为根据本发明示例性第四实施例的一种实现跨vpc网络流量转发中会话溯源的方法的流程图,本实施例是图1所示方法的优选实施例,如图4所示,本实施例方法的步骤s4,包括:s41:cpu对服务端应答隧道报文进行解封装,获得服务端应答报文,提取服务端应答报文的目的mac地址;s42:获取服务端应答报文的目的mac地址的后27bit,得到会话序列号;
s43:采用会话序列号查询会话表项,匹配获得步骤s1建立的会话表项;s44:从会话表项中获取记录的客户端请求报文的五元组信息。
34.另一方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现所述方法的步骤。
35.最后,本发明还提供一种终端设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现所述方法的步骤。
36.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献