CN109921990B - 多线程路由处理 - Google Patents
多线程路由处理 Download PDFInfo
- Publication number
- CN109921990B CN109921990B CN201811153390.0A CN201811153390A CN109921990B CN 109921990 B CN109921990 B CN 109921990B CN 201811153390 A CN201811153390 A CN 201811153390A CN 109921990 B CN109921990 B CN 109921990B
- Authority
- CN
- China
- Prior art keywords
- route
- thread
- processing
- routing
- network device
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/12—Shortest path evaluation
- H04L45/122—Shortest path evaluation by minimising distances, e.g. by selecting a route with minimum of number of hops
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/325—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the network layer [OSI layer 3], e.g. X.25
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开涉及多线程路由处理。通常,本公开内容描述了用于分布处理网络装置的多个执行线程之间的路由的技术。在一些实例中,一种方法包括:利用多个执行线程的一个线程识别该执行线程的第一路由处理线程以处理路由协议的第一路由,该第一路由通过网络装置接收到;利用该线程识别执行线程的第二路由处理线程以处理路由协议的第二路由,该第二路由通过网络装置接收到;通过在多个处理核心的第一核心上执行的第一路由处理线程处理第一路由;以及至少部分地与在多个处理核心的第一核心上执行的第一路由处理线程同时,通过在第二核心上执行的第二路由处理线程处理第二路由。
Description
技术领域
本公开内容大体上涉及计算机网络,并且更具体地,涉及网络路由协议处理。
背景技术
计算机网络是交换数据并共享资源的相互连接的计算装置的集合。在诸如因特网等基于数据包的网络中,计算装置通过将数据划分成称为数据包的小区块来传送数据,这些小区块被单独地通过网络从源装置路由到目标装置。目标装置从数据包提取数据,并将数据组合成其原始形式。将数据分成数据包使源装置能够仅重新发送那些在传输期间可能丢失的单独的数据包。
网络内的某些装置,诸如路由器,维护描述用于网络的路由的路由信息。通常,路由表示用于网络前缀的可达到性的信息。路由器可从路由信息生成转发信息,该转发信息由路由器使用以通过网络中继数据包流,并且更具体地,以将数据包流中继至下一跳。关于数据包的转发,来自网络路由器的“下一跳”一般指用于指定路由的下游的相邻装置。接收到输入的数据包时,路由器检查数据包内的信息以识别数据包的目的地。基于目的地,路由器根据转发信息对数据包进行转发。
诸如因特网、管理域或网络等一些计算机网络通常包括根据定义的路由协议交换路由信息的许多路由器。其中,定义的路由协议的实例可包括边界网关协议(BGP)、中间系统到中间系统(IS-IS)协议和开放最短路径优先(OSPF)协议。当两个路由器最初连接时,路由器交换路由信息并且从交换的路由信息生成转发信息。具体地,两个路由器发起路由通信“会话”,它们经由该路由通信“会话”根据定义的路由协议使用路由协议消息交换路由信息。路由器经由路由协议继续通信以逐渐更新路由信息,并且接着根据更新的路由信息中表示的网络拓扑的变化更新它们的转发信息。例如,路由器可发送更新消息以公布最新可用的路由或者告知一些路由不再可用。
例如,使用类似BGP的路由协议的计算机网络基于具有数据包的寻址信息在网络节点之间引导数据包。类似BGP更新消息的路由协议路由通告公布用于经由网络可达到的网络前缀的一个或多个路由。诸如BGP网络的路由域可包括一个或多个路由器、路由反射器、节点和端点装置(例如,服务器、打印机和计算机)。路由域内的一些路由器可一起组合为冗余群集。路由域内的每个路由器一般根据路由器上存储的路由和数据包的目的地址来转发数据包。路由反射器(诸如,BGP路由反射器)与其他路由器一样接收和公布路由,但是一般根据路由不转发数据包。
发明内容
通常,本公开内容描述了用于分布处理网络装置的多个执行线程之间的路由的技术。例如,网络装置(诸如,路由器或路由反射器)从多个同级装置接收路由,每一个路由指定用于网络前缀的可达到性信息。路由可部分地接收和表示为包括在路由通告中的一个或多个网络前缀,诸如,边界网关协议(BGP)更新消息。在网络装置的处理核心上执行的软件线程最初处理所接收的路由以识别在网络装置上执行的多个路由处理线程中的一个,利用该网络装置处理该路由。这种识别可包括将散列函数应用于路由的网络前缀。该线程随后发信号给识别的路由处理线程以处理和存储该路由。例如,通过路由处理线程为在路由协议消息中接收的路由执行的示例性处理步骤可包括接收并分析所接收的路由协议消息;生成新路由;为该路由解析下一跳;准备用于利用所解析的下一跳(举例来说)公布该路由的新的路由协议消息;并且将新路由协议消息发送至网络装置的一个或多个路由协议对等装置。
还描述了就网络装置的总路由信息状态而言,用于使路由处理线程之中的一致性的技术。这种技术可包括促进用于由一个或多个路由处理线程存储的分布路由的路由解析、路由聚合、以及路由处理线程之中的路由显示功能。
该技术可提供一个或多个优势。例如,该技术可以根据与公布的路由相关联的路由前缀通过在多个路由处理软件线程之中分布路由处理来改善网络装置内的入站路由处理的平行化。这可减少用于处理由网络装置接收到的任何给定路由的延迟和/或可减少网络装置的总路由收敛时间。
在一个实例中,一种方法包括:利用在网络装置的至少一个基于硬件的处理器的多个处理核心上执行的至少一个路由协议处理的多个执行线程的一个线程识别执行线程的第一路由处理线程,以处理路由协议的第一路由,该第一路由通过网络装置接收;利用该线程识别执行线程的第二路由处理线程以处理路由协议的第二路由,该第二路由通过网络装置接收;通过在多个处理核心的第一核心上执行的第一路由处理线程处理第一路由;以及至少部分地与在多个处理核心的第一核心上执行的第一路由处理线程同时,通过在多个处理核心的第二核心上执行的第二路由处理线程处理第二路由。
在一个实例中,网络装置包括:网络接口卡;以及至少一个基于硬件的处理器,包括执行用于至少一个路由协议处理的多个执行线程的多个处理核心,至少一个基于硬件的处理器被配置为:利用多个执行线程的一个线程识别执行线程的第一路由处理线程,以处理路由协议的第一路由,该第一路由通过网络装置接收;利用该线程识别执行线程的第二路由处理线程以处理路由协议的第二路由,第二路由通过网络装置接收;通过被配置为在多个处理核心的第一核心上执行的第一路由处理线程来处理第一路由;以及至少部分地与在多个处理核心的第一核心上执行的第一路由处理线程同时,通过被配置为在多个处理核心的第二核心上执第二路由处理线程处理第二路由。
在一个实例中,非易失性计算机可读介质包括指令,当执行时,该指令使得一个或多个网络装置的一个或多个基于硬件的处理器执行以下操作,包括:利用被配置为在一个或多个基于硬件的处理器的多个处理核心上执行的至少一个路由协议处理的多个执行线程的一个线程识别执行线程的第一路由处理线程以处理路由协议的第一路由,该第一路由通过网络装置接收;利用该线程识别执行线程的第二路由处理线程以处理路由协议的第二路由,该第二路由通过网络装置接收;通过在多个处理核心的第一核心上执行的第一路由处理线程处理第一路由;以及至少部分地与在多个处理核心的第一核心上执行的第一路由处理线程同时,通过在多个处理核心的第二核心上执行的第二路由处理线程处理第二路由。
在附图和以下说明书中阐述了本公开内容的技术的一个或多个实例的细节。这些技术的其他特征、目的和优点将从说明书和附图以及权利要求书变得显而易见。
附图说明
图1是示出了根据本公开内容的技术的被配置为执行平行路由处理线程的示例性网络装置的框图。
图2是示出了根据本公开内容中描述的技术的通过多个路由处理线程的分布的、平行的路由处理的概念图。
图3是示出了根据本文中描述的技术的用于将路由分布至多个路由处理线程的示例性结果的柱形图。
图4是示出了根据本文中描述的技术的用于包括路由解析的分布式路由处理的示例性技术的框图。
图5是示出了根据本公开内容的技术的用于路由解析的示例性操作模式的流程图。
图6A至图6B是示出了根据本公开内容的技术的用于路由处理模块的线程以显示分布式路由信息库的路由的示例性操作模式的流程图。
贯穿附图和说明书,相同参考符号指代相同元件。
具体实施方式
图1是示出了根据本公开内容的技术被配置为执行平行路由处理线程的示例性网络装置的框图。网络装置12可表示路由器、路由反射器、或经由一个或多个网络链路连接至将路由公布给网络装置12的其他网络装置的其他网络装置。例如,网络装置12可以是服务提供商网络的核心或边缘路由器、企业网、诸如数据中心网络等边缘网络、存取路由器、控制器、真实或虚拟服务器或者被配置为执行路由或路由反射器的其他计算节点、或者上述网络或其他网络中的任一个的路由反射器。
网络装置12包括多核计算环境52,该多核计算环境包括多个CPU处理器或核心56A-56K(总体表示为,“核心56”),其中,“K”是大于1的整数。多核计算环境52可包括任意数量的处理器以及任意数量的硬件核心,例如从四至数千个。处理核心56中的每一个各自都包括独立的执行单元以执行符合用于该核心的指令集架构的指令。处理核心56可以分别被实现为独立集成电路(IC)或者可以组合在分别使用单个IC(即,芯片多处理器)、数据包或模具实现的一个或多个多核处理器(或“众核”处理器)内。可替换地,或者此外,多核计算环境52可包括专用硬件,诸如,一个或多个集成电路、一个或多个专用集成电路(ASIC)、一个或多个专用处理器(ASSP)、一个或多个现场可编程门阵列(FPGA)、或者一个或多个上述专用硬件的实例的任何组合,以用于执行本文中描述的技术。如本文中使用的,“处理器”或者“处理电路”可以指的是一个或多个核心56。
存储器58表示主存储器。存储器58的实例包括非易失性计算机可读介质,该非易失性计算机可读介质包括存储器,诸如,随机存取存储器(RAM)(包括各种形式的动态RAM(DRAM),例如,DDR2SDRAM和DDR3)、或者静态RAM(SRAM)和闪速存储器。存储盘59是固定的或可移去存储器介质的形式,该介质可以用于运载或存储指令或数据结构形式的期望的程序代码和程序数据并且可以由处理器、或者任何其他类型的易失性或非易失性存储器存取,该易失性或非易失性存储器存储指令以使得一个或多个核心56执行本文中描述的技术。存储装置59的实例包括磁盘驱动和/或光驱。
多核计算环境52、存储器58和存储装置59为执行控制平面34A的控制单元14执行硬件操作环境,并且在一些情况下,为网络装置12执行转发或数据平面34B功能。即,在这个实例中,控制单元14被分成两个逻辑或物理“平面”以包括第一控制或路由平面34A(“控制平面34A”)以及第二数据或转发平面34B(“数据平面34B”)。即,控制单元14将两个分开的功能,例如,路由/控制和转发/数据功能,例如在逻辑上,实施为在硬件部件的相同组上执行分开的软件情况,或者在物理上,实施为分开的物理专用硬件部件,该部件静态实施硬件中的功能或者动态执行软件或计算机程序以实施该功能。
控制平面34A限定网络装置12的控制平面功能。控制平面34A管理和控制网络12的行为,包括数据平面34B的行为。控制平面34A的操作系统36提供用于每个由一个或多个执行线程构成的多个不同处理的运行环境。操作系统36可以表示例如诸如Linux或Berkeley软件分发(BSD)的UNIX操作系统派生物。操作系统36可以提供资料库和驱动器,这些处理通过驱动器可与例如数据平面34B或者路由器30的其他硬件相互作用,包括用于网络装置12的文件系统和主存储器。操作系统36的资料库和驱动器可包括应用编程接口(API),该应用编程接口为开发者提供标准接口以启用由资料库和驱动器暴露的操作系统36和网络装置12的功能。操作系统36支持用于多个软件执行线程的多线程。尽管根据包括所接收的路由的路由信息对关于包括用于转发数据包的数据平面34B的网络装置12进行了描述,但是本公开内容的技术适用于执行控制平面34A操作的网络装置,诸如控制器和路由反射器等,但是可根据包括所接收的路由的路由信息关于转发数据包执行有限的数据平面34B操作。在一些情况下,控制平面34A和数据平面34B在单个网络装置机箱内不共置但是分布在多个装置之中。例如,作为控制器的网络装置12的实例可关于路由处理执行本文中描述的技术,并且使用软件定义网络(SDN)技术利用转发信息编程一个或多个网络节点以实施该网络内的路由的实现。
网络装置12包括经由总线或其他通信链路耦接至控制单元14的一个或多个网络接口卡50。接口卡包括被配置为接收网络电缆的一个或多个端口以将网络装置12耦接至根据路由协议公布路由的其他网络装置。
控制单元14被配置为执行路由协议模块16,该路由协议模块表示例如通过执行路由协议以公布和接收路由,处理所接收的路由以解析下一跳,并且在一些情况下生成转发信息来管理网络12的路由信息的一个或多个计算器处理。在网络装置12的实例中,用于网络装置12的转发信息通过数据平面34B的转发信息库38来表示。例如,通过路由协议模块16执行的其他操作可包括计算标记交换路径(LSP),使用LSP信令协议给LSP发信号,管理路由情况,管理层2和层3虚拟专用网络,并且管理组播组且计算用于组播流量的组播分布树。
路由协议模块16包括多个软件执行线程26、28、31和40,每个软件执行线程可在一个不同的核心56上执行。线程26、28、31和40可根据多线程调度方案例如使用时间分片通过用于核心56执行的操作系统36调度,并且路由协议模块16可表示具有多个软件执行线程的总体软件处理。
作为一个实例,线程40执行一个或多个协议,诸如,内部网关协议(IGP)42和资源预留协议(RSVP)44。例如,用于IGP 42的IGP可包括开放最短路径优先(OSPF)、中间系统到中间系统(IS-IS)和路由信息协议(RIP)。例如,可通过线程40执行的其他协议(未示出)可包括用于L3VPN、L2VPN、以太网VPN、组播VPN、虚拟专用LAN服务、协议无关组播、标签分发协议的信令和控制协议。在一些实例中,主线程28和线程40可以结合为单个线程、或者执行用于一组通用协议的相似操作的多个线程。
尽管主要相对于边界网关协议(BGP)描述了本公开内容的技术,但是这些技术同样适用于根据其他层3路由协议、以及其中需要路由解析的内部网关协议(诸如,任何距离向量协议(例如,RIP))处理路由协议消息中收到的路由信息。
在这个实例中,路由协议模块16包括接收和输出用于路由协议、BGP20的路由协议消息的一个或多个边界网关协议(BGP)输入-输出(IO)线程31。BGP IO线程31可管理由网络装置12通过主线程28和路由处理线程26A-26N(共同地,“路由处理线程26”)在用于处理的IFC 50处接收的路由协议消息的接收队列。BGP IP线程31可管理由路由处理线程26生成并且用于经由IFC 50输出的路由协议消息的输出队列。线程26的数量N可通过网络装置12的用户或操作员是可配置的。路由协议模块16可包括用于利用内核路由表(也未示出)管理和/或交换路由的另外的一个或多个线程(未示出)。
根据本文中描述的技术,路由协议模块16包括通过网络装置12在路由协议消息中接收到的用于分布和执行路由的分布处理的多个、同时执行、路由处理软件线程26。通常,路由协议消息公布一个或多个路由,每个路由由目的地网络前缀和用于到达目的地网络前缀的网络的下一跳路由器(或更简单地,“下一跳”)构成。例如,BGP更新消息是路由协议消息的实例,并且包括指出用于包括在BGP更新消息的相应的网络层可达性信息(NRLI)中的一个或多个目的地网络前缀的下一跳的NEXT_HOP路径属性。目的地网络前缀和下一跳可以表示为网络协议(例如,IPv4、IPv6)地址空间中的地址。下一跳是用于网络前缀的转发信息的实例。
路由处理线程26可以基本上相似,在于每一个路由处理线程26分开执行用于处理由网络装置12接收到的路由协议消息的相似操作。相对于图2更详细地描述这种操作的实例。操作系统36可调度两个或更多个路由处理线程26以在相应核心56上至少部分同时执行,使得多个路由处理线程26可至少部分并行执行以同时处理相应的路由协议消息。此外,尽管主要相对于单个多线程处理(即,路由协议模块16)描述了技术,但是可使用在位于单个网络装置上或分布在多个不同网络装置之中的不同处理内执行的多个线程应用这些技术。例如,BGP IO线程31可在负载均衡装置上执行以在多个分开的网络装置之中分布接收到的路由,每个网络装置被配置为执行一个或多个路由处理线程26以便以本文中描述的方式处理路由。
路由处理线程26以路由信息库(RIB)分区22A-22N的形式管理路由信息的各个分开的分区。每一个RIB分区22存储组成用于网络装置的总体RIB 22的路由的不同部分。在图1的实例中,其中,路由协议模块16处理BGP更新消息,线程26和28中的每一个至少执行BGP路由协议操作的子集。例如,如以下更详细地描述的,路由处理线程26可处理BGP更新消息,并且路由处理线程26和主线程28可共同解析在BGP更新消息中接收到的路由的下一跳。
网络装置12经由IFC 50接收路由协议消息。作为控制平面消息,控制平面34A处理路由协议消息。具体地,路由协议模块16处理路由协议消息。至于由网络装置12接收到的路由协议消息,BGP IO线程31中的一个最初处理包括路由的路由协议消息以识别处理该路由的路由处理线程26中的一个。例如,BGP IO线程31可将散列函数应用于路由的网络前缀,其中,用于散列函数的多个散列桶被配置为路由处理线程26的数量并且每个散列桶对应于散列到散列桶的路由的分配的路由处理线程26。在一些情况下BGP IO线程31可应用散列函数以选择网络前缀的位,并且在一些情况下BGP IO线程31可将散列函数应用于除了网络前缀之外或者替换网络前缀的接收到的路由协议消息的其他属性。如另一实例,BGP IO线程31可应用另一个操作以识别诸如使用应用于网络前缀的位的位模式处理路由的路由处理线程26中的一个,其掩模值被映射至路由处理线程26。在此情况下,BGP IO线程31存储将用于位模式的应用的每个结果值映射至路由处理线程26中的一个的数据结构。
BGP IO线程31随后给识别的路由处理线程26发信号以处理该路由。例如,BGP IO线程31可将路由或全部路由协议消息添加至路由协议模块16的队列并且由各个路由处理线程26共享但是由用于路由的所识别的路由处理线程26处理。
该技术可提供一个或多个优势。例如,该技术可通过由路由前缀而不是由路由处理任务或操作将路由处理分布在多个路由处理线程26之中而启用或改善用于网络装置12内的路由处理的平行化。这可减少用于处理由网络装置12接收到的任何给定路由的延迟和/或可减少用于网络装置12的总路由收敛时间。
图2是示出了根据本公开内容中描述的技术通过多个路由处理线程的分布的、平行的路由处理的概念图。相对于图1的网络装置12描述路由处理。路由协议模块16的每一个路由处理线程26单独执行一个或多个路由处理任务:任务1-任务L。作为实例,任务1-任务L可包括分析路由协议消息,应用诸如输入或输出政策的路由政策,从路由协议消息声称路由(例如,通过将包括在其中的网络前缀和下一跳相关联),解析用于所生成的路由的下一跳,从路由信息库用于通告的数据排队,并且生成新的路由协议通告以公布生成的路由。例如,至于符合BGP的路由协议消息,任务1可以是“分析更新”,任务2可以是“创建路由”,任务3可以是“解析下一跳”,任务4可以是“使路由输出排队”,任务5可以是“形成更新”。BGP IO线程31和/或线程40可执行用于路由协议消息的接收和发送操作。例如,至于符合BGP的路由协议消息,这种操作可包括“接收更新”和“发送更新”。
网络装置接收相应路由协议消息中的路由RT1-RT7,RT1-RT7中的每一个都包括网络前缀。至于每个路由RT1-RT7,BGP IO线程31利用网络前缀作为输入执行散列操作。网络前缀可输入至散列操作作为字符串、位串、或其他输入格式。网络前缀可包括前缀和前缀长度这两者。例如,“1.0.0.0/8”,其中,1.0.0.0是前缀并且8是前缀长度。在一些实例中,可在小于网络前缀的全部位串上执行散列操作。用于散列操作的示例性散列函数可包括SHA1、MD5和DJB2。接收网络前缀作为字符串并且返回表示对应于路由处理线程26中的一个的散列桶的整数散列值的示例性DJB2散列函数是:
通过包括在路由协议消息中的路由的网络前缀的BGP IO线程31执行的散列操作确定相对于路由协议消息和包括其中的路由执行任务1-任务L中的每一个的路由处理线程26。例如,在示出的实例中,BGP IO线程31执行包括散列操作的分配任务(“分配”)以便识别路由处理线程26A作为处理路由RT1的线程。BGP IO线程31还执行分配任务以识别路由处理线程26C作为处理路由RT6的线程。一旦识别到用于路由的路由处理线程,则BGP IO线程31发信号给识别的路由处理线程以执行用于该路由的路由处理任务。
尽管BGP IO线程31可以是相对于路由RT1-RT7串联执行分配任务的单个线程,但是一旦BGP IO线程31分配了路由且发信号给识别的路由处理线程26,则识别的路由处理线程26可假设路由处理任务:任务1-任务L。因为任务1-任务L比分配任务需要更长时间完成,因此该技术可有效使用于路由协议消息的路由处理平行并且减少路由处理延迟。
图3是示出了根据本文中描述的技术的用于将路由分布至多个路由处理线程的示例性结果的柱形图。曲线图80中的每个柱形对应于图1的路由处理线程26的路由处理线程26A-26D中的不同的路由处理线程,其中,N=4。曲线图80利用路由处理线程26A-26D中的每一个的路由的平均分布示出了路由处理工作量的合理散列。
图4是示出了根据本文中描述的技术的用于包括路由解析的分布的路由处理的示例性技术的框图。路由处理线程26A-26N、主线程28和BGP IO线程31可使用处理内的线程间的通信信道112进行通信。尽管称为信道,但是通信信道112可表示任何类型的线程间的通信,诸如,消息总线、消息队列、消息传递、文件、共享存储器或缓冲器、插口(socket)等。
每一个RIB分区22包括由路由处理线程26A中对应的路由处理线程存储和管理的一个或多个路由。存储至RIB分区22的路由可包括活跃路由和不活跃路由。存储至RIB分区22的一个或多个路由可与解析信息相关联,例如。该解析信息描述对应利用其转发使路由分组的数据包的网络装置12的转发下一跳。
解析树124将网络前缀映射至网络装置12的转发下一跳,网络装置12利用转发下一跳转发用于网络前缀的匹配数据包。转发下一跳可表示达到路由协议消息中接收的下一跳所要求的IGP或LSP路由的下一跳,例如,作为BGP更新消息的NEXT_HOP属性。在一些情况下这种下一跳被称为主下一跳。解析可称为BGP解析、用于另一个距离向量协议的路由解析、或者其他路由解析。
路由处理线程26中的每一个从主线程28请求在分配至路由处理线程26的路由协议消息中接收的用于路由的下一跳的解析。路由处理线程26通过经由通信信道112将下一跳发布至主线程28请求解析。路由处理线程26另外经由通信信道112将相应组的活跃路由从RIB分区22发布至主线程28,其中主线程28存储至活跃路由105。每个发布的活跃路由可包括表示路由是不是支撑路由的标记。主线程28保持解析树124。
如有必要,因为主线程28没有解析下一跳,则主线程28解析从路由处理线程26中的一个请求解析的下一跳。这种解析可生成用于下一跳(例如,用于指定下一跳的对应路由的转发下一跳)的解析信息。主线程28将用于下一跳的解析信息传送至路由处理线程26的请求的路由处理线程,该路由处理线程可将解析信息存储至与指定下一跳的路由相关联的对应的RIB分区22。路由处理线程26的请求的路由处理线程可进一步将这种路由标记为活跃的。在2007年2月27日发布的美国专利号7,184,437中找到了用于路由解析的示例性算法,其全部内容通过引证结合于本文中。
图5是示出了根据本公开内容的技术的用于路由解析的示例性操作模式的流程图。为了实例的目的,相对于图4描述了操作200。BGP IO线程31中的一个检测到网络装置12已经接收到路由协议消息(202)。BGP IO线程31从路由协议消息读取网络前缀并且将散列或其他选择操作应用于网络前缀以识别利用其处理路由协议消息的多个路由处理线程26中的一个,并且BGP IO线程31通知所识别的路由处理线程26(204)。所识别的路由处理线程26处理路由协议消息(206)。
路由处理线程26中的每一个将活跃路由发布至主处理线程28(208)。活跃路由可表示利用其可解析下一跳以获得转发下一跳的BGP公布的前缀。作为处理路由协议消息的一部分,所识别的路由处理线程26从主线程28请求指定用于包括在路由协议消息中的路由的下一跳的解析(210)。主线程28解析下一跳以获得转发下一跳并且将转发下一跳返回至所识别的路由处理线程26(212),所识别的路由处理线程将彼此相关联的转发下一跳和路由存储至对应的RIB分区22。
路由处理线程26可将局部活跃的路由协议路由从路由104发布至内核。例如,路由处理线程26可将这种路由传送至用于与内核路由表交换路由的内核路由表线程,操作系统36从内核路由表可生成FIB 38。至少在一些情况下,路由处理线程26可将活跃路由同时传送至内核路由表。即,多个路由处理线程26可将活跃路由同时下载至内核路由表。
如在本公开内容中指出的,路由处理线程26可同时执行用于路由的任务。作为并发任务处理的另一实例,路由处理线程26A可将输入或输出路由政策应用于与网络前缀相关联并且分配至路由处理线程26A的路由,同时路由处理线程26B可与通过线程26A的政策应用同时将任务应用于与另一个网络前缀相关联并且分配至路由处理线程26B的另一个路由。
在一些实例中,利用用于操作200所识别的路由处理线程26处理路由协议消息可包括用于新网络前缀的路径选择任务。路径选择可从除了由线程26、28执行的路由协议之外的协议结合路由,例如,用于IGP 42和/或MPLS的路由(在下文中,“IGP/MPLS路由”)。当BGP 20路由与IGP/MPLS路由重叠时,例如,网络装置12可配置有公布IGP/MPLS路由的偏好。因此路由处理线程26可访问通过IGP/MPLS路由信息库(图1中未示出)存储的IGP/MPLS路由以确定更优选的IGP/MPLS路由代替来自各个对应的路由104的路由是否可用。如上所述,在网络装置12的一些实例中,IGP/MPLS路由以与路由协议20的方式相似的方式分布和存储在路由处理线程26之中。
图6A至图6B是示出了根据本公开内容的技术的用于路由处理模块的线程显示路由信息库22的路由的示例性操作模式的流程图。可响应于由网络装置12接收到的请求例如经由命令行界面来执行显示路由操作。显示路由操作一般“移动”网络装置的路由信息库以按顺序输出用于显示的由网络装置12存储的活跃路由。路由协议模块16可接收显示路由的请求。如下所述,主线程28可管理对从多个路由处理线程26按顺序接收的路由进行重新排序。
相对于路由处理线程26A描述操作400但是可通过所有路由处理线程26同时执行。路由处理线程26A从主线程28接收路由104A中的下一个路由的请求。路由处理线程26A响应于该请求确定且将104A中的候选的下一个路由传送至主线程28(401)。路由处理线程26A可随后从主线程28接收候选的下一个路由被选择(402的是的分支)的通知并且响应地执行401。路由处理线程26同时反复执行操作400以从相应的路由104传送候选的下一个路由。
主线程28执行图6B中示出的操作403。主线程28通过将下一个路由的请求从路由104传送至相应的路由处理线程26开始分布式显示路由操作。主线程28从相应的路由处理线程26接收候选的下一个路由。主线程28从候选的下一个路由选择下一个路由并且例如经由诸如命令行界面等管理界面输出用于显示的所选择的下一个路由(404)。主线程28还通知路由处理线程26,从路由处理线程选择所选择的下一个路由以使得路由处理线程26执行操作400的步骤402(405)。如果另外的候选的下一个路由可用于选择(406的是的分支),主线程28继续反复选择和输出用于显示的这种路由(404)。否则(406的否定分支),主线程28完成了显示路由操作(408)。
路由协议模块16还可以执行路由聚合以将从路由104选择的多个路由合并到单个路由协议通告中。路由聚合操作可通过分别与操作400、403相似的线程26、28执行以获得用于聚合路由的潜在的促成路由。主线程28可从路由处理线程26请求匹配潜在聚合路由的路由104。主线程28可将聚合路由的路由政策应用于从路由处理线程26接受每个促成路由或拒绝每个促成路由。
本公开内容中描述的技术可以至少部分地实现在硬件、软件、固件或任何上述组合中。例如,所描述的技术的各方面可以在一个或多个处理器中实现,处理器包括一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或任何其他等效集成或离散逻辑电路、以及这种部件的任意组合。术语“处理器”或“处理电路”通常可以参考上述任何逻辑电路,单独或与其他逻辑电路的组合或任何其他等效电路。包括硬件的控制单元也可以执行本公开内容的一种或多种技术。
这种硬件、软件和固件可以实现在相同装置内或在分离装置内,以支持本公开内容中描述的各种操作和功能。另外,所描述的单元、模块或部件中的任一个可以一起或单独地实现为离散但可互操作的逻辑装置。将不同特征描述为模块或单元旨在突出不同的功能方面,并且不一定意味着这种模块或单元必须通过独立的硬件或软件部件来实现。相反,与一个或多个模块或单元相关联的功能可以通过单独的硬件或软件部件,或集成在共同或单独的硬件或软件部件中执行。
本公开内容中描述的技术也可以体现或编码在计算机可读介质中,诸如包括指令的计算机可读存储介质。例如,当指令被执行时,嵌入或编码在计算机可读存储介质中的指令可以使可编程处理器或其他处理器执行该方法。计算机可读存储介质可包括随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪速存储器、硬盘、CD-ROM、软盘、盒式磁带、磁性介质、光学介质或其他计算机可读介质。
已经描述了各种实例。这些和其他实例在随附权利要求书的范围内。
Claims (14)
1.一种方法,包括:
利用在网络装置的至少一个基于硬件的处理器的多个处理核心上执行的至少一个路由协议处理的多个执行线程的一个线程来识别所述执行线程的第一路由处理线程以处理路由协议的第一路由,所述第一路由通过所述网络装置接收;
利用所述线程识别所述执行线程的第二路由处理线程以处理所述路由协议的第二路由,所述第二路由通过所述网络装置接收;
通过在所述多个处理核心的第一核心上执行的所述第一路由处理线程来处理所述第一路由;以及
至少部分地与在所述多个处理核心的所述第一核心上执行的所述第一路由处理线程同时,通过在所述多个处理核心的第二核心上执行的所述第二路由处理线程来处理所述第二路由;
通过所述第一路由处理线程将所述第一路由存储至用于所述网络装置的总路由信息库的第一路由信息库分区,所述第一路由信息库分区存储用于所述第一路由处理线程的路由;
通过所述第二路由处理线程将所述第二路由存储至用于所述网络装置的所述总路由信息库的第二路由信息库分区,所述第二路由信息库分区存储用于所述第二路由处理线程的路由;
由多个所述执行线程中的主线程接收显示由所述网络装置存储的活跃路由的请求;
由所述主线程响应于所述请求传送对候选的下一个路由的请求到所述第一路由处理线程和所述第二路由处理线程;
由所述主线程从所述第一路由处理线程接收存储到所述第一路由信息库分区的第一候选的下一个路由;
由所述主线程从所述第二路由处理线程接收存储到所述第二路由信息库分区的第二候选的下一个路由;
由所述主线程从所述第一候选的下一个路由和所述第二候选的下一个路由中选择所述第一候选的下一个路由作为针对显示活跃路由的所述请求的路由顺序中的下一个路由;以及
由所述主线程响应于选择所述第一候选的下一个路由输出所述第一候选的下一个路由以向用户显示。
2.根据权利要求1所述的方法,其中,识别所述执行线程的所述第一路由处理线程以处理所述第一路由,包括以下步骤:
将散列函数应用于所述第一路由以计算表示与所述第一路由处理线程相关联的散列桶的散列值,所述方法进一步包括以下步骤:
向所述第一路由处理线程发信号以处理所述第一路由。
3.根据权利要求2所述的方法,其中,应用所述散列函数包括至少将所述散列函数应用于所述第一路由的网络前缀。
4.根据权利要求1所述的方法,其中,所述网络装置包括路由器和路由反射器中的一个。
5.根据权利要求1至4中任一项所述的方法,
其中,处理所述第一路由包括通过所述第一路由处理线程执行路由处理任务,并且
其中,处理所述第二路由包括至少部分地与所述第一路由的处理同时通过所述第二路由处理线程执行相同的路由处理任务。
6.根据权利要求5所述的方法,其中,所述路由处理任务包括下列项中的一个:
分析路由协议消息、从所述路由协议消息生成路由。
7.根据权利要求1至4中任一项所述的方法,
其中,通过所述第一路由处理线程处理所述第一路由包括:分析包括所述第一路由的第一路由协议消息;从所述第一路由协议消息生成所述第一路由;以及从所述第一路由协议消息请求用于所述第一路由的第一个下一跳的解析,以及
其中,通过所述第二路由处理线程处理所述第二路由包括:分析包括所述第二路由的第二路由协议消息,从所述第二路由协议消息生成所述第二路由,并且从所述第二路由协议消息请求用于所述第二路由的第二个下一跳的解析。
8.根据权利要求1至4中任一项所述的方法,进一步包括:
通过所述第一路由处理线程将解析所述第一路由的第一个下一跳的请求传送至所述执行线程的主线程;
通过所述第二路由处理线程将解析所述第二路由的第二个下一跳的请求传送至所述主线程;以及
通过所述主线程解析所述第一路由的所述第一个下一跳和所述第二路由的所述第二个下一跳。
9.根据权利要求1至4中任一项所述的方法,进一步包括以下步骤:
通过所述第一路由处理线程将所述第一路由下载至内核路由表;
至少部分地与所述第一路由的下载同时通过所述第二路由处理线程将所述第二路由下载至所述内核路由表。
10.根据权利要求1至4中任一项所述的方法,
其中,识别所述执行线程的所述第一路由处理线程以处理所述路由协议的第一路由,包括以下步骤:
将位模式应用于包括所述第一路由的路由协议消息以获得一个值;以及
将所述值映射至所述第一路由处理线程。
11.根据权利要求1至4中任一项所述的方法,其中,将位模式应用于包括所述第一路由的路由协议消息以获得值包含将所述位模式应用于所述第一路由的网络前缀的位。
12.一种网络装置,包括:
网络接口卡;以及
至少一个基于硬件的处理器,所述处理器包括用于执行至少一个路由协议处理的多个执行线程的多个处理核心,所述至少一个基于硬件的处理器被配置为:
利用所述多个执行线程的一个线程识别所述执行线程的第一路由处理线程以处理路由协议的第一路由,所述第一路由通过所述网络装置接收;
利用所述线程识别所述执行线程的第二路由处理线程以处理路由协议的第二路由,所述第二路由通过所述网络装置接收;
通过被配置为在所述多个处理核心的第一核心上执行的所述第一路由处理线程来处理所述第一路由;以及
至少部分地与在所述多个处理核心的所述第一核心上执行的所述第一路由处理线程同时通过被配置为在所述多个处理核心的第二核心上执行的所述第二路由处理线程处理所述第二路由;
通过所述第一路由处理线程将所述第一路由存储至用于所述网络装置的总路由信息库的第一路由信息库分区,所述第一路由信息库分区存储用于所述第一路由处理线程的路由;
通过所述第二路由处理线程将所述第二路由存储至用于所述网络装置的所述总路由信息库的第二路由信息库分区,所述第二路由信息库分区存储用于所述第二路由处理线程的路由;
由多个所述执行线程中的主线程接收显示由所述网络装置存储的活跃路由的请求;
由所述主线程响应于所述请求传送对候选的下一个路由的请求到所述第一路由处理线程和所述第二路由处理线程;
由所述主线程从所述第一路由处理线程接收存储到所述第一路由信息库分区的第一候选的下一个路由;
由所述主线程从所述第二路由处理线程接收存储到所述第二路由信息库分区的第二候选的下一个路由;
由所述主线程从所述第一候选的下一个路由和所述第二候选的下一个路由中选择所述第一候选的下一个路由作为针对显示活跃路由的所述请求的路由顺序中的下一个路由;以及
由所述主线程响应于选择所述第一候选的下一个路由输出所述第一候选的下一个路由以向用户显示。
13.根据权利要求12所述的网络装置,所述至少一个基于硬件的处理器进一步被配置为执行由权利要求2至11中任一项所述的方法。
14.一种利用指令编码的计算机可读存储介质,所述指令用于使一个或多个可编程处理器执行根据权利要求1至11中任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/841,023 | 2017-12-13 | ||
US15/841,023 US10642650B2 (en) | 2017-12-13 | 2017-12-13 | Multi-threaded route processing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109921990A CN109921990A (zh) | 2019-06-21 |
CN109921990B true CN109921990B (zh) | 2021-08-20 |
Family
ID=63708232
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811153390.0A Active CN109921990B (zh) | 2017-12-13 | 2018-09-29 | 多线程路由处理 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10642650B2 (zh) |
EP (1) | EP3499812B1 (zh) |
CN (1) | CN109921990B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11526492B2 (en) * | 2018-09-30 | 2022-12-13 | Hewlett Packard Enterprise Development Lp | Sorted insertion in databases |
US20220286399A1 (en) * | 2019-09-11 | 2022-09-08 | Intel Corporation | Hardware queue scheduling for multi-core computing environments |
US11502946B2 (en) * | 2020-03-10 | 2022-11-15 | Juniper Networks, Inc. | Distributed label assignment for labeled routing protocol routes |
CN111404818B (zh) * | 2020-03-12 | 2022-04-15 | 深圳市风云实业有限公司 | 一种面向通用多核网络处理器的路由协议优化方法 |
US11356369B1 (en) * | 2020-03-31 | 2022-06-07 | Juniper Networks, Inc. | Border gateway protocol update packing for a distributed routing information base |
CN113572685B (zh) * | 2020-04-29 | 2023-03-10 | 华为技术有限公司 | 一种信息上报方法、信息处理方法、装置及设备 |
US11561823B1 (en) | 2020-05-12 | 2023-01-24 | Juniper Networks, Inc. | Lockless management of immutable objects by multi-threaded processes using multiple counters |
US11362949B2 (en) * | 2020-06-02 | 2022-06-14 | Cisco Technology, Inc. | Path count management |
US11762710B2 (en) | 2020-06-23 | 2023-09-19 | Juniper Networks, Inc. | Multithreaded route processing for routing information display |
US11516126B2 (en) * | 2020-10-14 | 2022-11-29 | Oracle International Corporation | Techniques for high performant virtual routing capabilities |
CN114640615B (zh) * | 2020-11-30 | 2024-01-02 | 华为技术有限公司 | 一种路由通告方法、路由生成方法及设备 |
US11948014B2 (en) * | 2020-12-15 | 2024-04-02 | Google Llc | Multi-tenant control plane management on computing platform |
CN113438301B (zh) * | 2021-06-22 | 2023-06-06 | 北京百度网讯科技有限公司 | 网络负载均衡器、请求消息分配方法、程序产品及系统 |
US11683260B2 (en) * | 2021-07-13 | 2023-06-20 | Ciena Corporation | Estimating a traffic matrix of a communication network using network topology features |
US11558245B1 (en) | 2021-10-29 | 2023-01-17 | Oracle International Corporation | Secure bi-directional network connectivity system between private networks |
US11736558B2 (en) | 2021-10-29 | 2023-08-22 | Oracle International Corporation | Transparent mounting of external endpoints between private networks |
CN116756042B (zh) * | 2023-07-25 | 2024-07-09 | 上海朗晖慧科技术有限公司 | 一种基于数字孪生技术的数据一体化管理系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101741705A (zh) * | 2008-11-27 | 2010-06-16 | 华为技术有限公司 | 一种并行处理路由更新报文的方法及装置 |
CN102752198A (zh) * | 2012-06-21 | 2012-10-24 | 北京星网锐捷网络技术有限公司 | 多核报文转发方法、多核处理器及网络设备 |
CN105812276A (zh) * | 2016-04-27 | 2016-07-27 | 深圳市风云实业有限公司 | 采用多核处理器的报文转发自适应系统和方法 |
CN107343302A (zh) * | 2017-07-11 | 2017-11-10 | 南京航空航天大学 | 一种基于多核处理器的传感网路由结构优化方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7240123B2 (en) * | 2001-12-10 | 2007-07-03 | Nortel Networks Limited | Distributed routing core |
US7245619B1 (en) * | 2002-05-31 | 2007-07-17 | Extreme Networks | Method and apparatus for managing routes |
US7184437B1 (en) | 2002-07-17 | 2007-02-27 | Juniper Networks, Inc. | Scalable route resolution |
KR100542341B1 (ko) * | 2003-02-19 | 2006-01-10 | 삼성전자주식회사 | 비쥐피 프로토콜을 분산 처리하는 장치 및 그 방법 |
US7023808B2 (en) | 2003-12-23 | 2006-04-04 | Cisco Technology, Inc. | System and method for distributing route selection in an implementation of a routing protocol |
KR100591107B1 (ko) * | 2004-02-02 | 2006-06-19 | 삼성전자주식회사 | 분산 구조 라우터의 라우팅 처리 방법 및 그 장치 |
WO2010069261A1 (zh) * | 2008-12-19 | 2010-06-24 | 华为技术有限公司 | 边界网关协议路由处理方法、装置和系统 |
US8937961B1 (en) * | 2010-12-07 | 2015-01-20 | Juniper Networks, Inc. | Modular software architecture for a route server within an internet exchange |
CN102546369B (zh) * | 2010-12-20 | 2015-09-23 | 华为技术有限公司 | 一种边界网关协议路由更新方法和系统 |
CN102394809B (zh) * | 2011-10-13 | 2014-04-16 | 中国人民解放军国防科学技术大学 | 一种多线程边界网关协议并行处理方法 |
US9787575B2 (en) * | 2015-05-28 | 2017-10-10 | Arista Networks, Inc. | Method and system for programming equal-cost multi-path routes on network devices |
-
2017
- 2017-12-13 US US15/841,023 patent/US10642650B2/en active Active
-
2018
- 2018-09-28 EP EP18197496.5A patent/EP3499812B1/en active Active
- 2018-09-29 CN CN201811153390.0A patent/CN109921990B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101741705A (zh) * | 2008-11-27 | 2010-06-16 | 华为技术有限公司 | 一种并行处理路由更新报文的方法及装置 |
CN102752198A (zh) * | 2012-06-21 | 2012-10-24 | 北京星网锐捷网络技术有限公司 | 多核报文转发方法、多核处理器及网络设备 |
CN105812276A (zh) * | 2016-04-27 | 2016-07-27 | 深圳市风云实业有限公司 | 采用多核处理器的报文转发自适应系统和方法 |
CN107343302A (zh) * | 2017-07-11 | 2017-11-10 | 南京航空航天大学 | 一种基于多核处理器的传感网路由结构优化方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3499812B1 (en) | 2022-09-14 |
CN109921990A (zh) | 2019-06-21 |
EP3499812A1 (en) | 2019-06-19 |
US10642650B2 (en) | 2020-05-05 |
US20190179668A1 (en) | 2019-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109921990B (zh) | 多线程路由处理 | |
US11614972B2 (en) | Distributed processing of network device tasks | |
US20150124812A1 (en) | Dynamic Multipath Forwarding in Software Defined Data Center Networks | |
US9832121B1 (en) | Next hop instruction associations for forwarding unit programming within a network device | |
JP7547606B2 (ja) | ルート告知方法および関連デバイス | |
US11909632B2 (en) | Distributed label assignment for labeled routing protocol routes | |
US20240195844A1 (en) | Intent-based enterprise security using dynamic learning of network segment prefixes | |
KR102376404B1 (ko) | Sfc 네트워크에서 토폴로지 정보를 동기화하기 위한 방법, 및 라우팅 네트워크 엘리먼트 | |
CN114024888A (zh) | 一种路由通告方法及相关设备 | |
US11561823B1 (en) | Lockless management of immutable objects by multi-threaded processes using multiple counters | |
US11356369B1 (en) | Border gateway protocol update packing for a distributed routing information base | |
US20230155938A1 (en) | Route Advertisement Method and Related Device | |
US11296907B2 (en) | Systems and methods for transitioning of virtualized transport networks |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: California, USA Applicant after: Juniper Networks, Inc. Address before: California, USA Applicant before: Jungle network |
|
GR01 | Patent grant | ||
GR01 | Patent grant |