CN114640631A - 拥塞控制方法及网络设备 - Google Patents
拥塞控制方法及网络设备 Download PDFInfo
- Publication number
- CN114640631A CN114640631A CN202011480903.6A CN202011480903A CN114640631A CN 114640631 A CN114640631 A CN 114640631A CN 202011480903 A CN202011480903 A CN 202011480903A CN 114640631 A CN114640631 A CN 114640631A
- Authority
- CN
- China
- Prior art keywords
- path
- network device
- message
- congestion control
- congestion
- 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 121
- 238000012545 processing Methods 0.000 claims description 59
- 238000004422 calculation algorithm Methods 0.000 claims description 56
- 230000004044 response Effects 0.000 claims description 14
- 230000002457 bidirectional effect Effects 0.000 claims description 12
- 238000001514 detection method Methods 0.000 claims description 8
- 230000002441 reversible effect Effects 0.000 claims description 5
- 238000004891 communication Methods 0.000 abstract description 28
- 230000000694 effects Effects 0.000 abstract description 5
- 230000009286 beneficial effect Effects 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 24
- 238000010586 diagram Methods 0.000 description 22
- 230000008569 process Effects 0.000 description 17
- 238000004590 computer program Methods 0.000 description 10
- 235000008694 Humulus lupulus Nutrition 0.000 description 9
- 239000000523 sample Substances 0.000 description 9
- 230000003287 optical effect Effects 0.000 description 8
- 230000009471 action Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000001914 filtration Methods 0.000 description 5
- 239000003550 marker Substances 0.000 description 5
- 230000010354 integration Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 238000005538 encapsulation Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 241000465502 Tobacco latent virus Species 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
-
- 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
-
- 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/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/741—Routing in networks with a plurality of addressing schemes, e.g. with both IPv4 and IPv6
-
- 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
- H04L47/00—Traffic control in data switching networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种拥塞控制方法及网络设备,涉及通信技术领域。本申请在拥塞场景下,通过利用拥塞控制报文来指示路径拥塞,网络设备在拥塞控制报文的触发下进行路径切换以提高发送效率。该方法有助于网络设备选择更合适的路径转发报文,减少拥塞控制耗费的时延,提升拥塞控制的效果。
Description
技术领域
本申请涉及通信技术领域,特别涉及一种拥塞控制方法及网络设备。
背景技术
拥塞是网络设备经常面临的事件。拥塞典型的表现包括而不限于:接口或队列的缓冲区(buffer)长度超过一定阈值、接口或队列的带宽利用率超过一定阈值等等。当网络设备发生拥塞时,会引起丢包等一系列问题。然而,目前对拥塞没有很好的解决方案。
发明内容
本申请实施例提供了一种拥塞控制方法及网络设备,能够提升控制拥塞的效果。所述技术方案如下。
第一方面,提供了一种拥塞控制方法,在该方法中,第一网络设备通过第一路径发送第一报文;所述第一网络设备接收所述第一路径上的第二网络设备发送的拥塞控制报文,所述拥塞控制报文指示所述第一路径拥塞;所述第一网络设备根据所述拥塞控制报文将第二报文的转发路径从所述第一路径切换至第二路径。
第一方面提供的方法中,在拥塞场景下,通过利用拥塞控制报文来指示路径拥塞,网络设备在拥塞控制报文的触发下进行路径切换以提高发送效率,或降低拥塞程度。该方法有助于网络设备选择更合适的路径转发报文,减少拥塞控制耗费的时延,提升拥塞控制的效果。
在一种可能的实现方式中,所述拥塞控制报文包括拥塞标记,所述拥塞标记用于指示所述第一路径拥塞。
以上提供的实现方式中,通过使用拥塞标记来表示拥塞,便于复用已有协议类型的报文实现拥塞控制报文,降低实现复杂度。
在一种可能的实现方式中,所述拥塞控制报文为因特网控制报文协议ICMP报文或,所述拥塞控制报文的第一位置包括所述拥塞标记,所述第一位置包括:互联网协议IP基本头或IP扩展头。
以上提供的实现方式中,通过扩展ICMP报文或者其他IP报文实现拥塞控制报文,便于复用已有方案架构,提高方案可用性。
在一种可能的实现方式中,在所述拥塞控制报文为ICMP报文的情况下,所述拥塞标记位于ICMP代码字段或ICMP类型字段。
以上提供的实现方式中,通过扩展新的ICMP代码或者新的ICMP类型充当拥塞标记,提高方案可用性。
在一种可能的实现方式中,所述拥塞控制报文包括报文类型,所述报文类型用于指示所述拥塞控制报文的类型为拥塞控制报文。
以上提供的实现方式中,通过新增一种报文类型标识拥塞,有助于更好地支持网络侧进行拥塞控制的场景。
在一种可能的实现方式中,所述报文类型的携带位置为互联网协议第六版IPv6头中的下一个头next header字段。
在一种可能的实现方式中,所述拥塞控制报文还包括所述第一路径的网络质量信息。
以上提供的实现方式中,通过拥塞控制报文收集沿途的网络质量信息,从而为多路径切换提供更多能参考的信息,有助于提高路径切换的精确性。
在一种可能的实现方式中,所述网络质量信息包括以下一项或多项:时延;缓冲区buffer长度;带宽利用率。
以上提供的实现方式中,通过将时延、buffer长度、带宽利用率等反馈给报文的源端,便于源端在切换路径时考虑更多方面的信息,从而提高切换路径的精确性。
在一种可能的实现方式中,所述第二网络设备包括所述第一路径的端点设备、所述第一路径上发生拥塞的设备或所述第一路径上发生拥塞的网络设备的上一跳设备。
以上提供的实现方式中,路径的目的端点设备、拥塞点、拥塞点的上一跳等都能将拥塞控制报文反馈给源端,灵活性高,能满足更多的应用场景。
在一种可能的实现方式中,所述第一路径是通过双向共路算法计算出来的,所述双向共路算法的链路度量metric为正向代价cost与反向cost之和。
以上提供的实现方式中,有助于保证数据报文的转发路径与拥塞控制报文携带的网络质量信息所属的路径为同一条路径,从而提高基于拥塞控制报文携带的网络质量信息进行路径切换的精确性。
在一种可能的实现方式中,所述第一网络设备根据所述拥塞控制报文将第二报文的转发路径从所述第一路径切换至第二路径,包括:所述第一网络设备将下一跳从多拓扑冗余树MRT红拓扑对应的下一跳切换为MRT蓝拓扑对应的下一跳;或者,所述第一网络设备将下一跳从MRT蓝拓扑对应的下一跳切换为MRT红拓扑对应的下一跳;或者,所述第一网络设备降低MRT红拓扑或者MRT蓝拓扑对应的下一跳权重。
以上提供的实现方式中,将MRT红蓝拓扑应用到拥塞控制场景,通过对MRT红蓝拓扑提供的多路径进行切换以解决拥塞,提高方案可用性。
在一种可能的实现方式中,所述第一网络设备根据所述拥塞控制报文将第二报文的转发路径从所述第一路径切换至第二路径之前,所述方法还包括:所述第一网络设备发送探测报文,所述探测报文用于探测从所述第一网络设备到所述第一路径的目的节点之间的至少一条路径的网络质量,所述至少一条路径包括所述第二路径;所述第一网络设备根据所述第二路径的网络质量确定所述第二路径。
以上提供的实现方式中,通过在拥塞控制报文的触发下,发送探测报文来探测路径的质量,选择质量好的路径转发报文,从而提高路径切换精确性。
在一种可能的实现方式中,所述第一报文和所述第二报文包括相同的流特征或不同的流特征。如果所述第一报文和所述第二报文属于不同的业务流,在所述第一路径拥塞之前,所述第二报文对应的业务流的报文通过所述第一路径传输。
在一种可能的实现方式中,所述第一路径包括隧道。
在一种可能的实现方式中,应用于互联网协议第6版段路由SRv6网络中。
在一种可能的实现方式中,所述第一报文和所述第二报文的目的地址均包括SRv6SID,所述第一报文和所述第二报文的源地址均包括SRv6入口节点的地址。
以上提供的实现方式满足SRv6场景下拥塞控制的需求。
第二方面,提供了一种拥塞控制方法,在该方法中,响应于第一路径拥塞,所述第一网络设备生成拥塞控制报文,所述拥塞控制报文指示所述第一路径拥塞;所述第一网络设备向所述第一路径上的第二网络设备发送所述拥塞控制报文。
第二方面提供的方法中,网络设备通过在转发报文的过程中,在路径拥塞的情况下发送拥塞控制报文,从而触发路径切换以解决拥塞。该方法有助于网络设备选择更合适的路径转发报文,减少拥塞控制耗费的时延,提升拥塞控制的效果。
在一种可能的实现方式中,所述拥塞控制报文包括拥塞标记,所述拥塞标记用于指示所述第一路径拥塞。
在一种可能的实现方式中,所述拥塞控制报文为因特网控制报文协议ICMP报文或,所述拥塞控制报文的第一位置包括所述拥塞标记,所述第一位置包括:互联网协议IP基本头或IP扩展头。
在一种可能的实现方式中,在所述拥塞控制报文为ICMP报文的情况下,所述拥塞标记位于ICMP代码字段或ICMP类型字段。
在一种可能的实现方式中,所述拥塞控制报文包括报文类型,所述报文类型用于指示所述拥塞控制报文的类型为拥塞控制报文。
在一种可能的实现方式中,所述报文类型的携带位置为互联网协议第六版IPv6头中的下一个头next header字段。
在一种可能的实现方式中,所述第一网络设备包括所述第一路径的端点设备、所述第一路径上发生拥塞的设备或所述第一路径上发生拥塞的网络设备的上一跳设备。
在一种可能的实现方式中,所述第一网络设备生成拥塞控制报文之前,所述方法还包括:
所述第一网络设备检测到所述第一网络设备发生拥塞;或者,
所述第一网络设备接收所述第一路径上第三网络设备发送的拥塞通告报文,所述拥塞通告报文指示所述第三网络设备发生拥塞。
在一种可能的实现方式中,所述拥塞控制报文还包括所述第一路径的网络质量信息,所述第一网络设备生成拥塞控制报文之前,所述方法还包括:所述第一网络设备收集所述第一路径的网络质量信息。
在一种可能的实现方式中,所述网络质量信息包括以下一项或多项:时延;缓冲区buffer长度;带宽利用率。
在一种可能的实现方式中,所述第一报文的目的地址均包括SRv6 SID,所述第一报文的源地址包括SRv6入口节点的地址。
第三方面,提供了一种网络设备,所述网络设备为第一网络设备,所述网络设备包括:
发送单元,用于通过第一路径发送第一报文;
接收单元,用于接收所述第一路径上的第二网络设备发送的拥塞控制报文,所述拥塞控制报文指示所述第一路径拥塞;
处理单元,用于根据所述拥塞控制报文将第二报文的转发路径从所述第一路径切换至第二路径。
在一种可能的实现方式中,所述处理单元,用于将下一跳从多拓扑冗余树MRT红拓扑对应的下一跳切换为MRT蓝拓扑对应的下一跳;或者,将下一跳从MRT蓝拓扑对应的下一跳切换为MRT红拓扑对应的下一跳;或者,降低MRT红拓扑或者MRT蓝拓扑对应的下一跳权重。
在一种可能的实现方式中,所述发送单元,用于发送探测报文,所述探测报文用于探测从所述第一网络设备到所述第一路径的目的节点之间的至少一条路径的网络质量,所述至少一条路径包括所述第二路径;
所述处理单元,用于根据所述第二路径的网络质量确定所述第二路径。
在一个示例中,网络设备中的单元通过软件实现,网络设备中的单元是程序模块。在另一些实施例中,网络设备中的单元通过硬件或固件实现。第三方面提供的网络设备的具体细节可参见上述第一方面或第一方面任一种可选方式,此处不再赘述。
第四方面,提供了一种网络设备,所述网络设备包括:
处理单元,用于响应于所述第一路径拥塞,生成拥塞控制报文,所述拥塞控制报文指示所述第一路径拥塞;
发送单元,用于向所述第一路径上的第二网络设备发送所述拥塞控制报文。
在一种可能的实现方式中,所述处理单元,还用于检测到发生拥塞;或者,
所述接收单元,还用于接收所述第一路径上第三网络设备发送的拥塞通告报文,所述拥塞通告报文指示所述第三网络设备发生拥塞。
在一种可能的实现方式中,所述拥塞控制报文还包括所述第一路径的网络质量信息,所述处理单元,还用于收集所述第一路径的网络质量信息。
在一个示例中,网络设备中的单元通过软件实现,网络设备中的单元是程序模块。在另一些实施例中,网络设备中的单元通过硬件或固件实现。第四方面提供的网络设备的具体细节可参见上述第二方面或第二方面任一种可选方式,此处不再赘述。
第五方面,提供了一种网络设备,所述网络设备包括:主控板和接口板,进一步,还可以包括交换网板。所述网络设备用于执行第一方面或第一方面的任意可能的实现方式中的方法。具体地,所述网络设备包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的单元。
第六方面,提供了一种网络设备,所述网络设备包括:主控板和接口板,进一步,还可以包括交换网板。所述网络设备用于执行第二方面或第二方面的任意可能的实现方式中的方法。具体地,所述网络设备包括用于执行第二方面或第二方面的任意可能的实现方式中的方法的单元。
第七方面,提供了一种网络设备,该网络设备包括处理器和通信接口,该处理器用于执行指令,使得该网络设备执行上述第一方面或第一方面任一种可能实现方式所提供的方法,所述通信接口用于接收或发送报文。第七方面提供的网络设备的具体细节可参见上述第一方面或第一方面任一种可能实现方式,此处不再赘述。
第八方面,提供了一种网络设备,该网络设备包括处理器和通信接口,该处理器用于执行指令,使得该网络设备执行上述第二方面或第二方面任一种可能实现方式所提供的方法,所述通信接口用于接收或发送报文。第八方面提供的网络设备的具体细节可参见上述第二方面或第二方面任一种可能实现方式,此处不再赘述。
第九方面,提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令在计算机上运行时,使得计算机执行上述第一方面或第一方面任一种可选方式所提供的方法。
第十方面,提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令在计算机上运行时,使得计算机执行上述第二方面或第二方面任一种可选方式所提供的方法。
第十一方面,提供了一种计算机程序产品,所述计算机程序产品包括一个或多个计算机程序指令,当所述计算机程序指令被计算机加载并运行时,使得所述计算机执行上述第一方面或第一方面任一种可选方式所提供的方法。
第十二方面,提供了一种计算机程序产品,所述计算机程序产品包括一个或多个计算机程序指令,当所述计算机程序指令被计算机加载并运行时,使得所述计算机执行上述第二方面或第二方面任一种可选方式所提供的方法。
第十三方面,提供了一种芯片,包括存储器和处理器,存储器用于存储计算机指令,处理器用于从存储器中调用并运行该计算机指令,以执行上述第一方面及其第一方面任意可能的实现方式中的方法。
第十四方面,提供了一种芯片,包括存储器和处理器,存储器用于存储计算机指令,处理器用于从存储器中调用并运行该计算机指令,以执行上述第二方面或第二方面任一种可选方式所提供的方法。
第十五方面,提供了一种网络系统,该网络系统包括上述第三方面或第三方面任一种可选方式所述的网络设备以及上述第四方面或第四方面任一种可选方式所述的网络设备;或者,该网络系统包括上述第五方面所述的网络设备以及上述第六方面所述的网络设备;或者,该网络系统包括上述第七方面所述的网络设备以及上述第八方面所述的网络设备。
附图说明
图1是本申请实施例提供的一种SRv6网络中转发报文的示意图;
图2是本申请实施例提供的一种基于FlexAlgo算路的示意图;
图3是本申请实施例提供的一种ECN报文的格式示意图;
图4是本申请实施例提供的一种ECT标记字段的格式示意图;
图5是本申请实施例提供的一种网络架构的示意图;
图6是本申请实施例提供的一种拥塞控制的场景示意图;
图7是本申请实施例提供的一种拥塞控制方法200的流程图;
图8是本申请实施例提供的一种SRv6 BE L3VPN的场景示意图;
图9是本申请实施例提供的一种拥塞控制的场景示意图;
图10是本申请实施例提供的一种拥塞控制的场景示意图;
图11是本申请实施例提供的一种拥塞控制的场景示意图;
图12是本申请实施例提供的一种拥塞控制的场景示意图;
图13是本申请实施例提供的一种配置多下一跳权重的示意图;
图14是本申请实施例提供的一种拥塞控制的场景示意图;
图15是本申请实施例提供的一种拥塞控制的场景示意图;
图16是本申请实施例提供的一种网络设备的结构示意图;
图17是本申请实施例提供的一种网络设备的结构示意图;
图18是本申请实施例提供的一种网络设备的结构示意图;
图19是本申请实施例提供的一种网络设备的结构示意图;
图20是本申请实施例提供的一种网络系统1000的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
以下对本申请涉及的一些术语进行解释。
互联网协议第6版段路由(internet protocol version 6for segment routing,SRv6):是基于源路由(segment routing,SR)理念而设计的在网络上转发数据包的一种方法。SRv6 Segment是IPv6地址形式,通常也可以称为SRv6 SID(Segment Identifier)。SRv6SID有很多类型,不同类型的SRv6 SID代表不同的功能。例如,End SID表示Endpoint SID,用于标识网络中的某个目的节点(Node)。End.X SID表示三层交叉连接的Endpoint SID,用于标识网络中的某条链路。例如,请参考附图1,图1为本申请实施例提供的一种基于EndSID的转发流程示意图,该转发流程包括:报文在节点A被压入SRH,该SRH中的路径信息是<Z::,F::,D::,B::>,报文的IPv6头中的目的地址是B::,SL的值为3。每当报文经过一个中间节点,例如节点B和节点D,中间节点会根据报文的IPv6 DA查询Local SID表,中间节点判断是End类型,则中间节点会继续查询IPv6 FIB表,根据IPv6 FIB表查到的出接口下一跳转发,同时对SL减1,将IPv6 DA变换一次。当报文到节点F时,节点F根据报文中IPv6头的目的地址查询Local SID表,判断是End类型,然后继续查询IPv6 FIB表,根据IPv6 FIB表查到的出接口转发。同时SL减为0,IPv6 DA变为Z::,此时路径信息<Z::,F::,D::,B::>已无实际价值,因此节点F利用PSP特性,将SRH去除,然后把去除了SRH的报文转发到节点Z。
基于互联网协议第6版(internet protocol version 6,IPv6)转发面的SR,通过在IPv6报文中插入一个路由扩展头,称为段路由头(segment routing header,SRH),在SRH中压入一个显式的IPv6地址栈,通过中间节点不断的进行更新目的地址和偏移地址栈的操作来完成逐跳转发。
灵活算法(Flexible Algorithm,FlexAlgo):传统互联网协议(internetprotocol,IP)转发路径算法使用最短路径优先(Shortest path first,SPF)算法,只支持基于内部网关协议(internal gateway protocol,IGP)度量(metric)计算最短路径。FlexAlgo用于增强IP路由算法能力。参见附图2,附图2是一种基于FlexAlgo进行分布式算路的示意图。如附图2所示,SRv6网络包括8个网络设备,分别是R1、R2、R3至R8。R1的SID为B1::1。R2的SID为B2::1。R3的SID为B3::1。R4的SID为B4::1。SRv6网络通告了灵活算法定义(Flexible Algorithm Definition,FAD)128。FAD 128中度量值类型(Metric Type,也称链路指标约束)为时延。FAD 128中亲和属性(affinity,也称拓扑约束)为去掉红(exclude-all red),即算路时去掉红对应的链路。在转发报文的过程中,首先,R1接收到发往R4的报文,报文的目的地址为B4::1。R1基于FlexAlgo算路,从而确定到R4的最优下一跳为R2,然后R1将报文转发给R2。R2接收R1发送的报文。R2基于FlexAlgo算路,从而确定到R4的最优下一跳为R3,然后R2将报文转发给R3。R3基于FlexAlgo算路,从而确定到R4的最优下一跳为R4,然后R3将报文转发给R4。总结来看,FlexAlgo是一种分布式路由算法。和集中式算法不一样,FlexAlgo不计算到目的节点的端到端路径,只计算到目的节点的最优的下一跳。
灵活算法定义(Flexible Algorithm Definition,FAD)是为Flex-Algo扩展的子(sub)类型长度值(type length value,TLV)(FAD sub-TLV)。FAD sub-TLV包括灵活算法标识(identity,ID)(Flex-Algo ID)、度量值类型(metric-type)、算法类型(Calc-type)以及链路约束。
Flex-Algo ID用于标识灵活算法。用户给不同的IP路由算法定义不同的FlexAlgoID。Flex-Algo ID的取值范围为128~255。例如,Flex-Algo ID的值为128。
度量值类型是路由算法因子。度量值类型包括IGP度量值(IGP metric)、链路时延(link delay)和流量工程(traffic engineering,TE)度量值(TE metric)。例如,度量值类型的值为0时,表示IGP度量值;度量值类型的值为1时,表示链路时延,即基于时延metric算路;度量值类型的值为2时,表示TE度量值,即基于TE metric算路。算法类型包括最短路径优先算法(SPF算法)和严格最短路径优先算法(strict SPF算法)。例如,算法类型的值为0时,表示SPF算法;算法类型的值为1时,表示严格最短路径优先算法。
链路约束是一种链路亲和属性。链路约束定义FlexAlgo算路拓扑。链路约束例如通过包含(include)/去掉(exclude)管理组(admin-group)颜色(color)描述。
显示拥塞通告(Explicit Congestion Notification,ECN):是传输控制协议/互联网协议(transmission control protocol/internet protocol,TCP/IP)的一个扩展,定义在请求评论(request for comments,RFC)RFC3168中。ECN可以用来在不丢弃报文的情况下通知终端发生了网络拥塞。这个特性只有在底层网络和通信对端都支持的情况下才可以起作用。ECN主要应用在传输层协议是TCP的应用(Application)中。在一个基础的TCP应用场景中,当传输设备(路由器,交换机)拥塞程度已经达到填满了缓冲区而开始丢包时,由于TCP本身的可靠性机制,会采取一些算法来调整发送速率,但是这样可能会导致带宽不能够充分利用,而且丢包产生的重传也会影响传输效率,而ECN特性可以使传输设备(路由器,交换机)在感知网络快要发生拥塞时利用ECN发送通知给TCP连接的对等体,使TCP对等体提前调整发送速率,避免丢包出现,使传输更可靠和高效。
ECN报文的结构:请参考附图3,附图3是ECN字段的位置的示意图。比特6至比特7为ECN字段。比特0至比特5为区分服务编码点(differentiated services code point,DSCP)字段。ECN使用了IP报头里面服务类型(Type of Service,TOS)字段的最后面的两位来标记,最开始被定义在RFC2481里面。RFC2481并未使用ECN=10,后被RFC3168修改,ECN=10也表示支持ECN。标志位如附图4所示。ECN在IP头中的位置以及标志位意义如下:IP首部的TOS字段中的第7比特和8比特的保留(reserved,res)字段被重新定义为支持传输ECN(ECN-Capable Transport,ECT)标记字段。ECT标记字段有四个取值,在RFC3168中描述,00代表该报文并不支持ECN,所以路由器的将该报文按照原始非ECN报文处理即可,即,过载丢包。01和10这两个值针对路由器来说是一样的,都表明该报文支持ECN功能,如果发生拥塞,则将ECT标记字段修改为11来表示报文经过了拥塞,并继续被路由器转发。
ECN工作原理:当网络设备(路由器,交换机)在早期发生拥塞时,网络设备不是将数据丢弃,而是尽量对数据进行分组标记。ECT标记为11时表示发生拥塞(CongestionEncountered),从而减少因丢包造成的网络延迟。发送方通过返回的带拥塞反馈标志的数据包发现拥塞。
ECN需要通信双方以及传输的网络支持才可以起作用。所以网络设备(路由器,交换机)等转发侧为了支持ECN,需要有以下新增功能。
1、当拥塞发生时,针对ECN=00的报文,走原有普通非ECN流程,即进行随机早期检测(Random Early Detection,RED)丢包。
2、当拥塞发生时,针对ECN=01或ECN=10的报文,都需要修改为ECN=11,并继续转发流程。
3、当拥塞发生时,针对ECN=11的报文,需要继续转发。
4、为了保证与不支持ECN报文的公平性,在队列超过一定长度时,需要考虑对支持ECN报文的丢弃。
下面介绍一个示例性应用场景。
传统的拥塞控制都是在端侧解决,例如ECN机制,在网络侧感知到拥塞,通过报文携带拥塞标记通知TCP端侧(收发报文的主机)做拥塞处理。请参考附图5,附图5示出了数据中心(Data Center,DC)之间互联的场景。每个数据中心包括至少一个网络设备。例如,附图5中数据中心A、数据中心B……数据中心F之间互联。不同DC之间传输流量。DC间流量具有突发性和不均衡性。本申请实施例能够应用在SRv6,在SR多协议标签交换(multi-protocollabel switching,MPLS)或传统IP网络等场景中。
下面对本申请实施例的系统架构举例说明。
附图6是本申请实施例提供的网络系统10的架构示意图。网络系统10包括节点C、节点D和节点B。可选地网络系统10还包括节点A、节点G等其他节点。网络系统10中的每个节点为网络设备。网络设备例如为交换机或路由器。
节点C为发生或感知拥塞的节点。节点C对报文中的ECT标记进行置位。
节点D为生成包含ECT标记的报文的节点。节点D可以向节点B发送拥塞控制报文。
节点B处理拥塞控制报文,并对转发路径进行切换。
可选地,网络系统10为SRv6网络系统。网络系统10中的每个节点为使能了SRv6的网络设备。在一个示例中,节点B为SRv6入口节点。节点C为SRv6中间节点。节点D为SRv6出口节点(也称尾节点或目的端点设备)。
下面对本申请实施例的方法流程进行说明。
参见附图7,附图7是本申请实施例提供的一种拥塞控制方法200的流程图。方法200包括步骤S210至步骤S260。
方法200涉及多个网络设备的交互。为了区分不同的网络设备,用“第一网络设备”描述进行路径切换的网络设备,用“第二网络设备”描述发送拥塞控制报文的网络设备。例如,结合附图6来看,第一网络设备为附图6中的节点B,第二网络设备为附图6中的节点D。值得说明的一点是,方法200所说的网络设备是指例如交换机、路由器等用于报文转发的设备,而非主机设备。可选地,当方法200应用在SRv6场景时,第一网络设备为SRv6入口节点,第一网络设备负责对接收的报文经过SRv6封装并转发SRv6封装后的报文。
方法200涉及多路径的切换。为了区分不同的路径,用术语“第一路径”描述切换前的路径,用术语“第二路径”描述切换后的路径。例如,结合附图6来看,第一路径是附图6中的节点A→节点B→节点C→节点D,第二路径是附图6中的节点A→节点B→节点F→节点D。在一个示例中,第一路径包括隧道。隧道包括而不限于LSP隧道、TE隧道、策略隧道等等。在一个示例中,第一路径和第二路径为两条不相交的SRv6尽力而为(Best-Effort,BE)路径。在一个示例中,第一路径为TE主路径,第二路径为TE热备份(hot standby,HSB)路径。
步骤S210、第一网络设备通过第一路径发送第一报文。
步骤S220、第二网络设备通过第一路径接收第一报文。
这里的第二网络设备通过第一路径接收第一报文,可以是指,在原有的网络规划中,第二网络设备应该通过第一路径接收第一报文,但可能第一报文还没有传输到第二网络设备。
例如,第二网络设备包括与第一路径关联的逻辑接口或物理接口,通过第一路径接收第一报文是指通过第二网络设备上与第一路径关联的逻辑端口或物理接口接收第一报文。
步骤S230、响应于第一路径拥塞,第二网络设备生成拥塞控制报文。
拥塞控制报文为本实施例提供的新增报文。拥塞控制报文指示第一路径拥塞。拥塞控制报文例如是IP层报文。拥塞控制报文的实现方式包括而不限于下述方式A和方式B。
方式A、在已有的报文中增加一种新标记,该新标记用于指示路径拥塞。
例如,这种新标记称为拥塞标记。上述拥塞控制报文包括拥塞标记,拥塞标记用于指示第一路径拥塞。收到报文的网络设备通过识别该拥塞标记,能够确定第一路径上发生拥塞,从而触发拥塞控制的功能。如,结合图6所示的网络,节点C探测到网络拥塞,则在报文中增加标注拥塞,节点D接收到该报文后,生成拥塞控制报文。拥塞控制报文包括而不限于下述方式A-1至方式A-3。
方式A-1、拥塞控制报文为因特网控制报文协议(Internet Control MessageProtocol,ICMP)报文。
具体地,扩展ICMP报文,在ICMP报文中增加拥塞标记从而通告路径拥塞。采用这种方式时,拥塞控制报文为包含拥塞标记的ICMP报文,拥塞控制报文可称为ICMP ECN报文。
可选地,选择ICMP中的ICMP error报文(ICMP差错通知报文)进行扩展,在ICMPerror报文中增加拥塞标记,也就是说,拥塞控制报文为ICMP error报文。
扩展ICMP报文的具体实现方式包括而不限于扩展新的ICMP代码(ICMP code)或新的ICMP类型(ICMP type)。
扩展新的ICMP代码是指通过新的ICMP代码来指示路径拥塞。也就是说,使用一种新的ICMP代码充当拥塞标记,携带新的ICMP代码的ICMP报文为本实施例提供的拥塞控制报文。在采用这种实现方式时,拥塞控制报文包括ICMP报文。ICMP报文包括ICMP代码字段,ICMP代码字段包括拥塞标记。其中,新的ICMP代码的取值例如是互联网数字分配机构(TheInternet Assigned Numbers Authority,IANA)分配的任意值。
扩展新的ICMP类型是指通过新的ICMP类型来指示路径拥塞。也就是说,使用一种新的ICMP类型充当拥塞标记,携带新的ICMP类型的ICMP报文为本实施例提供的拥塞控制报文。在采用这种实现方式时,拥塞控制报文包括ICMP报文。ICMP报文包括ICMP类型字段,ICMP类型字段包括拥塞标记。
方式A-2、拥塞控制报文的第一位置包括拥塞标记,第一位置包括IP基本头。
例如,拥塞标记位于IPv6基本头。
方式A-3、拥塞控制报文的第一位置包括拥塞标记,第一位置包括IP扩展头。
携带拥塞标记的IP扩展头包括而不限于逐跳选项头或目的选项头。在一种可能的实现中,在IP扩展头中扩展一种新选项,在新选项中携带拥塞标记。拥塞标记在新选项的携带位置包括而不限于选项数据字段或者选项类型字段。
方式B、新定义一种报文类型来标识路径拥塞。
具体地,新增一种报文类型,该报文类型的报文本身用来标识拥塞,换句话说,该报文类型专门用来支持网络侧进行拥塞控制的场景。例如,这种新报文类型称为ECNP报文、拥塞控制信令报文、ECN notification报文等。在采用这种方式时,上述拥塞控制报文包括报文类型,且报文类型用于指示拥塞控制报文的类型为拥塞控制报文。在一个示例中,报文类型的携带位置为IPv6头中的下一报头(next header)字段。具体地,上述拥塞控制报文包括IPv6头,IPv6头包括next header字段,next header字段包括该报文类型。
发送拥塞控制报文的触发条件包括很多种,下面通过两种触发条件举例说明。
触发条件一、当检测到发生拥塞时,发送拥塞控制报文。例如,第二网络设备检测第二网络设备发生拥塞,然后第二网络设备执行发送拥塞控制报文的动作。
触发条件二、当接收到其他设备发送的拥塞通告报文时,发送拥塞控制报文。
例如,第一路径上的第三网络设备生成拥塞通告报文,拥塞通告报文指示第三网络设备发生拥塞。第三网络设备向第一网络设备发送拥塞通告报文。第一网络设备接收第三网络设备发送的拥塞通告报文,响应于拥塞通告报文执行发送拥塞控制报文的动作。在一个示例中,第三网络设备与第一网络设备例如具有邻接关系。例如,第三网络设备为第一网络设备的上一跳设备。其中,拥塞控制报文例如为ECN报文,拥塞控制报文包括ECT标记,ECT标记的取值为11。
在一个示例中,还可以通过拥塞控制报文收集沿途的网络质量信息。具体地,第二网络设备收集第一路径的网络质量信息,将收集的网络质量信息携带在拥塞控制报文中,使得拥塞控制报文包括第一路径的网络质量信息。网络质量信息包括以下一项或多项:时延;缓冲区(buffer)长度;带宽利用率。通过这种方式,由于拥塞控制报文不仅指示了路径拥塞,还携带了路径的网络质量信息,从而为多路径切换提供更多能参考的信息,有助于提高路径切换的精确性。
在一个示例中,通过在拥塞控制场景下应用双向共路算法进行算路,保证数据报文的转发路径与拥塞控制报文携带的网络质量信息所属的路径为同一条路径,从而提高基于拥塞控制报文携带的网络质量信息进行路径切换的精确性。例如,上述第一路径是通过双向共路算法计算出来的路径。
双向共路算法是一种路径计算的算法,双向共路是指正向路径与反向路径一致。其中,正向是指从源端到目的端的方向。反向是指从目的端到源端的方向。双向共路算法的链路metric为正向代价(cost)与反向cost之和。例如,从节点a到节点b的cost是10,从节点b到节点a的cost是20,那么使用30作为节点a与节点b之间的链路metric。
步骤S240、第二网络设备向第一路径上的第一网络设备发送拥塞控制报文。
第二网络设备包括而不限于下述情况(1)至情况(3)。
情况(1)第二网络设备为第一路径的端点设备(如目的端点设备)。
例如,第一路径为节点B→节点C→节点D,第一路径的目的设备为节点D,由节点D扮演本实施例中第二网络设备的角色,节点D生成并向节点B发送拥塞控制报文。
在一个示例中,数据报文经过隧道传输。数据报文在进入隧道时,被网络设备封装了隧道头,隧道头指明了隧道的目的设备。如果隧道发生拥塞,由隧道的目的设备发送拥塞控制报文。在采用这种方式时,上述第一路径包括隧道。上述第一报文包括隧道头。隧道头的目的地址字段包括第二网络设备的IP地址。第二网络设备例如为网络侧边缘(provideredge,PE)设备。
情况(2)第二网络设备为拥塞点(第一路径上发生拥塞的设备)。
例如,第一路径为节点B→节点C→节点D。拥塞点为节点C,即节点C检测到自身拥塞,则由节点C扮演本实施例中第二网络设备的角色,由节点C生成并向节点B发送拥塞控制报文。
情况(3)第二网络设备为第一路径上发生拥塞的网络设备的上一跳设备。
例如,第一路径为节点B→节点I→节点C→节点D,其中拥塞点为节点C,则由节点I扮演本实施例中第二网络设备的角色,由节点I生成并向节点B发送拥塞控制报文。
在一个示例中,拥塞是指网络设备上针对对应流量的缓存队列超过阈值。如何判定是否发生拥塞包括多种实现方式。示例性地,判定发生拥塞的方式包括而不限于下述方式一和方式二。
方式一、根据网络设备上接口或队列的buffer长度判定发生拥塞。
具体地,网络设备检测网络设备上接口或队列的buffer长度。如果接口或队列的buffer长度超过阈值,则网络设备确定发生拥塞。
方式二、根据网络设备上接口或队列的带宽利用率判定发生拥塞。
具体地,网络设备检测网络设备上接口或队列的带宽利用率。如果接口或队列的带宽利用率超过阈值,则网络设备确定发生拥塞。
上述判定拥塞时涉及的阈值可以是静态的也可以是动态的。静态的阈值例如是预先设定的固定值。动态的阈值例如根据业务需求等因素而变化。
上述接口例如是物理接口,又如是逻辑接口。逻辑接口包括而不限于捆绑接口、隧道接口、子接口等。捆绑接口包括而不限于灵活以太网(Flexible Ethernet,Flex Eth或FlexE)接口。在一个示例中,网络设备建立各个接口与各个转发路径之间的关联关系。如果第一路径关联的接口的buffer长度或带宽利用率超过阈值,则网络设备确定第一路径发生拥塞。
上述队列例如是服务质量(quality of service,QoS)队列。在一个示例中,网络设备建立各个队列与各个转发路径之间的关联关系。如果第一路径关联的队列的buffer长度或带宽利用率超过阈值,则网络设备确定第一路径发生拥塞。
步骤S250、第一网络设备接收第一路径上的第二网络设备发送的拥塞控制报文。
在一个示例中,第一网络设备在接收到拥塞控制报文后,可以根据该拥塞控制报文,进行路径切换,选择第二路径进行报文转发。
在一个示例中,第一网络设备收到拥塞控制报文之后,可以探测多个路径的网络质量,根据探测出的网络质量从多个路径中选择路径来转发报文。例如,第一网络设备生成并发送探测报文,探测报文用于探测从第一网络设备到第一路径的目的节点之间的至少一条路径的网络质量,至少一条路径包括第二路径。第一网络设备根据第二路径的网络质量确定第二路径。例如,第一网络设备发送探测报文之后,路径的目的节点或者路径上经过的中间节点响应于探测报文,生成并向第一网络设备发送响应报文。响应报文包括该至少一条路径的网络质量信息。第一网络设备接收探测报文对应的响应报文。第一网络设备根据响应报文中的网络质量信息,从至少一条路径中选择网络质量最好的路径作为调整后的路径(第二路径)。
步骤S260、第一网络设备根据拥塞控制报文将第二报文的转发路径从第一路径切换至第二路径。
本实施例用术语“第二报文”指代发生路径切换的报文。第二报文对应的业务流的转发路径为第一路径,路径切换后,该业务流的转发路径切换为第二路径,切换为第二路径后转发的该业务流对应的报文都可以称为第二报文。
在一个示例中,第一网络设备收到拥塞控制报文之后,第一网络设备从第一路径上传输的流中选择至少一条流,第一网络设备对选择的至少一条流的转发路径进行调整,使得选择的至少一条流从第一路径切换至第二路径。其中,第一网络设备选择的至少一条流包括第二报文。
第二报文和第一报文之间的关系包括以下情况一至情况二。
情况一、第一报文和第二报文属于同一条数据流。
在一个示例中,第一报文和第二报文属于不同主机发送的、经过网络层聚合后的一条数据流,第一报文与第二报文具有不同的源主机。在另一些实施例中,第一报文和第二报文属于同一个主机发送的数据流,第一报文与第二报文具有相同的源主机。
在一个示例中,第一报文和第二报文包括相同的流特征或不同的流特征。如果第一报文和第二报文属于不同的业务流,在第一路径拥塞之前,第二报文对应的业务流的报文应该也用第一路径传输。
流特征包括而不限于五元组或七元组等。五元组为源IP地址,源端口,目的IP地址,目的端口和传输层协议。
情况二、第一报文和第二报文属于不同的数据流。
例如,第一路径用于传输数据流1和数据流2,第一报文属于数据流1,第二报文属于数据流2。
多路径切换的实现方式包括而不限于下述实现方式(1)至实现方式(3)。其中,实现方式(1)和实现方式(2)属于调整路由的方式。调整的路由为第一网络设备上路由表中第二报文对应的路由。路由用于指示到第二报文的目的地址的路径。路由的目的地址为第二报文的目的地址。该路由包括第一网络设备的下一跳的地址。
实现方式(1)调整路由的下一跳。
例如,第一路径上第一网络设备的下一跳为节点A,第二路径上第一网络设备的下一跳为节点B。第一网络设备将路由中的下一跳从节点A切换为节点B,使得第二报文的转发路径从第一路径切换为第二路径。
实现方式(2)调整路由的多一跳的权重。
下一跳的权重用于指示向该下一跳转发报文的比例。下一跳的权重越高,表示向该下一跳转发的报文的比例越大,使得该下一跳经过的路径承载越多的流量,该下一跳经过的路径的负载越高。
例如,第一路径上第一网络设备的下一跳为节点A,第二路径上第一网络设备的下一跳为节点B,第一网络设备降低节点A对应的下一跳权重,或者提高节点B对应的下一跳权重,从而分担第一路径上的部分流量到第二路径上,使得第二报文的转发路径从第一路径切换为第二路径。
实现方式(3)增加或者更新ACL策略。
例如,拥塞控制报文包括源端口号、目的端口号、DSCP以及流标签等流的信息。第一网络设备基于流的信息生成访问控制列表(access control lists,ACL)策略,该ACL策略用于调整更细率度的流的下一跳从而解除拥塞。
在一个示例中,通过切换多拓扑冗余树(Multi-topology Redundancy Tree,MRT)红蓝拓扑实现拥塞控制。如果MRT红拓扑中的路径发生拥塞,则切换至MRT蓝拓扑中的路径,在这一场景下,第一路径为MRT红拓扑中的路径,第二路径为MRT蓝拓扑中的路径。如果MRT蓝拓扑中的路径发生拥塞,则切换至MRT红拓扑中的路径,在这一场景下,第一路径为MRT蓝拓扑中的路径,第二路径为MRT红拓扑中的路径。
切换MRT红蓝拓扑的实现方式包括而不限于上述调整下一跳的方式或者调整下一跳权重的方式。例如,从MRT红拓扑切换至MRT蓝拓扑的实现方式包括而不限于,第一网络设备将下一跳从MRT红拓扑对应的下一跳切换为MRT蓝拓扑对应的下一跳;第一网络设备降低MRT红拓扑对应的下一跳权重。又如,从MRT蓝拓扑切换至MRT红拓扑的实现方式包括而不限于,第一网络设备将下一跳从MRT蓝拓扑对应的下一跳切换为MRT红拓扑对应的下一跳;第一网络设备降低MRT蓝拓扑对应的下一跳权重。
其中,MRT红拓扑和MRT蓝拓扑是指通过MRT算法同时生成的两个拓扑。MRT算法用于计算不相交多路径。MRT红拓扑对应的下一跳也称红下一跳,红下一跳是指基于MRT红拓扑计算的下一跳。MRT蓝拓扑对应的下一跳也称蓝下一跳,蓝下一跳是指基于MRT蓝拓扑计算的下一跳。
可选地,方法200应用在SRv6场景。方法200涉及的各个报文(如第一报文、拥塞控制报文、第二报文等)均为经过SRv6封装的IPv6报文。下面通过(a)至(c)对各个报文在SRv6场景下可能具有的一些特征进行介绍。
(a)第一报文
第一报文的源地址(外层的IPv6头中的源地址)包括SRv6入口节点(如第一网络设备)的地址。例如,第一报文的源地址包括SRv6入口节点的SRv6 SID。
第一报文的目的地址(外层的IPv6头中的目的地址)包括SRv6 SID。例如,第一报文的目的地址包括SRv6出口节点(即第一路径的目的端点设备)的SRv6 SID。
可选地,第一报文还包括SRH。第一报文的SRH包括SID列表。第一报文中的SID列表指示第一路径。第一报文中的SID列表包括第二网络设备的SID。
(b)拥塞控制报文
拥塞控制报文的源地址(外层的IPv6头中的源地址)包括第二网络设备的地址。例如,拥塞控制报文的源地址包括第二网络设备的SRv6 SID。
拥塞控制报文的目的地址(外层的IPv6头中的目的地址)包括第一网络设备的SRv6 SID。
可选地,拥塞控制报文还包括SRH。拥塞控制报文的SRH中的SID列表指示从第二网络设备到第一网络设备的路径。拥塞控制报文的SRH中的SID列表包括第一网络设备的SID。
(c)第二报文
第二报文的源地址(外层的IPv6头中的源地址)包括SRv6入口节点(如第一网络设备)的地址。例如,第二报文的源地址包括SRv6入口节点的SRv6 SID。
第二报文的目的地址(外层的IPv6头中的目的地址)包括SRv6 SID。例如,第二报文的目的地址包括SRv6出口节点(即第二路径的目的端点设备)的SRv6 SID。
可选地,第二报文还包括SRH。第二报文的SRH包括SID列表。第二报文中的SID列表指示第二路径。第二报文与第一报文具有不同的SID列表。
本实施例提供的方法,通过利用拥塞控制报文向网络侧的源端通知拥塞,触发源端对报文在多路径之间切换,以解决拥塞。本方法有助于选择更合适的路径转发报文,减少拥塞控制耗费的时延,提升拥塞控制的效果。
下面结合一个具体的应用场景以及两个实例,对附图7所示方法200进行说明。方法200中的第一网络设备为以下场景和两个实例中的PE1,方法200中的第二网络设备为以下场景和两个实例中的PE3或P3,方法200中的拥塞控制报文为以下场景和两个实例中的ICMP报文。方法200中的第一路径为以下场景和两个实例中的PE1→P1→P3→PE3。方法200中第一路径的拥塞点为以下场景和两个实例中的P3。方法200中的第二路径为以下场景和两个实例中的PE1→P2→P4→PE3或者PE1→P1→P4→PE3。
附图8示出了一个SRv6 BE三层虚拟专用网络(layer 3virtual privatenetwork,L3VPN)场景。在该场景中,PE1~PE4是L3VPN的PE节点。P1~P4是运营商骨干(Provider,P)节点。PE3为VPN 100分配VPN SID:B2:8::B100。PE3发布私网路由2.2.2.2/24携带VPN SID。PE1收到私网路由后,PE1生成2.2.2.2私网路由表关联VPN SID:B2:8::B100。同时PE3通过IGP发布位置信息(locator)路由:B2:8::/64。全网中每个节点都生成到PE3的B2:8::/64的路由。
CE-1往CE-2发送目的地址为2.2.2.2的报文。PE1接收到CE-1发送的报文之后,PE1查私网路由表、PE1对报文进行SRv6封装,外层是IPv6头,IPv6头中的目的地址为VPN SID:B2:8::B100,内层是原始互联网协议第四版(internet protocol version 4,IPv4)报文。
网络节点根据外层IPv6目的地址B2:8::B100做最长掩码匹配查找路由转发。目的地址B2:8::B100命中B2:8::/64的路由,报文转发到PE3。PE3根据外层IPv6目的地址B2:8::B100查找SRv6本地SID表(local SID table),命中本地SID表中的End.DT4 VPN SID。PE3弹出(pop)外层IPv6头,根据内层IPv4目的地址2.2.2.2查找VPN 100私网路由表,PE3将报文转发到CE-2。
下述两个实例重点关注附图8中PE1做SRv6封装转发到PE3过程中的拥塞处理。
实例1
实例1包括以下步骤1至步骤5。
步骤1:请参考附图9,PE1把需要实现拥塞控制的流量报文ECT标记设置为01或10,表示该流量支持网络侧拥塞控制。PE1发送设置了ECT标记的报文。
步骤2:当报文转发到P3时,如果P3发生了拥塞,P3将报文中ECT标记的值修改为11,并继续转发ECT标记为11的报文。
步骤3:P3的下一跳PE3根据策略过滤ECT标记为11的报文,除了正常处理该报文外,PE3还会回复一个ICMP error报文。如附图10所示,PE3将该ICMP error报文中外层的IPv6头中源地址(Source Address,SA)和目的地址(destination address,DA)互换,分配一个新的ICMP Code(可以是IANA分配的任意值)用于标识ICMP error报文是一个拥塞控制报文。
ICMP error报文仅是举例说明,本实施例提供的拥塞控制报文不限于ICMP error报文,拥塞控制报文也可以是其他类型的控制报文。
过滤ECT标记为11的报文时使用的策略例如为流分类策略。策略例如包含过滤条件和处理动作。例如,该过滤条件为ECT标记的值为11。处理动作为发送充当拥塞控制报文的ICMP error报文并正常处理ECT标记为11的报文。根据策略过滤ECT标记为11的报文的过程例如包括,PE3收到报文后,PE3使用报文中ECT标记与策略中的过滤条件进行匹配,PE3发现ECT标记的值(11)与过滤条件匹配,则执行策略中的处理动作,即返回ICMP ECN报文并继续转发ECT标记为11的报文。
使用ECT标记的方式为举例说明。在另一些实施例中,不使用ECT标记,在拥塞点P3回复ICMP ECN报文,这样就不需要使用ECT标记传递到下一跳或目的地址来回复ICMPerror报文或者其他类型的拥塞控制报文。在另一些实施例中,使用除了ECT标记之外的其他标记来标识网络层拥塞,例如扩展IP/IPv6报文头来标识网络层拥塞。
PE3通过将ICMP error报文外层的IPv6头中源地址和目的地址互换,使得ICMPerror报文能够发送至流量报文的源地址标识的设备。例如参考附图10,PE1发送的流量报文中的源地址为PE1的IP地址,流量报文中的目的地址为PE3的IP地址。PE3将源地址和目的地址互换之后,ICMP error报文中的源地址为PE3的IP地址,ICMP error报文中的目的地址为PE1的IP地址,因此ICMP error报文能够返回至流量报文的源端,也就是PE1。其中,源地址和目的地址互换是可选的实现方式。在另一些实施例中,PE3在ICMP报文外封装一个隧道头,隧道头中的源地址为PE3的IP地址,隧道头中的目的地址为PE1的IP地址,使得隧道封装后的ICMP报文发送给PE1。
步骤4:ICMP Errror报文转发到节点PE1,PE1根据ICMP Errror报文的源地址查找相应的路由表,并把该路由当前的主下一跳设置为拥塞状态,并把备份下一跳切换为主下一跳。其中,本实施例并不限定备份下一跳的计算方法。
其中,PE1收到ICMP Errror报文之后,PE1识别ICMP Errror报文中ICMP Code字段的值。如果ICMP Code字段的值是本实施例中为拥塞控制分配的新的ICMP Code,则PE1确定ICMP Errror报文是一个拥塞控制报文,则执行后续切换下一跳的动作。
步骤5:PE1等待一定时间没有再收到ICMP ECN报文,PE1取消原始主下一跳的拥塞标记,将流量切回到原始主下一跳。
实例2
实例2包括以下步骤1至步骤8。
请参考附图11,附图11为实例2的组网示意图,在该网络中定义FlexAlgo 128。
步骤1:在FlexAlgo 128中使用指定算法,如双向共路和MRT算法(或者其他路径不相交算法)。如:MRT保证在任意节点设备都有不相交分叉路径。
例如,网络中一个节点通告FAD TLV。FAD TLV包括Flex-Algo ID以及Calc-type。Flex-Algo ID的取值为128,Calc-type的取值表示指定算法。例如,为MRT算法和双向共路算法申请一种当前未被占用的Calc-type值,该Calc-type值是0、1之外的值。比如说,使用n表示MRT算法和双向共路算法,那么如果FAD TLV中Calc-type的值为n,含义是Flex-Algo128关联的指定算法是MRT算法和双向共路算法;当然,128仅是对Flex-Algo ID的取值举例说明,Flex-Algo ID也可以是128-255之间的其他值。其中,FAD TLV例如由网络中任意节点负责发布。指定算法例如是任意一种路径不相交算法。指定算法例如能够生成至少两种拓扑,或者说计算出至少两个下一跳,从而实现拥塞时流量调优的目的。
步骤2:如附图12所示,网络中的所有节点为FlexAlgo 128定义单独的SRv6locator。节点在计算FlexAlgo 128关联的locator路由的时候,使用指定算法(如:双向共路或MRT算法),得到多拓扑(如MRT红蓝拓扑)计算的下一跳生成路由的红蓝下一跳。下一跳携带红蓝拓扑属性,即,本地生成的路由转发表包含红蓝拓扑,红蓝拓扑分别指向不一样的下一跳。
如附图13所示,该FlexAlgo中对应的路由使用MRT红蓝拓扑作为该路由的多下一跳。并且,节点为多下一跳分别设置初始权重值。
在附图13中,PE1上对应到路由前缀A1::1/64的算法为128,对应到路由前缀A1::2/64的算法为129。根据红拓扑,节点PE对应的下一跳为A,根据蓝拓扑,节点PE对应的下一跳为B。在PE1上,到该前缀的报文的权重分别为权重11(如80%)和权重21(如20%),代表有80%的报文通过红拓扑转发,20%的报文通过蓝拓扑转发。
步骤3:附图14所示,PE1将所有或特定如优先级较低的流量引入该FlexAlgo,PE1使用该FlexAlgo对应的locator下的SID封装IPv6头。封装的IPv6头ECT标记设置为01或10,表示该流量支持网络侧拥塞控制。如果PE1选用路由的红色下一跳,则PE1在报文里携带Red标记。网络中的每个设备收到报文时,都根据该Red标记选择对应的拓扑对应的下一跳,向选择的下一跳转发该报文。
附图14中的locator A1:1:1是PE1封装的IPV6头中SA(A1:9::1)的前缀。A1:1:1是PE1发布的locator,A1:1:1是PE1的IPV6地址所属的IPV6网段。
附图14中locator A1:1:3是PE1封装的IPV6头中的DA(A1:1:3::10)的前缀。A1:1:3::10是PE3的VPN SID,具体是用于标识VPN路由转发表(Virtual Routing Forwarding,VRF)100的VPN SID。DA(A1:1:3::10)是locator A1:1:3下的SID。
其中,Red标记是一种拓扑ID。具体地,Red标记是指标识MRT红拓扑的拓扑ID。例如,为FlexAlgo和MRT红拓扑分配一个拓扑ID,分配的拓扑ID为Red标记。例如,人工在每个网络设备上配置Red标记的值,使得每个网络设备均保存一致的Red标记的值。例如,Red标记的值为123。
可选地,Red标记使用IPv6逐跳选项头(Hop by hop options header,HBH)扩展报文头选项携带,从而保证逐跳执行根据Red标记选择下一跳转发报文的动作。HBH中携带Red标记的扩展选项例如PE1封装。
具体地,报文包括HBH,HBH中包括一种新类型的选项(option)。这种新类型的Option用于携带red标记。新类型的Option采用TLV的结构,包含选项类型(option type)字段、选项长度(option length)字段以及选项数据(option data)字段。其中,option data字段携带red标记,option type字段的取值待定,option type字段的取值用于标识option包含了拓扑ID。
可选地,Red标记使用IPv6头携带。例如,Red标记位于IPv6头中的流量类别(Traffic Class,TC)字段或者流标签(Flow Label)字段。
根据该Red标记选择下一跳的过程例如为,参见附图14,网络中的设备接收到报文时,根据报文外层IPv6目的地址A1:1:3::10做最长掩码匹配查找路由,查找到locator路由A1:1:3/64。如果报文中拓扑ID是Red标记,则选择locator路由A1:1:3/64中MRT红拓扑对应的下一跳;如果报文中拓扑ID是blue标记,则选择locator路由A1:1:3/64中MRT蓝拓扑对应的下一跳。
此外,如果PE1选用的下一跳不是红色下一跳,而是通过MRT蓝拓扑算出的下一跳,则本步骤中携带的Red标记可替换为blue标记,blue标记是指标识MRT蓝拓扑的拓扑ID。
步骤4:参见附图15,当节点P3感知到端口拥塞的时候,P3修改报文中IP头的ECT标记=11,并继续转发修改后的报文。
步骤5:参见附图10,节点PE3利用本地策略捕获到ECT标记为11的报文。PE3正常转发ECT标记为11的报文,同时PE3回复一个ICMP ECN报文。ICMP ECN报文使用原始报文相同的拓扑。
其中,保证ICMP ECN报文使用原始报文相同的拓扑的实现方式例如为,ICMP ECN报文里携带拓扑标识,或者源地址使用目的地址相同拓扑的地址。
具体地,PE1到PE3方向发送的数据报文,和PE3向PE1方向回应ICMP ECN报文使用相同的拓扑ID。换句话说,ICMP ECN报文中携带的拓扑ID,和PE1封装的IPV6头中的拓扑ID,是同一个拓扑ID。例如,PE1封装的IPV6头中的拓扑ID是Red标记,PE3在ICMP ECN报文中携带的拓扑ID也是Red标记。
在一个示例中,ICMP ECN报文中拓扑ID的携带位置为HBH中扩展的选项、或者IPv6头中的TC字段、或者IPv6头中的Flow Label字段。
步骤6:节点B,如PE1或者其他在该转发路径上的有分叉路径的设备(如P1还可以经过P4发送到PE3,P1可以认为是开一个分叉路径设备)收到ICMP ECN报文。节点B根据报文源地址查找相应的路由表,并把该路由对应的红拓扑下一跳设置为拥塞状态(设置拥塞状态这一步是可选的),同时调整分叉路径的优先级权重(把红拓扑下一跳权重调小),分担一部分流量到其他分叉路径,以降低当前路径的负载。
在一个示例中,PE1根据源地址查找到路由后,会判断报文中携带的拓扑ID到底是哪一种拓扑的ID。如果报文中拓扑ID是MRT红拓扑的ID,就将路由中MRT红拓扑对应的下一跳的权重降低。如果报文中拓扑ID是MRT蓝拓扑的ID,就将路由中MRT蓝拓扑对应的下一跳的权重降低。或者,PE1根据报文入端口查找路由并调整下一跳权重。
实例二中PE1调整下一跳权重的动作是可选方式。在另一些实施例中,PE1收到ICMP ECN报文之后,不是调整下一跳权重,而是切换下一跳。
步骤7:如果节点B对应路由的红蓝拓扑下一跳都已经置成拥塞状态,节点B不处理ICMP ECN报文,按照原来的正常流程继续转发。
步骤8:等待一定时间没有收到ICMP ECN报文,节点B取消该拓扑下一跳的拥塞标记。
以上介绍的两个实例提供了根据抓取到的ECT标记为11的报文回复ECN ICMP报文的机制,并提供了扩展ICMP报文通告ECN拥塞信息的方法。实例2实现了将MRT算法加入到FlexAlgo算法,使用MRT算法计算的红蓝拓扑下一跳作为该FlexAlgo相应前缀的多下一跳。并且,以上介绍的两个实例提供了接收到ICMP ECN报文,设置拥塞标记,并调整路由多下一跳权重进行流量调优的方式。
以上两个实例示出的BE场景是示例性地,在另一些实施例中,在TE场景应用上述实例1和实例2所示的方法。另外,可能不使用MRT计算(MRT计算的是BE)不相交路径,还可能使用TE的HSB计算不相交路径,然后通过ICMP ECN报文触发在TE HSB路径中去调整流量。
以上介绍了本申请实施例的方法实施例,以下对本申请实施例提供的网络设备的结构举例说明。
附图16示出了上述实施例中所涉及的网络设备的一种可能的结构示意图。附图16所示的网络设备600例如实现方法200中第一网络设备的功能,或者,网络设备600实现附图8所示场景中PE1的功能。
请参考附图16,网络设备600包括发送单元601、接收单元602和处理单元603。网络设备600中的各个单元全部或部分地通过软件、硬件、固件或者其任意组合来实现。网络设备600中的各个单元用于执行上述方法200中第一网络设备或PE1的相应功能。具体地,发送单元601用于支持网络设备600执行S210。接收单元602用于支持网络设备600执行S250。处理单元603用于支持网络设备600执行S260。
在一个示例中,处理单元603具体用于切换下一跳或者降低下一跳权重。
在一个示例中,发送单元601还用于支持网络设备600发送探测报文。处理单元603用于支持网络设备600根据路径的网络质量确定路径。
网络设备600中各个单元的具体执行过程请参考方法200中相应步骤的详细描述,这里不再一一赘述。
本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可选地有另外的划分方式。
在一个示例中,网络设备600中各个单元集成在一个处理单元中。例如,网络设备600中各个单元集成在同一个芯片上。该芯片包括处理电路和与该处理电路内部连接通信的输入接口以及输出接口。处理单元603通过芯片中的处理电路实现。接收单元602通过芯片中的输入接口实现。发送单元601通过芯片中的输出接口实现。例如,该芯片通过一个或多个现场可编程门阵列(field-programmable gate array,FPGA)、可编程逻辑器件(programmable logic device,PLD)、控制器、状态机、门逻辑、分立硬件部件、任何其它适合的电路、或者能够执行本申请通篇所描述的各种功能的电路的任意组合实现。
在另一些实施例中,网络设备600各个单元单独物理存在。在另一些实施例中,网络设备600一部分单元单独物理存在,另一部分单元集成在一个单元中。例如,在一个示例中,接收单元602和发送单元601是同一个单元。在另一些实施例中,接收单元602和发送单元601是不同的单元。在一个示例中,不同单元的集成采用硬件的形式实现,即,不同单元对应于同一个硬件。又如,不同单元的集成采用软件单元的形式实现。
在网络设备600中通过硬件实现的情况下,网络设备600中处理单元603例如通过网络设备800上主控板810中的中央处理器811实现,又如通过网络设备900中处理器901实现。
网络设备600中接收单元602、发送单元601例如通过网络设备800上接口板830实现,又如通过网络设备900中的通信接口904实现。
在网络设备600中通过软件实现的情况下,网络设备600中各个单元例如为网络设备800上主控板810中的中央处理器811读取存储器812中存储的程序代码后生成的软件,又如为网络设备900中处理器901读取存储器903中存储的程序代码后生成的软件。例如,网络设备600为虚拟化设备。虚拟化设备包括而不限于虚拟机、容器、Pod中的至少一种。在一个示例中,网络设备600以虚拟机的形式,部署在硬件设备(如物理服务器)上。例如,基于通用的物理服务器结合网络功能虚拟化(network functions virtualization,NFV)技术来实现网络设备600。采用虚拟机的方式实现时,网络设备600例如为虚拟主机、虚拟路由器或虚拟交换机。本领域技术人员通过阅读本申请即可结合NFV技术在通用物理服务器上虚拟出网络设备600。在另一些实施例中,网络设备600以容器(例如docker容器)的形式,部署在硬件设备上。例如,网络设备600执行上述方法实施例的流程被封装在镜像文件中,硬件设备通过运行镜像文件来创建网络设备600。在另一些实施例中,网络设备600以Pod的形式,部署在硬件设备上。Pod包括多个容器,每个容器用于实现网络设备600中的一个或多个单元。
附图17示出了上述实施例中所涉及的网络设备的一种可能的结构示意图。附图17所示的网络设备700例如实现方法200中第二网络设备的功能,或者,网络设备700实现附图8所示场景中PE3或P3的功能。
请参考附图17,网络设备700包括接收单元701、处理单元702和发送单元703。网络设备700中的各个单元全部或部分地通过软件、硬件、固件或者其任意组合来实现。网络设备700中的各个单元用于执行上述方法200中第一网络设备或PE3或P3的相应功能。具体地,处理单元702用于支持网络设备700执行S230。发送单元703用于支持网络设备700执行S240。可选地,网络设备还包括接收单元701,接收单元701用于支持网络设备700执行S220。
在一个示例中,处理单元702还用于支持网络设备700检测拥塞。
在一个示例中,接收单元701还用于支持网络设备700接收拥塞通告报文。
在一个示例中,处理单元702用于支持网络设备700收集路径的网络质量信息。
本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可选地有另外的划分方式。
在一个示例中,网络设备700中各个单元集成在一个处理单元中。例如,网络设备700中各个单元集成在同一个芯片上。该芯片包括处理电路和与该处理电路内部连接通信的输入接口以及输出接口。处理单元702通过芯片中的处理电路实现。接收单元701通过芯片中的输入接口实现。发送单元703通过芯片中的输出接口实现。例如,该芯片通过一个或多个现场可编程门阵列(field-programmable gate array,FPGA)、可编程逻辑器件(programmable logic device,PLD)、控制器、状态机、门逻辑、分立硬件部件、任何其它适合的电路、或者能够执行本申请通篇所描述的各种功能的电路的任意组合实现。
在另一些实施例中,网络设备700各个单元单独物理存在。在另一些实施例中,网络设备700一部分单元单独物理存在,另一部分单元集成在一个单元中。例如,在一个示例中,接收单元701和发送单元703是同一个单元。在另一些实施例中,接收单元701和发送单元703是不同的单元。在一个示例中,不同单元的集成采用硬件的形式实现,即,不同单元对应于同一个硬件。又如,不同单元的集成采用软件单元的形式实现。
在网络设备700中通过硬件实现的情况下,网络设备700中处理单元702例如通过网络设备800上主控板810中的中央处理器811实现,又如通过网络设备900中处理器901实现。
网络设备700中接收单元701、发送单元703例如通过网络设备800上接口板830实现,又如通过网络设备900中的通信接口904实现。
在网络设备700中通过软件实现的情况下,网络设备700中各个单元例如为网络设备800上主控板810中的中央处理器811读取存储器812中存储的程序代码后生成的软件,又如为网络设备900中处理器901读取存储器903中存储的程序代码后生成的软件。例如,网络设备700为虚拟化设备。虚拟化设备包括而不限于虚拟机、容器、Pod中的至少一种。在一个示例中,网络设备700以虚拟机的形式,部署在硬件设备(如物理服务器)上。例如,基于通用的物理服务器结合网络功能虚拟化(network functions virtualization,NFV)技术来实现网络设备700。采用虚拟机的方式实现时,网络设备700例如为虚拟主机、虚拟路由器或虚拟交换机。本领域技术人员通过阅读本申请即可结合NFV技术在通用物理服务器上虚拟出网络设备700。在另一些实施例中,网络设备700以容器(例如docker容器)的形式,部署在硬件设备上。例如,网络设备700执行上述方法实施例的流程被封装在镜像文件中,硬件设备通过运行镜像文件来创建网络设备700。在另一些实施例中,网络设备700以Pod的形式,部署在硬件设备上。Pod包括多个容器,每个容器用于实现网络设备700中的一个或多个单元。
以上通过网络设备600和网络设备700,从逻辑功能的角度介绍了如何实现第一网络设备或第二网络设备。以下通过网络设备800或网络设备900,从硬件的角度介绍如何实现第一网络设备或第二网络设备。附图18所示的网络设备800或者附图19所示的网络设备900是对第一网络设备或第二网络设备的硬件结构的举例说明。
网络设备800或网络设备900对应于上述方法200中的第一网络设备或第二网络设备,网络设备800或网络设备900中的各硬件、模块和上述其他操作和/或功能分别为了实现方法实施例中第一网络设备或第二网络设备所实施的各种步骤和方法,关于网络设备800或网络设备900如何实现拥塞控制的详细流程,具体细节可参见上述方法200,为了简洁,在此不再赘述。其中,方法200的各步骤通过网络设备800或网络设备900处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块例如位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤,为避免重复,这里不再详细描述。
参见附图18,附图18示出了本申请一个示例性实施例提供的网络设备的结构示意图,网络设备800例如配置为方法200中的第一网络设备或第二网络设备。网络设备800包括:主控板810和接口板830。
主控板也称为主处理单元(main processing unit,MPU)或路由处理卡(routeprocessor card),主控板810用于对网络设备800中各个组件的控制和管理,包括路由计算、设备管理、设备维护、协议处理功能。主控板810包括:中央处理器811和存储器812。
接口板830也称为线路接口单元卡(line processing unit,LPU)、线卡(linecard)或业务板。接口板830用于提供各种业务接口并实现数据包的转发。业务接口包括而不限于以太网接口、POS(packet over sONET/SDH)接口等,以太网接口例如是灵活以太网业务接口(flexible ethernet clients,FlexE clients)。接口板830包括:中央处理器831、网络处理器832、转发表项存储器834和物理接口卡(physical interface card,PIC)833。
接口板830上的中央处理器831用于对接口板830进行控制管理并与主控板810上的中央处理器811进行通信。
网络处理器832用于实现报文的转发处理。网络处理器832的形态例如是转发芯片。具体而言,网络处理器832用于基于转发表项存储器834保存的转发表转发接收到的报文,如果报文的目的地址为网络设备800的地址,则将该报文上送至CPU(如中央处理器811)处理;如果报文的目的地址不是网络设备800的地址,则根据该目的地址从转发表中查找到该目的地址对应的下一跳和出接口,将该报文转发到该目的地址对应的出接口。其中,上行报文的处理包括:报文入接口的处理,转发表查找;下行报文的处理:转发表查找等等。
物理接口卡833用于实现物理层的对接功能,原始的流量由此进入接口板830,以及处理后的报文从该物理接口卡833发出。物理接口卡833也称为子卡,可安装在接口板830上,负责将光电信号转换为报文并对报文进行合法性检查后转发给网络处理器832处理。在一个示例中,中央处理器也可执行网络处理器832的功能,比如基于通用CPU实现软件转发,从而物理接口卡833中不需要网络处理器832。
可选地,网络设备800包括多个接口板,例如网络设备800还包括接口板840,接口板840包括:中央处理器841、网络处理器842、转发表项存储器844和物理接口卡843。
可选地,网络设备800还包括交换网板820。交换网板820也例如称为交换网板单元(switch fabric unit,SFU)。在网络设备有多个接口板830的情况下,交换网板820用于完成各接口板之间的数据交换。例如,接口板830和接口板840之间例如通过交换网板820通信。
主控板810和接口板830耦合。例如。主控板810、接口板830和接口板840,以及交换网板820之间通过系统总线与系统背板相连实现互通。在一种可能的实现方式中,主控板810和接口板830之间建立进程间通信协议(inter-process communication,IPC)通道,主控板810和接口板830之间通过IPC通道进行通信。
在逻辑上,网络设备800包括控制面和转发面,控制面包括主控板810和中央处理器831,转发面包括执行转发的各个组件,比如转发表项存储器834、物理接口卡833和网络处理器832。控制面执行路由器、生成转发表、处理信令和协议报文、配置与维护设备的状态等功能,控制面将生成的转发表下发给转发面,在转发面,网络处理器832基于控制面下发的转发表对物理接口卡833收到的报文查表转发。控制面下发的转发表例如保存在转发表项存储器834中。在有些实施例中,控制面和转发面例如完全分离,不在同一设备上。
应理解,本申请实施例中接口板840上的操作与接口板830的操作一致,为了简洁,不再赘述。应理解,本实施例的网络设备800可对应于上述各个方法实施例中的第一网络设备或第二网络设备,该网络设备800中的主控板810、接口板830和/或840例如实现上述各个方法实施例中的第一网络设备或第二网络设备所具有的功能和/或所实施的各种步骤,为了简洁,在此不再赘述。
值得说明的是,主控板可能有一块或多块,有多块的时候例如包括主用主控板和备用主控板。接口板可能有一块或多块,网络设备的数据处理能力越强,提供的接口板越多。接口板上的物理接口卡也可以有一块或多块。交换网板可能没有,也可能有一块或多块,有多块的时候可以共同实现负荷分担冗余备份。在集中式转发架构下,网络设备可以不需要交换网板,接口板承担整个系统的业务数据的处理功能。在分布式转发架构下,网络设备可以有至少一块交换网板,通过交换网板实现多块接口板之间的数据交换,提供大容量的数据交换和处理能力。所以,分布式架构的网络设备的数据接入和处理能力要大于集中式架构的设备。可选地,网络设备的形态也可以是只有一块板卡,即没有交换网板,接口板和主控板的功能集成在该一块板卡上,此时接口板上的中央处理器和主控板上的中央处理器在该一块板卡上可以合并为一个中央处理器,执行两者叠加后的功能,这种形态设备的数据交换和处理能力较低(例如,低端交换机或路由器等网络设备)。具体采用哪种架构,取决于具体的组网部署场景,此处不做任何限定。
参见附图19,附图19示出了本申请一个示例性实施例提供的网络设备的结构示意图,该网络设备900例如配置为方法200中的第一网络设备或第二网络设备。该网络设备900可以是主机、服务器或个人计算机等。该网络设备900可以由一般性的总线体系结构来实现。
网络设备900包括至少一个处理器901、通信总线902、存储器903以及至少一个通信接口904。
处理器901例如是通用中央处理器(central processing unit,CPU)、网络处理器(network processer,NP)、图形处理器(graphics processing unit,GPU)、神经网络处理器(neural-network processing units,NPU)、数据处理单元(data processing unit,DPU)、微处理器或者一个或多个用于实现本申请方案的集成电路。例如,处理器901包括专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。PLD例如是复杂可编程逻辑器件(complexprogrammable logic device,CPLD)、现场可编程逻辑门阵列(field-programmable gatearray,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合。
通信总线902用于在上述组件之间传送信息。通信总线902可以分为地址总线、数据总线、控制总线等。为便于表示,附图19中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器903例如是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,又如是随机存取存储器(random access memory,RAM)或者可存储信息和指令的其它类型的动态存储设备,又如是电可擦可编程只读存储器(electrically erasable programmable read-only Memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器903例如是独立存在,并通过通信总线902与处理器901相连接。存储器903也可以和处理器901集成在一起。
通信接口904使用任何收发器一类的装置,用于与其它设备或通信网络通信。通信接口904包括有线通信接口,还可以包括无线通信接口。其中,有线通信接口例如可以为以太网接口。以太网接口可以是光接口,电接口或其组合。无线通信接口可以为无线局域网(wireless local area networks,WLAN)接口,蜂窝网络通信接口或其组合等。
在具体实现中,作为一种实施例,处理器901可以包括一个或多个CPU,如附图19中所示的CPU0和CPU1。
在具体实现中,作为一种实施例,网络设备900可以包括多个处理器,如附图19中所示的处理器901和处理器905。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,网络设备900还可以包括输出设备和输入设备。输出设备和处理器901通信,可以以多种方式来显示信息。例如,输出设备可以是液晶显示器(liquid crystal display,LCD)、发光二级管(light emitting diode,LED)显示设备、阴极射线管(cathode ray tube,CRT)显示设备或投影仪(projector)等。输入设备和处理器901通信,可以以多种方式接收用户的输入。例如,输入设备可以是鼠标、键盘、触摸屏设备或传感设备等。
在一个示例中,存储器903用于存储执行本申请方案的程序代码910,处理器901可以执行存储器903中存储的程序代码910。也即是,网络设备900可以通过处理器901以及存储器903中的程序代码910,来实现方法实施例提供的方法。
本申请实施例的网络设备900可对应于上述各个方法实施例中的第一网络设备或第二网络设备,并且,该网络设备900中的处理器901、通信接口904等可以实现上述各个方法实施例中的第一网络设备或第二网络设备所具有的功能和/或所实施的各种步骤和方法。为了简洁,在此不再赘述。
参见附图20,本申请实施例提供了一种网络系统1000,网络系统1000包括:第一网络设备1001和第二网络设备1002。可选的,第一网络设备1001为如附图16所示的网络设备600或附图18所示的网络设备800或附图19所示的网络设备900,第二网络设备1002为如附图17的网络设备700或附图18所示的网络设备800或附图19所示的网络设备900。
本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参见前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例中方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。还应理解,尽管以下描述使用术语第一、第二等来描述各种元素,但这些元素不应受术语的限制。这些术语只是用于将一元素与另一元素区别分开。例如,在不脱离各种示例的范围的情况下,第一网络设备可以被称为第二网络设备,并且类似地,第二网络设备可以被称为第一网络设备。第一网络设备和第二网络设备都可以是网络设备,并且在某些情况下,可以是单独且不同的网络设备。
本申请中术语“至少一个”的含义是指一个或多个,本申请中术语“多个”的含义是指两个或两个以上。
还应理解,术语“如果”可被解释为意指“当...时”(“when”或“upon”)或“响应于确定”或“响应于检测到”。类似地,根据上下文,短语“如果确定...”或“如果检测到[所陈述的条件或事件]”可被解释为意指“在确定...时”或“响应于确定...”或“在检测到[所陈述的条件或事件]时”或“响应于检测到[所陈述的条件或事件]”。
以上描述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机程序指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例中的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。
该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机程序指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digital video disc,DVD)、或者半导体介质(例如固态硬盘)等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (20)
1.一种拥塞控制方法,其特征在于,所述方法包括:
第一网络设备通过第一路径发送第一报文;
所述第一网络设备接收所述第一路径上的第二网络设备发送的拥塞控制报文,所述拥塞控制报文指示所述第一路径拥塞;
所述第一网络设备根据所述拥塞控制报文将第二报文的转发路径从所述第一路径切换至第二路径。
2.根据权利要求1所述的方法,其特征在于,所述拥塞控制报文包括拥塞标记,所述拥塞标记用于指示所述第一路径拥塞。
3.根据权利要求2所述的方法,其特征在于,所述拥塞控制报文为因特网控制报文协议ICMP报文或,所述拥塞控制报文的第一位置包括所述拥塞标记,所述第一位置包括:互联网协议IP基本头或IP扩展头。
4.根据权利要求3所述的方法,其特征在于,在所述拥塞控制报文为ICMP报文的情况下,所述拥塞标记位于ICMP代码字段或ICMP类型字段。
5.根据权利要求1所述的方法,其特征在于,所述拥塞控制报文包括报文类型,所述报文类型用于指示所述拥塞控制报文的类型为拥塞控制报文。
6.根据权利要求5所述的方法,其特征在于,所述报文类型的携带位置为互联网协议第六版IPv6头中的下一个头next header字段。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述拥塞控制报文还包括所述第一路径的网络质量信息。
8.根据权利要求1至7中任一项所述的方法,其特征在于,所述第二网络设备包括所述第一路径的端点设备、所述第一路径上发生拥塞的设备或所述第一路径上发生拥塞的网络设备的上一跳设备。
9.根据权利要求1至8中任一项所述的方法,其特征在于,所述第一路径是通过双向共路算法计算出来的,所述双向共路算法的链路度量metric为正向代价cost与反向cost之和。
10.根据权利要求1至9中任一项所述的方法,其特征在于,所述第一网络设备根据所述拥塞控制报文将第二报文的转发路径从所述第一路径切换至第二路径,包括:
所述第一网络设备将下一跳从多拓扑冗余树MRT红拓扑对应的下一跳切换为MRT蓝拓扑对应的下一跳;或者,
所述第一网络设备将下一跳从MRT蓝拓扑对应的下一跳切换为MRT红拓扑对应的下一跳;或者,
所述第一网络设备降低MRT红拓扑或者MRT蓝拓扑对应的下一跳权重。
11.根据权利要求1-10中任一项所述的方法,其特征在于,所述第一网络设备根据所述拥塞控制报文将第二报文的转发路径从所述第一路径切换至第二路径之前,所述方法还包括:
所述第一网络设备发送探测报文,所述探测报文用于探测从所述第一网络设备到所述第一路径的目的节点之间的至少一条路径的网络质量,所述至少一条路径包括所述第二路径;
所述第一网络设备根据所述第二路径的网络质量确定所述第二路径。
12.根据权利要求1至11中任一项所述的方法,其特征在于,应用于互联网协议第6版段路由SRv6网络中。
13.一种拥塞控制方法,其特征在于,所述方法包括:
响应于第一路径拥塞,第一网络设备生成拥塞控制报文,所述拥塞控制报文指示所述第一路径拥塞;
所述第一网络设备向所述第一路径上的第二网络设备发送所述拥塞控制报文。
14.根据权利要求13所述的方法,其特征在于,所述第一网络设备包括所述第一路径的端点设备、所述第一路径上发生拥塞的设备或所述第一路径上发生拥塞的网络设备的上一跳设备。
15.根据权利要求13至14中任一项所述的方法,其特征在于,所述第一网络设备生成拥塞控制报文之前,所述方法还包括:
所述第一网络设备检测到所述第一网络设备发生拥塞;或者,
所述第一网络设备接收所述第一路径上第三网络设备发送的拥塞通告报文,所述拥塞通告报文指示所述第三网络设备发生拥塞。
16.根据权利要求13至15中任一项所述的方法,其特征在于,所述拥塞控制报文还包括所述第一路径的网络质量信息,所述第一网络设备生成拥塞控制报文之前,所述方法还包括:
所述第一网络设备收集所述第一路径的网络质量信息。
17.一种网络设备,其特征在于,所述网络设备包括:
发送单元,用于通过第一路径发送第一报文;
接收单元,用于接收所述第一路径上的第二网络设备发送的拥塞控制报文,所述拥塞控制报文指示所述第一路径拥塞;
处理单元,用于根据所述拥塞控制报文将第二报文的转发路径从所述第一路径切换至第二路径。
18.一种网络设备,其特征在于,所述网络设备包括:
处理单元,用于响应于所述第一路径拥塞,生成拥塞控制报文,所述拥塞控制报文指示所述第一路径拥塞;
发送单元,用于向所述第一路径上的第二网络设备发送所述拥塞控制报文。
19.根据权利要求18所述的网络设备,其特征在于,
所述处理单元,还用于检测到发生拥塞;或者,
所述接收单元,还用于接收所述第一路径上第三网络设备发送的拥塞通告报文,所述拥塞通告报文指示所述第三网络设备发生拥塞。
20.一种网络系统,其特征在于,所述网络系统包括如权利要求17所述的网络设备以及如权利要求18或19所述的网络设备。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011480903.6A CN114640631A (zh) | 2020-12-15 | 2020-12-15 | 拥塞控制方法及网络设备 |
PCT/CN2021/136986 WO2022127698A1 (zh) | 2020-12-15 | 2021-12-10 | 拥塞控制方法及网络设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011480903.6A CN114640631A (zh) | 2020-12-15 | 2020-12-15 | 拥塞控制方法及网络设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114640631A true CN114640631A (zh) | 2022-06-17 |
Family
ID=81944451
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011480903.6A Pending CN114640631A (zh) | 2020-12-15 | 2020-12-15 | 拥塞控制方法及网络设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114640631A (zh) |
WO (1) | WO2022127698A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023246616A1 (zh) * | 2022-06-23 | 2023-12-28 | 华为技术有限公司 | 网络拥塞控制方法及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117201407B (zh) * | 2023-11-07 | 2024-01-05 | 湖南国科超算科技有限公司 | 一种应用感知的IPv6网络快速拥塞检测与避免方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017185307A1 (zh) * | 2016-04-28 | 2017-11-02 | 华为技术有限公司 | 一种拥塞处理的方法、主机及系统 |
US10778568B2 (en) * | 2017-12-05 | 2020-09-15 | Mellanox Technologies, Ltd. | Switch-enhanced short loop congestion notification for TCP |
CN111865810B (zh) * | 2019-04-30 | 2022-08-09 | 华为技术有限公司 | 一种拥塞信息采集方法、系统、相关设备及计算机存储介质 |
-
2020
- 2020-12-15 CN CN202011480903.6A patent/CN114640631A/zh active Pending
-
2021
- 2021-12-10 WO PCT/CN2021/136986 patent/WO2022127698A1/zh active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023246616A1 (zh) * | 2022-06-23 | 2023-12-28 | 华为技术有限公司 | 网络拥塞控制方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2022127698A1 (zh) | 2022-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4102785A1 (en) | Message processing method and apparatus, and network device and storage medium | |
CN109691037B (zh) | 用于数据中心负载均衡的方法和系统 | |
US20230095244A1 (en) | Packet sending method, device, and system | |
JP3501093B2 (ja) | QoS経路計算装置 | |
CN112311675B (zh) | 用于分段路由(sr)路径的保证型带宽 | |
CN113347091B (zh) | 灵活算法感知边界网关协议前缀分段路由标识符 | |
CN113411834B (zh) | 报文处理方法、装置、设备及存储介质 | |
WO2021000752A1 (zh) | 一种在数据中心网络中转发报文的方法及相关装置 | |
CN112868214B (zh) | 分组内的协调负载转移oam记录 | |
US12040966B2 (en) | Path switching method, device, and system | |
WO2022127698A1 (zh) | 拥塞控制方法及网络设备 | |
US20170195203A1 (en) | Method, apparatus, and system for implementing packet loss detection | |
US12021734B2 (en) | Network-topology discovery using packet headers | |
WO2022007550A1 (zh) | 一种负载均衡方法、装置、网络设备及系统 | |
CN115208829A (zh) | 报文处理的方法及网络设备 | |
CN115150313A (zh) | 发送报文、生成路由的方法、装置、存储介质及系统 | |
WO2023130957A1 (zh) | 一种路由选路的方法及相关设备 | |
EP4391482A1 (en) | Method, apparatus and system for acquiring capability, method, apparatus and system for sending capability information, and storage medium | |
EP4277226A1 (en) | Packet transmission method, transmission control method, apparatus, and system | |
EP4031976B1 (en) | Method and system for cache management in a network device | |
WO2023231438A1 (zh) | 报文发送的方法、网络设备及系统 | |
US20240356839A1 (en) | Route selection method and related device | |
US20140269737A1 (en) | System, method and apparatus for lsp setup using inter-domain abr indication | |
CN117792978A (zh) | 一种路径故障检测的方法以及相关装置 | |
CN116781593A (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 |