CN116074236A - 报文转发方法及装置 - Google Patents
报文转发方法及装置 Download PDFInfo
- Publication number
- CN116074236A CN116074236A CN202111268472.1A CN202111268472A CN116074236A CN 116074236 A CN116074236 A CN 116074236A CN 202111268472 A CN202111268472 A CN 202111268472A CN 116074236 A CN116074236 A CN 116074236A
- Authority
- CN
- China
- Prior art keywords
- interface
- forwarding
- frame device
- outgoing
- message
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 120
- 238000012545 processing Methods 0.000 claims description 41
- 239000000523 sample Substances 0.000 claims 1
- 238000004891 communication Methods 0.000 abstract description 11
- 230000003044 adaptive effect Effects 0.000 abstract description 9
- 238000005516 engineering process Methods 0.000 abstract description 7
- 230000006855 networking Effects 0.000 description 29
- 230000008569 process Effects 0.000 description 16
- 239000004744 fabric Substances 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 9
- 238000011144 upstream manufacturing Methods 0.000 description 7
- 230000010354 integration Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 208000033748 Device issues Diseases 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001125 extrusion Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/12—Shortest path evaluation
-
- 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
-
- 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/12—Shortest path evaluation
- H04L45/123—Evaluation of link metrics
-
- 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/14—Routing performance; Theoretical aspects
-
- 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/28—Routing or path finding of packets in data switching networks using route fault recovery
-
- 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/02—Topology update or discovery
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种报文转发方法及装置,属于通信技术领域。框式设备通过在从多个转发芯片的出接口中选择转发报文时使用的出接口时,不仅考虑出接口的角色(是最短路径的出接口还是非最短路径的出接口),还考虑了出接口的拥塞状态,以便框式设备根据转发路径的拥塞情况灵活地为数据报文选择转发路径,使得自适应路由技术的应用扩展至框式设备。
Description
技术领域
本申请涉及通信技术领域,特别涉及一种报文转发方法及装置。
背景技术
自适应路由是指一种报文转发机制,转发设备优先使用最短路径转发报文,以保证低延迟,当最短路径出现拥塞时,使用不拥塞的非最短路径转发报文,以提升吞吐其特征在于率。
相关技术中,自适应路由技术采用私有路由协议,比如无限带宽(infiniband,IB)网络中OpenSM(一种符合infiniband的子网管理器)实现。另外,当前自适应路由只应用于盒式设备。盒式设备采用单芯片架构,由单芯片根据各个出接口的拥塞状态以及远端设备的拥塞状态选择路径转发报文。
以上方法只适用于盒式设备,而难以应用于框式设备。
发明内容
本申请提供了一种报文转发方法及装置,能够支持框式设备实现自适应路由。所述技术方案如下。
第一方面,提供了一种报文转发方法,该方法应用在包含多个转发芯片的框式设备上。以该方法由包括N个转发芯片(N为大于等于2的整数)的第一框式设备执行为例,所述方法包括:接收来自第一主机的第一数据报文;获取所述第一数据报文对应的M个出接口;根据所述M个出接口中每个出接口的拥塞状态以及每个出接口的角色,从所述M个出接口中选择目标出接口,所述出接口的角色包括所述第一框式设备与第二框式设备之间的最短路径的出接口以及所述第一框式设备与所述第二框式设备之间的非最短路径的出接口;通过所述目标出接口向所述第二框式设备发送所述第一数据报文。
框式设备通过执行上述方法,由于在从多个转发芯片的出接口中选择转发报文时使用的出接口时,不仅考虑出接口是最短路径的出接口还是非最短路径的出接口,还考虑了出接口的拥塞状态,以便框式设备根据转发路径的拥塞情况灵活地为数据报文选择转发路径,从而使得自适应路由技术的应用扩展至框式设备。
在一种可能的实现方式中,所述最短路径为所述第一框式设备和所述第二框式设备之间的直连链路。所述非最短路径为通过第三框式设备连接所述第一框式设备和所述第二框式设备的路径。
上述直连包括而不限于物理直连或者逻辑直连。物理直连例如是第一框式设备通过光纤或者同轴电缆或者数字用户线(digital subscriber line,DSL)或者其他有线方式和第二框式设备相连。逻辑直连例如是第一框式设备与第二框式设备一跳可达,换句话说,第二框式设备是第一框式设备在IP网络中的下一跳节点(next hop)。在采用逻辑直连的情况下,第一框式设备与第二框式设备之间可选地存在一个或多个二层网络设备(如二层交换机)。
可选地,上述非最短路径为经过一跳中间节点的路径,该中间节点即为第三框式设备,或,上述非最短路径为经过多跳中间节点的路径,该多跳中间节点不仅包括第三框式设备,还包括其他框式设备。
上述实现方式,能够在框式设备直连的网络中应用自适应路由,通过框式设备直连,能够提升设备集成度,降低网络功耗和组网成本。
在一种可能的实现方式中,所述根据所述M个出接口中每个出接口的拥塞状态以及每个出接口的角色,从所述M个出接口中选择目标出接口之前,所述方法还包括:
根据所述第一数据报文的目的互联网协议IP地址以及所述第一框式设备保存的第一转发表项,确定所述M个出接口的角色,所述第一转发表项包括路由前缀、等价多路径ECMP组和所述ECMP组中的出接口的角色之间的对应关系,所述路由前缀包括所述第一数据报文的目的IP地址的前缀,所述ECMP组包括所述M个出接口。
通过上述实现方式,引入了一种适于自适应路由的转发表项,由于将最短路径的出接口和非最短路径的出接口放在了同一个ECMP组中,并通过角色来标识出接口是最短路径的出接口还是非最短路径的出接口,便于转发报文时优先选择最短路径的出接口进行转发,降低了自适应路由的实现复杂度。
在一种可能的实现方式中,第一框式设备在利用第一转发表项转发报文之前,还接收来自所述第二框式设备的多个边界网关协议BGP报文,所述多个BGP报文中每个BGP报文均包括所述路由前缀和自治域AS路径属性;根据所述多个BGP报文中的路由前缀和AS路径属性生成所述第一转发表项。
通过上述实现方式,支持基于标准的BGP协议产生用于自适应路由的转发表项,从而解决了现有技术中自适应路由技术依赖于私有路由协议的技术问题,不必要求设备支持私有路由协议,从而降低了对设备的要求。
在一种可能的实现方式中,所述多个BGP报文包括第一BGP报文和第二BGP报文,所述第一BGP报文的AS路径属性中AS号的数量为设定数量,所述第二BGP报文的AS路径属性中AS号的数量大于所述设定数量,所述根据所述多个BGP报文生成所述第一转发表项,包括:根据所述第一BGP报文,获取最短路径路由,所述最短路径路由指示所述路由前缀和所述最短路径的出接口之间的对应关系;根据所述第二BGP报文,获取非最短路径路由,所述非最短路径路由指示所述路由前缀和所述非最短路径的出接口之间的对应关系;根据所述最短路径路由以及所述非最短路径路由生成所述第一转发表项。
通过上述实现方式,支持基于BGP中的AS路径属性来获得最短路径路由和非最短路径路由,而不必要求设备通过私有路由协议来学习最短路径路由和非最短路径路由,从而降低了实现复杂度。
在一种可能的实现方式中,所述第一BGP报文中AS路径属性中的AS号为所述第二框式设备的AS号,所述第二BGP报文中AS路径属性中的AS号为所述第二框式设备的AS号以及第三框式设备的AS号。
通过上述实现方式,框式设备根据AS路径属性是只包括一个AS号还是包括两个AS号,即可区分BGP报文中的路由为最短路径路由还是非最短路径路由,实现简单。
在一种可能的实现方式中,第一框式设备在利用第一转发表项转发报文之前,第一框式设备还为所述第二框式设备分配所述ECMP组。
通过上述实现方式,框式设备为每个目的框维护一个ECMP组即可,节省了框式设备为维护ECMP组所耗费的处理资源和存储资源。
在一种可能的实现方式中,所述ECMP组包括第一转发芯片的第一出接口,所述第一出接口用于连接所述第二框式设备,所述第一转发芯片为所述N个转发芯片中的任意一个,所述方法还包括:接收来自所述第一转发芯片的第一通知消息,所述第一通知消息指示所述第一转发芯片的所述第一出接口处于故障状态;根据所述第一通知消息从所述第一转发表项的ECMP组中删除所述第一出接口。
通过上述实现方式,可以在框内转发芯片的出接口发生故障时,将故障出接口从ECMP组中删除,从而有助于快速故障收敛。
在一种可能的实现方式中,在所述最短路径的出接口处于非拥塞状态的情况下,所述目标出接口为所述最短路径的出接口。
通过上述实现方式,由于优先选择轻载最短路径转发报文,能够降低报文转发的时延。
在一种可能的实现方式中,所述M个出接口中包括多个第一框式设备与第二框式设备之间的最短路径出接口,所述多个最短路径出接口包括本地出接口以及跨芯片出接口,在所述本地出接口以及所述跨芯片出接口均处于非拥塞状态的情况下,所述目标出接口为所述本地出接口,所述本地出接口为所述第一框式设备中接收到所述第一数据报文的转发芯片的出接口,所述跨芯片出接口为所述第一框式设备中接收到所述第一数据报文的转发芯片之外的其他转发芯片的出接口。
通过上述实现方式,由于在存在多个最短路径出接口的情况下,优先选择芯片本地的出接口转发报文,能够节省报文在框式设备内部转发的时间,从而降低报文转发的时延。
在一种可能的实现方式中,在所述最短路径的出接口处于拥塞状态的情况下,所述目标出接口为所述非最短路径的出接口中处于非拥塞状态的出接口。
通过上述实现方式,由于在最短路径拥塞时优先选择轻载非最短路径转发,从而提升吞吐率。
在一种可能的实现方式中,在所述最短路径的出接口处于拥塞状态,且所述非最短路径的出接口中本地出接口以及跨芯片出接口均处于非拥塞状态的情况下,所述目标出接口为所述非最短路径的出接口中本地出接口,所述本地出接口为所述第一框式设备中接收到所述第一数据报文的转发芯片的出接口,所述跨芯片出接口为所述第一框式设备中接收到所述第一数据报文的转发芯片之外的其他转发芯片的出接口。
通过上述实现方式,由于在存在多个非最短路径出接口的情况下,优先选择芯片本地的出接口转发报文,能够节省报文在框式设备内部转发的时间,从而降低报文转发的时延。
在一种可能的实现方式中,所述N个转发芯片包括第二转发芯片,所述第二转发芯片包括第二出接口,所述第二出接口用于连接所述第二框式设备,所述根据所述M个出接口中每个出接口的拥塞状态以及每个出接口的角色,从所述M个出接口中选择目标出接口之前,所述方法还包括:接收来自所述第二转发芯片的第二通知消息,所述第二通知消息指示所述第二转发芯片的所述第二出接口的拥塞状态;根据所述第二通知消息记录所述第二出接口的拥塞状态。
通过上述实现方式,实现了框内跨芯片的拥塞感知和通知机制,能够及时感知本框与其他框之间互连链路的当前的拥塞状态,便于在报文转发时根据拥塞状态选择综合性能更优的转发路径。
在一种可能的实现方式中,所述第二通知消息是在所述第二出接口的队列深度超过深度阈值时由所述第二转发芯片生成的,或者,所述第二通知消息是在所述第二出接口的带宽利用率超过带宽利用率阈值时由所述第二转发芯片生成的。
通过上述实现方式,转发芯片通过监控本地互联接口的队列深度或者带宽利用率,即可判断互联接口是否拥塞,实现复杂度较低。
在一种可能的实现方式中,所述第二通知消息包括所述第二转发芯片的标识、所述第二出接口的标识以及拥塞状态标识。
在一种可能的实现方式中,所述N个转发芯片包括第二转发芯片,所述第二转发芯片包括第二出接口,所述第二出接口用于连接所述第二框式设备,所述根据所述M个出接口中每个出接口的拥塞状态以及每个出接口的角色,从所述M个出接口中选择目标出接口之前,所述方法还包括:为所述第二出接口建立虚拟输出队列VOQ;根据所述VOQ的队列深度确定所述第二出接口的拥塞状态。
通过上述实现方式,能够根据VOQ的队列深度感知到与其他框式设备互联的出接口当前的拥塞状态,便于在报文转发时根据出接口当前的拥塞状态选择综合性能更优的转发路径。
在一种可能的实现方式中,所述第一框式设备还包括交换网芯片,所述交换网芯片用于根据所述第二出接口的拥塞状态更新所述VOQ的队列深度。
通过上述实现方式,由于通过交换网芯片反压出接口的拥塞状态,在支持转发芯片感知互连链路拥塞状态的基础上,节省了出接口所在的转发芯片向其他转发芯片通知拥塞状态带来的处理开销。
在一种可能的实现方式中,所述方法还包括:接收来自第三框式设备的第二数据报文;获取所述第二数据报文对应的最短路径的出接口;通过所述第二数据报文对应的最短路径的出接口向所述第二框式设备发送所述第二数据报文。
通过上述实现方式,由于框式设备在本设备为中间框时采用最短路径转发报文,可以避免报文从中间框转发出去后再次通过非最短路径转发到其他中间框,从而有效避免环路。
第二方面,提供了一种报文转发装置,该报文转发装置具有实现上述第一方面或第一方面任一种可选方式的功能。该报文转发装置包括至少一个单元,至少一个单元用于实现上述第一方面或第一方面任一种可选方式所提供的方法。
在一些中,报文转发装置中的单元通过软件实现,报文转发装置中的单元是程序模块。在另一些中,报文转发装置中的单元通过硬件或固件实现。第二方面提供的报文转发装置的具体细节可参见上述第一方面或第一方面任一种可选方式,此处不再赘述。
第三方面,提供了一种框式设备,该框式设备包括:N个转发芯片和至少一个主处理芯片,N大于等于2。框式设备用于执行上述第一方面或第一方面任一种可选方式所提供的方法。
在一些中,该框式设备包括一个或多个接口板,上述N个转发芯片设于不同或相同的接口板上。
在一些中,该框式设备还包括主控板。主控板和接口板耦合。所述主处理芯片设于所述主控板上。
在一种可能的实现方式中,主控板和接口板之间建立进程间通信(inter-processcommunication,IPC)通道,主控板和接口板之间通过IPC通道进行通信。
第四方面,提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令在计算机上运行时,使得该计算机执行上述第一方面或第一方面任一种可选方式所提供的方法。
第五方面,提供了一种计算机程序产品,所述计算机程序产品包括一个或多个计算机程序指令,当所述计算机程序指令被计算机加载并运行时,使得所述计算机执行上述第一方面或第一方面任一种可选方式所提供的方法。
第六方面,提供了一种转发芯片,包括存储器、处理器和一个或多个网络接口,网络接口用于接收和/或发送数据报文,存储器用于存储计算机指令,处理器用于从存储器中调用并运行该计算机指令,以执行上述第一方面及其第一方面任意可能的实现方式中通过转发芯片执行的步骤。
附图说明
图1是本申请实施例提供的一种多个框式设备的组网架构示意图;
图2是本申请实施例提供的另一种多个框式设备的组网架构示意图;
图3是本申请实施例提供的再一种多个框式设备的组网架构示意图;
图4是本申请实施例提供的一种框式设备的结构示意图;
图5是本申请实施例提供的另一种框式设备的结构示意图;
图6是本申请实施例提供的一种报文转发方法的实施环境示意图;
图7是本申请实施例提供的一种报文转发方法的流程图;
图8是本申请实施例提供的一种下发转发表项的示意图;
图9是本申请实施例提供的另一种报文转发方法的流程图;
图10是本申请实施例提供的一种转发表项的生成方法的流程图;
图11是本申请实施例提供的一种报文转发装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
下面对本申请实施例提供的网络***架构举例说明。
本申请的一些实施例应用于框式设备网格(mesh)直连组网的场景。网络中包含多个框式设备,该多个框式设备中任两个框式设备之间存在一条或多条直连链路。
图1示出了网络中任两个框式设备之间存在一条直连链路的架构。如图1所示,网络中包含P个框式设备,每个框式设备通过一条直连链路与其他(P-1)个框式设备相连,P为大于或等于3的正整数。可选地,对于大规模组网的场景,采用图1示出的架构,从而形成大型的框式mesh直连组网。
图2示出了网络中任两个框式设备之间存在多条直连链路的架构。如图2所示,网络中包含P个框式设备,每个框式设备通过多条直连链路与其他(P-1)个框式设备相连。可选地,对于中小型组网的场景,采用图2示出的架构,从而形成中小型的框式mesh直连组网。
示例性地,如图3所示,每个框式设备(简称为框)包含16个线卡,每个线卡包含3个转发芯片,每个转发芯片具有4.8太字节(terabyte,TB,简称T)的带宽,每个转发芯片能够对外提供12*400千兆(gigabit,G)端口。例如,2.4T的端口用于接入服务器,2.4T的端口用于框式设备之间直连,则每个转发芯片提供6个400G端口连接服务器,6个400G端口用于框式设备之间直连。每个框式设备最多能连接其他6*3*16=288个框式设备,整网规模支持289个框式设备互联。整网接入400G服务器的数量为289*16*3*6=83232个,因此能够支持很大的组网规模。
对于中小规模组网,每对框式设备之间通过多条直连链路进行互联。例如,网络***包括9个框式设备,每个框式设备和其它8个框式设备互联,则平均每对框式设备之间互连链路数目为288/8=36。通过框式设备互联,能够提升设备集成度,降低网络功耗和组网成本。
下面对本申请实施例提供的框式设备的硬件结构举例说明。
图4是本申请实施例提供的一种框式设备200的结构示意图。图1或者图2示出的网络***中的每个框式设备可选地具有图4所示的结构。
框式设备200包括主控板210和线卡(line card)230。
主控板210也称为主处理单元(main processing unit,MPU)或路由处理卡(routeprocessor card),主控板210用于对框式设备200中各个组件的控制和管理,包括路由计算、设备管理、设备维护、协议处理功能。主控板210包括:中央处理器211和存储器212。
线卡230也称为接口板(interface board)、线路处理单元(line processingunit,LPU)或业务板。线卡230用于提供各种业务接口并转发报文。业务接口包括而不限于以太网接口、无限带宽(infiniband,IB)接口等,以太网接口例如是灵活以太网业务接口(flexible ethernet clients,FlexE clients)。
线卡230包括多个转发芯片。图4中以线卡230包括转发芯片231和转发芯片232为例说明。
可选地,框式设备200包括多个线卡,例如框式设备200还包括线卡240,线卡240包括转发芯片241和转发芯片242。
可选地,框式设备200还包括交换网板220。交换网板220也例如称为交换网板单元(switch fabric unit,SFU)。在框式设备有多个线卡的情况下,交换网板220用于完成各线卡之间的数据交换。例如,线卡230和线卡240之间例如通过交换网板220通信。在不同线卡上的转发芯片需要交互的情况下,交换网板220用于转发不同线卡上转发芯片之间的数据,从而实现转发芯片之间的相互通信。
可选地,框式设备200中每个转发芯片与外部设备(如终端或者服务器)相连,并且与交换网板220相连。例如,每个转发芯片的一半接口连接外部外部设备,另一半接口连接交换网板。
主控板210和线卡230耦合。例如。主控板210、线卡230和线卡240,以及交换网板220之间通过***总线与***背板相连实现互通。在一种可能的实现方式中,主控板210和线卡230之间建立进程间通信协议(inter-process communication,IPC)通道,主控板210和线卡230之间通过IPC通道进行通信。
在逻辑上,框式设备200包括控制面和转发面,控制面包括主控板210,主控板210包括中央处理器211和存储器212,转发面包括各个转发芯片,例如,线卡230上设置有转发芯片231和转发芯片232,交换网板220上设置有交换网芯片。控制面执行路由发布和学习、生成转发表、处理信令和协议报文、配置与维护设备的状态等功能,控制面将生成的转发表下发给转发面。转发面的转发芯片232基于控制面下发的转发表对网络接口(图中未示出)收到的报文查表转发。控制面下发的转发表例如保存在线卡上的存储器(图中未示出)中。在有些实施例中,控制面和转发面可以部署在不同的物理设备上。
主控板可能有一块或多块,有多块的时候例如包括主用主控板和备用主控板。线卡可能有一块或多块,框式设备的数据处理能力越强,提供的线卡越多。线卡上的物理接口卡也可以有一块或多块。交换网板可能没有,也可能有一块或多块,有多块的时候可以共同实现负荷分担冗余备份。在集中式转发架构下,框式设备可以不需要交换网板,线卡承担整个***的业务数据的处理功能。在分布式转发架构下,框式设备可以有至少一块交换网板,通过交换网板实现多块线卡之间的数据交换,提供大容量的数据交换和处理能力。所以,分布式架构的框式设备的数据接入和处理能力要大于集中式架构的设备。可选地,框式设备的形态也可以是只有一块板卡,即没有交换网板,线卡和主控板的功能集成在该一块板卡上,此时线卡上的中央处理器和主控板上的中央处理器在该一块板卡上可以合并为一个中央处理器,执行两者叠加后的功能,这种形态设备的数据交换和处理能力较低(例如,低端交换机或路由器等框式设备)。具体采用哪种架构,取决于具体的组网部署场景,此处不做任何限定。
在一个示例性实施例中,如图5所示,框式设备200包括16个线卡,每个线卡包括3个转发芯片。
下面对本申请实施例提供的报文转发方法的实施环境举例说明。
本申请实施例提供的报文转发方法应用在包括多个框式设备和多个主机的网络中。该多个框式设备之间互相连接。多个框式设备之间具体的连接方式可参考图1或者图2或者图3示出的架构。每个框式设备可选地具有图4或者图5示出的硬件结构。多个框式设备用于将数据报文从源主机转发至目的主机,从而支持不同主机之间的数据交换。
主机包括而不限于终端或者服务器。其中,终端包括而不限于个人计算机、移动电话、服务器、笔记本电脑、IP电话、摄像头、平板电脑、可穿戴设备等。服务器包括而不限于应用服务器或者网页服务器。应用服务器包括而不限于游戏服务器、视频应用服务器、文件服务器、搜索引擎服务器、即时通信服务器等等。网页服务器也称万维网(world wide web,web)服务器或者网站服务器。
图6是本申请实施例提供的一种实施环境的示意图。图6示出的实施环境包括主机41、框式设备301、框式设备302、框式设备303和主机42。图6中每个框式设备包括而不限于框式交换机或者框式路由器。每个框式设备均包括主控板、交换网板和N个转发芯片(图中示出了转发芯片1和转发芯片2),N大于等于2。
框式设备301与主机41相连。框式设备301中转发芯片1的接口1和主机41相连。
框式设备303与主机42相连。框式设备303中转发芯片2的接口2和主机42相连。
框式设备301、框式设备302和框式设备303中任两个框式设备之间通过直连链路相连。框式设备301中转发芯片2与框式设备302中转发芯片1通过直连链路相连。框式设备301中转发芯片2与框式设备303中转发芯片1通过直连链路相连。框式设备302中转发芯片2与框式设备303中转发芯片1通过直连链路相连。
下面对本申请实施例的应用场景举例说明。
本申请实施例的一个典型应用场景为高性能计算(high performancecomputing,HPC)。HPC作为科学计算的一个分支,通常将复杂的计算任务分配给不同的处理器进行并行处理,利用普通的服务器构建一套高性能的集群***。
高性能计算集群性能取决于计算节点的性能和计算节点之间的通信效率。为了提高网络设备集成效率,节省功耗,提升通信效率,在HPC网络中通常通过框式设备将计算节点互联。
时下,HPC网络采用的互联拓扑主要为胖树型(fat tree)方式,采用叶脊(spine-leaf)两层交换机或更多层交换机进行全互联(full mesh)组网。然而,采用三级fat tree方式组网时,最短路径至少要经过五跳节点,该五跳节点是源叶(leaf)交换机、脊(spine)交换机、Super spine交换机、脊(spine)交换机、目的leaf交换机),导致时延较大,而且组网成本较高。
通过在HPC网络中应用本申请实施例提供的网络***架构,由于采用框式设备之间直连的拓扑,任意两个框式设备之间通信时最短路径只需要经过两跳节点(即源框设备和目的框设备),而不像fat tree一样最短路径仍需要经过五跳节点,因此降低了跨框转发最短路径的跳数,因此相比fat tree组网能够降低时延。另外,相比fat tree能够降低组网成本。
下面对本申请实施例提供的报文转发方法的流程举例说明。本申请实施例提供的报文转发方法用于支持框式设备进行自适应路由。转发芯片在转发报文时,根据出接口的拥塞状态进行自适应路由。自适应路由是指:考虑报文转发路径的拥塞情况,优先采用最短路径转发报文,保证低时延;当最短路径开始出现拥塞时,使用非最短路径转发,从而提升吞吐率。
图7是本申请实施例提供的一种报文转发方法的流程图。
图7所示方法涉及多个主机之间的交互。为了区分不同的主机,用“第一主机”、“第二主机”区分描述多个不同的主机。图7所示方法以如何将第一主机产生的数据报文转发至第二主机为例进行说明,在转发数据报文的过程中,第一主机为数据报文的源设备,第二主机为数据报文的目的设备。
图7所示方法涉及多个框式设备之间的交互。为了区分不同的框式设备,用“第一框式设备”、“第二框式设备”、“第三框式设备”区分描述多个不同的框式设备。图7所示方法以第一主机接入第一框式设备、第二主机接入第二框式设备的场景为例进行说明,在转发数据报文的过程中,第一框式设备负责从第一主机接收数据报文,将数据报文转发至第二框式设备。第二框式设备负责将目的方为第二主机的数据报文转发至第二主机。第三框式设备为可选的节点,第三框式设备为第一框式设备与第二框式设备之间的中间节点,第三框式设备用于在第一框式设备和第二框式设备之间转发报文。
图7所示方法所基于的网络***架构可选地如图6所示。结合图6来看,图7所示方法中的第一主机为图6中的主机41,图7所示方法中的第一框式设备为图6中的框式设备301,图7所示方法中的第二框式设备为图6中的框式设备303,图7所示方法中的第三框式设备为图6中的框式设备302,图7所示方法中的第二主机为图6中的主机42。
图7所示方法可选地用于转发来自第一主机的多个数据报文的场景,为了便于读者理解,图7所示方法以如何转发来自第一主机的一个数据报文(即第一数据报文)的流程为例进行说明。转发来自第一主机的其他数据报文的方式可参考转发第一数据报文的方式。
图7所示方法包括以下S501至S508。
S501、第一主机发送第一数据报文。
第一数据报文的源互联网协议(Internet Protocol,IP)地址为第一主机的IP地址,第一数据报文的目的IP地址为第二主机的IP地址。
S502、第一框式设备接收来自第一主机的第一数据报文。
S503、第一框式设备获取第一数据报文对应的M个出接口。
M个出接口是指第一框式设备的N个转发芯片的出接口中与第一数据报文对应的出接口。M为正整数。可选地,M大于或等于2。下面对M个出接口可能具有的特征进行说明。
在一些实施例中,M个出接口是与第一数据报文的目的IP地址对应的出接口。第一框式设备保存有转发表。转发表用于指示目的IP地址与出接口之间的对应关系。M个出接口中的每个出接口为第一框式设备的转发表中与第一数据报文的目的IP地址对应的出接口。
在一些实施例中,M个出接口属于同一个等价多路径(equal cost multi-path,ECMP)组。M个出接口中的每个出接口也称该ECMP组中的成员接口。
在一些实施例中,M个出接口包括最短路径的出接口和非最短路径的出接口中至少一项。例如,第一框式设备与第二框式设备之间存在K条路径,最短路径是指第一框式设备与第二框式设备之间的K条路径中最短的路径,非最短路径是指第一框式设备与第二框式设备之间的K条路径中除最短路径之外的路径。K为大于或等于2的正整数。
上述最短路径和非最短路径包括多种可能情况,下面对最短路径和非最短路径的一些可能情况举例说明。
可选地,上述最短路径为第一框式设备和第二框式设备之间的直连链路。上述非最短路径为第一框式设备和第二框式设备之间的经过一个或多个中间节点的路径。
上述直连包括而不限于物理直连或者逻辑直连。物理直连例如是第一框式设备通过光纤或者同轴电缆或者数字用户线(digital subscriber line,DSL)或者其他有线方式和第二框式设备相连。逻辑直连例如是第一框式设备与第二框式设备一跳可达,换句话说,第二框式设备是第一框式设备在IP网络中的下一跳节点(next hop)。在采用逻辑直连的情况下,第一框式设备与第二框式设备之间可选地存在一个或多个二层网络设备(如二层交换机)。
上述中间节点可选地为框式设备。例如,第三框式设备为第一框式设备与第二框式设备之间的中间节点,非最短路径为通过第三框式设备连接第一框式设备和第二框式设备的路径。可选地,第三框式设备和第一框式设备直连,并且第三框式设备和第二框式设备直连,非最短路径包括第一框式设备和第三框式设备之间的直连链路、第三框式设备和第二框式设备之间的直连链路。
可替代地,上述中间节点为框式设备之外的三层网络设备。
可替代地,上述最短路径为跳数小于或等于跳数阈值的路径,上述非最短路径为跳数大于跳数阈值的路径。例如,将经过一跳中间节点的路径定义为最短路径,将经过多跳中间节点的路径定义为非最短路径。
可替代地,上述最短路径为开销(cost)小于或等于cost阈值的路径,上述非最短路径为cost大于cost阈值的路径。
以上说明的最短路径和非最短路径的各种可能情况均是举例说明,本实施例对最短路径和非最短路径不做限定。
在一些实施例中,M个出接口中的每个出接口为全局(global)端口。N个转发芯片的出接口包括global端口和接入(access)端口。global端口是指框式设备之间互联的端口,即第一框式设备上用于与第一框式设备之外的其他框式设备互联的端口。access端口是第一框式设备与主机互联的端口。
在一些实施例中,M个出接口为N个转发芯片中同一个转发芯片的出接口。在另一些实施例中,M个出接口包括N个转发芯片中不同转发芯片的出接口。
在一些实施例中,M个出接口包括本地出接口和跨芯片出接口中至少一项。
本地出接口也称同芯片出接口,本地出接口为第一框式设备中接收到第一数据报文的转发芯片的出接口。跨芯片出接口为第一框式设备中接收到第一数据报文的转发芯片之外的其他转发芯片的出接口。例如,第一数据报文是N个转发芯片中的转发芯片A接收到的,那么转发芯片A的每个出接口为本地出接口,N个转发芯片中除转发芯片A之外其他转发芯片的出接口为跨芯片出接口。
可选地,M个出接口中的每个出接口均为本地出接口;或者,M个出接口中的每个出接口均为跨芯片出接口;或者,M个出接口中一部分出接口为本地出接口而另一部分出接口为跨芯片出接口。
以上说明的M个出接口的各种特征可选地相互组合,或者单独存在。例如,M个出接口中包括0、1个或多个最短路径的出接口以及0、1个或多个非最短路径的出接口,其中,最短路径的出接口中包括0、1个或多个本地出接口以及0、1个或多个跨芯片出接口,非最短路径的出接口中包括0、1个或多个本地出接口以及0、1个或多个跨芯片出接口。
在一些实施例中,第一框式设备获取M个出接口的过程具体包括:第一框式设备解析第一数据报文,得到第一数据报文的目的IP地址。第一框式设备根据第一数据报文的目的IP地址,从第一框式设备保存的转发表中,查找与第一数据报文的目的IP地址匹配的路由前缀,得到该路由前缀对应的M个出接口。
可选地,上述转发表包括第一转发表和第二转发表。第一转发表用于进行自适应路由转发,第二转发表用于进行最短路径转发。第一转发表中每个IP地址对应的出接口均包含最短路径的出接口和非最短路径的出接口,以便根据出接口当前的拥塞状态从最短路径的出接口和非最短路径的出接口中选择出接口转发报文,实现最短路径和非最短路径之间的灵活切换。第二转发表中每个IP地址对应的出接口均为最短路径的出接口,以便固定通过最短路径转发报文。
可选地,第一框式设备为数据报文的源框时使用上述第一转发表,第一框式设备为数据报文的目的框或者中间框时使用上述第二转发表。在一些实施例中,第一框式设备根据数据报文的入接口确定查询第一转发表还是查询第二转发表。例如,第一框式设备通过接口a接收到一个数据报文(如上述第一数据报文)后,第一框式设备判断接口a是global端口还是access端口。如果接口a是access端口,表明数据报文是从主机接收到的,第一框式设备为该数据报文的源框,则第一框式设备查询上述第一转发表从而得到M个出接口,M个出接口包括最短路径的出接口和非最短路径的出接口。如果接口a是global端口,表明数据报文是从其他框式设备接收到的,第一框式设备为该数据报文的中间框或者目的框,则第一框式设备查询上述第二转发表从而得到M个出接口,M个出接口包括最短路径的出接口。
可选地,上述转发表包括出接口所属转发芯片的目标板标识符(target boardidentifier,TB ID)和出接口的目标端口标识符(target port identifier,TP ID)。TB ID是第一框式设备中每个转发芯片的唯一编号,TP ID是第一框式设备的每个出接口在所属的转发芯片内的唯一编号。当一个转发芯片从转发表中查找到M个出接口后,对于M个出接口中每个出接口,该转发芯片可选地根据出接口的TB ID是否和芯片自身的TB ID相同,从而判断该出接口是本地出接口还是跨芯片出接口。如果出接口的TB ID和芯片自身的TB ID相同,则判断该出接口是本地出接口。如果出接口的TB ID和芯片自身的TB ID不同,则判断该出接口是跨芯片出接口。
S504、第一框式设备根据M个出接口中每个出接口的拥塞状态以及每个出接口的角色,从M个出接口中选择目标出接口。
如何确定一个出接口的拥塞状态包括多种实现方式,下面对一些确定拥塞状态的可能实现方式举例说明。
在一些实施例中,第一框式设备根据出接口的队列深度、带宽利用率、缓冲区(buffer)长度、剩余带宽中至少一项确定出接口的拥塞状态。
以根据队列深度确定拥塞状态为例,例如,第一框式设备获取M个出接口中每个出接口的队列深度;第一框式设备分别对每个出接口的队列深度与深度阈值进行比较;如果一个出接口的队列深度超过深度阈值,则第一框式设备确定该出接口处于拥塞状态。如果一个出接口的队列深度小于或等于深度阈值,则第一框式设备确定该出接口处于非拥塞状态。可选地,将拥塞状态进一步划分为中度拥塞状态和重度拥塞状态,通过不同的深度阈值来判断是中度拥塞状态还是重度拥塞状态。例如,上述深度阈值包括第一深度阈值和第二深度阈值,第一深度阈值大于第二深度阈值,如果一个出接口的队列深度超过第一深度阈值,则第一框式设备确定该出接口处于重度拥塞状态,如果一个出接口的队列深度未超过第一深度阈值而超过第二深度阈值,则第一框式设备确定该出接口处于中度拥塞状态。
以根据带宽利用率确定拥塞状态为例,例如,第一框式设备获取M个出接口中每个出接口的带宽利用率;第一框式设备分别对每个出接口的带宽利用率与带宽利用率阈值进行比较;如果一个出接口的带宽利用率超过带宽利用率阈值,则第一框式设备确定该出接口处于拥塞状态。
以根据buffer长度确定拥塞状态为例,例如,第一框式设备获取M个出接口中每个出接口的buffer长度;第一框式设备分别对每个出接口的buffer长度与长度阈值进行比较;如果一个出接口的buffer长度超过长度阈值,则第一框式设备确定该出接口处于拥塞状态。
以根据剩余带宽确定拥塞状态为例,例如,第一框式设备获取M个出接口中每个出接口的剩余带宽;第一框式设备分别对每个出接口的剩余带宽与带宽阈值进行比较;如果一个出接口的剩余带宽小于带宽阈值,则第一框式设备确定该出接口处于拥塞状态。
以上说明的各种确定出接口拥塞状态的实现方式可选地相互组合,或者单独存在。例如,第一框式设备根据出接口的队列深度和带宽利用率确定出接口拥塞状态。如果一个出接口的队列深度超过深度阈值且带宽利用率超过带宽利用率阈值,则第一框式设备确定该出接口处于拥塞状态。
可选地,上述确定出接口的拥塞状态的过程由N个转发芯片中的上行芯片执行。N个转发芯片包括上行芯片和下行芯片。上行芯片是指位于交换网芯片上行方向的转发芯片。上行芯片具有与第一主机相连的出接口。下行芯片是指位于交换网芯片下行方向的转发芯片。下行芯片具有与第二框式设备相连的出接口。在第一数据报文的转发流程中,上行芯片从第一主机接收第一数据报文,将第一数据报文转发给交换网芯片;交换网芯片从上行芯片接收第一数据报文,将第一数据报文转发给下行芯片;下行芯片从交换网芯片接收第一数据报文,向第二框式设备转发第一数据报文。
可选地,在M个出接口中包含跨芯片出接口的情况下,本实施例进一步提供了跨芯片的拥塞感知机制,从而帮助转发芯片感知框内其他转发芯片的出接口的拥塞状态,以便根据出接口的拥塞状态选择综合性能更优的转发路径。跨芯片的拥塞感知机制包括而不限下述方式一和方式二。
方式一、转发芯片通过向其他转发芯片发送通知消息从而通知出接口的拥塞状态。
对于N个转发芯片中转发芯片i来说,转发芯片i确定本芯片的每个出接口的拥塞状态,转发芯片i根据每个出接口的拥塞状态生成拥塞通知消息,向N个转发芯片中转发芯片i之外的(N-1)个其他转发芯片发送拥塞通知消息。(N-1)个其他转发芯片中的每个转发芯片接收转发芯片i的拥塞通知消息,根据转发芯片i的拥塞通知消息记录转发芯片i每个出接口的拥塞状态。
拥塞通知消息指示转发芯片i的出接口的拥塞状态。拥塞通知消息包括转发芯片i的标识、转发芯片i的出接口的标识、拥塞状态标识和消息类型中至少一项。
转发芯片i的标识用于标识转发芯片i。可选地,转发芯片i的标识为转发芯片i的TB ID。
出接口的标识用于标识转发芯片i的多个出接口中对应的出接口。可选地,出接口的标识为TP ID。
拥塞状态标识用于指示出接口是否处于拥塞状态。可选地,拥塞状态标识在拥塞通知消息中占多个比特,该多个比特用于标识多种拥塞状态。该多种拥塞状态包括而不限于轻载、中度拥塞和重度拥塞。其中,轻载属于非拥塞状态,中度拥塞和重度拥塞均属于拥塞状态。举例来说,拥塞状态标识占2个比特,2个比特的值为00时标识轻载,2个比特的值为01时标识中度拥塞,2个比特的值为10时标识重度拥塞。可替代地,拥塞状态标识在拥塞通知消息中占1个比特,这1个比特用于标识是否处于拥塞状态,例如这1个比特的值为0时标识非拥塞状态,这1个比特的值为1时标识拥塞状态。
消息类型用于标识消息的类型是拥塞通知消息。
可选地,拥塞通知消息为组播消息。例如,转发芯片i产生的拥塞通知消息对应的组播源为转发芯片i,组播组为N个转发芯片中转发芯片i之外的(N-1)个其他转发芯片。
可选地,拥塞通知消息为单播消息。例如,转发芯片i为转发芯片i之外的(N-1)个其他转发芯片生成(N-1)份拥塞通知消息,转发芯片i向(N-1)个其他转发芯片中的每一个转发芯片分别发送一份拥塞通知消息。
可选地,由交换网板在不同转发芯片之间转发拥塞通知消息。例如,在拥塞通知消息为组播消息的情况下,交换网板上保存有组播转发表项,组播转发表项中的出接口列表为交换网板上用于连接N个转发芯片中每个转发芯片的接口。
下面以确定第二转发芯片中第二出接口的拥塞状态的过程为例,对如何采用方式一确定出接口的拥塞状态举例说明,第二转发芯片为上述N个转发芯片中的转发芯片i。
示例性地,第二转发芯片包括第二出接口。第二出接口用于连接所述第二框式设备。第二出接口为global端口。第二转发芯片获取第二出接口的拥塞状态。第二转发芯片根据第二出接口的拥塞状态生成第二通知消息。第二转发芯片向N个转发芯片中第二转发芯片之外的其他转发芯片发送第二通知消息。N个转发芯片中第二转发芯片之外的其他转发芯片接收第二通知消息,根据第二通知消息记录第二出接口的拥塞状态。
第二通知消息指示第二转发芯片的第二出接口的拥塞状态。
可选地,第二通知消息为上述拥塞通知消息。
可选地,第二通知消息包括第二转发芯片的标识、第二出接口的标识以及拥塞状态标识。
可选地,第二通知消息是在第二出接口的队列深度超过深度阈值时由第二转发芯片生成的。或者,第二通知消息是在第二出接口的带宽利用率超过带宽利用率阈值时由第二转发芯片生成的。
方式二、上行芯片通过虚拟输出队列(virtual output queue,VOQ)来感知下行芯片的出接口的拥塞状态。
上行芯片为每个下行芯片的每个出接口建立对应的VOQ。VOQ用于缓存从第一主机接收到的、待发往交换网芯片的数据报文。例如,对于上述M个出接口中第i个出接口,上行芯片建立VOQi。上行芯片在转发报文时,根据VOQi的队列深度确定第i个出接口的拥塞状态。在一种可能的实现中,如果VOQi的队列深度超过队列深度阈值,则上行芯片确定第i个出接口处于拥塞状态。
可选地,通过交换网芯片向上行芯片反压出接口的拥塞状态。交换网芯片获取下行芯片的每个出接口的拥塞状态,根据出接口的拥塞状态更新VOQ的队列深度。
下面以确定第二转发芯片中第二出接口的拥塞状态的过程为例,对如何采用方式二感知下行芯片的出接口的拥塞状态举例说明。
示例性地,上述N个转发芯片包括第二转发芯片。第二转发芯片为下行芯片。第二转发芯片包括第二出接口。第二出接口用于连接所述第二框式设备。第二出接口为global端口。上行芯片为第二出接口建立虚拟输出队列VOQ;根据VOQ的队列深度确定第二出接口的拥塞状态。可选地,由交换网芯片根据第二出接口的拥塞状态更新VOQ的队列深度。
通过上述方式一或者方式二,引入了框式设备内跨芯片的拥塞感知和通知机制,通过多个转发芯片协同处理,从而支持芯片转发时根据出接口的拥塞情况选择综合性能更优的转发路径。
出接口的角色包括第一框式设备与第二框式设备之间的最短路径的出接口以及第一框式设备与第二框式设备之间的非最短路径的出接口。
可选地,第一框式设备通过查找转发表从而确定每个出接口的角色。上述第一转发表中包括一组或多组路由前缀、ECMP组和ECMP组中出接口的角色之间的对应关系。第一转发表中ECMP组中出接口的角色包括最短路径的出接口和非最短路径的出接口。以第一转发表中第一数据报文对应的表项为第一转发表项为例,第一框式设备根据第一数据报文的目的IP地址以及第一转发表项,确定M个出接口的角色。其中,第一转发表项包括路由前缀、ECMP组和ECMP组中的出接口的角色之间的对应关系,路由前缀包括第一数据报文的目的IP地址的前缀,ECMP组包括M个出接口。
图8是本申请实施例提供的一种下发转发表项的示意图。上述第一转发表项包括图8中的路由前缀表项和ECMP组表项。上述第一转发表项是由图8中的BGP协议和路由下发模块生成的。可选地,图8中的BGP协议和路由下发模块是图4示出的框式设备200上主控板210***处理器211运行的软件功能模块。图8中的路由前缀表项和ECMP组表项是图4示出的框式设备200上转发芯片231上存储器保存的转发表项。图8示出的路由前缀表项包括路由前缀/掩码和ECMP组索引(该索引可以是ECMP ID)。ECMP组表项包括组ID 100对应的ECMP组中出接口的TB ID、TP ID和角色。下面结合图8示出的转发表项,介绍如何确定M个出接口中每个出接口的角色。
例如,第一框式设备接收到第一数据报文后,根据第一数据报文的目的IP地址,查找转发表中与第一数据报文的目的IP地址匹配的转发表项。第一框式设备发现第一数据报文的目的IP地址与20.1.1.1/24匹配,则从20.1.1.1/24对应的转发表项中获得组ID 100。第一框式设备根据组ID 100获取对应的ECMP组、ECMP组中每个出接口以及每个出接口的角色,得到2个出接口。其中,一个出接口的TB ID是2,TP ID是1,角色是非最短路径的出接口;另一个出接口的TB ID是1,TP ID是1,角色是最短路径的出接口。其中,出接口的角色可以用不同的值或字符串来表示。例如,用“0”表示最短路径的出接口,用“1”表示非最短路径的出接口。
目标出接口是指M个出接口中用于转发第一数据报文的一个出接口。如何选择目标出接口包括多种实现方式,下面对一些可能的实现方式举例说明。
在一些实施例中,第一框式设备优先选择轻载最短路径对应的出接口。第一框式设备判断M个出接口中最短路径的出接口处于拥塞状态还是非拥塞状态。在M个出接口中最短路径的出接口处于非拥塞状态的情况下,第一框式设备选择M个出接口中最短路径的出接口作为目标出接口。
在一些实施例中,如果最短路径发生拥塞,第一框式设备优先选择轻载非最短路径对应的出接口。例如,第一框式设备判断M个出接口中最短路径的出接口处于拥塞状态还是非拥塞状态。在M个出接口中最短路径的出接口处于拥塞状态的情况下,第一框式设备从M个出接口中非最短路径的出接口中,选择处于非拥塞状态的出接口作为目标出接口。
在一些实施例中,在本地出接口和跨芯片出接口中,第一框式设备优先选择本地出接口,当本地出接口发生拥塞时,再选择跨芯片出接口。如果M个出接口中包括多个最短路径的出接口,且多个最短路径的出接口中本地出接口以及跨芯片出接口均处于非拥塞状态,第一框式设备从M个出接口中的最短路径的出接口中,选择本地出接口作为目标出接口。如果M个出接口中包括多个最短路径的出接口,且多个最短路径的出接口中本地出接口处于拥塞状态而跨芯片出接口处于非拥塞状态,第一框式设备从M个出接口中最短路径的出接口中,选择跨芯片出接口作为目标出接口。如果M个出接口中最短路径的出接口处于拥塞状态,且M个出接口中非最短路径的出接口中本地出接口以及跨芯片出接口均处于非拥塞状态,第一框式设备从M个出接口中非最短路径的出接口中,选择本地出接口作为目标出接口。
在一些实施例中,如果M个出接口中存在多个拥塞状态和角色都相同的出接口,第一框式设备应用哈希算法选择目标出接口。第一框式设备根据第一数据报文的特征值计算哈希值,从多个出接口中选择哈希值映射的出接口作为目标出接口。
S505、第一框式设备通过目标出接口向第二框式设备发送第一数据报文。
可选地,第一框式设备中的上行芯片、交换网板和下行芯片进行协同处理,从而实现上述转发第一数据报文的过程。其中,由上行芯片执行接收第一数据报文的过程、获取M个出接口的过程以及选择目标出接口的过程,由下行芯片执行通过目标出接口发送第一数据报文的过程,由交换网板在上行芯片和下行芯片之间转发第一数据报文。
例如,上行芯片获取到的M个出接口均为下行芯片上的出接口。上行芯片选择一个下行芯片上一个出接口为目标出接口后,上行芯片向第一数据报文中添加该下行芯片的标识(如TB ID)以及该出接口的标识(如TP ID),向交换网板发送包含下行芯片的标识、出接口的标识的第一数据报文。交换网板接收到包含下行芯片的标识、出接口的标识的第一数据报文后,交换网板根据第一数据报文中下行芯片的标识,查找对应的下行芯片,将第一数据报文转发至对应的下行芯片。下行芯片接收到包含下行芯片的标识、出接口的标识的第一数据报文后,下行芯片从第一数据报文获得出接口的标识,查找本芯片上对应的出接口,将第一数据报文从该出接口转发出去。
可选地,上行芯片、交换网板和下行芯片之间基于指定的帧格式通信。上行芯片向第一数据报文中添加该下行芯片的标识以及出接口的标识的过程具体为:上行芯片向第一数据报文封装帧头,帧头中包含下行芯片的标识以及出接口的标识。下行芯片在接收到第一数据报文后,从第一数据报文中的帧头中获得出接口的标识,并从第一数据报文中解封装包含下行芯片的标识以及出接口的标识的帧头。
S506、第二框式设备接收第一数据报文。
S507、第二框式设备向第二主机发送第一数据报文。
在一些实施例中,第二框式设备解析第一数据报文,得到第一数据报文的目的IP地址。第二框式设备根据第一数据报文的目的IP地址,在第二框式设备保存的转发表中查找与第一数据报文的目的IP地址对应的最短路径的出接口。第二框式设备通过最短路径的出接口向第二主机发送第一数据报文。
S508、第二主机接收第一数据报文。
本实施例提供的方法,通过在转发报文的过程中,从框式设备包含的多个转发芯片的出接口中获取报文对应的多个出接口,根据每个出接口是最短路径的出接口还是非最短路径的出接口以及每个出接口的拥塞状态选择目标出接口,通过目标出接口发送报文,从而使得自适应路由技术的应用扩展至框式设备。进一步地,该方法适用于框式设备互联的网络中,由于框式设备具有比盒式设备更高的集成度,因此能够提升设备集成度,降低网络功耗和组网成本。
图7所示方法以第一框式设备为数据报文的源框时的报文转发流程为例进行说明。下面对第一框式设备为数据报文的中间框时的报文转发流程进行举例说明。
图9是本申请实施例提供的一种报文转发方法的流程图。图9所示方法与图7所示方法的主要区别在于,图7所示方法中数据报文的源框是第一框式设备,而图9所示方法中数据报文的源框是第三框式设备,数据报文的中间框是第一框式设备。图9所示方法包括以下S601至S609。
S601、第三主机发送第二数据报文。
第三主机连接第三框式设备,第二数据报文的源IP地址为第三主机的IP地址,第一数据报文的目的IP地址为第二主机的IP地址。
S602、第三框式设备接收第二数据报文。
S603、第三框式设备向第一框式设备发送第二数据报文。
可选地,第三框式设备采用自适应路由的方式,根据第三框式设备与第一框式设备之间路径的拥塞状态,选择出接口以便向第一框式设备发送第二数据报文。第三框式设备根据第二数据报文的目的IP地址,从第三框式设备保存的转发表中查找与第二数据报文的目的IP地址匹配的路由前缀,得到该路由前缀对应的M个出接口。第三框式设备根据M个出接口的拥塞状态、M个出接口中每个出接口是最短路径的出接口还是非最短路径的出接口,从M个出接口中选择目标出接口,第三框式设备通过该目标出接口向第一框式设备发送第二数据报文。第三框式设备选择目标出接口的具体细节可参考步骤S504,在此不做赘述。
S604、第一框式设备接收来自第三框式设备的第二数据报文。
S605、第一框式设备获取第二数据报文对应的最短路径的出接口。
示例性地,第一框式设备根据第二数据报文的入接口是global端口,确定待查询的转发表是第二转发表。第一框式设备根据第二数据报文的目的IP地址从第一框式设备保存的第二转发表中,查找与第二数据报文的目的IP地址匹配的路由前缀,得到该路由前缀对应的最短路径的出接口。
S606、第一框式设备通过第二数据报文对应的最短路径的出接口向第二框式设备发送第二数据报文。
S607、第二框式设备接收第二数据报文。
S608、第二框式设备向第二主机发送第二数据报文。
S609、第二主机接收第二数据报文。
本实施例提供的方法,框式设备通过在本设备为中间框时采用最短路径转发报文,从而避免报文从中间框转发出去后再次通过非最短路径转发到其他中间框,从而有效避免环路。
上述图7所示方法和图9所示方法侧重介绍转发面的流程,描述框式设备的转发芯片如何采用自适应路由的方式转发报文。下面对控制面的流程进行介绍,描述框式设备如何发布路由以及下发转发表项。可选地,以下介绍的控制面流程是在图7所示方法或者图9所示方法之前执行的。
图10是本申请实施例提供的一种转发表项的生成方法的流程图。图10所示方法包括以下S701至S708。
S701、第二框式设备生成第一BGP报文。
第一BGP报文用于发布到达第二主机的路由信息。
第一BGP报文中的路由信息包括路由前缀和AS路径(AS path)属性。
第一BGP报文中的路由前缀包括第二主机的IP地址的前缀。在一种可能的实现中,第二框式设备基于静态配置的方式获得该路由前缀。在另一种可能的实现中,第二框式设备基于路由协议与第二主机进行交互从而获得该路由前缀。
自治***(autonomous system,AS)在边界网关协议(Border Gateway Protocol,BGP)协议中是指一个实体管辖下的拥有相同选路策略的IP网络。AS号是为AS分配的标识。AS路径属性用一串AS号(AS number)来描述去往目的AS的路径,AS路径属性中AS号的数量表示路径的长度,AS路径属性中AS号越少,表示去往目的AS的路径越短。
本实施例中,将一个框式设备作为一个AS,并预先为每个框式设备上分配一个AS号,例如由网络管理员分别在每个框式设备上配置对应的AS号。上述第一BGP报文的AS路径属性包括第二框式设备的AS号。
S702、第二框式设备向第一框式设备和第三框式设备发送第一BGP报文。
在一种可能的实现中,第一框式设备、第二框式设备和第三框式设备之间两两建立global链路,在global链路上运行外部BGP(external BGP,eBGP)协议。第二框式设备基于eBGP协议,通过与第一框式设备之间的global链路向第一框式设备发送第一BGP报文,global链路是指不同框式设备之间互连的链路。第二框式设备基于eBGP协议,通过与第三框式设备之间的global链路向第三框式设备发送第一BGP报文。第二框式设备可以通过单播方式分别向第一框式设备和第三框式设备发送该第一BGP报文,第二框式设备也可以通过组播方式向第一框式设备和第三框式设备发送该第一BGP报文。
eBGP协议是一种运行在不同AS之间的BGP协议。本实施例中,由于第一框式设备、第二框式设备和第三框式设备这三个框式设备相当于三个不同的AS,因此基于EBGP协议交互。
S703、第一框式设备接收第一BGP报文。
S704、第三框式设备接收第一BGP报文。
S705、第三框式设备基于第一BGP报文获得第二BGP报文。
第二BGP报文包括路由前缀和AS路径属性。第二BGP报文中的路由前缀和第一BGP报文中的路由前缀相同。第二BGP报文中的AS路径属性包括第二框式设备的AS号和第三框式设备的AS号。
在一种可能的实现中,第三框式设备向第一BGP报文中的AS路径属性添加第三框式设备的AS号,从而获得第二BGP报文。
S706、第三框式设备向第一框式设备发送第二BGP报文。
S707、第一框式设备接收第二BGP报文。
在一些实施例中,框式设备还通过检查接收到的BGP报文是否包括本身的AS号从而避免路由环路。以第一框式设备检查第一BGP报文的过程为例,第一框式设备接收到第一BGP报文后,第一框式设备判断第一BGP报文的AS路径属性中是否包括第一框式设备的AS号。如果第一BGP报文的AS路径属性中包括第一框式设备的AS号,则丢弃第一BGP报文。同理地,第一框式设备之外的其他框式设备接收到BGP报文时可采用类似的方式检查BGP报文。
S708、第一框式设备根据第一BGP报文和第二BGP报文生成第一转发表项。
可选地,第一转发表项的生成过程包括具体包括下述步骤(1)至步骤(3)。
步骤(1)第一框式设备根据第一BGP报文,获取最短路径路由。
最短路径路由指示路由前缀和最短路径的出接口之间的对应关系。可选地,最短路径路由是AS路径长度为1的路由,即AS路径属性中AS号数量为1的路由。
在一种可能的实现中,第一框式设备从第一BGP报文中获取路由前缀和AS路径属性。第一框式设备确定AS路径属性中AS号的数量。第一框式设备根据第一BGP报文中的AS号的数量为1,并且该AS号不等于第一框式设备自身的AS号,确定第一BGP报文中的路由信息对应最短路径路由,则将第一BGP报文中的路由信息保存在路由表中,并将包括该路由信息的路由标记为最短路径路由,该最短路径路由的出接口为接收第一BGP报文的出接口。
步骤(2)第一框式设备根据第二BGP报文,获取非最短路径路由。
非最短路径路由指示路由前缀和非最短路径的出接口之间的对应关系。可选地,非最短路径路由对应AS路径长度为2的路由信息,即AS路径属性中AS号数量为2的路由信息,并且该AS路径属性中不包含第一框式设备自身的AS号。
在一种可能的实现中,第一框式设备从第二BGP报文中获取路由前缀和AS路径属性。第一框式设备确定AS路径属性中AS号的数量。第一框式设备根据第二BGP报文中的AS号的数量为2,确定第二BGP报文中的路由信息对应非最短路径路由,则将第二BGP报文中的路由信息保存在路由表中,并将包括第二BGP报文中的路由信息的路由标记为非最短路径路由,该为非最短路径的出接口为接收该第二BGP报文的出接口。
步骤(3)第一框式设备根据最短路径路由以及非最短路径路由生成第一转发表项。
在一种可能的实现中,第一框式设备为第二框式设备分配ECMP组,将第二框式设备发布的最短路径路由对应的出接口、第二框式设备发布的非最短路径路由对应的出接口加入至该ECMP组中,将最短路径路由对应的出接口的角色标识为最短路径的出接口,将非最短路径路由对应的出接口的角色标识为非最短路径的出接口,生成路由前缀、ECMP组和ECMP组中的出接口的角色之间的对应关系,得到如图8所示的第一转发表项。
在一些实施例中,由第一框式设备中的主控板根据第一BGP报文和第二BGP报文生成第一转发表项,主控板向N个转发芯片中的每个转发芯片发送第一转发表项。N个转发芯片中的每个转发芯片接收并保存第一转发表项,以便在报文转发阶段根据第一转发表项选择目标出接口。
本实施例提供的方法,框式设备之间通过交互BGP报文来获得最短路径路由和非最短路径路由,生成用于自适应路由的转发表项,将转发表项下发到转发芯片,从而实现了基于BGP路由协议控制路由表项下发,从而解决了现有技术自适应路由协议只能采用私有路由协议实现所导致的问题,不必要求设备部署私有路由协议,从而降低实现复杂度。此外,该方法支持通过标准IP和标准BGP协议实现框式设备直连拓扑组网,不依赖于infiniband或私有互联技术,因此降低了实现复杂度,提高了灵活性和可用性。
图10所示方法以第一框式设备与第二框式设备之间的最短路径为直连链路,而非最短路径经过一跳中间节点(第三框式设备)的情况为例进行说明,在这种情况下,最短路径路由对应的AS号的数量为1,非最短路径路由对应的AS号的数量为2。在另一些实施例中,第一框式设备与第二框式设备之间的最短路径经过至少一跳中间节点,而非最短路径经过更多数量的中间节点,则最短路径路由对应的AS号数量大于1,非最短路径路由对应的AS号数量大于2。例如,第一框式设备和第二框式设备之间的最短路径经过j跳中间节点,则最短路径路由对应的AS号的数量为(j+1),非最短路径路由对应的AS号的数量为大于(j+1)的整数,j为正整数,j例如是预先设定的。
图10所示方法以第一框式设备如何根据第一BGP报文和第二BGP报文这两个BGP报文生成第一转发表项的过程为例进行说明,第一转发表项中的ECMP组包括两个出接口。在另一些实施例中,第一框式设备根据两个以上BGP报文生成第一转发表项,该两个以上BGP报文均来自于目的框式设备(例如该两个以上BGP报文的源AS号均是第二框式设备的AS号),第一框式设备根据两个以上BGP报文生成第一转发表项,第一转发表项中的ECMP组包括两个以上的出接口。
例如,第一框式设备与第二框式设备不仅通过第三框式设备相连,还通过第四框式设备相连。也即是,第一框式设备与第二框式设备之间存在两条非最短路径,一条非最短路径经过的中间节点为第三框式设备,另一条非最短路径经过的中间节点为第四框式设备。在路由发布阶段,第二框式设备不仅向第一框式设备和第三框式设备发送了第一BGP报文,还向第四框式设备发送了第一BGP报文。第四框式设备向第一BGP报文添加了第四框式设备的AS号,得到第三BGP报文,第三BGP报文中的AS路径属性包括第二框式设备的AS号和第四框式设备的AS号。第四框式设备向第一框式设备发送第三BGP报文。第一框式设备根据第一BGP报文、第二BGP报文和第三BGP报文生成第一转发表项。第一框式设备根据第一BGP报文获取一条最短路径路由,并根据第二BGP报文和第三BGP报文获得两条非最短路径路由。其中,一条非最短路径路由的出接口为接收到第二BGP报文的出接口,另一条非最短路径路由的出接口为接收到第三BGP报文的出接口。第一转发表项中ECMP组包括三个出接口,这三个出接口中其中一个出接口的角色是最短路径的出接口,另外两个出接口的角色是非最短路径路由的出接口。
在一些实施例中,还通过提供框内跨芯片的故障感知和通知机制,帮助转发芯片在转发报文时快速故障收敛。
对于N个转发芯片中转发芯片i来说,转发芯片i监控转发芯片i上每个出接口是否故障;如果转发芯片i上出接口a发生故障,则转发芯片i生成故障通知消息,向N个转发芯片中转发芯片i之外的(N-1)个其他转发芯片发送故障通知消息。(N-1)个其他转发芯片中的每个转发芯片接收转发芯片i的故障通知消息,根据该故障通知消息确定出接口a发生故障,记录出接口a的故障状态。其他转发芯片查询转发表项中包含出接口a的ECMP组,从包含出接口a的ECMP组中删除出接口a。
故障通知消息指示转发芯片i上的出接口a处于故障状态。故障通知消息包括转发芯片i的标识、出接口a的标识、故障状态标识和消息类型中至少一项。
可选地,故障通知消息为组播消息。例如,转发芯片i产生的故障通知消息对应的组播源为转发芯片i,组播组为N个转发芯片中转发芯片i之外的(N-1)个其他转发芯片。
可选地,故障通知消息为单播消息。例如,转发芯片i为转发芯片i之外的(N-1)个其他转发芯片生成(N-1)份故障通知消息,转发芯片i向(N-1)个其他转发芯片中的每一个转发芯片分别发送一份故障通知消息。
可选地,由交换网板在不同转发芯片之间转发故障通知消息。
下面以确定第一转发芯片中第一出接口的故障状态的过程为例进行说明,第一转发芯片为上述转发芯片i(即第一转发芯片为N个转发芯片中的任意一个),第一出接口为出接口a。
例如,第一转发芯片包括第一出接口,第一出接口用于连接所述第二框式设备。第一转发芯片根据第一出接口的故障状态生成第一通知消息。第一转发芯片向N个转发芯片中第一转发芯片之外的其他转发芯片发送第一通知消息。其他转发芯片接收第一通知消息。根据第一通知消息确定第一出接口处于故障状态,则根据第一通知消息从第一转发表项的ECMP组中删除第一出接口。
可选地,上述第一转发芯片和上述第二转发芯片是不同的转发芯片。或者,上述第一转发芯片和上述第二转发芯片是同一个转发芯片,换句话说,一个转发芯片既承担了将本芯片的出接口的拥塞状态通知给其他转发芯片的任务,又承担了将本芯片的出接口的故障状态通知给其他转发芯片的任务。
下面结合一个综合实例,对上述图7、图9和图10所示方法举例说明。
实例1
实例1关于如何在图6所示网络中进行报文转发以及路由控制。例如,结合图6来看,图6中的框式设备301为源框,图6中的框式设备303为目的框,图6中的框式设备302为中间框。
组网规划确定之后,用户需要配置每个框式设备上每个接口的角色。用于框间互连的接口的端口角色为global端口。用于连接服务器的接口的端口角色为access端口。
每个框式设备配置一个BGP AS号。例如,框式设备301配置AS号为100,框式设备302配置AS号为101,框式设备303配置AS号为102。不同框式设备之间在global链路上运行eBGP协议。
路由控制
框式设备303通过eBGP发布自身用于接入主机42的路由前缀。该路由前缀的AS路径属性包括框式设备303的AS号(102)。该路由会发布给框式设备302和框式设备301。接收框根据AS路径属性指示的AS路径长度来判断框式设备303发布的路由是最短路径路由还是非最短路径路由。AS路径属性中包含路由发布过程中涉及的所有框式设备的AS号。如果BGPAS路径属性中只包含一个AS号(即该路由前缀对应最短路径路由),则接收框同时将该路由安装在转发表1和转发表2中。相应地,转发表项中包含路由前缀以及最短路径的本地出接口。
其中,转发表1用于在本设备为入口节点(源框)时进行报文转发,从而实现自适应路由的功能,即根据出接口的拥塞状态,选择最短路径或者非最短路径转发报文。转发表2用于在本设备为出口节点(目的框)或者中间节点(中间框)时进行报文转发,转发表2的出接口列表中包含最短路径的出接口而不包含非最短路径的出接口。
框式设备302继续将框式设备303发布过来的路由通过eBGP发往框式设备301,框式设备302向BGP AS路径属性中增加自身的AS号(101)。框式设备301接收到该路由之后,根据BGP AS路径属性中包括2个AS号(目的框的AS号和中间框的AS号),确定该路由为非最短路径路由,则框式设备301将该路由安装在转发表1中。该非最短路径路由的路由前缀和对应的最短路径路由的路由前缀一样,只是出接口不同,非最短路径和最短路径路由的本地出接口会进行合并,放在同一个ECMP组中。控制面(即主控板)会将路由前缀和对应的ECMP组下发到转发面(即转发芯片),并将ECMP组成员的角色分别标识为最短路径和非最短路径,方便转发芯片在转发时优先选择最短路径出接口进行转发。
每个ECMP组有一个ID,路由前缀通过该ID索引到对应的ECMP组。为了节省框式设备用于维护ECMP组的处理资源和存储资源,控制面(即主控板)在生成转发表1中转发表项时,基于每个目的框式设备生成ECMP组。由于框式设备和AS号一一对应,因此框式设备301在接收到路由时,基于路由的源AS号来分配ECMP组。例如,框式设备301为BGP AS号为100的目的框发布过来的所有路由都分配ECMP组1,为BGP AS号为101的目的框发布过来的所有路由都分配ECMP组2。
例如,整个网络包含289个ECMP组,则每个框式设备生成288个ECMP组对应的转发表项,分别对应连接的其它288个ECMP组。每个ECMP组包括多个成员接口,该多个成员接口分别为最短路径和非最短路径对应的本地出接口。比如,框式设备301转发表1中到达D(假如为前缀20.1.1.1/24)的转发表项指向一个ECMP组,ECMP组中包含两个成员,分别是接口11和接口10。接口11和接口10分别对应最短路径和非最短路径在本设备转发时候的出接口。
接口11中的“11”、接口10中的“10”是框式设备为本设备包含的所有接口统一编址得到的接口ID。主控板向转发芯片下发转发表项时,接口ID的形式往往转换为TB ID和TPID。
TB ID即转发芯片ID,TP ID即转发芯片本地的接口ID。例如,接口11的TB ID和TPID分别为2和1,接口10的TB ID和TP ID分别为2和2。
拥塞感知
下面介绍两种转发芯片感知互连链路拥塞状态的方法。
方法一:通过交换网芯片向上行芯片反压出接口拥塞状态
上行芯片为每个出接口维护VOQ。如果框间互连链路的出接口出现拥塞,交换网芯片会将拥塞状态反压给上行芯片,VOQ队列报文积压。VOQ是框式设备为不同出接口维护的独立队列,通过VOQ对进入交换网板之前的入口流量进行缓存,能够避免队首阻塞(head-of-line blocking,HOL)阻塞。在出口方向,通过调度器对入口VOQ所对应的业务流进行调度,对所有流向该出口的业务流发送不同带宽许可的信用值(credit),从而达到根据用户服务级别协议(service level agreement,SLA)准确分配带宽并保证服务质量(qualityof service,QoS)的目的。
路由转发时候,上行芯片判断出接口对应的VOQ的队列深度。如果VOQ的队列深度超过配置的阈值,则上行芯片确定该VOQ对应的出接口出现了拥塞。如果有多个最短路径出接口,上行芯片则选择剩余的最短路径出接口转发。如果所有最短路径出接口拥塞,则上行芯片选择非最短路径的出接口进行转发。
方法二:通过拥塞通知消息通知上行芯片出接口拥塞状态
每个转发芯片监控本地global端口拥塞状态。每个转发芯片根据队列深度或带宽利用率来判断global端口的拥塞状态,然后每个转发芯片将拥塞状态通过组播消息或者单播消息发送给框式设备内其他转发芯片。上述通知消息中包含消息类型、拥塞程度、转发芯片的标识符(identifier,ID)和global端口的ID。消息类型指示该消息为拥塞通知消息。拥塞程度可选地使用多个比特来标识轻载、中度拥塞、重度拥塞等。转发芯片接收到拥塞通知消息之后,根据拥塞通知消息记录出接口的拥塞程度。
如果通过组播消息来通知拥塞状态,主控板会预先将组播转发表项下发到交换网板。组播转发表项的出接口列表包括用于连接每个转发芯片的接口。
例如,结合图6来看,框式设备301上global端口包括转发芯片2的接口10和接口11。转发芯片2监控接口10的拥塞状态和接口11的拥塞状态。当转发芯片2上接口10发生拥塞时,转发芯片2生成通知消息,向转发芯片1发送通知消息。通知消息包括转发芯片2的TBID、接口10的TP ID和拥塞程度。转发芯片1接收到转发芯片2发送的通知消息后,转发芯片1在转发表中记录接口10的拥塞状态。
故障管理
每个转发芯片监控本地global端口故障状态。如果global端口发生故障,则转发芯片将global端口的故障状态通过组播消息发送给框式设备内其他转发芯片。其他转发芯片记录该出接口故障状态,将该出接口从ECMP组成员中删除。
例如,结合图6来看,转发芯片2监控接口10的故障状态和接口11的故障状态。当转发芯片2上接口10发生拥塞时,转发芯片2生成通知消息,向转发芯片1发送通知消息。通知消息包括转发芯片2的TB ID、接口10的TP ID和故障状态的标识。转发芯片1接收到转发芯片2发送的通知消息后,转发芯片1从转发芯片1保存的转发表中的ECMP组删除接口10。
报文转发
源框(框式设备301)从服务器接收到报文之后,源框(框式设备301)查找转发表1,源框(框式设备301)根据ECMP组的组ID获取对应ECMP组以及其中的成员接口(即ECMP组包含的出接口),然后根据成员接口的拥塞状态进行转发控制。
如果ECMP组中只有一个最短路径出接口,而且该出接口轻载,则源框(框式设备301)通过该出接口将报文转发出去。
如果ECMP组中有多个最短路径出接口,而且每个出接口都轻载,则源框(框式设备301)优选芯片本地出接口进行转发;当本地出接口拥塞时,源框(框式设备301)选择跨芯片最短路径出接口转发。如果则源框(框式设备301)有多个本地出接口或跨芯片出接口,则源框(框式设备301)对报文进行哈希计算,选择任一出接口发送报文。
如果ECMP组中有一个或多个最短路径出接口,但是这些出接口都拥塞,则源框(框式设备301)从剩余非最短路径出接口选择轻载的出接口进行转发,同样优选芯片本地出接口转发,次选跨芯片非最短路径出接口转发。在有多个出接口时,源框(框式设备301)在多个出接口之间进行哈希计算,随机选择一个出接口转发报文。
报文通过非最短路径接口到达中间框(框式设备302)。中间框(框式设备302)查找本框保存的转发表2,中间框(框式设备302)通过最短路径将报文送往目的框(框式设备303),从而确保报文只经过一次中间框进行转发,避免在中间框转发时候,再次走非最短路径转发到其它中间框,形成路由环路。
报文通过最短路径接口到达目的框(框式设备303)。目的框(框式设备303)查找本框保存的转发表2,将报文送往目的服务器。
上述实例1提供的方法,相比fat tree组网,能够降低组网成本和报文转发的时延。相比盒式直连组网,由于框式设备集成度高,能够降低组网成本和整体功耗。
附图11是本申请实施例提供的一种报文转发装置800的结构示意图。报文转发装置800包括接收单元801、处理单元802和发送单元803。
可选地,结合附图1所示的组网架构来看,附图11示出的报文转发装置800设于附图1中的P个框式设备其中的一个或多个框式设备上。
可选地,结合附图2所示的组网架构来看,附图11示出的报文转发装置800设于附图1中的P个框式设备其中的一个或多个框式设备上。
可选地,结合附图3所示的组网架构来看,附图11示出的报文转发装置800设于附图1中的288个框式设备其中的一个或多个框式设备上。
可选地,结合附图4所示的框式设备200来看,附图11示出的报文转发装置800设于附图4所示的框式设备200上,例如设于转发芯片231上。
可选地,结合附图5所示的框式设备来看,附图11示出的报文转发装置800设于附图5所示的框式设备上。
可选地,结合附图6所示的组网架构来看,附图11示出的报文转发装置800设于附图6中框式设备301或者框式设备302或者框式设备303上。
可选地,结合附图7来看,附图11示出的报文转发装置800用于实施附图7所示的方法流程。接收单元801用于支持报文转发装置800执行S502。处理单元802用于支持报文转发装置800执行S503至S504。发送单元803用于支持报文转发装置800执行S505。
可选地,结合附图8来看,处理单元802包括附图8中BGP协议和路由下发模块。处理单元802用于生成附图8中的路由前缀表项和ECMP组表项。
可选地,结合附图9来看,附图11示出的报文转发装置800用于实施附图9所示的方法流程。接收单元801用于支持报文转发装置800执行S604。处理单元802用于支持报文转发装置800执行S605。发送单元803用于支持报文转发装置800执行S606。
可选地,结合附图10来看,附图11示出的报文转发装置800用于实施附图10所示的方法流程。例如,在报文转发装置800用于执行第二框式设备实施的流程时,接收单元801用于执行S701,发送单元803用于执行S702。在报文转发装置800用于执行第一框式设备实施的流程时,接收单元801用于执行S703和S707,处理单元802用于执行S708。在报文转发装置800用于执行第二框式设备实施的流程时,接收单元801用于执行S704,处理单元802用于执行S705,发送单元803用于执行S706。
附图11所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
报文转发装置800中的各个单元全部或部分地通过软件、硬件、固件或者其任意组合来实现。
在采用软件实现的情况下,例如,上述处理单元802是由附图4中转发芯片中的处理器读取转发芯片中的存储器存储的程序代码后,生成的软件功能单元来实现。又如,上述处理单元802是由附图4中主控板210中的中央处理器211读取主控板210中的存储器212存储器存储的程序代码后,生成的软件功能单元来实现。
在采用硬件实现的情况下,例如,附图11中上述各个单元由框式设备的不同硬件分别实现,例如处理单元802由转发芯片中的至少一个处理器Z01中的一部分处理资源(例如多核处理器中的一个核或两个核)实现,或者采用现场可编程门阵列(field-programmable gate array,FPGA)、或协处理器等可编程器件来完成。接收单元801和发送单元803由转发芯片中的网络接口实现。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分可互相参考,每个实施例重点说明的都是与其他实施例的不同之处。
A参考B,指的是A与B相同或者A为B的简单变形。
本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序,也不能理解为指示或暗示相对重要性。例如,第一数据报文和第二数据报文用于区别不同的数据报文,而不是用于描述数据报文的特定顺序,也不能理解为第一数据报文比第二数据报文更重要。
本申请实施例,除非另有说明,“至少一个”的含义是指一个或多个,“多个”的含义是指两个或两个以上。例如,多个数据报文是指两个或两个以上的数据报文。
上述实施例可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例描述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘SolidState Disk(SSD))等。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (28)
1.一种报文转发方法,其特征在于,所述方法由第一框式设备执行,所述第一框式设备包括N个转发芯片,N大于等于2,所述方法包括:
接收来自第一主机的第一数据报文;
获取所述第一数据报文对应的M个出接口;
根据所述M个出接口中每个出接口的拥塞状态以及每个出接口的角色,从所述M个出接口中选择目标出接口,所述出接口的角色包括所述第一框式设备与第二框式设备之间的最短路径的出接口以及所述第一框式设备与所述第二框式设备之间的非最短路径的出接口;
通过所述目标出接口向所述第二框式设备发送所述第一数据报文。
2.根据权利要求1所述的方法,其特征在于,所述最短路径为所述第一框式设备和所述第二框式设备之间的直连链路,所述非最短路径为通过第三框式设备连接所述第一框式设备和所述第二框式设备的路径。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述M个出接口中每个出接口的拥塞状态以及每个出接口的角色,从所述M个出接口中选择目标出接口之前,所述方法还包括:
根据所述第一数据报文的目的互联网协议IP地址以及所述第一框式设备保存的第一转发表项,确定所述M个出接口的角色,所述第一转发表项包括路由前缀、等价多路径ECMP组和所述ECMP组中的出接口的角色之间的对应关系,所述路由前缀包括所述第一数据报文的目的IP地址的前缀,所述ECMP组包括所述M个出接口。
4.根据权利要求3所述的方法,其特征在于,所述根据所述第一数据报文的目的互联网协议IP地址以及所述第一框式设备保存的第一转发表项,确定所述M个出接口的角色之前,所述方法还包括:
接收来自所述第二框式设备的多个边界网关协议BGP报文,所述多个BGP报文中每个BGP报文均包括所述路由前缀和自治域AS路径属性;
根据所述多个BGP报文中的路由前缀和AS路径属性生成所述第一转发表项。
5.根据权利要求4所述的方法,其特征在于,所述多个BGP报文包括第一BGP报文和第二BGP报文,所述第一BGP报文的AS路径属性中AS号的数量为设定数量,所述第二BGP报文的AS路径属性中AS号的数量大于所述设定数量,所述根据所述多个BGP报文生成所述第一转发表项,包括:
根据所述第一BGP报文,获取最短路径路由,所述最短路径路由指示所述路由前缀和所述最短路径的出接口之间的对应关系;
根据所述第二BGP报文,获取非最短路径路由,所述非最短路径路由指示所述路由前缀和所述非最短路径的出接口之间的对应关系;
根据所述最短路径路由以及所述非最短路径路由生成所述第一转发表项。
6.根据权利要求5所述的方法,其特征在于,所述第一BGP报文中AS路径属性中的AS号为所述第二框式设备的AS号,所述第二BGP报文中AS路径属性中的AS号为所述第二框式设备的AS号以及第三框式设备的AS号。
7.根据权利要求3至6中任一项所述的方法,其特征在于,所述根据所述第一数据报文的目的互联网协议IP地址以及所述第一框式设备保存的第一转发表项,确定所述M个出接口的角色之前,所述方法还包括:
为所述第二框式设备分配所述ECMP组。
8.根据权利要求7所述的方法,其特征在于,所述ECMP组包括第一转发芯片的第一出接口,所述第一出接口用于连接所述第二框式设备,所述第一转发芯片为所述N个转发芯片中的任意一个,所述方法还包括:
接收来自所述第一转发芯片的第一通知消息,所述第一通知消息指示所述第一转发芯片的所述第一出接口处于故障状态;
根据所述第一通知消息从所述第一转发表项的ECMP组中删除所述第一出接口。
9.根据权利要求1-8中任意一项所述的方法,其特征在于,在所述最短路径的出接口处于非拥塞状态的情况下,所述目标出接口为所述最短路径的出接口。
10.根据权利要求9所述的方法,其特征在于,所述M个出接口中包括多个第一框式设备与第二框式设备之间的最短路径的出接口,所述多个最短路径的出接口包括本地出接口以及跨芯片出接口,在所述本地出接口以及所述跨芯片出接口均处于非拥塞状态的情况下,所述目标出接口为所述本地出接口,所述本地出接口为所述第一框式设备中接收到所述第一数据报文的转发芯片的出接口,所述跨芯片出接口为所述第一框式设备中接收到所述第一数据报文的转发芯片之外的其他转发芯片的出接口。
11.根据权利要求1-8中任意一项所述的方法,其特征在于,在所述最短路径的出接口处于拥塞状态的情况下,所述目标出接口为所述非最短路径的出接口中处于非拥塞状态的出接口。
12.根据权利要求11所述的方法,其特征在于,在所述最短路径的出接口处于拥塞状态,且所述非最短路径的出接口中本地出接口以及跨芯片出接口均处于非拥塞状态的情况下,所述目标出接口为所述非最短路径的出接口中本地出接口,所述本地出接口为所述第一框式设备中接收到所述第一数据报文的转发芯片的出接口,所述跨芯片出接口为所述第一框式设备中接收到所述第一数据报文的转发芯片之外的其他转发芯片的出接口。
13.根据权利要求1至12中任一项所述的方法,其特征在于,所述N个转发芯片包括第二转发芯片,所述第二转发芯片包括第二出接口,所述第二出接口用于连接所述第二框式设备,所述根据所述M个出接口中每个出接口的拥塞状态以及每个出接口的角色,从所述M个出接口中选择目标出接口之前,所述方法还包括:
接收来自所述第二转发芯片的第二通知消息,所述第二通知消息指示所述第二转发芯片的所述第二出接口的拥塞状态;
根据所述第二通知消息记录所述第二出接口的拥塞状态。
14.根据权利要求13所述的方法,其特征在于,
所述第二通知消息是在所述第二出接口的队列深度超过深度阈值时由所述第二转发芯片生成的;或
所述第二通知消息是在所述第二出接口的带宽利用率超过带宽利用率阈值时由所述第二转发芯片生成的。
15.根据权利要求13或14所述的方法,其特征在于,所述第二通知消息包括所述第二转发芯片的标识、所述第二出接口的标识以及拥塞状态标识。
16.根据权利要求1至12中任一项所述的方法,其特征在于,所述N个转发芯片包括第二转发芯片,所述第二转发芯片包括第二出接口,所述第二出接口用于连接所述第二框式设备,所述根据所述M个出接口中每个出接口的拥塞状态以及每个出接口的角色,从所述M个出接口中选择目标出接口之前,所述方法还包括:
为所述第二出接口建立虚拟输出队列VOQ;
根据所述VOQ的队列深度确定所述第二出接口的拥塞状态。
17.根据权利要求16所述的方法,其特征在于,所述第一框式设备还包括交换网芯片,所述交换网芯片用于根据所述第二出接口的拥塞状态更新所述VOQ的队列深度。
18.根据权利要求1至17中任一项所述的方法,其特征在于,所述方法还包括:
接收来自第三框式设备的第二数据报文;
获取所述第二数据报文对应的最短路径的出接口;
通过所述第二数据报文对应的所述最短路径的出接口向所述第二框式设备发送所述第二数据报文。
19.一种报文转发装置,其特征在于,所述装置设于第一框式设备,所述第一框式设备包括N个转发芯片,N大于等于2,所述装置包括:
接收单元,用于接收来自第一主机的第一数据报文;
处理单元,用于获取所述第一数据报文对应的M个出接口,以及根据所述M个出接口中每个出接口的拥塞状态以及每个出接口的角色,从所述M个出接口中选择目标出接口,所述出接口的角色包括所述第一框式设备与第二框式设备之间的最短路径的出接口以及所述第一框式设备与所述第二框式设备之间的非最短路径的出接口;
发送单元,用于通过所述目标出接口向所述第二框式设备发送所述第一数据报文。
20.根据权利要求19所述的装置,其特征在于,所述处理单元,还用于根据所述第一数据报文的目的互联网协议IP地址以及所述第一框式设备保存的第一转发表项,确定所述M个出接口的角色,所述第一转发表项包括路由前缀、等价多路径ECMP组和所述ECMP组中的出接口的角色之间的对应关系,所述路由前缀包括所述第一数据报文的目的IP地址的前缀,所述ECMP组包括所述M个出接口。
21.根据权利要求20所述的装置,其特征在于,所述接收单元,还用于接收来自所述第二框式设备的多个边界网关协议BGP报文,所述多个BGP报文中每个BGP报文均包括所述路由前缀和自治域AS路径属性;
所述处理单元,还用于根据所述多个BGP报文中的路由前缀和AS路径属性生成所述第一转发表项。
22.根据权利要求21所述的装置,其特征在于,所述多个BGP报文包括第一BGP报文和第二BGP报文,所述第一BGP报文的AS路径属性中AS号的数量为设定数量,所述第二BGP报文的AS路径属性中AS号的数量大于所述设定数量,所述处理单元,用于:
根据所述第一BGP报文,生成最短路径路由,所述最短路径路由指示所述路由前缀和所述最短路径的出接口之间的对应关系;
根据所述第二BGP报文,生成非最短路径路由,所述非最短路径路由指示所述路由前缀和所述非最短路径的出接口之间的对应关系;
根据所述最短路径路由以及所述非最短路径路由生成所述第一转发表项。
23.根据权利要求20所述的装置,其特征在于,所述ECMP组包括第一转发芯片的第一出接口,所述第一出接口用于连接所述第二框式设备,所述第一转发芯片为所述N个转发芯片中的任意一个,
所述接收单元,还用于接收来自所述第一转发芯片的第一通知消息,所述第一通知消息指示所述第一转发芯片的所述第一出接口处于故障状态;
所述处理单元,还用于根据所述第一通知消息从所述第一转发表项的ECMP组中删除所述第一出接口。
24.根据权利要求19至23中任一项所述的装置,其特征在于,所述N个转发芯片包括第二转发芯片,所述第二转发芯片包括第二出接口,所述第二出接口用于连接所述第二框式设备,
所述接收单元,还用于接收来自所述第二转发芯片的第二通知消息,所述第二通知消息指示所述第二转发芯片的所述第二出接口的拥塞状态;
所述处理单元,还用于根据所述第二通知消息记录所述第二出接口的拥塞状态。
25.根据权利要求19至23中任一项所述的装置,其特征在于,所述N个转发芯片包括第二转发芯片,所述第二转发芯片包括第二出接口,所述第二出接口用于连接所述第二框式设备,所述处理单元,还用于为所述第二出接口建立虚拟输出队列VOQ;根据所述VOQ的队列深度确定所述第二出接口的拥塞状态。
26.一种框式设备,其特征在于,所述框式设备包括:N个转发芯片和至少一个主处理芯片,N大于等于2,所述框式设备用于执行权利要求1-18中任一项所述的方法。
27.根据权利要求26所述的框式设备,其特征在于,所述框式设备包括一个或多个接口板,所述N个转发芯片设于不同或相同的接口板上。
28.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述指令在计算机上运行时,使得计算机执行如权利要求1-18中任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111268472.1A CN116074236A (zh) | 2021-10-29 | 2021-10-29 | 报文转发方法及装置 |
PCT/CN2022/107498 WO2023071324A1 (zh) | 2021-10-29 | 2022-07-22 | 报文转发方法及装置 |
EP22885226.5A EP4325800A1 (en) | 2021-10-29 | 2022-07-22 | Packet forwarding method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111268472.1A CN116074236A (zh) | 2021-10-29 | 2021-10-29 | 报文转发方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116074236A true CN116074236A (zh) | 2023-05-05 |
Family
ID=86159014
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111268472.1A Pending CN116074236A (zh) | 2021-10-29 | 2021-10-29 | 报文转发方法及装置 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP4325800A1 (zh) |
CN (1) | CN116074236A (zh) |
WO (1) | WO2023071324A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117240642A (zh) * | 2023-11-15 | 2023-12-15 | 常州楠菲微电子有限公司 | 一种ib组播报文复制和接收装置及方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8989017B2 (en) * | 2012-12-14 | 2015-03-24 | Intel Corporation | Network congestion management by packet circulation |
CN103428103B (zh) * | 2013-08-08 | 2017-04-19 | 杭州华三通信技术有限公司 | 一种链路负载控制方法和堆叠设备 |
CN106341338B (zh) * | 2016-09-09 | 2019-09-17 | 杭州迪普科技股份有限公司 | 一种报文的转发方法及装置 |
CN108337196B (zh) * | 2017-12-29 | 2021-04-23 | 曙光信息产业(北京)有限公司 | 一种通过交换芯片构建的交换***及其路由算法 |
CN109672621B (zh) * | 2019-01-23 | 2021-04-30 | 中国联合网络通信集团有限公司 | 一种为vpn业务选择传输路径的方法和设备 |
CN113518046B (zh) * | 2021-03-31 | 2023-12-26 | 新华三信息安全技术有限公司 | 一种报文转发方法及框式交换设备 |
-
2021
- 2021-10-29 CN CN202111268472.1A patent/CN116074236A/zh active Pending
-
2022
- 2022-07-22 EP EP22885226.5A patent/EP4325800A1/en active Pending
- 2022-07-22 WO PCT/CN2022/107498 patent/WO2023071324A1/zh active Application Filing
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117240642A (zh) * | 2023-11-15 | 2023-12-15 | 常州楠菲微电子有限公司 | 一种ib组播报文复制和接收装置及方法 |
CN117240642B (zh) * | 2023-11-15 | 2024-01-19 | 常州楠菲微电子有限公司 | 一种ib组播报文复制和接收装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
EP4325800A1 (en) | 2024-02-21 |
WO2023071324A1 (zh) | 2023-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7417825B2 (ja) | スライスベースルーティング | |
US10673741B2 (en) | Control device discovery in networks having separate control and forwarding devices | |
KR101317969B1 (ko) | 링크 애그리게이션 방법 및 노드 | |
WO2021043181A1 (zh) | 一种数据传输方法及装置 | |
US20160087873A1 (en) | Network Topology Discovery Method and System | |
US20210289436A1 (en) | Data Processing Method, Controller, and Forwarding Device | |
JP2015515809A (ja) | 仮想ファブリックリンク障害復旧のためのシステムおよび方法 | |
US11228524B1 (en) | Methods and apparatus for efficient use of link aggregation groups | |
CN108123878B (zh) | 一种路由方法、装置及数据转发设备 | |
CN113472646B (zh) | 一种数据传输方法、节点、网络管理器及*** | |
US9036629B2 (en) | Switch module | |
WO2022194023A1 (zh) | 报文处理的方法、网络设备及控制器 | |
WO2023071324A1 (zh) | 报文转发方法及装置 | |
CN115914078A (zh) | 报文转发方法及装置、蜻蜓网络 | |
CN112751766B (zh) | 报文转发方法和***、相关设备和芯片 | |
WO2019240158A1 (ja) | 通信システム及び通信方法 | |
CN113572685B (zh) | 一种信息上报方法、信息处理方法、装置及设备 | |
CN113595915A (zh) | 转发报文的方法及相关设备 | |
Nguyen et al. | Saco: A service chain aware SDN controller-switch mapping framework | |
Tao et al. | Research and implementation of a network based on SDN and multi area OSPF protocol | |
Celenlioglu et al. | Design, implementation and evaluation of SDN-based resource management model | |
Dey et al. | CAR: Cloud-assisted routing | |
EP4277226A1 (en) | Packet transmission method, transmission control method, apparatus, and system | |
CN108737263B (zh) | 数据中心***及数据流处理方法 | |
CN111385182B (zh) | 流量的传输方法及装置,*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |