CN108259328B - 报文转发方法及装置 - Google Patents
报文转发方法及装置 Download PDFInfo
- Publication number
- CN108259328B CN108259328B CN201710763296.6A CN201710763296A CN108259328B CN 108259328 B CN108259328 B CN 108259328B CN 201710763296 A CN201710763296 A CN 201710763296A CN 108259328 B CN108259328 B CN 108259328B
- Authority
- CN
- China
- Prior art keywords
- interface
- numa node
- egress
- aggregation group
- outgoing
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/24—Multipath
- H04L45/245—Link aggregation, e.g. trunking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/24—Multipath
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/618—Details of network addresses
- H04L2101/622—Layer-2 addresses, e.g. medium access control [MAC] addresses
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Abstract
本公开涉及报文转发方法及装置。该方法包括:根据转发表确定接收到报文的入接口对应的出接口聚合组;当所述出接口聚合组中存在与所述入接口属于相同NUMA节点的出接口时,从所述出接口聚合组中与所述入接口属于相同NUMA节点的出接口中选取用于发送所述报文的第一出接口;通过所述第一出接口发送所述报文。本公开的报文转发方法及装置,能够在接收到报文的入接口对应的出接口聚合组中选择与该入接口属于相同NUMA节点的出接口转发报文,而无需跨NUMA节点转发报文,从而实现在报文转发的过程中仅需要访问NUMA节点的本地内存,降低设备的运算开销,提高设备的转发效率和吞吐能力。
Description
技术领域
本公开涉及通信技术领域,尤其涉及一种报文转发方法及装置。
背景技术
NUMA(Non Uniform Memory Access Architecture,非统一内存访问架构)是一种用于多处理器的电脑记忆体设计,内存访问时间取决于处理器的内存位置。通过NUMA架构可以将几十个甚至上百个CPU(Central Processing Unit,中央处理器)组合在一个设备中。NUMA架构可以具有多个NUMA节点,每个NUMA节点分别具有多个CPU、本地内存、I/O接口以及网卡等。
链路聚合是将多个物理以太网接口聚合在一起形成一个逻辑上的聚合组,使用链路聚合服务的上层实体把同一聚合组内的多条物理链路视为一条逻辑链路。通过将多个以太网物理端口捆绑在一起进而形成一条以太网逻辑链路,从而实现增加链路带宽的目的。链路聚合一般用来连接一个或者多个带宽需求大的设备,例如,连接骨干网络的服务器或者服务器群。
相关技术中,在采用NUMA框架的设备之间进行链路聚合之后,各个物理链路的接口可能分布在不同NUMA节点上。当各个物理链路的接口分布在不同NUMA节点上时,如果选取了和入接口不属于相同NUMA节点的出接口,则产生了跨NUMA节点转发报文,将会造成设备的运算开销增大,转发效率降低,从而造成设备的吞吐能力降低。
发明内容
有鉴于此,本公开提出了一种报文转发方法及装置,以解决相关技术中进行报文转发的入接口和出接口不属于相同NUMA节点时,造成设备转发效率和吞吐能力降低的问题。
根据本公开的一方面,提供了一种报文转发方法,包括:
根据转发表确定接收到报文的入接口对应的出接口聚合组;
当所述出接口聚合组中存在与所述入接口属于相同非统一内存访问架构NUMA节点的出接口时,从所述出接口聚合组中与所述入接口属于相同 NUMA节点的出接口中选取用于发送所述报文的第一出接口;
通过所述第一出接口发送所述报文。
根据本公开的另一方面,提供了一种报文转发装置,包括:
出接口聚合组确定模块,用于根据转发表确定接收到报文的入接口对应的出接口聚合组;
第一出接口选取模块,用于当所述出接口聚合组中存在与所述入接口属于相同非统一内存访问架构NUMA节点的出接口时,从所述出接口聚合组中与所述入接口属于相同NUMA节点的出接口中选取用于发送所述报文的第一出接口;
报文发送模块,用于通过所述第一出接口发送所述报文。
根据本公开的另一方面,提供了一种报文转发装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述方法。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
本公开的报文转发方法及装置,根据转发表确定接收到报文的入接口对应的出接口聚合组,当该出接口聚合组中存在与该入接口属于相同NUMA节点的出接口时,从该出接口聚合组中与该入接口属于相同NUMA节点的出接口中选取用于发送该报文的第一出接口,通过第一出接口发送该报文,由此能够在接收到报文的入接口对应的出接口聚合组中选择与该入接口属于相同NUMA节点的出接口转发报文,而无需跨NUMA节点转发报文,从而实现在报文转发的过程中仅需要访问NUMA节点的本地内存,降低设备的运算开销,提高设备的转发效率和吞吐能力。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出相关技术中设备进行链路聚合后的结构示意图。
图2示出根据本公开一实施例的报文转发方法的流程图。
图3示出本公开一实施例中设备进行链路聚合后的结构示意图。
图4示出根据本公开一实施例的报文转发方法中步骤S22 的一示意性的流程图。
图5示出根据本公开一实施例的报文转发方法中步骤S22 的一示意性的流程图。
图6示出根据本公开一实施例的报文转发方法中步骤S22 的一示意性的流程图。
图7示出根据本公开一实施例的报文转发方法的一示意性的流程图。
图8示出根据本公开一实施例的报文转发装置的框图。
图9示出根据本公开一实施例的报文转发装置的一示意性的框图。
图10是根据一示例性实施例示出的一种用于报文转发装置900的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
图1示出相关技术中设备进行链路聚合后的结构示意图。如图1所示,设备A具有NUMA节点1、NUMA节点2和NUMA节点3。设备A还具有接口1至接口8。其中,接口1至接口8均为物理以太网接口。接口1、接口5和接口8作为用于接收报文的入接口。接口2、接口3、接口4、接口6和接口7作为用于发送报文的出接口。接口2和接口3聚合形成出接口聚合组1,接口4、接口6 和接口7聚合形成出接口聚合组2。接口1、接口2、接口3和接口4属于NUMA 节点1,接口5、接口6和接口7属于NUMA节点2,接口8属于NUMA节点3。
相关技术中,如图1所示,在接口5接收到报文的情况下,设备A查找转发表获取接口5对应的出接口聚合组为出接口聚合组2。设备A可以从出接口聚合组2所包括的多个出接口(接口4、接口6和接口7)中选取用于发送该报文的出接口。例如,设备A选取接口4用于发送该报文,则设备A通过接口4 将该报文发出。在报文的转发过程中,接口5接收报文,接口4发送报文。接口5和接口4属于不同NUMA节点,由此产生了跨NUMA节点转发报文。 NUMA节点2需要访问NUMA节点1的内存,将会造成设备A的运算开销增大,转发效率降低,从而造成设备A的吞吐能力降低。
图2示出根据本公开一实施例的报文转发方法的流程图。该方法可以用于NUMA架构设备,例如NUMA服务器等,本公开对此不做限制。如图2所示,该方法包括步骤S21至步骤S23。
在步骤S21中,根据转发表确定接收到报文的入接口对应的出接口聚合组。
其中,入接口可以指用于接收报文的物理以太网接口,出接口可以指用于发送报文的物理以太网接口。转发表可以指用于使设备把接收到的报文从设备合适的接口转发出去的数据结构。转发表中包括入接口和出接口之间的对应关系,从而在报文从入接口接收时,根据转发表指导报文从对应的出接口转发出去。具体的,如何确定转发表可以采用现有技术中的方式,本公开并不加以限定。出接口聚合组可以指聚合了多个出接口形成的逻辑上的聚合组。出接口聚合组所包括的多个出接口具有相同的报文转发效果。
在一种可能的实现方式中,在入接口接收到报文的情况下,可以根据该入接口的标识信息和转发表,确定该入接口对应的出接口或出接口聚合组。换言之,在该入接口对应的为一个出接口的情况下,即可以通过该入接口对应的出接口发送该报文。在该入接口对应的为一个出接口聚合组的情况下,即可以从该出接口聚合组中选取一个出接口发送该报文。其中,入接口的标识信息可以为入接口的接口编号等能够唯一标识入接口的信息,本公开对此不做限制。
在步骤S22中,当该出接口聚合组中存在与该入接口属于相同NUMA节点的出接口时,从该出接口聚合组中与该入接口属于相同NUMA节点的出接口中选取用于发送该报文的第一出接口。
在一种可能的实现方式中,在根据转发表确定接收到报文的入接口对应的出接口聚合组之后,若该出接口聚合组所包括的多个出接口中仅存在一个出接口与该入接口属于相同NUMA节点,则可以将该仅存在的出接口作为用于发送该报文的第一出接口。
在一种可能的实现方式中,在根据转发表确定接收到报文的入接口对应的出接口聚合组之后,若该出接口聚合组所包括的多个出接口中存在多个出接口与该入接口属于相同NUMA节点,则可以从该存在的多个出接口中选取一个出接口作为用于发送该报文的第一出接口。需要说明的是,本公开不限制从该存在的多个出接口中选取第一出接口的具体方式,例如可以任意选取,再例如可以根据报文特征进行负载分担确定相应的出接口。
在一种可能的实现方式中,该方法还包括:建立接口与NUMA节点之间的对应关系。
例如,建立接口与NUMA节点关系表。其中,接口与NUMA节点关系表可以包括设备的各个接口与NUMA节点之间的对应关系。将接口编号作为索引关键词,通过接口编号索引接口与NUMA节点关系表,可以得到接口所属的NUMA节点。或者,将NUMA节点编号作为索引关键词,通过NUMA节点编号索引接口与NUMA节点关系表,可以得到NUMA节点所包括的各个接口。优选的实施方式中,为了便于确定接口对应的NUMA节点,以及NUMA 节点所包含的出接口,可以同时存储有上述两种关系表。当然,上述两种关系表也可以分别通过两个表项进行记录,也可以通过一个表项进行记录。上述接口与NUMA节点关系表可以存储在设备的磁盘等存储介质中,本公开对此不做限制。
在步骤S23中,通过第一出接口发送该报文。
图3示出本公开一实施例中设备进行链路聚合后的结构示意图。如图3所示,设备A为NUMA结构,设备A具有NUMA节点1、NUMA节点2和NUMA 节点3。每个NUMA节点分别具有多个CPU、本地内存、I/O接口以及网卡等。设备A还具有接口1至接口8。其中,接口1至接口8均为物理以太网接口。接口1、接口5和接口8为入接口。接口2、接口3、接口4、接口6和接口7为出接口。接口2和接口3聚合形成出接口聚合组1,接口4、接口6和接口7聚合形成出接口聚合组2。接口1、接口2、接口3和接口4属于NUMA节点1,接口5、接口6和接口7属于NUMA节点2,接口8属于NUMA节点3。
作为本实施例的一个示例,如图3所示,在接口1接收到报文1的情况下,设备A查找转发表获取接口1对应的出接口聚合组为出接口聚合组2。设备A 可以从出接口聚合组2所包括的多个出接口(接口4、接口6和接口7)中选取用于发送报文1的出接口。由于出接口聚合组2所包括的多个出接口中,接口 4与接口1属于相同NUMA节点,则可以将接口4作为用于发送报文1的出接口,即通过接口4发送报文1。在报文1的转发过程中,接口1接收报文1,接口4发送报文1。接口1和接口4属于相同NUMA节点,由此不产生跨NUMA节点转发报文,从而实现在报文转发的过程中仅需要访问NUMA节点的本地内存,降低设备的运算开销,提高设备的转发效率和吞吐能力。
作为本实施例的一个示例,如图3所示,在接口5接收到报文2的情况下,设备A查找转发表获取接口5对应的出接口聚合组为出接口聚合组2。设备A 可以从出接口聚合组2所包括的多个出接口(接口4、接口6和接口7)中选取用于发送报文2的出接口。由于出接口聚合组2所包括的多个出接口中,接口 6、接口7与接口5属于相同NUMA节点,则可以将接口6或接口7作为用于发送报文2的出接口。例如,可以选取接口6发送报文2。在报文2的转发过程中,接口5接收报文2,接口6发送报文2。
在一种可能的实现方式中,若该出接口聚合组中与该入接口属于相同 NUMA节点的出接口有多个,该方法还包括:根据报文特征进行哈希运算,得到哈希运算结果;根据该哈希运算结果,从该出接口聚合组中与该入接口属于相同NUMA节点的出接口中确定第一出接口。举例来说,上述具体实例中,从接口5接收到的报文,确定出与接口5属于相同NUMA节点的出接口为接口6和接口7,此时可以根据收到的报文的特征进行哈希运算,根据哈希运算结果,从接口6和接口7中确定第一出接口进行报文转发。
本公开的报文转发方法能够在接收到报文的入接口对应的出接口聚合组中选择与该入接口属于相同NUMA节点的出接口转发报文,而无需跨 NUMA节点转发报文,从而实现在报文转发的过程中仅需要访问NUMA节点的本地内存,降低设备的运算开销,提高设备的转发效率和吞吐能力。
在上述通过哈希运算进行负载分担时,报文特征可以包括报文的源IP地址、目的IP地址、源MAC地址、目的MAC地址、源端口号和目的端口号中的一项或多项。
作为该实现方式的一个示例,报文特征为报文的目的MAC地址。设备对报文的目的MAC地址进行哈希运算,得到目的MAC地址的哈希运算结果,并根据目的MAC地址的哈希运算结果查找预先设置的哈希表,从该出接口聚合组中与该入接口属于相同NUMA节点的多个出接口中确定第一出接口。
作为该实现方式的另一个示例,报文特征为报文的目的端口号。设备对报文的目的端口号进行哈希运算,得到目的端口号的哈希运算结果,并根据目的端口号的哈希运算结果查找预先设置的哈希表,从该出接口聚合组中与该入接口属于相同NUMA节点的多个出接口中确定第一出接口。
其中,哈希表(Hash Table,也称散列表),是根据键值(Key)而直接访问在内存存储位置的数据结构。换言之,通过计算一个关于键值的函数,将待查询数据(Value)映射到表中一个位置来访问记录,从而加快查找速度。这个映射函数称为哈希函数,存放记录的数组称为哈希表。哈希表的创建就是将待查询数据通过哈希函数和冲突处理函数来生成一个键值,这个键值就是待查询数据的查找映射,通过键值来访问待查询数据。
需要说明的是,本领域技术人员能够理解,进行哈希运算的哈希函数不同,或进行哈希运算的参数不同,则可能得到不同的哈希运算后的结果,本公开对此不做限制。此外,尽管以报文的源IP地址、目的IP地址、源MAC地址、目的MAC地址、源端口号和目的端口号作为示例介绍了报文特征如上,但本领域技术人员能够理解,本公开应不限于此。本领域技术人员可以根据实际应用场景灵活设定报文特征。
图4示出根据本公开一实施例的报文转发方法中步骤S22 的一示意性的流程图。如图4所示,从该出接口聚合组中与该入接口属于相同NUMA节点的出接口中选取用于发送该报文的第一出接口(步骤S22 )可以包括:
在步骤S41中,确定该出接口聚合组所包括的各个出接口。
在步骤S42中,根据接口与NUMA节点之间的对应关系,确定该入接口所属的NUMA节点。
在一种可能的实现方式中,可以通过查找接口与NUMA节点关系表,确定入接口所属的NUMA节点。例如,将入接口编号作为索引关键词,通过入接口编号索引接口与NUMA节点关系表,得到入接口所属的NUMA节点。
作为该实现方式的一个示例,表1示出根据本公开一实施例的设备A中接口与NUMA节点关系表。在接口1接收到报文1的情况下,设备A可以通过查找表1得到接口1所属的NUMA节点为NUMA节点1。在接口5接收到报文2的情况下,设备A可以通过查找表1得到接口5所属的NUMA节点为NUMA节点 2。如此类推,本公开不再赘述。
在步骤S43中,从该出接口聚合组所包括的各个出接口中选取属于该 NUMA节点的出接口作为第一出接口。
作为本实施例的一个示例,如图3所示,在接口1接收到报文1的情况下,设备A查找转发表获取接口1对应的出接口聚合组为出接口聚合组2。设备A 确定出接口聚合组2所包括的多个出接口为接口4、接口6和接口7。设备A根据接口与NUMA节点之间的对应关系,确定接口1所属的NUMA节点为 NUMA节点1。设备A可以逐一判断接口4、接口6和接口7是否属于NUMA节点1,从而从出接口聚合组2所包括的各个出接口中选取属于NUMA节点1的接口4作为第一出接口。
表1
接口编号 | NUMA节点编号 |
接口1 | NUMA节点1 |
接口2 | NUMA节点1 |
接口3 | NUMA节点1 |
接口4 | NUMA节点1 |
接口5 | NUMA节点2 |
接口6 | NUMA节点2 |
接口7 | NUMA节点2 |
接口8 | NUMA节点3 |
图5示出根据本公开一实施例的报文转发方法中步骤S22 的一示意性的流程图。如图5所示,从该出接口聚合组中与该入接口属于相同NUMA节点的出接口中选取用于发送该报文的第一出接口(步骤S22 )可以包括:
在步骤S51中,根据接口与NUMA节点之间的对应关系,确定该入接口所属的NUMA节点。
步骤S51可以参见步骤S42的描述,本公开不再赘述。
在步骤S52中,确定该NUMA节点所包括的各个出接口。
在一种可能的实现方式中,可以通过查找NUMA节点与接口关系表,确定NUMA节点所包括的各个出接口。例如,先将NUMA节点编号作为索引关键词,通过NUMA节点编号索引NUMA节点与接口关系表,得到NUMA节点所包括的各个接口。再将出接口作为索引关键词,得到NUMA节点所包括的各个出接口。
作为该实现方式的一个示例,表2示出根据本公开一实施例的设备A中 NUMA节点与接口关系表。在接口1接收到报文1的情况下,设备A可以通过查找表1得到接口1所属的NUMA节点为NUMA节点1,设备A可以通过查找表2得到NUMA节点1所包括的各个出接口为接口2、接口3和接口4。在接口5 接收到报文2的情况下,设备A可以通过查找表1得到接口5所属的NUMA节点为NUMA节点2,设备A可以通过查找表2得到NUMA节点2所包括的各个出接口为接口6和接口7。如此类推,本公开不再赘述。
在步骤S53中,从该NUMA节点所包括的各个出接口中选取属于该出接口聚合组的出接口作为第一出接口。
作为本实施例的一个示例,如图3所示,在接口1接收到报文1的情况下,设备A根据接口与NUMA节点之间的对应关系,确定接口1所属的NUMA节点为NUMA节点1。设备A确定NUMA节点1所包括的各个出接口为接口2、接口3和接口4。设备A查找转发表获取接口1对应的出接口聚合组为出接口聚合组2。设备A可以逐一判断接口2、接口3和接口4是否属于出接口聚合组2,从而从NUMA节点1所包括的各个出接口中选取属于出接口聚合组2的接口4 作为第一出接口。
表2
NUMA节点编号 | 入接口编号 | 出接口编号 |
NUMA节点1 | 接口1 | 接口2、接口3、接口4 |
NUMA节点2 | 接口5 | 接口6、接口7 |
NUMA节点3 | 接口8 | 不存在 |
图6示出根据本公开一实施例的报文转发方法中步骤S22 的一示意性的流程图。如图6所示,从该出接口聚合组中与该入接口属于相同NUMA节点的出接口中选取用于发送该报文的第一出接口(步骤S22 )可以包括:
在步骤S61中,确定该出接口聚合组所包括的各个出接口。
在步骤S62中,根据接口与NUMA节点之间的对应关系,确定该入接口所属的NUMA节点。
步骤S62可以参见步骤S42的描述,本公开不再赘述。
在步骤S63中,确定该NUMA节点所包括的各个出接口。
步骤S63可以参见步骤S52的描述,本公开不再赘述。
在步骤S64中,根据该NUMA节点所包括的各个出接口和该出接口聚合组所包括的各个出接口,确定既属于该出接口聚合组又属于该NUMA节点的各个出接口。
在步骤S65中,从既属于该出接口聚合组又属于该NUMA节点的各个出接口中选取出接口作为第一出接口。
作为本实施例的一个示例,如图3所示,在接口1接收到报文1的情况下,设备A查找转发表获取接口1对应的出接口聚合组为出接口聚合组2。设备A 确定出接口聚合组2所包括的多个出接口为接口4、接口6和接口7。设备A根据接口与NUMA节点之间的对应关系,确定接口1所属的NUMA节点为 NUMA节点1。设备A确定NUMA节点1所包括的各个出接口为接口2、接口3 和接口4。设备A确定既属于出接口聚合组2又属于NUMA节点1的各个出接口为接口4。设备A将既属于出接口聚合组2又属于NUMA节点1的接口4作为第一出接口。
作为本实施例的一个示例,如图3所示,在接口5接收到报文2的情况下,设备A查找转发表获取接口5对应的出接口聚合组为出接口聚合组2。设备A 确定出接口聚合组2所包括的多个出接口为接口4、接口6和接口7。设备A根据接口与NUMA节点之间的对应关系,确定接口5所属的NUMA节点为 NUMA节点2。设备A确定NUMA节点2所包括的各个出接口为接口6和接口 7。设备A确定既属于出接口聚合组2又属于NUMA节点2的各个出接口为接口 6和接口7。设备A从既属于出接口聚合组2又属于NUMA节点1的接口6和接口 7中选取出接口作为第一出接口。例如,报文2的报文特征为源MAC地址,设备A对报文2的源MAC地址进行哈希运算,得到源MAC地址的哈希运算结果,并根据源MAC地址的哈希运算结果查找预先设置的哈希表,从接口6和接口7 中确定接口6作为发送报文2的出接口。
图7示出根据本公开一实施例的报文转发方法的一示意性的流程图。如图7所示,该方法包括步骤S21至步骤S25。
在步骤S21中,根据转发表确定接收到报文的入接口对应的出接口聚合组。
在步骤S22中,当该出接口聚合组中存在与该入接口属于相同NUMA节点的出接口时,从该出接口聚合组中与该入接口属于相同NUMA节点的出接口中选取用于发送该报文的第一出接口。
在步骤S23中,通过第一出接口发送该报文。
在步骤S24中,当该出接口聚合组中不存在与该入接口属于相同NUMA 节点的出接口时,从该出接口聚合组中属于其他NUMA节点的出接口中确定用于发送该报文的第二出接口。
在步骤S25中,通过第二出接口发送该报文。
作为本实施例的一个示例,如图3所示,在接口8接收到报文3的情况下,设备A查找转发表获取接口8对应的出接口聚合组为出接口聚合组2。设备A 确定出接口聚合组2所包括的多个出接口为接口4、接口6和接口7。设备A根据接口与NUMA节点之间的对应关系,确定接口8所属的NUMA节点为 NUMA节点3。则根据转发表确定出的出接口均不属于入接口所属的NUMA 节点,即接口4、接口6和接口7均不属于NUMA节点3。由此出接口聚合组2 中不存在与接口8属于相同NUMA节点的出接口,则从出接口聚合组2所包括的接口4、接口6和接口7中确定用于发送报文3的出接口。例如,报文3的报文特征为源MAC地址,设备A对报文3的源MAC地址进行哈希运算,得到源 MAC地址的哈希运算结果,并根据源MAC地址的哈希运算结果查找预先设置的哈希表,从接口4、接口6和接口7中确定接口7作为发送报文3的出接口。
图8示出根据本公开一实施例的报文转发装置的框图。该装置可以用于 NUMA架构的设备,例如NUMA服务器等,本公开对此不做限制。如图8所示,所述装置包括:
出接口聚合组确定模块81,用于根据转发表确定接收到报文的入接口对应的出接口聚合组;第一出接口选取模块82,用于当所述出接口聚合组中存在与所述入接口属于相同非统一内存访问架构NUMA节点的出接口时,从所述出接口聚合组中与所述入接口属于相同NUMA节点的出接口中选取用于发送所述报文的第一出接口;报文发送模块83,用于通过所述第一出接口发送所述报文。
在一种可能的实现方式中,所述第一出接口选取模块82包括:第一确定模块,用于确定所述出接口聚合组所包括的各个出接口;NUMA节点确定模块,用于根据接口与NUMA节点之间的对应关系,确定所述入接口所属的 NUMA节点;第一选取模块,用于从所述出接口聚合组所包括的各个出接口中选取属于所述NUMA节点的出接口作为所述第一出接口。
在一种可能的实现方式中,所述第一出接口选取模块82包括:NUMA节点确定模块,用于根据接口与NUMA节点之间的对应关系,确定所述入接口所属的NUMA节点;第二确定模块,用于确定所述NUMA节点所包括的各个出接口;第二选取模块,用于从所述NUMA节点所包括的各个出接口中选取属于所述出接口聚合组的出接口作为所述第一出接口。
在一种可能的实现方式中,所述第一出接口选取模块82包括:第一确定模块,用于确定所述出接口聚合组所包括的各个出接口;NUMA节点确定模块,用于根据接口与NUMA节点之间的对应关系,确定所述入接口所属的 NUMA节点;第二确定模块,用于确定所述NUMA节点所包括的各个出接口;第三确定模块,用于根据所述NUMA节点所包括的各个出接口和所述出接口聚合组所包括的各个出接口,确定既属于所述出接口聚合组又属于所述 NUMA节点的各个出接口;第三选取模块,用于从既属于所述出接口聚合组又属于所述NUMA节点的各个出接口中选取出接口作为所述第一出接口。
图9示出根据本公开一实施例的报文转发装置的一示意性的框图。如图9 所示:
在一种可能的实现方式中,若所述出接口聚合组中与所述入接口属于相同NUMA节点的出接口有多个,所述装置还包括:哈希运算模块84,用于根据报文特征进行哈希运算,得到哈希运算结果;第一出接口确定模块85,用于根据所述哈希运算结果,从所述出接口聚合组中与所述入接口属于相同 NUMA节点的出接口中确定所述第一出接口。
在一种可能的实现方式中,所述装置还包括:第二出接口选取模块86,用于当所述出接口聚合组中不存在与所述入接口属于相同NUMA节点的出接口时,从所述出接口聚合组中属于其他NUMA节点的出接口中确定用于发送所述报文的第二出接口。
本公开的报文转发装置能够在接收到报文的入接口对应的出接口聚合组中选择与该入接口属于相同NUMA节点的出接口转发报文,而无需跨 NUMA节点转发报文,从而实现在报文转发的过程中仅需要访问NUMA节点的本地内存,降低设备的运算开销,提高设备的转发效率和吞吐能力。
图10是根据一示例性实施例示出的一种用于报文转发装置900的框图。参照图10,该装置900可包括处理器901、存储有机器可执行指令的机器可读存储介质902。处理器901与机器可读存储介质902可经由系统总线903通信。并且,处理器901通过读取机器可读存储介质902中与报文转发逻辑对应的机器可执行指令以执行上文所述的报文转发方法。具体的转发方法可以参见图 2、图3至图7所示的方法以及上述具体实施例,本实施例对此不再赘述。
本文中提到的机器可读存储介质902可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
需要说明的是,本领域技术人员能够理解,图10所示的装置900为NUMA 框架中的NUMA节点的示意图。NUMA框架可以为包括多个装置900的结构,本公开不再赘述。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (13)
1.一种报文转发方法,其特征在于,包括:
根据转发表确定接收到报文的入接口对应的出接口聚合组;
当所述出接口聚合组中存在与所述入接口属于相同非统一内存访问架构NUMA节点的出接口时,从所述出接口聚合组中与所述入接口属于相同NUMA节点的出接口中选取用于发送所述报文的第一出接口;
通过所述第一出接口发送所述报文;
其中,从所述出接口聚合组中与所述入接口属于相同NUMA节点的出接口中选取用于发送所述报文的第一出接口,包括:
根据接口与NUMA节点之间的对应关系,确定所述入接口所属的NUMA节点;
从所述出接口聚合组中,与所述入接口所属的NUMA节点相同的出接口中选取用于发送所述报文的第一出接口。
2.根据权利要求1所述的方法,其特征在于,从所述出接口聚合组中,与所述入接口所属的NUMA节点相同的出接口中选取用于发送所述报文的第一出接口,包括:
确定所述出接口聚合组所包括的各个出接口;
从所述出接口聚合组所包括的各个出接口中选取属于所述NUMA节点的出接口作为所述第一出接口。
3.根据权利要求1所述的方法,其特征在于,从所述出接口聚合组中,与所述入接口所属的NUMA节点相同的出接口中选取用于发送所述报文的第一出接口,包括:
确定所述NUMA节点所包括的各个出接口;
从所述NUMA节点所包括的各个出接口中选取属于所述出接口聚合组的出接口作为所述第一出接口。
4.根据权利要求1所述的方法,其特征在于,从所述出接口聚合组中,与所述入接口所属的NUMA节点相同的出接口中选取用于发送所述报文的第一出接口,包括:
确定所述出接口聚合组所包括的各个出接口;
确定所述NUMA节点所包括的各个出接口;
根据所述NUMA节点所包括的各个出接口和所述出接口聚合组所包括的各个出接口,确定既属于所述出接口聚合组又属于所述NUMA节点的各个出接口;
从既属于所述出接口聚合组又属于所述NUMA节点的各个出接口中选取出接口作为所述第一出接口。
5.根据权利要求1所述的方法,其特征在于,若所述出接口聚合组中与所述入接口属于相同NUMA节点的出接口有多个,所述方法还包括:
根据报文特征进行哈希运算,得到哈希运算结果;
根据所述哈希运算结果,从所述出接口聚合组中与所述入接口属于相同NUMA节点的出接口中确定所述第一出接口。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述出接口聚合组中不存在与所述入接口属于相同NUMA节点的出接口时,从所述出接口聚合组中属于其他NUMA节点的出接口中确定用于发送所述报文的第二出接口。
7.一种报文转发装置,其特征在于,包括:
出接口聚合组确定模块,用于根据转发表确定接收到报文的入接口对应的出接口聚合组;
第一出接口选取模块,用于当所述出接口聚合组中存在与所述入接口属于相同非统一内存访问架构NUMA节点的出接口时,从所述出接口聚合组中与所述入接口属于相同NUMA节点的出接口中选取用于发送所述报文的第一出接口;
所述第一出接口选取模块包括:
NUMA节点确定模块,用于根据接口与NUMA节点之间的对应关系,确定所述入接口所属的NUMA节点;
所述第一出接口选取模块,还用于:
从所述出接口聚合组中,与所述入接口所属的NUMA节点相同的出接口中选取用于发送所述报文的第一出接口;
报文发送模块,用于通过所述第一出接口发送所述报文。
8.根据权利要求7所述的装置,其特征在于,所述第一出接口选取模块,还包括:
第一确定模块,用于确定所述出接口聚合组所包括的各个出接口;
第一选取模块,用于从所述出接口聚合组所包括的各个出接口中选取属于所述NUMA节点的出接口作为所述第一出接口。
9.根据权利要求7所述的装置,其特征在于,所述第一出接口选取模块,还包括:
第二确定模块,用于确定所述NUMA节点所包括的各个出接口;
第二选取模块,用于从所述NUMA节点所包括的各个出接口中选取属于所述出接口聚合组的出接口作为所述第一出接口。
10.根据权利要求7所述的装置,其特征在于,所述第一出接口选取模块还包括:
第一确定模块,用于确定所述出接口聚合组所包括的各个出接口;
第二确定模块,用于确定所述NUMA节点所包括的各个出接口;
第三确定模块,用于根据所述NUMA节点所包括的各个出接口和所述出接口聚合组所包括的各个出接口,确定既属于所述出接口聚合组又属于所述NUMA节点的各个出接口;
第三选取模块,用于从既属于所述出接口聚合组又属于所述NUMA节点的各个出接口中选取出接口作为所述第一出接口。
11.根据权利要求7所述的装置,其特征在于,若所述出接口聚合组中与所述入接口属于相同NUMA节点的出接口有多个,所述装置还包括:
哈希运算模块,用于根据报文特征进行哈希运算,得到哈希运算结果;
第一出接口确定模块,用于根据所述哈希运算结果,从所述出接口聚合组中与所述入接口属于相同NUMA节点的出接口中确定所述第一出接口。
12.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二出接口选取模块,用于当所述出接口聚合组中不存在与所述入接口属于相同NUMA节点的出接口时,从所述出接口聚合组中属于其他NUMA节点的出接口中确定用于发送所述报文的第二出接口。
13.一种报文转发装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行权利要求1至6中任意一项所述的方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710763296.6A CN108259328B (zh) | 2017-08-30 | 2017-08-30 | 报文转发方法及装置 |
EP18852037.3A EP3657740B1 (en) | 2017-08-30 | 2018-08-30 | Message forwarding |
PCT/CN2018/103321 WO2019042372A1 (zh) | 2017-08-30 | 2018-08-30 | 报文转发 |
JP2020511448A JP7053798B2 (ja) | 2017-08-30 | 2018-08-30 | パケット転送方法及び装置 |
US16/643,175 US11343175B2 (en) | 2017-08-30 | 2018-08-30 | Packet forwarding |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710763296.6A CN108259328B (zh) | 2017-08-30 | 2017-08-30 | 报文转发方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108259328A CN108259328A (zh) | 2018-07-06 |
CN108259328B true CN108259328B (zh) | 2020-06-05 |
Family
ID=62721946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710763296.6A Active CN108259328B (zh) | 2017-08-30 | 2017-08-30 | 报文转发方法及装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11343175B2 (zh) |
EP (1) | EP3657740B1 (zh) |
JP (1) | JP7053798B2 (zh) |
CN (1) | CN108259328B (zh) |
WO (1) | WO2019042372A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108259328B (zh) * | 2017-08-30 | 2020-06-05 | 新华三技术有限公司 | 报文转发方法及装置 |
CN109873776B (zh) * | 2019-01-30 | 2021-06-29 | 新华三技术有限公司 | 一种组播报文负载分担的均衡方法及装置 |
CN110365586B (zh) * | 2019-07-16 | 2022-05-17 | 迈普通信技术股份有限公司 | 报文传输的方法及装置 |
US11411777B2 (en) * | 2020-01-14 | 2022-08-09 | Vmware, Inc. | Port mapping for bonded interfaces of ECMP group |
US11588682B2 (en) | 2020-01-14 | 2023-02-21 | Vmware, Inc. | Common connection tracker across multiple logical switches |
WO2021145939A1 (en) * | 2020-01-14 | 2021-07-22 | Vmware, Inc. | Transparent demilitarized zone providing stateful service between physical and logical networks |
CN111884945B (zh) * | 2020-06-10 | 2022-09-02 | 中国电信股份有限公司重庆分公司 | 一种网络报文的处理方法和网络接入设备 |
CN112019432B (zh) * | 2020-07-31 | 2022-02-01 | 深圳市风云实业有限公司 | 一种基于多端口捆绑的上行输入报文转发系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101404619A (zh) * | 2008-11-17 | 2009-04-08 | 杭州华三通信技术有限公司 | 一种实现服务器负载均衡的方法和一种三层交换机 |
CN104901898A (zh) * | 2015-06-08 | 2015-09-09 | 东软集团股份有限公司 | 一种负载均衡方法及装置 |
CN106936739A (zh) * | 2015-12-30 | 2017-07-07 | 新华三技术有限公司 | 一种报文转发方法及装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7912091B1 (en) * | 2009-03-18 | 2011-03-22 | Extreme Networks, Inc. | Traffic forwarding in a traffic-engineered link aggregation group |
US8656397B2 (en) | 2010-03-30 | 2014-02-18 | Red Hat Israel, Ltd. | Migrating groups of threads across NUMA nodes based on remote page access frequency |
WO2012068579A2 (en) | 2010-11-19 | 2012-05-24 | Extreme Networks, Inc. | Methods, systems, and computer readable media for next hop scaling with link aggregation |
CN102148768B (zh) * | 2011-05-26 | 2014-11-26 | 杭州华三通信技术有限公司 | 报文转发方法和报文转发设备 |
US9686137B2 (en) * | 2015-02-10 | 2017-06-20 | Alcatel Lucent | Method and system for identifying an outgoing interface using openflow protocol |
US10673744B2 (en) * | 2015-09-23 | 2020-06-02 | Extreme Networks, Inc. | Methods, systems, and computer readable media for advanced distribution in a link aggregation group |
US10243838B1 (en) * | 2017-01-31 | 2019-03-26 | Juniper Networks, Inc. | Interleaving members for proportionate network traffic distribution |
CN108259328B (zh) | 2017-08-30 | 2020-06-05 | 新华三技术有限公司 | 报文转发方法及装置 |
-
2017
- 2017-08-30 CN CN201710763296.6A patent/CN108259328B/zh active Active
-
2018
- 2018-08-30 WO PCT/CN2018/103321 patent/WO2019042372A1/zh unknown
- 2018-08-30 JP JP2020511448A patent/JP7053798B2/ja active Active
- 2018-08-30 EP EP18852037.3A patent/EP3657740B1/en active Active
- 2018-08-30 US US16/643,175 patent/US11343175B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101404619A (zh) * | 2008-11-17 | 2009-04-08 | 杭州华三通信技术有限公司 | 一种实现服务器负载均衡的方法和一种三层交换机 |
CN104901898A (zh) * | 2015-06-08 | 2015-09-09 | 东软集团股份有限公司 | 一种负载均衡方法及装置 |
CN106936739A (zh) * | 2015-12-30 | 2017-07-07 | 新华三技术有限公司 | 一种报文转发方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3657740A4 (en) | 2020-06-24 |
JP7053798B2 (ja) | 2022-04-12 |
US11343175B2 (en) | 2022-05-24 |
EP3657740A1 (en) | 2020-05-27 |
JP2020532230A (ja) | 2020-11-05 |
WO2019042372A1 (zh) | 2019-03-07 |
EP3657740B1 (en) | 2023-12-20 |
CN108259328A (zh) | 2018-07-06 |
US20200389388A1 (en) | 2020-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108259328B (zh) | 报文转发方法及装置 | |
EP3057270A1 (en) | Technologies for modular forwarding table scalability | |
EP3534579A1 (en) | Packet transmission | |
US11310158B2 (en) | Packet classification using fingerprint hash table | |
CN103338152B (zh) | 一种组播报文转发方法和主控板 | |
CN109743414B (zh) | 利用冗余连接提高地址翻译可用性的方法及计算机可读存储介质 | |
US20090282167A1 (en) | Method and apparatus for bridging | |
CN108170533A (zh) | 报文的处理方法及装置、计算机可读存储介质 | |
CN107332943A (zh) | 一种报文转发方法及装置 | |
US10447585B2 (en) | Programmable and low latency switch fabric for scale-out router | |
CN102868775B (zh) | 地址解析协议表容量的扩展方法、报文转发方法和装置 | |
CN110213365B (zh) | 基于用户分区的用户访问请求处理方法及电子设备 | |
CN107566302B (zh) | 报文转发方法和装置 | |
US10833990B2 (en) | Transmitting packet | |
CN107547382B (zh) | 一种邻居关系发现方法和装置 | |
CN114257545B (zh) | 一种报文转发方法及装置 | |
CN110704419A (zh) | 数据结构、数据索引方法、装置及设备、存储介质 | |
CN114911728A (zh) | 一种数据查找方法、装置及集成电路 | |
WO2021072574A1 (en) | Load balancing | |
CN113824633A (zh) | 园区网中路由发布方法及网络设备 | |
US10050887B2 (en) | Load balancing method, device and storage medium | |
CN106572501B (zh) | 基于双重阈值判决的内容中心移动自组织网络缓存方法 | |
CN111506658B (zh) | 数据处理方法、装置、第一设备及存储介质 | |
CN109766185B (zh) | 一种路由表项处理方法及装置 | |
CN116600031B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |