掌桥专利:专业的专利平台
掌桥专利
首页

以硬件加速产生和处理VXLAN数据包及移除VXLAN报头的方法

文献发布时间:2024-05-31 01:29:11


以硬件加速产生和处理VXLAN数据包及移除VXLAN报头的方法

技术领域

本发明涉及虚拟可扩展局域网数据包(Virtual Extensible Local AreaNetwork(VXLAN)packets)的处理,尤其涉及以硬件加速VXLAN数据包的处理。

背景技术

虚拟局域网(Virtual Local Area Network(VLAN))报头(header)的VLAN识别符(VLAN ID)栏位的长度只有12位,最多只支持212=4096个VLAN,这对于某些应用(例如:云端计算)而言不敷使用。为了解决这个问题,虚拟可扩展局域网(Virtual ExtensibleLocal Area Network(VXLAN))近年来被广泛地应用。VXLAN数据包的报头有虚拟网络标识符(Virtual Network Identifier(VNI)),其相当于VLAN ID,该VNI的长度有24位,可支持224个VLAN,这足以满足多数应用。

然而,目前技术多半以软件来解析数据包以及转换数据包格式,以实现VXLAN,但软件的处理速度不理想。而硬件(例如:专用集成电路(Application Specific IntegratedCircuit(ASIC)))难以用来实现VXLAN的原因包括:除了对下行数据包需移除VXLAN报头外,对于不同的上行数据包(upstream packets),需分别添加不同内容的VXLAN报头至该些不同的上行数据包。简言之,硬件难以对所有数据包执行一致化的处理。

发明内容

本发明的目的之一在于提供以硬件加速产生虚拟可扩展局域网数据包(VirtualExtensible Local Area Network(VXLAN)packets)的方法、以硬件加速移除VXLAN报头的方法以及以硬件加速处理VXLAN数据包的方法。

本发明的以硬件加速产生VXLAN数据包的方法的一实施例包括下列步骤:判断一原始数据包是否为一上行数据包;当该原始数据包为该上行数据包时,判断该原始数据包是否指向一VXLAN外出接口;当该原始数据包指向该VXLAN外出接口,加入一原型外部报头在该原始数据包之前,以产生一VXLAN数据包;以及在产生该VXLAN数据包后,判断是否修改该VXLAN数据包的该原型外部报头的内容。

本发明的以硬件加速移除VXLAN报头的方法的一实施例包括下列步骤:判断一原始数据包是否为一下行数据包;当该原始数据包为该下行数据包时,判断该原始数据包是否为一VXLAN数据包且包括一匹配的VXLAN网络标识符(VXLAN network identifier(VNI));当该原始数据包为该VXLAN数据包且包括该匹配的VNI时,判断该原始数据包是否指向一VXLAN进入接口;以及当该原始数据包指向该VXLAN进入接口时,移除一外部报头,以产生一输入数据包,其中该外部报头包括一VXLAN报头。

本发明的以硬件加速处理VXLAN数据包的方法的一实施例包括:以该硬件加速产生一VXLAN数据包的多个数据包产生步骤;以及以该硬件加速移除一VXLAN报头的多个报头移除步骤。该多个数据包产生步骤包括:判断一上行数据包是否指向一VXLAN外出接口;当该上行数据包指向该VXLAN外出接口,加入一原型外部报头在该上行数据包之前,以产生该VXLAN数据包;以及在产生该VXLAN数据包后,判断是否修改该VXLAN数据包的该原型外部报头的内容。该多个报头移除步骤包括:判断一下行数据包是否为一VXLAN数据包且包括一匹配的VXLAN网络标识符(VXLAN network identifier(VNI));当该下行数据包为该VXLAN数据包且包括该匹配的VNI时,判断该下行数据包是否指向一VXLAN进入接口;以及当该下行数据包指向该VXLAN进入接口时,移除一外部报头,以产生一输入数据包,其中该外部报头包括该VXLAN报头。

有关本发明的特征、实施与功效,现结合附图对优选实施例详细说明如下。

附图说明

图1示出了根据本发明以硬件加速产生虚拟可扩展局域网(VXLAN)数据包的方法的实施例;

图2示出了根据图1所述的原始数据包的格式的示例;

图3示出了根据图1所述的原型外部报头的格式的示例;

图4示出了根据图1所述的硬件的示例性的运行流程;

图5示出了根据本发明的以硬件加速移除VXLAN报头的方法的实施例;以及

图6示出了根据图1与图5的综合实施例的流程图。

附图标记说明:

S110~S140:步骤 DMAC:目的地媒体存取控制 SMAC:来源地媒体存取控制

Ethertype:乙太种类 PPPoE:通过以太网传输 PPP:点对点协议点对点协议

IPv4:互联网通信协议第4版 IPv6:互联网通信协议第6版 TCP header:传输控制协议报头

Payload:负载 CVLAN:客户虚拟局域网 UDP:用户数据报协议

VXLAN:虚拟可扩展局域网 410:流向表 420:接口表

430:内容表 440:控制表 S510~S540:步骤

S605~S665:步骤

具体实施方式

本说明书披露了以硬件加速产生虚拟可扩展局域网数据包(Virtual ExtensibleLocal Area Network(VXLAN)packets)的方法、以硬件加速移除VXLAN报头(VXLAN header)的方法以及以硬件加速处理VXLAN数据包的方法,该些方法能够以硬件快速地实现VXLAN。本发明的方法是应用于一网络装置(例如:交换器(switch)、路由器(router)),该网络装置包括上述硬件以及其它电路(例如:中央处理单元(CPU)、内存、媒体存取控制(MediaAccess Control(MAC))电路与实体层电路),该硬件例如是一专用集成电路(ApplicationSpecific Integrated Circuit(ASIC)),其可以是一独立电路专用于VXLAN,也可以是该网络装置的某个电路(例如:MAC电路)的至少一部分。

图1示出了本发明的以硬件加速产生VXLAN数据包的方法的一实施例。图1的实施例包括下列步骤:

S110:判断一原始数据包是否为一上行数据包(upstream packet)。举例而言,本步骤判断该原始数据包是否从一局域网(local area network(LAN))传向一广域网(widearea network(WAN));若是,该原始数据包为该上行数据包。该原始数据包的格式的一范例如图2所示,包括一目的地MAC(destination MAC(DMAC))栏位、一来源地MAC(source MAC(SMAC))栏位、一乙太种类(Ethertype)栏位、一通过以太网传输点对点协议(Point-to-Point Protocol over Ethernet(PPPoE))栏位、一点对点协议(Point-to-Point Protocol(PPP))栏位、一互联网通信协议第4版(Internet Protocol version 4(IPv4))栏位或一互联网通信协议第6版(Internet Protocol version 6(IPv6))栏位、一传输控制协议报头(Transmission Control Protocol(TCP)header)栏位以及一负载(Payload)栏位;然此并非本发明的实施限制。

S120:当该原始数据包为该上行数据包时,判断该原始数据包是否指向一VXLAN外出接口(VXLAN egress interface)。值得注意的是,不同的两个原始数据包可能分别指向不同的两个VXLAN外出接口,以分别传输给不同目的地;此时这两个数据包分别对应一内容表(content table)(如后所述)的两个不同内容缓存(content buffers)以及分别对应一控制表(control table)(如后所述)的两个不同控制条目(control entries),其中该内容表与该控制表储存在该硬件中,该两个不同内容缓存的内容(例如:DMAC栏位的值)不同及/或该两个不同控制条目的内容不同。

S130:当该原始数据包指向该VXLAN外出接口,加入一原型外部报头(prototypeouterheader)在该原始数据包之前,以产生一VXLAN数据包,其中该原始数据包可能被修改(例如:加入一客户虚拟局域网(Customer Virtual Local Area Network(CVLAN))栏位)。该原型外部报头的格式的一范例如图3所示,包括一DMAC栏位、一SMAC栏位、一CVLAN栏位、一乙太种类栏位、一PPPoE栏位、一PPP栏位、一IPv4/IPv6栏位、一用户数据报协议(UserDatagram Protocol(UDP))栏位以及一VXLAN栏位;然此并非本发明的实施限制。本领域具有普通知识的技术人员可依实施需求修改该原型外部报头的格式。

S140:在产生该VXLAN数据包后,判断是否修改该VXLAN数据包的该原型外部报头的内容。值得注意的是,在完成步骤S140后,该硬件可依一般的上行数据包转发进程(forwarding process)处理该VXLAN数据包。

请参阅图1~3。若基于某些原因(例如:该原始数据包的类型是该硬件首次处理的类型,或者对应该原始数据包的类型的原型外部报头未被预存),该原型外部报头未储存在该硬件的一内容表;此时,图1的实施例可还包括下列步骤(未在附图中示出):S122:令该硬件从一上层电路(例如:前述网络装置的CPU与内存)取得该原型外部报头的内容的至少一部分(例如:图3的原型外部报头的所有栏位的内容)及/或令该硬件自行产生该原型外部报头的内容的至少一部分,以得到完整的该原型外部报头。举例而言,该上层电路执行软件及/或韧体以产生该原型外部报头的内容;此部分可通过已知的/自行开发的技术来实施,不在本发明的讨论范围内。

S124:将该原型外部报头储存在该内容表的一内容缓存中,以供后续使用,其中该内容缓存相关于/专用于该VXLAN外出接口。举例而言,该内容表是一已知的/自行开发的查找表电路,该内容缓存是一或多个寄存器(register(s))。

请参阅图1~3以及上一段的说明。在该原型外部报头未储存在该硬件的内容表的情形下,该硬件可能也未储存用来判断是否修改该原型外部报头的内容的特定数据;若该硬件未储存该特定数据,步骤S140可还包括下列步骤(未在附图中示出):

S142:令该硬件从该上层电路取得多个栏位值(即:栏位定义记录(fielddefinition record))的至少一部分及/或令该硬件自行产生该多个栏位值的至少一部分,并将该多个栏位值分别储存在一控制表的一控制条目的多个栏位,以供后续使用,其中该控制条目相关于/专用于该VXLAN外出接口。举例而言,该上层电路执行软件及/或韧体以产生该多个栏位值;该控制表是一已知的/自行开发的查找表电路,该控制条目是以一或多个寄存器来实施。

S144:根据该控制表的该控制条目判断是否修改该VXLAN数据包的该原型外部报头。举例而言,该控制条目的多个栏位值及其说明如底下表1所示:

表1

承上一段的说明,该原型外部报头包括M个栏位(例如:图3的原型外部报头的9个栏位),且该M为大于一的整数;以及步骤S144包括:根据该控制条目的该多个栏位值检查该原型外部报头的K个栏位的内容,以决定是否修改该K个栏位的内容,其中该K为小于该M的正整数。举例而言,该K个栏位包括:一PPPoE栏位;一IPv4/IPv6栏位;以及一UDP栏位。举例而言,如表1所示,决定是否修改该K个栏位的内容的步骤包括:判断该PPPoE栏位的一PPPoE长度偏移量(pppoe_len_offset)是否为零,并在该PPPoE长度偏移量不为零时,更新该PPPoE栏位的内容;判断该IPv4/IPv6栏位的一IPv4/IPv6偏移量(ipv4/ipv6_offset)是否为零,并在该IPv4/IPv6偏移量不为零时,更新该IPv4/IPv6栏位的内容;判断该UDP栏位的一UDP长度偏移量(udp_len_offset)是否为零,并在该UDP长度偏移量不为零时,更新该UDP栏位的内容;以及判断该UDP栏位的一源端口(source port)偏移量是否为零,并在该源端口偏移量不为零时,更新该UDP栏位的内容。

请参阅图1~3。若基于某些原因(例如:该原始数据包的类型是该硬件之前已处理过的类型,或者对应该原始数据包的类型的原型外部报头已被预存),该原型外部报头已储存在该硬件的内容表的一内容缓存,且用来判断是否修改该原型外部报头的内容的特定数据已储存在该硬件的控制表的一控制条目;上述情形下,图1的步骤S130从该内容缓存取得该原型外部报头,且图1的步骤S140包括:根据该控制条目判断是否修改该原型外部报头,其中该控制条目包括多个栏位。由于本领域具有普通知识的技术人员能够参酌先前段落来了解上述情形下的实施细节与变化,重复及冗余的说明在此省略。

图4示出了前述硬件的一范例性的运行流程。图4包括一流向表(flow table)410、一接口表(interface table)420、一内容表430以及一控制表440,其中流向表410包括多个流条目(flow entries)(即:图4中的流条目0、流条目0、流条目2等等),接口表420包括多个接口(即:图4中的接口0、接口1等等),内容表430包括多个内容缓存(即:图4中的内容缓存0、内容缓存1等等),控制表440包括多个控制条目(即:图4中的控制条目0、控制条目1等等)。图4中,该硬件先根据该原始数据包的相关数据(例如:内容、源端口、目标埠等等),判断出该原始数据包指向流向表410的流条目2,其中该流条目2包括多个选项包括一进入接口(ingress interface)、一外出接口(egress interface)等等;接下来,该硬件根据该原始数据包,判断出该原始数据包指向该流条目2的该外出接口;然后,该硬件根据该外出接口,判断出该外出接口关联接口表420的接口1;最后,该硬件根据该接口1,判断出该接口1以一对一映射(one-to-one mapping)方式对应至内容表430的内容缓存1以及对应控制表440的控制条目1。上述判断可通过已知的/自行开发的技术来实现。

图5示出了本发明的以硬件加速移除VXLAN报头的方法的一实施例。图5的实施例包括下列步骤:

S510:判断一原始数据包是否为一下行数据包(downstream packet)。举例而言,本步骤判断该原始数据包是否从一局域网传向一广域网;若否,该原始数据包为一下行数据包。

S520:当该原始数据包为该下行数据包时,根据该原始数据包的内容,判断该原始数据包是否为一VXLAN数据包且包括一匹配的VXLAN网络标识符(VXLANnetworkidentifier(VNI))。

S530:当该原始数据包为该VXLAN数据包且包括该匹配的VNI时,根据该原始数据包的内容,判断该原始数据包是否指向一VXLAN进入接口(VXLAN ingressinterface)。

S540:当该原始数据包指向该VXLAN进入接口时,移除该原始数据包的一外部报头,

以产生一输入数据包,其中该外部报头包括一VXLAN报头。值得注意的是,在移除该外部报头后,该硬件可依一般的下行数据包转发进程处理该输入数据包。

图6示出了根据图1与图5实施例的综合实施例的流程图。图6包括下列步骤:

S605:解析(parsing)一原始数据包的格式。

S610:判断该原始数据包是否从一局域网(LAN)到一广域网(WAN);若是,至S615;若否,至S650。

S615:找出对应该原始数据包的一流条目。

S620:根据该流条目,判断该原始数据包所关联的一外出接口是否为一VXLAN接口;若是,至S625;若否,结束本流程(即:至S622)。

S625:找出对应的一内容缓存与一控制条目。

S630:在该原始数据包前加入该内容缓存的一原型外部报头,以产生一VXLAN数据包。

S635:根据该控制条目判断是否修改该VXLAN数据包的该原型外部报头;若是,至S640;若否,至S645。

S640:根据该控制条目修改该原型外部报头。

S645:依一般的上行数据包转发进程处理该VXLAN数据包,然后结束本流程(即:至S647)。

S650:判断该原始数据包是否为一VXLAN数据包且包括一匹配的VNI;若是,至S655;若否,结束本流程(即:至S622)。

S655:判断该原始数据包所关联的一进入接口是否为一VXLAN接口;若是,至S660;若否,结束本流程(即:至S622)。

S660:移除该原始数据包的一外部报头包括一VXLAN报头,以产生一输入数据包。

S665:依一般的下行数据包转发进程处理该输入数据包,然后结束本流程(即:至S622)。

图1与图5的方法可分别地实施,也可结合作为以硬件加速处理VXLAN数据包的方法。由于本领域具有普通知识的技术人员能够参酌图1与图5的实施例来了解以硬件加速处理VXLAN数据包的方法的实施细节与变化,重复及冗余的说明在此省略。

请注意,在实施为可能的前提下,本技术领域具有普通知识的技术人员可选择性地实施前述任一实施例中部分或全部技术特征,或选择性地实施前述多个实施例中部分或全部技术特征的组合,以增加实施本发明实施的方式的弹性。

综上所述,本发明能够以硬件(例如:ASIC)加速处理VXLAN数据包。相较于现有技术以软件处理VXLAN数据包,本发明能达到更好的效能。

虽然本发明的实施例如上所述,然而这些实施例并非用来限定本发明,本技术领域中具有普通知识的技术人员可根据本发明的明示或隐含的内容对本发明的技术特征加以变化,这些种种变化均属于本发明所要求的专利保护范围,换言之,本发明的专利保护范围应当以权利要求书所界定的为准。

相关技术
  • VXLAN隧道切换方法及装置
  • 一种VXLAN网络热备切换方法及系统
  • 一种基于VXLAN技术扩张PON局域网组群的方法
  • 一种泛洪抑制方法、VXLAN网桥、网关及系统
  • VxLAN数据包封装方法及使用物理网卡发送VxLAN数据包的卸载方法
  • VxLAN数据包封装方法及使用物理网卡发送VxLAN数据包的卸载方法
技术分类

06120116623437