CN102394809B - 一种多线程边界网关协议并行处理方法 - Google Patents
一种多线程边界网关协议并行处理方法 Download PDFInfo
- Publication number
- CN102394809B CN102394809B CN201110310369.9A CN201110310369A CN102394809B CN 102394809 B CN102394809 B CN 102394809B CN 201110310369 A CN201110310369 A CN 201110310369A CN 102394809 B CN102394809 B CN 102394809B
- Authority
- CN
- China
- Prior art keywords
- subtree
- routing table
- routing
- neighbours
- module
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种多线程边界网关协议并行处理方法,目的是加快BGP处理路由更新报文速度。技术方案是构建由一个主控线程和L个协议执行线程组成的BGP多线程结构,主控线程由邻居分配模块与路由表重构模块组成,协议执行线程由邻居管理模块、选路模块与路由广播模块组成;路由表重构模块对全局路由信息进行动态重构;邻居分配模块计算出每个邻居对应的协议执行线程,将BGP邻居划分为L个邻居束,并将与邻居进行通信的端口地址传递给对应的协议执行线程;由邻居管理模块、选路模块与路由广播模块相互配合进行邻居会话交互。采用本发明能降低线程间通信开销,降低线程间同时访问路由表时引发的竞争,提高BGP运行速度。
Description
技术领域
本发明属于路由协议系统结构领域,尤其涉及高性能路由器边界网关协议BGP(Border Gateway Protocol)的线程级并行处理方法。
背景技术
自上世纪90年代以来,Internet经历了飞速发展的过程,已经从一个简单的实验性网络演变成为一个巨大的商业网络。路由器作为构建整个Internet核心网络的重要设施,其体系结构经历了从集中式路由器、分布式路由器到集群路由器的发展过程,然而路由器软件技术的发展则相对比较滞后,协议性能提升受限使其难以满足下一代Internet发展的需求。特别是,随着Internet规模的快速增长以及各种网络应用的大量涌现,运行BGP的路由器需要处理的路由更新报文数量迅猛增长,对路由器的协议处理速度提出了更高要求。多核处理器的应用为提高BGP协议处理速度提供了重要手段。一方面,相对于单核处理器,多核处理器拥有丰富的计算资源,具有更高的工作频率、低功耗和易扩展等特点,克服了单核处理器的计算瓶颈,并且可以支持线程级并行来帮助改善应用程序性能。另一方面,相对于集群结构,它具有分布式计算资源与共享存储结构优势,提供了更快的同步操作与更高的核间通信带宽,能够有效降低路由节点之间的通信同步开销。因此,设计一种基于多核处理器的BGP多线程并行处理方法,通过有效利用多核多线程计算资源来提高BGP处理海量路由更新报文的计算速度,从而降低路由更新报文处理延迟及提高网络收敛时间,具有重要实践意义。
现有专利(公开号为CN101741705A)公开了一种BGP多线程结构来实现并行处理路由更新报文的方法,它采用分层处理方式,通过划分多线程,使BGP软件在多核环境下多线程并行处理路由更新报文,其典型过程(如图1)主要包含以下步骤:
1、类别项预计算:BGP按照路由地址前缀分布将全部路由信息分类计算为p个类别项,p为可变的自然数,将不同前缀范围的路由信息放进不同的类别项,类别项可以为散列表的表项、树结构中的子树等数据结构,不同类别项内部的地址前缀之间没有交叉,且所有类别项的地址前缀集合为所有目标地址总和。
2、构建BGP多线程结构:它由一个邻居管理和前处理前缀分类线程与多个选路线程组成。其中,邻居管理与前处理前缀分类线程由多个邻居管理单元与一个前处理前缀分类单元组成。邻居管理与前处理前缀分类线程将BGP邻居划分为多个子集,这些子集分别称为“邻居束1”、“邻居束2”、…、“邻居束p”。选路线程根据类别项划分为n个,n为可变自然数,它需要根据处理器核的数量与p进行调整,以达到软件最优性能。例如,假设核的数量为4,p、n可以调成4,如果处理的报文较多,也可以将p、n调成8。
3、解析报文:邻居管理单元i(i为自然数且1≤i≤p)用于处理与邻居束i的会话关系,处理过程中仅使用本邻居束中的邻居信息、路由信息及出口策略信息。邻居管理单元i从邻居束i的一个邻居接收到路由更新报文以后,解析出路由更新报文中的目的地址和路由属性,并封装成消息发送给前处理前缀分类单元。
4、查找类别项:前处理前缀分类单元获得解析出的目的地址和路由属性组成的消息,根据目的地址查找类别项,按照查找到的类别项,向与该类别项对应的选路线程j(j为自然数且1≤j≤n)发送携带目的地址和路由属性的消息。
5、选路计算:选路线程j根据消息中网络地址和路由属性在类别项中选择最优路径,计算最优路径需要根据预定标准进行衡量,例如:路径长度、可靠性、延迟、带宽、负载、通信代价等权值,继而将最优路径发送给邻居管理与前处理前缀分类线程中所有p个邻居管理单元。
6、路由更新播报:所有p个邻居管理单元接收到选路线程j发送的最优路径后,每个邻居管理单元都会对本单元负责的邻居束中的每个邻居,对发送来的最优路径进行该邻居的出口策略过滤,将经过过滤的路由打包发送给该邻居。
7、当有新的路由更新报文达到,转步骤3。
上述方法实现了BGP在多核处理器上多个线程并行处理路由更新报文,提高了工作效率,但该方法仍存在一些不足:
(1)由于该方法将对单个路由更新报文的解析与封装、选路计算过程分布在两个线程上并行执行,导致线程之间需要进行频繁通信,降低了工作效率;
(2)该方法将全局路由信息预先划分为固定的类别项,无法反映选路线程访问类别项的真实情况,极易出现多个选路线程同时访问同一类别项而产生大量访存竞争,使得选路线程之间无法真正并行工作,限制了BGP处理路由更新报文处理速度的继续提升。
发明内容
本发明要解决的技术问题在于:提供一种多线程BGP并行处理方法,在降低线程间通信开销、减少线程之间访存竞争的前提下,充分利用多核处理器多线程并行执行优势,加快BGP处理路由更新报文速度。
本发明技术方案如下:
步骤1、构建BGP多线程结构。它采用主从处理方式,由一个主控线程和L个协议执行线程组成,L为可变自然数,L根据公式L=C×D-1来确定,其中C为多核处理器的核数,D为多核处理器每个核可支持的最大线程数。主控线程是执行BGP邻居分配、全局路由信息动态组织的软件线程,由邻居分配模块与路由表重构模块组成。邻居分配模块是用于计算邻居与协议执行线程对应关系的软件代码,路由表重构模块是用于动态更新全局路由表结构的软件代码。协议执行线程是完成与邻居束的具体会话关系的软件线程,由邻居管理模块、选路模块与路由广播模块组成。邻居管理模块是用于完成与邻居束中各邻居的会话建立与通信的软件代码,选路模块是执行最优路径选择的软件代码,路由广播模块是用于向其他协议执行线程发布本地最优路径的软件代码。
步骤2、路由表重构模块设置路由表重构定时器,对全局路由信息进行周期性动态重构,方法是:
2.1启动路由表重构定时器。路由表重构定时器为一个计时程序,计时时间设定为路由通告最大时间间隔。若路由表重构定时器未超时,由邻居分配模块执行步骤3;若路由表重构定时器超时,路由表重构模块执行2.2;
2.2重构路由表结构。当路由表重构定时器超时时,首先设置超时标识,便于协议执行线程查询,然后路由表重构模块将传统路由表逻辑划分成若干个子树集合,并构建快速索引树,具体方法是:
2.2.1路由表重构模块对路由表进行后序遍历(见《数据结构与算法分析》中第四章,(美)维斯著,冯舜玺译,机械工业出版社,2004年第一版),统计路由表在定时器计时周期内各路由节点被访问总次数T,T为自然数。路由表以二叉树结构组织,每访问一个路由节点时累计路由表重构定时器计时期间该节点及它的左右子树被访问的次数(左右子树是以左右子节点为根的二叉树);
2.2.2对路由表执行层次遍历(见《数据结构与算法分析》中第四章,(美)维斯著,冯舜玺译,机械工业出版社,2004年第一版),将路由表逻辑地划分为若干个路由表子树(简称子树),且子树数量上限为U,U为自然数,U根据公式U=μ×M确定,其中μ为子树数量参考系数,为大于等于4且小于等于64的偶数,M为划分子树集合数量,M为可变自然数,M根据公式M=2×L来确定。具体方法是:
2.2.2.1如果当前路由节点的左右子节点与左右子树访问次数均大于T×U-1,则路由表重构模块对该节点的左右子树执行剪枝操作(见《数据结构与算法分析》中第四章,(美)维斯著,冯舜玺译,机械工业出版社,2004年第一版),将左右子树逻辑地划分为独立的子树,执行2.2.2.2;否则,直接执行2.2.2.2;
2.2.2.2如果当前路由节点所在的路由表二叉树分层中还有其他未遍历的节点,则路由表重构模块继续按由左至右的顺序遍历下一个节点,转2.2.2.1;否则执行2.2.2.3;
2.2.2.3如果已遍历路由表二叉树中所有分层及节点,则转2.2.3;否则,路由表重构模块跳至路由表二叉树的下一个分层中继续遍历,转2.2.2.1。
2.2.3路由表重构模块将步骤2.2.2中划分的子树归类为M个子树集合Q1,......,QM。具体方法是:
2.2.3.1路由表重构模块将划分后的子树按照访问次数进行降序排列后得到路由表子树序列a1,a2,…,au;
2.2.3.2累加子树集合Qi(1≤i≤M)中所有子树的访问次数,计算出Qi访问总次数,再将所有子树集合按照访问总次数降序排列,获得访问总次数最小和最大的子树集合Qα和Qβ,Qα(α为子树集合的下标,1≤α≤M)表示访问次数最小的子树集合,Qβ(β为子树集合的下标,1≤β≤M)表示访问次数最大的子树集合;
2.2.3.3从子树序列a1,a2,…,au中取出头子树as(1≤s≤U),s初始值为1,放入子树集合Qt(1≤t≤M)中,放置子树的规则为:当前访问次数最大的子树放置到访问总次数最小的集合Qα中。方法为:判断条件是否满足,即子树集合Qβ去除顶部子树rβ[pβ]之后的访问次数是否仍大于F(Qα),其中函数F(Qα)表示子树集合Qα的访问次数,表示子树rβ[pβ]的访问次数,rB表示Qβ中子树,pβ表示子树rβ在Qβ中的位置,1≤pβ≤U,rβ[pβ]是当前Qβ中最晚放入的子树。如果满足上述条件,则进行Qα与Qβ的子树置换操作,即将rβ[pβ]放入Qα中,而把子树as放入到Qβ中;如果条件不满足,则路由表重构模块将子树as放入Qα中。该子树放置方法可以使(表示执行完此次子树放置操作之后各子树集合访问总次数的最大值)增长最小,最终获得访问均衡的M个子树集合。
2.2.3.4如果s小于U,即子树序列中还有子树未放置到任何子树集合中,则s增加1,转2.2.3.2;否则执行2.2.4;
2.2.4路由表重构模块按照构建二叉树的方法(见《数据结构与算法分析》中第四章,(美)维斯著,冯舜玺译,机械工业出版社,2004年第一版)将所有划分子树的根节点组织成索引树,每一项索引由该节点的前缀地址、前缀长度(见《TCP/IP协议详解卷I》中第三章,范建华译,机械工业出版社,2000年第一版)及子树所属集合进行标识,实现对子树中某个路由节点的快速查找与访问。继而,转步骤2.1。
步骤3、邻居分配模块采取RoundRobin方式计算出与路由器连接的每个邻居进行会话通信的协议执行线程,根据协议执行线程数量L将BGP邻居划分为L个邻居束,并将与邻居进行通信的端口地址(进行TCP/IP通信的地址,见《TCP/IP协议详解卷I》中第三章,范建华译,机械工业出版社,2000年第一版)传递给对应的协议执行线程。具体方法为:如果路由表重构定时器超时,转2.2;如果路由表重构定时器未超时,当有新的邻居会话请求到达,邻居分配模块根据邻居的前缀地址为该邻居会话分配协议执行线程k(k为自然数且1≤k≤L),并将邻居会话通信端口地址以消息方式发送给协议执行线程k,继而执行步骤4;如果路由表重构定时器未超时且没有新邻居会话请求到达,则继续执行步骤3,等待新的邻居会话请求到达。
步骤4、邻居会话交互。该步骤实现路由更新报文在单个协议执行线程上完整处理,可以显著降低背景技术中方法的路由更新报文处理过程中的频繁通信开销,提高BGP运行速度。具体方法为:
4.1建立会话关系。协议执行线程k接收到邻居分配模块发送的携带邻居通信端口地址的消息,邻居管理模块根据通信端口地址与该邻居建立会话关系。
4.2解析报文。当邻居管理模块接收到路由更新报文,邻居管理模块解析出路由更新报文中的路由项。其中,每个路由项都由目的地址和多个路由属性组成。
4.3邻居管理模块查询路由表重构定时器超时标识,如果超时标识被置位表明路由表重构定时器已超时,转2.2;否则执行4.4。
4.4选路模块根据4.2解析出的目的地址和路由属性在全局路由信息中选择最优路径,方法为:选路模块首先在路由表的索引树中查找前缀最长匹配的节点,继而在索引到的子树中查找与目的地址完全匹配的节点,如果查找到则计算最优路径,计算过程采用背景技术中第5步的选路计算方法;如果未查找到匹配节点,则在该子树中添加该目的节点及相应路由信息,并将新路由作为最优路径。
4.5路由更新广播。与背景技术中方法第6步类似,最主要的区别在于路由更新广播的通信实体不同。背景技术将邻居管理功能与最优路径选择功能分开在不同的线程上执行,路由更新广播操作就是各选路线程将选择的最优路径发送给邻居管理单元所在的邻居管理和前处理前缀分类线程,因此,路由更新广播的通信实体为邻居管理和前处理前缀分类线程与选路线程。而本发明中将邻居管理功能与最优路径选择功能集中在一个协议执行线程上完成,路由更新广播的通信实体为不同的协议执行线程。具体方法是:路由广播模块将选路模块选择的最优路径发送给除该路由广播模块所属协议执行线程之外的所有协议执行线程,并接收来自其他协议执行线程选择的最优路径。当路由更新广播操作完成,执行4.6。
4.6最优路径播报。邻居管理模块根据邻居束b(b为自然数且1≤b≤L)中每个邻居的出口过滤策略(见《BGP设计与实现》中第四章,黄博、葛建立译,人民邮电出版社,2008年第二版)对步骤4.5获得的全部最优路径进行过滤,将已过滤的最优路径封装成路由更新报文,向各邻居发送。
4.7如果BGP进程结束,则转步骤5;否则,当有新的路由更新报文到达,转4.2;
步骤5、主控线程与所有协议执行线程运行终止。
采用本发明可以达到以下技术效果:
1、通过将BGP软件设计成多线程结构,使执行路由更新报文处理任务的多个线程并行运行在多核处理器的多个核上,降低了背景技术中方法的路由更新报文处理时频繁的线程间通信开销,进一步提高了BGP运行速度;
2、本发明第2.2步动态重构路由表,可以反映实际路由表访问行为,降低线程间同时访问路由表时引发的竞争,从而提高BGP多线程并行执行效率。
附图说明
图1为背景技术一种BGP多线程结构来实现并行处理路由更新报文的方法的流程图;
图2为本发明总体流程图;
图3为传统路由表结构图;
图4为本发明可重构路由表构造过程示例图。
具体实施方案
图1是背景技术一种BGP多线程结构来实现并行处理路由更新报文的方法的流程图,主要包括以下步骤:
1、类别项预计算。
2、构建BGP多线程结构。
3、解析报文。
4、查找类别项。
5、选路计算。
6、路由更新播报。
7、当有新的路由更新报文达到,转步骤3。
图2是本发明的总体流程图,主要包括以下步骤:
1、构建BGP多线程结构。
2、设置路由表重构定时器。
2.1启动路由表重构定时器。
2.2重构路由表。
2.2.1后序遍历路由表,统计路由表访问总次数。
2.2.2层次遍历路由表,划分路由表子树。
2.2.2.1如果当前路由节点的左右子节点与左右子树访问次数大于T×U-1,将左右子树逻辑划分为独立子树,然后转2.2.2.2;否则直接转2.2.2.2。
2.2.2.2如果当前分层还有其他节点未遍历,则由左至右遍历下一个节点,转2.2.2.1;否则,转2.2.2.3。
2.2.2.3如果已遍历所有分层及节点,则转2.2.3;否则,跳至下一分层继续遍历,转2.2.2.1。
2.2.3将划分子树归类为子树集合。
2.2.3.1划分子树按访问次数降序排列。
2.2.3.2计算访问次数最大与最小集合。
2.2.3.3子树放置。
2.2.3.4如果放置完所有子树,转2.2.4;否则,转2.2.3.2。
2.2.4组织索引树,转2.1。
3、邻居划分与分配。如果路由表重构定时器超时,转2.2;如果路由表重构定时器未超时,当有新的邻居请求到达,转4;如果路由表重构定时器未超时且没有新邻居请求到达,转3。
4、邻居会话交互。
4.1建立邻居会话关系。
4.2解析报文。
4.3查询路由表重构定时器超时标识。如果超时,则转2.2;否则,转4.4。
4.4选择最优路径。
4.5路由更新广播。
4.6最优路径播报。
4.7如果BGP结束,转5;否则,当有新的更新报文达到,转4.2。
5、所有线程运行终止。
图3为传统路由表结构图。传统路由表采用二叉树结构组织,每个节点由前缀地址和前缀长度两个属性进行标识。每个节点都指向一个路由信息表,路由信息表由到达该节点的所有路由项及每个路由项所包含的路由属性组成。
图4为本发明第2.2步中可重构路由表构造过程示例图。主要过程为:
[初始时].初始构建路由表时按照传统路由表二叉树结构构造,统计路由表中每个节点被访问的次数,如图4(a)所示中每个节点旁标注的数字。
[2.2.1].当路由表重构定时器超时后,开始重构路由表。在图4(b)中,路由表重构模块后序遍历路由表,统计得到路由表访问总次数T为1696,并统计了每个节点的左右子树的访问次数,图中每个节点旁标注了由(节点访问次数,左子树访问次数,右子树访问次数)构成的三元组。
[2.2.2].层次遍历路由表,划分路由表子树,如图4(c)所示。设定M为8、U为32,如果节点的左右子节点与左右子树访问次数都大于53(T×U-1),则将左右子树从路由表中进行剪枝,在维持传统路由表逻辑关系不变的前提下划分出18个子树。子树由传统路由表中一部分节点组成,也是一棵二叉树,不同子树内的节点互不相同,且所有子树包含的节点为传统路由表节点总和。图中表格里记录了每个子树的节点组成,并通过累加子树中各节点访问次数计算出每个子树访问次数。
[2.2.3].将划分好的子树归类为M个子树集合,过程如图4(d)所示。首先,将18个子树按照访问次数降序排列,得到子树序列a1,a2,…,a18,然后依次将a1-a18放入8个子树集合中。在子树放置初始时,各子树集合为空,则将子树a1-a8依次放入集合1到集合8中,子树集合访问次数也相应发生变化,例如集合1在放入a1后访问次数由0变成131。继而,子树a9-a18按照子树放置规则依次放入子树集合中,并更新子树集合访问次数。以放置子树a17为例,在放置前访问次数最大、最小集合分别为集合5与集合1,由于集合5在去除最晚放入的子树(a12)后的访问次数(121)小于集合1的访问次数(189),则将a17放入集合1中。最终得到各子树集合的子树组成。
[2.2.4].组织索引树,如图4(e)所示。将划分子树的根节点按照二叉树构造方式组织成索引树,索引树中每个节点由前缀地址、前缀长度及所属集合三个关键属性进行标识;同时索引树中每个节点都指向一个子树,以节点2为例,它指向子树a2,a2由节点2、5、6组成,与传统路由表结构相同,它们分别指向一个路由信息表,记录到达该节点的所有路由项及每个路由项所包含的路由属性。
Claims (2)
1.一种多线程边界网关协议并行处理方法,其特征在于包括以下步骤:
步骤1、构建BGP多线程结构,BGP多线程结构采用主从处理方式,由一个主控线程和L个协议执行线程组成,L为可变自然数,L根据公式L=C×D-1来确定,其中C为多核处理器的核数,D为多核处理器每个核可支持的最大线程数;主控线程是执行BGP邻居分配、全局路由信息动态组织的软件线程,由邻居分配模块与路由表重构模块组成,邻居分配模块是用于计算邻居与协议执行线程对应关系的软件代码,路由表重构模块是用于动态更新全局路由表结构的软件代码;协议执行线程是完成与邻居束的具体会话关系的软件线程,由邻居管理模块、选路模块与路由广播模块组成,邻居管理模块是用于完成与邻居束中各邻居的会话建立与通信的软件代码,选路模块是执行最优路径选择的软件代码,路由广播模块是用于向其他协议执行线程发布本地最优路径的软件代码;
步骤2、路由表重构模块设置路由表重构定时器,对全局路由信息进行周期性动态重构,方法是:
2.1启动路由表重构定时器,若路由表重构定时器未超时,由邻居分配模块执行步骤3;若路由表重构定时器超时,路由表重构模块执行2.2;
2.2重构路由表结构:当路由表重构定时器超时时,首先设置超时标识,然后路由表重构模块将传统路由表逻辑划分成若干个子树集合,并构建快速索引树,具体方法是:
2.2.1路由表重构模块对路由表进行后序遍历,统计路由表在定时器计时周期内各路由节点被访问总次数T,T为自然数;路由表以二叉树结构组织,每访问一个路由节点时累计路由表重构定时器计时期间该节点及它的左右子树被访问的次数,左右子树是以左右子节点为根的二叉树;
2.2.2对路由表执行层次遍历,将路由表逻辑地划分为若干个路由表子树,且子树数量上限为U,U为自然数,U根据公式U=μ×M确定,其中μ为子树数量参考系数,为大于等于4且小于等于64的偶数,M为划分子树集合数量,M为可变自然数,M根据公式M=2×L来确定,具体方法是:
2.2.2.1如果当前路由节点的左右子节点与左右子树访问次数均大于T×U-1,则路由表重构模块对该节点的左右子树执行剪枝操作,将左右子树逻辑地划分为独立的子树,转2.2.2.2;否则,直接执行2.2.2.2;
2.2.2.2如果当前路由节点所在的路由表二叉树分层中还有其他未遍历的节点,则路由表重构模块继续按由左至右的顺序遍历下一个节点,转2.2.2.1;否则执行2.2.2.3;
2.2.2.3如果已遍历路由表二叉树中所有分层及节点,则执行2.2.3;否则,路由表重构模块跳至路由表二叉树的下一个分层中继续遍历,转2.2.2.1;
2.2.3路由表重构模块将子树归类为M个子树集合Q1,……,QM,方法是:
2.2.3.1路由表重构模块将划分后子树按照访问次数进行降序排列后得到子树序列a1,a2,…,au;下标U为路由表子树数量上限,U为自然数;
2.2.3.2累加子树集合Qi中所有子树的访问次数,1≤i≤M,计算出Qi访问总次数,再将所有子树集合按照子树集合访问总次数降序排列,获得访问总次数最小和最大的子树集合Qα和Qβ,Qα表示访问次数最小的子树集合,Qβ表示访问次数最大的子树集合,α为子树集合的下标,1≤α≤M,β为子树集合的下标,1≤β≤M;
2.2.3.3从子树序列a1,a2,…,au中取出头子树as,1≤s≤U,s初始值为1,放入子树集合Qt中,1≤t≤M,方法为:判断条件是否满足,即子树集合Qβ去除顶部子树rβ[pβ]之后的访问次数是否仍大于F(Qα),如果满足,则进行Qα与Qβ的子树置换操作,即将rβ[pβ]放入Qα中,而把子树as放入到Qβ中;如果不满足,则路由表重构模块将子树as放入Qα中,其中函数F(Qα)表示子树集合Qα的访问次数,表示子树rβ[pβ]的访问次数,rβ表示Qβ中子树,pβ表示子树rβ在Qβ中的位置,1≤pβ≤U,rβ[pβ]是当前Qβ中最晚放入的子树;
2.2.3.4如果s小于U,则s增加1,转2.2.3.2;否则执行2.2.4;
2.2.4路由表重构模块按照构建二叉树的方法将所有划分子树的根节点组织成索引树,每一项索引由该节点的前缀地址、前缀长度及子树所属集合进行标识;继而,转步骤2.1;
步骤3、邻居分配模块采取RoundRobin方式计算出与路由器连接的每个邻居进行会话通信的协议执行线程,根据协议执行线程数量L将BGP邻居划分为L个邻居束,并将与邻居进行通信的端口地址传递给对应的协议执行线程,具体方法为:如果路由表重构定时器超时,转2.2;如果路由表重构定时器未超时,当有新的邻居会话请求到达,邻居分配模块根据邻居的前缀地址为该邻居会话分配协议执行线程k,并将邻居会话通信端口地址以消息方式发送给协议执行线程k,继而执行步骤4,k为自然数且1≤k≤L;如果路由表重构定时器未超时且没有新邻居会话请求到达,则继续执行步骤3,等待新的邻居会话请求到达;
步骤4、邻居会话交互,方法为:
4.1建立会话关系:协议执行线程k接收到邻居分配模块发送的携带邻居通信端口地址的消息,邻居管理模块根据通信端口地址与该邻居建立会话关系;
4.2解析报文:当邻居管理模块接收到路由更新报文,邻居管理模块解析出路由更新报文中的路由项,每个路由项都由目的地址和多个路由属性组成;
4.3邻居管理模块查询路由表重构定时器超时标识,如果超时标识被置位表明路由表重构定时器已超时,转2.2;否则执行4.4;
4.4选路模块根据4.2解析出的目的地址和路由属性在全局路由信息中选择最优路径,方法为:选路模块首先在路由表的索引树中查找前缀最长匹配的节点,继而在索引到的子树中查找与目的地址完全匹配的节点,如果查找到则采用选路计算方法计算最优路径;如果未查找到匹配节点,则在该子树中添加该目的节点及相应路由信息,并将新路由作为最优路径;
4.5路由更新广播:路由广播模块将选路模块选择的最优路径发送给除该路由广播模块所属协议执行线程之外的所有协议执行线程,并接收来自其他协议执行线程选择的最优路径,当路由更新广播操作完成,执行4.6;
4.6最优路径播报:邻居管理模块根据邻居束b中每个邻居的出口过滤策略对步骤4.5获得的全部最优路径进行过滤,将已过滤的最优路径封装成路由更新报文,向各邻居发送,b为自然数且1≤b≤L;
4.7如果BGP进程结束,则转步骤5;否则,当有新的路由更新报文到达,转4.2;
步骤5、主控线程与所有协议执行线程运行终止。
2.如权利要求1所述的多线程边界网关协议并行处理方法,其特征在于所述路由表重构定时器为一个计时程序,计时时间设定为路由通告最大时间间隔。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110310369.9A CN102394809B (zh) | 2011-10-13 | 2011-10-13 | 一种多线程边界网关协议并行处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110310369.9A CN102394809B (zh) | 2011-10-13 | 2011-10-13 | 一种多线程边界网关协议并行处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102394809A CN102394809A (zh) | 2012-03-28 |
CN102394809B true CN102394809B (zh) | 2014-04-16 |
Family
ID=45862019
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110310369.9A Expired - Fee Related CN102394809B (zh) | 2011-10-13 | 2011-10-13 | 一种多线程边界网关协议并行处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102394809B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9787576B2 (en) * | 2014-07-31 | 2017-10-10 | Microsoft Technology Licensing, Llc | Propagating routing awareness for autonomous networks |
CN106598714B (zh) * | 2016-11-30 | 2021-05-07 | 台州市吉吉知识产权运营有限公司 | 一种Alarm优化管理方法及系统 |
US10642650B2 (en) * | 2017-12-13 | 2020-05-05 | Juniper Networks, Inc. | Multi-threaded route processing |
CN110647477B (zh) * | 2018-06-27 | 2022-02-11 | 阿里巴巴(中国)有限公司 | 数据缓存方法、装置、终端以及计算机可读存储介质 |
CN110601980B (zh) * | 2019-08-26 | 2022-01-14 | 中国第一汽车股份有限公司 | 一种车载终端的通信方法、系统及存储介质 |
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 |
US11561823B1 (en) | 2020-05-12 | 2023-01-24 | Juniper Networks, Inc. | Lockless management of immutable objects by multi-threaded processes using multiple counters |
US11762710B2 (en) | 2020-06-23 | 2023-09-19 | Juniper Networks, Inc. | Multithreaded route processing for routing information display |
CN115484129A (zh) * | 2022-07-29 | 2022-12-16 | 天翼云科技有限公司 | 多进程数据的处理方法、装置、网关及可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101741705A (zh) * | 2008-11-27 | 2010-06-16 | 华为技术有限公司 | 一种并行处理路由更新报文的方法及装置 |
US7814185B2 (en) * | 2001-10-31 | 2010-10-12 | Samsung Electronics Co., Ltd. | Prefix aggregation algorithm for routing coordination protocol in a loosely coupled massively parallel router |
-
2011
- 2011-10-13 CN CN201110310369.9A patent/CN102394809B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7814185B2 (en) * | 2001-10-31 | 2010-10-12 | Samsung Electronics Co., Ltd. | Prefix aggregation algorithm for routing coordination protocol in a loosely coupled massively parallel router |
CN101741705A (zh) * | 2008-11-27 | 2010-06-16 | 华为技术有限公司 | 一种并行处理路由更新报文的方法及装置 |
Non-Patent Citations (5)
Title |
---|
一种基于多线程的BGP策略并行模型的研究方法;姚铎等;《2009年研究生学术交流会 通信与信息技术论文集》;20091231;全文 * |
姚铎等.一种基于多线程的BGP策略并行模型的研究方法.《2009年研究生学术交流会 通信与信息技术论文集》.2009, |
面向多核多线程的BGP协议并行技术研究;高蕾;《CNKI优秀硕博论文集》;20091231;全文 * |
高蕾.面向多核多线程的BGP协议并行技术研究.《CNKI优秀硕博论文集》.2009, |
高蕾等.一种基于局部推测的BGP协议并行技术.《中国科学 E辑:信息科学》.2008,第38卷(第10期), * |
Also Published As
Publication number | Publication date |
---|---|
CN102394809A (zh) | 2012-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102394809B (zh) | 一种多线程边界网关协议并行处理方法 | |
CN102663058B (zh) | 一种分布式网络爬虫系统中的url去重方法 | |
CN107329814B (zh) | 一种基于rdma的分布式内存数据库查询引擎系统 | |
CN108809854A (zh) | 一种用于大流量网络处理的可重构芯片架构 | |
Brenna et al. | Distributed event stream processing with non-deterministic finite automata | |
Subramoni et al. | Design and evaluation of network topology-/speed-aware broadcast algorithms for infiniband clusters | |
CN102938000B (zh) | 一种高速并行的无锁流表路由查找方法 | |
Di Modica et al. | Resource and service discovery in SOAs: A P2P oriented semantic approach | |
CN101047550A (zh) | 一种p2p网络的组内结构及其组网方法 | |
CN109933631A (zh) | 基于Infiniband网络的分布式并行数据库系统及数据处理方法 | |
CN102255932A (zh) | 负载均衡方法和负载均衡器 | |
CN102970242A (zh) | 一种实现负载均衡的方法 | |
CN108449269A (zh) | 基于sdn的数据中心网络负载均衡方法 | |
Dolev et al. | Hypertree for self-stabilizing peer-to-peer systems | |
CN103810223B (zh) | 一种基于数据分组的内存数据组织查询方法 | |
Zhang et al. | Optimizing declarative graph queries at large scale | |
US20130103829A1 (en) | Computer system, method, and program | |
CN104462435A (zh) | 一种分布式数据库横向扩展方法 | |
CN102420797A (zh) | 一种拓扑映射方法及系统 | |
CN106897458A (zh) | 一种面向机电设备数据的存储及检索方法 | |
CN102790692A (zh) | 计算网元接口的方法及网管 | |
CN102023920A (zh) | 一种远程并行程序调试系统中基于树形的消息聚集方法 | |
CN109857562A (zh) | 一种众核处理器上访存距离优化的方法 | |
CN109995674A (zh) | 一种可编程sdn交换机系统 | |
CN1571352A (zh) | 在网络设备中处理五元流组的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140416 Termination date: 20161013 |