CN117692532A - 报文分流方法和分布式路由设备 - Google Patents

报文分流方法和分布式路由设备 Download PDF

Info

Publication number
CN117692532A
CN117692532A CN202311699835.6A CN202311699835A CN117692532A CN 117692532 A CN117692532 A CN 117692532A CN 202311699835 A CN202311699835 A CN 202311699835A CN 117692532 A CN117692532 A CN 117692532A
Authority
CN
China
Prior art keywords
line card
message
card
processed
ecmp
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311699835.6A
Other languages
English (en)
Inventor
张绪磊
方晖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Maipu Communication Technology Co Ltd
Original Assignee
Maipu Communication Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Maipu Communication Technology Co Ltd filed Critical Maipu Communication Technology Co Ltd
Priority to CN202311699835.6A priority Critical patent/CN117692532A/zh
Publication of CN117692532A publication Critical patent/CN117692532A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及网络通信技术领域,提供一种报文分流方法和分布式路由设备,分布式路由设备的线卡包括交换芯片、网卡及多核CPU,线卡配置有等价多路径ECMP组,ECMP组包括与对应线卡上网卡的CPU队列一一对应的ECMP成员,所述方法包括:第一线卡的交换芯片通过面板口接收待处理报文;第一线卡的交换芯片从多个ECMP组中选择用于对待处理报文进行转发处理的ECMP成员,并将处理后的待处理报文发送至第一线卡的网卡第一线卡的网卡根据处理后的待处理报文携带的信息,将待处理报文发送至对应的CPU队列以便于对应的CPU核进行处理。本发明提高了多核CPU的分布式路由设备对报文的处理能力。

Description

报文分流方法和分布式路由设备
技术领域
本发明涉及网络通信技术领域,具体而言,涉及一种报文分流方法和分布式路由设备。
背景技术
在分布式设备中,对于线卡通常需要处理本线卡的流量以及线卡与线卡之间的流量;在分布式高端路由设备中大部分的报文都需要CPU处理,通常CPU通过网卡和交换芯片来对接;对于交换芯片传输给网卡的报文,网卡根据报文的特征将报文送到不同CPU核申请的队列缓冲区来让特定的CPU处理。
随着对CPU性能需求越来越高,以及制成工艺的进步,现在的CPU通常有多核的处理器;为了充分利用CPU的多核处理报文的性能,现在的网卡一般是支持多队列的,可以通过哈希(Hash)算法使报文入队列,CPU的每个核来处理与其相关队列的报文。但是在分布式设备中,一般有多张线卡,每种线卡的网卡都不一定相同,那么网卡支持识别的报文的字段也不一定相同。传统一般通过ACL(Access Control List,控制访问列表)等控制信息基于端口/报文信息来增加不同的信息,报文到网卡后根据信息哈希入队列,但是这种方式会受端口和报文类型的影响较大,同时也会浪费交换芯片大量表项资源以及增加复杂性。
发明内容
本发明的目的在于提供了一种报文分流方法和分布式路由设备,其能够使得报文均匀地分流至每一个CPU核处理,充分提高了多核CPU对于报文的处理能力。
本发明的实施例可以这样实现:
第一方面,本发明提供一种报文分流方法,应用于分布式路由设备,所述分布式路由设备包括至少一个线卡,所述线卡均包括交换芯片、网卡及多核CPU,所述线卡均配置有等价多路径ECMP组,所述ECMP组包括与对应线卡上网卡的CPU队列一一对应的ECMP成员,每个所述ECMP成员为所述线卡的交换芯片预先配置的本地下一跳,所述方法包括:
第一线卡的交换芯片通过面板口接收待处理报文;所述第一线卡为所述分布式路由设备的任一线卡;
所述第一线卡的交换芯片从所述ECMP组中选择用于对所述待处理报文进行转发处理的ECMP成员,并将处理后的所述待处理报文发送至所述第一线卡的网卡;
所述第一线卡的网卡根据处理后的所述待处理报文携带的信息,将所述待处理报文发送至对应的CPU队列以便于对应的CPU核进行处理。
在可选的实施方式中,所述第一线卡的交换芯片从所述ECMP组中选择对所述待处理报文进行转发处理的ECMP成员,并将处理后的所述待处理报文发送至所述第一线卡的网卡的步骤包括:
所述第一线卡的交换芯片从所述ECMP组中选择对所述待处理报文进行转发处理的ECMP成员,根据选择的ECMP成员向所述待处理报文中添加分流配置,并将添加分流配置后的报文发送至所述第一线卡的网卡,所述分流配置用于指示处理所述待处理报文的CPU队列。
在可选的实施方式中,所述第一线卡的交换芯片向所述待处理报文中添加分流配置的步骤包括:
所述第一线卡的交换芯片为所述待处理报文添加VLAN TAG;
若所述第一线卡的网卡为能够识别以太网类型字段的网卡,则所述第一线卡的交换芯片根据指定的CPU核及预设映射关系对所述待处理报文中的VLAN TAG赋值,所述预设映射关系表征所述第一线卡的每一CPU队列和对应的VLAN TAG的值之间的关系。
在可选的实施方式中,所述第一线卡的交换芯片向所述待处理报文中添加分流配置的步骤包括:
所述第一线卡的交换芯片为所述待处理报文添加VLAN TAG;
若所述第一线卡的网卡为能够识别VLAN TAG中VLAN ID字段的网卡,则所述第一线卡的交换芯片在已添加VLAN TAG的所述待处理报文中再添加一层新的VLAN TAG;
所述第一线卡的网卡根据指定的CPU核及预设映射关系对所述新的VLAN TAG赋值,所述预设映射关系表征所述第一线卡的每一CPU核和对应的VLAN TAG的值之间的关系。
在可选的实施方式中,所述分布式路由设备中的线卡为多个,除所述第一线卡外还包括第二线卡,所述第一线卡的交换芯片和所述第二线卡的交换芯片均配置有全局下一跳,所述方法还包括:
所述第二线卡的CPU接收到需要发送至所述第一线卡的待发送报文,并为所述待发送报文添加VLAN TAG;
所述第二线卡的CPU根据预设映射关系对所述待发送报文中添加的VLAN TAG赋值,以指定处理所述待发送报文的所述第一线卡的CPU核,所述预设映射关系表征所述第一线卡的每一CPU核和对应的VLAN TAG的值之间的关系;
所述第二线卡的CPU将本线卡的全局下一跳及所述待发送报文通过所述第二线卡的交换芯片的堆叠口发送至所述第一线卡的交换芯片的堆叠口;
所述第一线卡的交换芯片通过堆叠口接收所述待发送报文并根据接收到的全局下一跳将接收到的报文发送至所述第一线卡的网卡;
所述第一线卡的网卡根据所述接收到的报文中的VLAN TAG将所述接收到的报文发送至对应的CPU核处理。
在可选的实施方式中,所述第一线卡的交换芯片通过堆叠口接收所述待发送报文并根据接收到的全局下一跳将接收到的报文发送至所述第一线卡的网卡的步骤包括:
若所述第一线卡的网卡为能够识别以太网类型字段的网卡,则所述第一线卡的交换芯片将所述接收到的报文直接发送至所述第一线卡的网卡。
在可选的实施方式中,所述第一线卡的交换芯片通过堆叠口接收所述待发送报文并根据接收到的全局下一跳将接收到的报文发送至所述第一线卡的网卡的步骤包括:
若所述第一线卡的网卡为能够识别VLAN TAG中VLAN ID字段的网卡,则所述第一线卡的交换芯片将所述接收到的报文中的VLAN TAG中的TPID替换成预设标准值;
所述第一线卡的交换芯片将替换后的报文发送至所述第一线卡的网卡。
在可选的实施方式中,所述第一线卡的交换芯片从所述ECMP组中选择对所述待处理报文进行转发处理的ECMP成员的步骤包括:
所述第一线卡的交换芯片按照轮流分配策略从所述ECMP组中选择对所述待处理报文进行转发处理的ECMP成员。
第二方面,本发明提供一种分布式路由设备,所述分布式路由设备包括至少一个线卡,所述线卡均包括交换芯片、网卡及多核CPU,所述线卡均配置有等价多路径ECMP组,所述ECMP组包括与对应线卡上网卡的CPU队列一一对应的ECMP成员,每一所述ECMP成员为所述线卡的交换芯片预先配置的本地下一跳;
第一线卡的交换芯片,用于通过面板口接收待处理报文;所述第一线卡为所述分布式路由设备的任一线卡;
所述第一线卡的交换芯片,用于从所述ECMP组中选择用于对所述待处理报文进行转发处理的ECMP成员,并将处理后的所述待处理报文发送至所述第一线卡的网卡;
所述第一线卡的网卡,用于根据处理后的所述待处理报文携带的信息,将所述待处理报文发送至对应的CPU队列以便于对应的CPU核进行处理。
在可选的实施方式中,所述第一线卡的交换芯片,还用于从所述ECMP组中选择对所述待处理报文进行转发处理的ECMP成员,根据选择的ECMP成员向所述待处理报文中添加分流配置,并将添加分流配置后的报文发送至所述第一线卡的网卡,所述分流配置用于指示处理所述待处理报文的CPU队列。
与现有技术相比,本发明实施例在分布式路由设备中的第一线卡的交换芯片通过面板口接收待处理报文后,该交换芯片从ECMP组中选择用于对该待处理报文进行转发处理的ECMP成员,由于ECMP成员和第一线卡上网卡的CPU队列一一对应,则第一线卡的网卡根据选定的ECMP成员将待处理报文发送至与选定的ECMP成员对应的CPU队列,以便于对应的CPU核进行处理,本实施例通过将CPU核和ECMP成员一一对应,通过选定ECMP成员,进而选定处理报文的CPU,由此能够使得报文均匀地分流至第一线卡的每一个CPU核处理,充分提高了分布式路由设备的多核CPU对于报文的处理能力。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本实施例提供的分布式路由设备的结构示例图。
图2为本实施例提供的线卡之间报文转发的示例图。
图3为本实施例提供的报文分流方法的流程示例图。
图4为本实施例提供的两个线卡1类型之间报文转发的交互示例图。
图5为本实施例提供的线卡1类型发、线卡2类型收的报文转发的交互示例图。
图6为本实施例提供的线卡2类型发、线卡1类型收的报文转发的交互示例图。
图7为本实施例提供的两个线卡2类型之间报文转发的交互示例图。
图标:10-分布式路由设备;11-线卡;111-线卡的交换芯片;112-网卡;113-CPU;12-交换卡;121-转发卡的交换芯片。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本发明的描述中,需要说明的是,若出现术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,在不冲突的情况下,本发明的实施例中的特征可以相互结合。
请参考图1,图1为本实施例提供的分布式路由设备的结构示例图,图1中,分布式路由设备10包括至少一个线卡11和交换卡12,每一线卡11包括交换芯片111、网卡112及CPU113。
分布式路由设备10是一种通过将路由功能分布到多个物理设备或虚拟设备上来提高路由性能和可扩展性的路由器设备。
分布式路由设备10包括一个或者多个线卡11,线卡11主要为分布式路由设备10提供数据包转发、ping响应以及数据包分片等功能。
线卡11的交换芯片111是一种集成化的芯片,用于提供数据交换和路由功能。
线卡11的网卡112提供以太网的帧的封装、解封、介质的控制等功能。
线卡11的CPU113是线卡11的中央处理器,是信息处理、程序运行的最终执行单元。
交换卡12用于线卡11之间的报文转发。交换卡12中存在交换芯片121。
在分布式路由设备10中,线卡11的交换芯片111是堆叠在一起的,交换卡12的交换芯片121和线卡11的交换芯片111的交换芯片连接在一起组成一个小型系统。两个交换芯片111之间、或者交换芯片111和交换芯片121之间的连接口通常称为堆叠口(也称为stack口)。通过堆叠口的报文通常会加入头部信息来跨芯片识别处理。
基于图1,本实施例还提供一种线卡之间报文转发的示例图,请参照图2,图2为本实施例提供的线卡之间报文转发的示例图,图2中,线卡1的交换芯片从面板口(如图2中空心圆所示)接收到报文后上送线卡1的CPU处理,当线卡1的CPU的发现报文的出口在线卡2的时候会通过线卡1的网卡发送报文到本线卡的交换芯片,本线卡的交换芯片通过查转发表来将报文通过交换芯片的堆叠口(每个线卡上的交换芯片的堆叠口都与交换卡相连,如图2中黑色实心圆所示)转发卡送到线卡2,再通过线卡2的网卡和交换芯片之间的连接口到达线卡2的CPU处理。
需要说明的是,图2中未示出线卡2的交换芯片上的面板口和堆叠口,事实上线卡2如线卡1一样,也有面板口和堆叠口。
在线卡的交换芯片中通常引出了一些以太网口或者其他网卡口(如广域网卡接口)等面板口来接收从用户终端发来的流量,报文通过网卡作为媒介连接交换芯片和CPU,通过网卡接收的报文放在多队列缓冲区,CPU从该缓冲区中取出并处理。为了充分利用CPU的多核的性能,通常将CPU的每个核绑定一个队列,网卡通过哈希方式(也有其它方式,例如逐包负载方式)使报文入队,CPU的每个核再从对应的队列中取报文并对报文进行处理;要实现充分利用CPU的多核性能,此时到达网卡的报文应该需要能让网卡识别并哈希到每一个队列,由此,多个报文分别被均匀地放入各个队列,由不同的CPU的核同时处理,但是分布式路由设备通常有多个线卡,每个线卡的网卡和CPU可能都不同,支持哈希报文的信息也可能不一样。
为了使网卡入队的报文更加均匀,提高CPU处理报文的性能,本实施例提供了一种报文分流方法和分布式路由设备,下面将对其进行详细描述。
请参照图3,图3为本实施例提供的报文分流方法的流程示例图,该方法应用于图1或者图2中的分布式路由设备10,分布式路由设备10的每一线卡均配置有ECMP(Equal-costMultipath Routing,等价多路径)组,ECMP组包括与对应线卡的CPU核一一对应的ECMP成员,每一ECMP成员为预先配置的下一跳,目的出口均为本线卡交换芯片和网卡连接口,每一线卡的交换芯片的转发表或者ACL均配置为将通过线卡的交换芯片的面板口进入、且需要通过交换芯片发出的报文的下一跳设置为ECMP组,由此,通过线卡的交换芯片的面板口进入的报文,会从ECMP组的多个ECMP成员中选择其中一个,并通过选中的ECMP成员将报文发送出去,该方法包括以下步骤:
步骤S101,第一线卡的交换芯片通过面板口接收待处理报文;第一线卡为分布式路由设备的任一线卡。
在本实施例中,第一线卡为接收并处理报文的线卡,分布式路由设备10中任意一个线卡都可以作为第一线卡。面板口为分布式路由设备与外部设备通信采用接口,例如,分布式路由设备通过交换芯片的面板口接收终端发送的报文,待处理报文为通过交换芯片的面板口进入第一线卡的报文。
步骤S102,第一线卡的交换芯片从ECMP组中选择用对待处理报文进行转发处理的ECMP成员,并将处理后的待处理报文发送至第一线卡的网卡。
在本实施例中,选择用于对待处理报文进行转发处理的ECMP成员的方式可以是随机选择、哈希算法相关或者逐包负载等方式,随机选择是从多个ECMP成员中随机选个一个成员,预先指定是通过预先进行分流配置的方式指定多个ECMP成员中的一个,逐包负载是每一个待处理报文达到第一线卡的交换芯片时,依次按序选择ECMP成员。
步骤S103,第一线卡的网卡根据处理后的所述待处理报文携带的信息,将待处理报文发送至对应的CPU队列以便于对应的CPU核进行处理。
在本实施例中,ECMP成员的个数和第一线卡的网卡上的CPU队列个数相同,且CPU队列和CPU核存在对应关系,选定了ECMP成员,也就意味着确定了处理待处理报文的第一线卡的CPU核,待处理报文携带的信息用于表征该待处理报文需要发送至的CPU队列。
本实施例提供的上述方法,通过将CPU队列和ECMP成员一一对应,通过选定ECMP成员,进而选定待处理报文对应的CPU队列,由于CPU队列和CPU核存在对应关系,由此能够使得报文均匀地分流至第一线卡的CPU核处理,充分提高了分布式路由设备的多核CPU对于报文的处理能力。
在本实施例中,一种选择对待处理报文进行转发处理的ECMP成员的方式为:
第一线卡的交换芯片按照轮流分配策略从ECMP组中选择对待处理报文进行转发处理的ECMP成员。
在本实施例中,例如,ECMP成员为8个,编号为1-8,第一个待处理报文选择1号ECMP,第二个待处理报文选择2号,依次轮流,当第九个待处理报文到来时,再重头选择1号ECMP,由此保证报文均匀分配至各个CPU核处理。
除了轮流分配的策略,还可以采用分流配置的方式进行选择,下面描述通过分流配置选择对待处理报文进行转发处理的ECMP成员的实现方式:
第一线卡的交换芯片从ECMP组中选择对待处理报文进行转发处理的ECMP成员,根据选择的ECMP成员向待处理报文中添加分流配置,并将添加分流配置后的报文发送至第一线卡的网卡,分流配置用于指定处理待处理报文第一线卡的CPU核。
在本实施例中,待处理报文进入第一线卡的交换芯片后,会根据端口给待处理报文加上一层VLAN TAG(Virtual Local Area Network TAG,虚拟局域网标签标识),然后匹配二层(二层是OSI参考模型(Open System Interconnection,开放式通信系统互联参考模型的第二层,即数据链路层,匹配二层即匹配MAC地址)、组播、ACL等将待处理报文的指定下一跳为ECMP组,通过ECMP组可以逐包或者使用哈希成员修改报文外层的VLAN的TPID(TagProtocol Identifier,标签协议标识)发送至第一线卡的网卡,具体来说,可以预先确定待处理报文中的典型信息和第一线卡的CPU核之间的对应关系,通过设置待处理报文中的典型信息指定处理待处理报文第一线卡的CPU核。由于分布式路由设备的线卡通常会为从本线卡的面板口进入的报文添加VLAN TAG,以表征该报文进入线卡的端口,基于此,可以通过对VLAN TAG赋值的方式指定CPU核,例如,对赋值后的VLAN TAG进行哈希,根据哈希结果指定CPU核。由于分布式路由设备的线卡通常为多个,不同线卡的网卡的CPU核的个数、网卡的类型均可能不同,本实施例针对两种不同网卡给出各自的添加分流配置的实现方式。
对于能够识别以太网类型字段的网卡,其实现方式为:
若第一线卡的网卡为能够识别以太网类型字段的网卡,则根据指定的CPU核及预设映射关系对待处理报文中的VLAN TAG赋值,预设映射关系表征第一线卡的每一CPU核和对应的VLAN TAG的值之间的关系。
在本实施例中,以太网类型字段是以太网帧头中的Type字段,用来指明以太帧中数据字段的协议类型,而VLAN TAG是用于识别虚拟局域网的标签,VLAN TAG包括VLAN ID(Virtual Local Area Network Identifier,虚拟局域网的标识)字段和TPID字段。本实施例以8核的能够识别以太网类型字段的网卡为例,TPID从0x5100开始,VLAN ID从1开始为例说明该预设映射关系,如表1所示。
表1
对于能够识别VLAN TAG中VLAN ID字段的网卡,其实现方式为:
首先,若第一线卡的网卡为能够识别VLAN TAG中VLAN ID字段的网卡,则在已添加VLAN TAG的待处理报文中再添加一层新的VLAN TAG;
其次,第一线卡的网卡根据指定的CPU核及预设映射关系对新的VLAN TAG赋值,预设映射关系表征第一线卡的每一CPU核和对应的VLAN TAG的值之间的关系。
本实施例以64核的能够识别VLAN ID字段的网卡为例,TPID从0x5100开始,VLANID从1开始为例说明该预设映射关系,如表2所示。
表2
需要说明的是,本实施例虽然只提供了针对两种类型的网卡的实现方式,本领域技术人员完全可以在此基础上无需付出创造性的劳动将其适应性修改适配到更多类型的网卡上。
在本实施例中,在源线卡和目的线卡之间转发的报文是源线卡通过堆叠口发给转发卡,转发卡再通过堆叠口把报文发送至目的线卡,本实施例还给出了此场景下的报文分流方法,本实施例首先会为各线卡配置全局下一跳,全局下一跳可以有多个,不同的全局下一跳的出口配置不一样,每一个全局下一跳可以有一个唯一标识,唯一标识相同的全局下一跳的路由配置是相同的,例如,为了便于描述两个线卡之间报文转发的处理过程,本实施例将发送报文的线卡称之为第二线卡,将接收该报文的线卡称之为第一线卡,基于全局下一跳的配置,针对第二线卡和第一线卡之间转发报文的报文分流方法的实现方式为:
(1)第二线卡的CPU接收到需要发送至第一线卡的待发送报文,并为待发送报文添加VLAN TAG;
在本实施例中,待发送报文可以是第二线卡的交换芯片发送至第二线卡的CPU的,也可以是其他线卡发给第二线卡,需要第二线卡的CPU处理的报文,本实施例以第二线卡的CPU接收到这一报文为起始点说明第二线卡和第一线卡之间转发报文采用的报文分流方法。
(2)第二线卡的CPU根据预设映射关系对待发送报文中添加的VLAN TAG赋值,以指定处理待发送报文的第一线卡的CPU核,预设映射关系表征第一线卡的每一CPU核和对应的VLAN TAG的值之间的关系;
在本实施例中,若第一线卡的网卡为能够识别以太网类型字段的网卡,预设映射关系可以如表1所示,若第一线卡的网卡为能够识别VLAN TAG中VLAN ID字段的网卡,预设映射关系可以如表2所示。
(3)第二线卡的CPU将本线卡的全局下一跳及待发送报文通过第二线卡的交换芯片的堆叠口发送至第一线卡的交换芯片的堆叠口;
在本实施例中,第二线卡根据本线卡的全局下一跳的配置发送待发送报文,在通过本线卡的交换芯片的堆叠口发送待发送报文时,还会通过堆叠头将本线卡的全局下一跳发送至第一线卡的交换芯片的堆叠口,作为一种实现方式,可以通过发送全局下一跳的标识至第一线卡,第一线卡根据全局下一跳的标识找到本线卡的对应全局下一跳。
在本实施例中,第二线卡的全局下一跳的出口配置为第一线卡。
(4)第一线卡的交换芯片通过堆叠口接收待发送报文并根据接收到的全局下一跳将接收到的报文发送至第一线卡的网卡;
在本实施例中,不同类型的网卡,根据接收到的全局下一跳将接收到的报文发送至第一线卡的网卡的处理是有差别的:
若第一线卡的网卡为能够识别以太网类型字段的网卡,其处理方式为:
将接收到的报文直接发送至第一线卡的网卡。
若第一线卡的网卡为能够识别VLAN TAG中VLAN ID字段的网卡,其处理方式为:
第一线卡的交换芯片将接收到的报文中的VLAN TAG中的TPID替换成预设标准值;
第一线卡的交换芯片将替换后的报文发送至第一线卡的网卡。
在本实施例中,预设标准值和网卡协议相关,例如,IEEE 802.1Q协议规定预设标准值为0x8100,而配置有QinQ的报文中内层VLAN TAG的预设标准值都是0x8100,而外层VLAN TAG的预设标准值对于不同的制造商,其值可以是不同的,例如可以是0x9100、0x88a8等。
(5)第一线卡的网卡根据接收到的报文中的VLAN TAG将接收到的报文发送至对应的CPU核处理。
在本实施例中,第一线卡的每一个CPU核均对应一个队列,CPU核从对应的队列中取出报文并处理,第一线卡的网卡根据报文中的VLAN TAG进行哈希处理,根据哈希值将该报文放入与该哈希值对应的队列,由与该队列对应的CPU核从队列中取出报文并对其进行处理。
在本实施例中,为了更清楚地说明不同类型的线卡之间的报文发送时报文分流的过程,本实施例以能够识别以太网类型字段的网卡的线卡为线卡1类型,能够识别VLAN TAG中VLAN ID字段的网卡的线卡为线卡2类型为例,分别针对以下几种不同情况进行说明。
情况一:第二线卡为线卡1类型、第一线卡也为线卡1类型
针对情况一,请参照图4,图4为本实施例提供的两个线卡1类型之间报文转发的交互示例图,线卡a为第二线卡、线卡a的CPU、交换芯片、网卡分别为第一CPU、第一交换芯片、第一网卡,线卡b为第一线卡,线卡b的CPU、交换芯片、网卡分别为第二CPU、第二交换芯片、第二网卡,预设映射关系表征线卡b的每一CPU核和对应VLAN TAG的值之间的关系,线卡a和线卡b均配置有全局下一跳,其标识为ID1,其出口为本线卡的交换芯片和网卡的连接口,其发送过程如下:
S11:第一CPU将报文添加VLAN TAG并根据预设映射关系为VLANTAG赋值;
S12:第一CPU根据全局下一跳通过第一交换芯片将报文及ID1发送至第二交换芯片;
S13:第二交换芯片根据ID1找到本地的全局下一跳,根据本地的全局下一跳将报文发送至第二网卡处理;
S14:第二网卡根据TLAN TAG哈希,根据哈希结果将报文入至对应的队列;
S15:第二CPU的对应的CPU核从对应队列中取出报文并进行处理。
情况二:第二线卡为线卡1类型、第一线卡为线卡2类型
针对情况二,请参照图5,图5为本实施例提供的线卡1类型发、线卡2类型收的报文转发的交互示例图,线卡a为第二线卡、线卡a包括第一CPU、第一交换芯片、第一网卡、线卡b为第一线卡,线卡b包括第二CPU、第二交换芯片、第二网卡,预设映射关系表征线卡b的每一CPU核和对应VLAN TAG的值之间的关系,线卡a和线卡b配置有全局下一跳,其标识分别ID2,出口为线卡b的交换芯片和网卡的连接口,同时配置可编辑动作为:将报文中的TPID替换为预设标准值,其发送过程如下:
S21:第一CPU将报文添加VLAN TAG并根据预设映射关系为VLAN TAG赋值;
S22:第一CPU根据全局下一跳通过第一交换芯片将报文及ID2发送至第二交换芯片;
S23:第二交换芯片根据ID2找到本地的全局下一跳,并根据本地的全局下一跳将报文中的TPID替换为预设标准值;
S24:第二交换芯片将替换了TPID之后的报文发送至第二网卡。
S25:第二网卡根据TLAN TAG哈希,根据哈希结果将报文入至对应队列;
S26:第二CPU的对应的CPU核从对应队列中取出报文并进行处理。
情况三:第二线卡为线卡2类型、第一线卡为线卡1类型
针对情况三,请参照图6,图6为本实施例提供的线卡2类型发、线卡1类型收的报文转发的交互示例图,线卡a为第二线卡、线卡a的CPU、交换芯片、网卡分别为第一CPU、第一交换芯片、第一网卡、线卡b为第一线卡,线卡b的CPU、交换芯片、网卡分别为第二CPU、第二交换芯片、第二网卡,预设映射关系表征线卡b的每一CPU核和对应VLAN TAG的值之间的关系,线卡a和线卡b配置有全局下一跳,其标识分别ID1,出口为线卡b的交换芯片和网卡的连接口,其发送过程如下:
S31:第一CPU将报文添加VLAN TAG并根据预设映射关系为VLAN TAG赋值;
S32:第一CPU根据全局下一跳通过第一交换芯片将报文及ID1发送至第二交换芯片;
S33:第二交换芯片根据ID1找到本地的全局下一跳,根据本地的全局下一跳将报文发送至第二网卡处理;
S34:第二网卡根据TLAN TAG哈希,根据哈希结果将报文发送至对应队列;
S35:第二CPU的对应的CPU核从对应队列中取出报文并进行处理。
情况四:第二线卡为线卡2类型、第一线卡为线卡2类型
针对情况四,请参照图7,图7为本实施例提供的两个线卡2类型之间报文转发的交互示例图,线卡a为第二线卡、线卡a的CPU、交换芯片、网卡分别为第一CPU、第一交换芯片、第一网卡、线卡b为第一线卡,线卡b的CPU、交换芯片、网卡分别为第二CPU、第二交换芯片、第二网卡,预设映射关系表征线卡b的每一CPU核和对应VLAN TAG的值之间的关系,线卡a和线卡b配置有全局下一跳,其标识分别ID2,出口为线卡b的交换芯片和网卡的连接口,同时配置可编辑动作为:将报文中的TPID替换为预设标准值,其发送过程如下:
S41:第一CPU将报文添加VLAN TAG并根据预设映射关系为VLAN TAG赋值;
S42:第一CPU根据全局下一跳通过第一交换芯片将报文及ID2发送至第二交换芯片;
S43:第二交换芯片根据ID2找到本地的全局下一跳,并根据本地的全局下一跳将报文中的TPID替换为预设标准值;
S44:第二交换芯片将替换了TPID之后的报文发送至第二网卡。
S45:第二网卡根据TLAN TAG哈希,根据哈希结果将报文发送至对应队列;
S46:第二CPU的对应的CPU核从对应队列中取出报文并进行处理。
本发明实施还提供一种分布式路由设备,分布式路由设备包括至少一个线卡,每一线卡均包括交换芯片、网卡及多核CPU,每一线卡均配置有等价多路径ECMP组,ECMP组包括与对应线卡的CPU核一一对应的ECMP成员,每一线卡的交换芯片预先配置有本地下一跳,本地下一跳的路由配置为ECMP组;
至少一个线卡中的第一线卡的交换芯片,用于通过面板口接收待处理报文;
第一线卡的交换芯片,用于从多个ECMP成员中选择用于路由待处理报文的ECMP成员;
第一线卡的网卡,用于根据选定的ECMP成员将待处理报文发送至与选定的ECMP成员对应的CPU核进行处理。
在可选的实施方式中,第一线卡的交换芯片,还用于向待处理报文中添加分流配置,并将添加分流配置后的报文发送至第一线卡的网卡,分流配置用于指定处理待处理报文的第一线卡的CPU核;
第一线卡的网卡,还用于根据分流配置将待处理报文发送至指定的CPU核进行处理。
在可选的实施方式中,第一线卡的交换芯片为待处理报文添加VLAN TAG:
若第一线卡的网卡为能够识别以太网类型字段的网卡,第一线卡的网卡还用于,根据指定的CPU核及预设映射关系对待处理报文中的VLAN TAG赋值,预设映射关系表征第一线卡的每一CPU核和对应的VLAN TAG的值之间的关系。
在可选的实施方式中,第一线卡的交换芯片为待处理报文添加VLAN TAG,若第一线卡的网卡为能够识别VLAN TAG中VLAN ID字段的网卡,则第一线卡的交换芯片,还用于在已添加VLAN TAG的待处理报文中再添加一层新的VLAN TAG;第一线卡的网卡,还用于根据指定的CPU核及预设映射关系对新的VLAN TAG赋值,预设映射关系表征第一线卡的每一CPU核和对应的VLAN TAG的值之间的关系。
在可选的实施方式中,线卡为多个,多个线卡中还包括用于跨卡发送报文的第二线卡,第一线卡的交换芯片和第二线卡的交换芯片均配置有全局下一跳:
第二线卡的CPU,还用于接收到需要发送至第一线卡的待发送报文,并为待发送报文添加VLAN TAG;
第二线卡的CPU,还用于根据预设映射关系对待发送报文中添加的VLAN TAG赋值,以指定处理待发送报文的第一线卡的CPU核,预设映射关系表征第一线卡的每一CPU核和对应的VLAN TAG的值之间的关系;
第二线卡的CPU,还用于将本线卡的全局下一跳及待发送报文通过第二线卡的交换芯片的堆叠口发送至第一线卡的交换芯片的堆叠口;
第一线卡的交换芯片,还用于通过堆叠口接收待发送报文并根据接收到的全局下一跳将接收到的报文发送至第一线卡的网卡;
第一线卡的网卡,还用于根据接收到的报文中的VLAN TAG将接收到的报文发送至对应的CPU核处理。
在可选的实施方式中,若第一线卡的网卡为能够识别以太网类型字段的网卡,则第一线卡的交换芯片,还用于将接收到的报文直接发送至第一线卡的网卡。
在可选的实施方式中,若第一线卡的网卡为能够识别VLAN TAG中VLAN ID字段的网卡,则第一线卡的交换芯片,还用于将接收到的报文中的VLAN TAG中的TPID替换成预设标准值;
第一线卡的交换芯片,还用于将替换后的报文发送至第一线卡的网卡。
在可选的实施方式中,第一线卡的交换芯片,还用于按照轮流分配策略从多个ECMP成员中选择用于对待处理报文进行转发处理的ECMP成员。
综上所述,本发明实施例提供了一种报文分流方法和分布式路由设备,所述方法应用于分布式路由设备,分布式路由设备包括至少一个线卡,线卡包括交换芯片、网卡及多核CPU,线卡配置有等价多路径ECMP组,ECMP组包括与对应线卡上网卡的CPU队列一一对应的ECMP成员,每一ECMP成员为线卡的交换芯片预先配置的本地下一跳,所述方法包括:第一线卡的交换芯片通过面板口接收待处理报文;第一线卡为分布式路由设备的任一线卡;第一线卡的交换芯片从ECMP组中选择用于对待处理报文进行转发处理的ECMP成员,并将处理后的待处理报文发送至第一线卡的网卡;第一线卡的网卡根据处理后的待处理报文携带的信息,将待处理报文发送至对应的CPU队列以便于对应的CPU核进行处理。与现有技术相比,本发明实施例至少具有以下优势:(1)能够使得报文均匀地分流至每一个CPU核处理,充分提高了多核CPU对于报文的处理能力;(2)基于交换芯片固有的功能,通过交换芯片修改报文的VLAN TAG信息来屏蔽网卡不同所带来的差异;(3)根据网卡可哈希的报文字段类型灵活运用,实现较为简单。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种报文分流方法,其特征在于,应用于分布式路由设备,所述分布式路由设备包括至少一个线卡,所述线卡包括交换芯片、网卡及多核CPU,所述线卡配置有等价多路径ECMP组,所述ECMP组包括与对应线卡上网卡的CPU队列一一对应的ECMP成员,每个所述ECMP成员为所述线卡的交换芯片预先配置的本地下一跳,所述方法包括:
第一线卡的交换芯片通过面板口接收待处理报文;所述第一线卡为所述分布式路由设备的任一线卡;
所述第一线卡的交换芯片从所述ECMP组中选择用于对所述待处理报文进行转发处理的ECMP成员,并将处理后的所述待处理报文发送至所述第一线卡的网卡;
所述第一线卡的网卡根据处理后的所述待处理报文携带的信息,将所述待处理报文发送至对应的CPU队列以便于对应的CPU核进行处理。
2.如权利要求1所述的报文分流方法,其特征在于,所述第一线卡的交换芯片从所述ECMP组中选择对所述待处理报文进行转发处理的ECMP成员,并将处理后的所述待处理报文发送至所述第一线卡的网卡的步骤包括:
所述第一线卡的交换芯片从所述ECMP组中选择对所述待处理报文进行转发处理的ECMP成员,根据选择的ECMP成员向所述待处理报文中添加分流配置,并将添加分流配置后的报文发送至所述第一线卡的网卡,所述分流配置用于指示处理所述待处理报文的CPU队列。
3.如权利要求2所述的报文分流方法,其特征在于,所述第一线卡的交换芯片向所述待处理报文中添加分流配置的步骤包括:
所述第一线卡的交换芯片为所述待处理报文添加VLAN TAG;
若所述第一线卡的网卡为能够识别以太网类型字段的网卡,则所述第一线卡的交换芯片根据指定的CPU核及预设映射关系对所述待处理报文中的VLAN TAG赋值,所述预设映射关系表征所述第一线卡的每一CPU队列和对应的VLAN TAG的值之间的关系。
4.如权利要求2所述的报文分流方法,其特征在于,所述第一线卡的交换芯片向所述待处理报文中添加分流配置的步骤包括:
所述第一线卡的交换芯片为所述待处理报文添加VLAN TAG;
若所述第一线卡的网卡为能够识别VLAN TAG中VLAN ID字段的网卡,则所述第一线卡的交换芯片在已添加VLAN TAG的所述待处理报文中再添加一层新的VLAN TAG;
所述第一线卡的网卡根据指定的CPU核及预设映射关系对所述新的VLAN TAG赋值,所述预设映射关系表征所述第一线卡的每一CPU核和对应的VLAN TAG的值之间的关系。
5.如权利要求1所述的报文分流方法,其特征在于,所述分布式路由设备中的线卡为多个,除所述第一线卡外还包括第二线卡,所述第一线卡的交换芯片和所述第二线卡的交换芯片均配置有全局下一跳,所述方法还包括:
所述第二线卡的CPU接收到需要发送至所述第一线卡的待发送报文,并为所述待发送报文添加VLAN TAG;
所述第二线卡的CPU根据预设映射关系对所述待发送报文中添加的VLAN TAG赋值,以指定处理所述待发送报文的所述第一线卡的CPU核,所述预设映射关系表征所述第一线卡的每一CPU核和对应的VLAN TAG的值之间的关系;
所述第二线卡的CPU将本线卡的全局下一跳及所述待发送报文通过所述第二线卡的交换芯片的堆叠口发送至所述第一线卡的交换芯片的堆叠口;
所述第一线卡的交换芯片通过堆叠口接收所述待发送报文并根据接收到的全局下一跳将接收到的报文发送至所述第一线卡的网卡;
所述第一线卡的网卡根据所述接收到的报文中的VLAN TAG将所述接收到的报文发送至对应的CPU核处理。
6.如权利要求5所述的报文分流方法,其特征在于,所述第一线卡的交换芯片通过堆叠口接收所述待发送报文并根据接收到的全局下一跳将接收到的报文发送至所述第一线卡的网卡的步骤包括:
若所述第一线卡的网卡为能够识别以太网类型字段的网卡,则所述第一线卡的交换芯片将所述接收到的报文直接发送至所述第一线卡的网卡。
7.如权利要求5所述的报文分流方法,其特征在于,所述第一线卡的交换芯片通过堆叠口接收所述待发送报文并根据接收到的全局下一跳将接收到的报文发送至所述第一线卡的网卡的步骤包括:
若所述第一线卡的网卡为能够识别VLAN TAG中VLAN ID字段的网卡,则所述第一线卡的交换芯片将所述接收到的报文中的VLAN TAG中的TPID替换成预设标准值;
所述第一线卡的交换芯片将替换后的报文发送至所述第一线卡的网卡。
8.如权利要求1所述的报文分流方法,其特征在于,所述第一线卡的交换芯片从所述ECMP成员组中选择对所述待处理报文进行转发处理的ECMP成员的步骤包括:
所述第一线卡的交换芯片按照轮流分配策略从所述ECMP组中选择对所述待处理报文进行转发处理的ECMP成员。
9.一种分布式路由设备,其特征在于,所述分布式路由设备包括至少一个线卡,所述线卡包括交换芯片、网卡及多核CPU,所述线卡均配置有等价多路径ECMP组,所述ECMP组包括与对应线卡上网卡的CPU队列一一对应的ECMP成员,每个所述ECMP成员为所述线卡的交换芯片预先配置的本地下一跳;
第一线卡的交换芯片,用于通过面板口接收待处理报文;所述第一线卡为所述分布式路由设备的任一线卡;
所述第一线卡的交换芯片,用于从所述ECMP组中选择用于对所述待处理报文进行转发处理的ECMP成员,并将处理后的所述待处理报文发送至所述第一线卡的网卡;
所述第一线卡的网卡,用于根据处理后的所述待处理报文携带的信息,将所述待处理报文发送至对应的CPU队列以便于对应的CPU核进行处理。
10.如权利要求9所述的分布式路由设备,其特征在于:
所述第一线卡的交换芯片,还用于从所述ECMP组中选择对所述待处理报文进行转发处理的ECMP成员,根据选择的ECMP成员向所述待处理报文中添加分流配置,并将添加分流配置后的报文发送至所述第一线卡的网卡,所述分流配置用于指示处理所述待处理报文的CPU队列。
CN202311699835.6A 2023-12-08 2023-12-08 报文分流方法和分布式路由设备 Pending CN117692532A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311699835.6A CN117692532A (zh) 2023-12-08 2023-12-08 报文分流方法和分布式路由设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311699835.6A CN117692532A (zh) 2023-12-08 2023-12-08 报文分流方法和分布式路由设备

Publications (1)

Publication Number Publication Date
CN117692532A true CN117692532A (zh) 2024-03-12

Family

ID=90134752

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311699835.6A Pending CN117692532A (zh) 2023-12-08 2023-12-08 报文分流方法和分布式路由设备

Country Status (1)

Country Link
CN (1) CN117692532A (zh)

Similar Documents

Publication Publication Date Title
JP7417825B2 (ja) スライスベースルーティング
EP3624408B1 (en) Method for generating forwarding table entry, controller, and network device
WO2016095141A1 (zh) 软件定义网络中数据转发的方法、设备和系统
US9590903B2 (en) Systems and methods for optimizing layer three routing in an information handling system
US9379975B2 (en) Communication control system, control server, forwarding node, communication control method, and communication control program
US8396053B2 (en) Method and apparatus for VLAN-based selective path routing
US10476797B2 (en) Systems and methods to route over a link aggregation group to a true next hop
JP6434821B2 (ja) 通信装置及び通信方法
EP3210345A1 (en) Transparent network service header path proxies
US9565112B2 (en) Load balancing in a link aggregation
CN102415065A (zh) 在有路由的网络中冗余主机连接
CN108123901B (zh) 一种报文传输方法和装置
CN102447638A (zh) 负载均衡的方法及转发设备
Cheng et al. Application-aware SDN routing for big data networking
JP6070700B2 (ja) パケット転送システム、制御装置、パケット転送方法及びプログラム
CN112822097A (zh) 报文转发的方法、第一网络设备以及第一设备组
WO2016095142A1 (zh) 软件定义网络sdn中数据转发的方法、设备和系统
WO2022007702A1 (zh) 一种报文处理方法及网络设备
US10205661B1 (en) Control messages for scalable satellite device clustering control in a campus network
WO2011113358A1 (zh) 用于ip网络的路由转发方法及网络设备
CN114205297A (zh) 流量转发处理方法及设备
US10574481B2 (en) Heterogeneous capabilities in an overlay fabric
WO2019240158A1 (ja) 通信システム及び通信方法
WO2022166465A1 (zh) 一种报文处理方法及相关装置
CN117692532A (zh) 报文分流方法和分布式路由设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination