一种多线程边界网关协议并行处理方法

文档序号:7938816阅读:315来源:国知局
专利名称:一种多线程边界网关协议并行处理方法
技术领域
本发明属于路由协议系统结构领域,尤其涉及高性能路由器边界网关协议 BGP(Border Gateway Protocol)的线程级并行处理方法。
背景技术
自上世纪90年代以来,Internet经历了飞速发展的过程,已经从一个简单的实验性网络演变成为一个巨大的商业网络。路由器作为构建整个hternet核心网络的重要设施,其体系结构经历了从集中式路由器、分布式路由器到集群路由器的发展过程,然而路由器软件技术的发展则相对比较滞后,协议性能提升受限使其难以满足下一代^ternet发展的需求。特别是,随着化切!!!讨规模的快速增长以及各种网络应用的大量涌现,运行BGP 的路由器需要处理的路由更新报文数量迅猛增长,对路由器的协议处理速度提出了更高要求。多核处理器的应用为提高BGP协议处理速度提供了重要手段。一方面,相对于单核处理器,多核处理器拥有丰富的计算资源,具有更高的工作频率、低功耗和易扩展等特点,克服了单核处理器的计算瓶颈,并且可以支持线程级并行来帮助改善应用程序性能。另一方面,相对于集群结构,它具有分布式计算资源与共享存储结构优势,提供了更快的同步操作与更高的核间通信带宽,能够有效降低路由节点之间的通信同步开销。因此,设计一种基于多核处理器的BGP多线程并行处理方法,通过有效利用多核多线程计算资源来提高BGP处理海量路由更新报文的计算速度,从而降低路由更新报文处理延迟及提高网络收敛时间, 具有重要实践意义。现有专利(公开号为CN101741705A)公开了一种BGP多线程结构来实现并行处理路由更新报文的方法,它采用分层处理方式,通过划分多线程,使BGP软件在多核环境下多线程并行处理路由更新报文,其典型过程(如图1)主要包含以下步骤1、类别项预计算BGP按照路由地址前缀分布将全部路由信息分类计算为ρ个类别项,P为可变的自然数,将不同前缀范围的路由信息放进不同的类别项,类别项可以为散列表的表项、树结构中的子树等数据结构,不同类别项内部的地址前缀之间没有交叉,且所有类别项的地址前缀集合为所有目标地址总和。2、构建BGP多线程结构它由一个邻居管理和前处理前缀分类线程与多个选路线程组成。其中,邻居管理与前处理前缀分类线程由多个邻居管理单元与一个前处理前缀分类单元组成。邻居管理与前处理前缀分类线程将BGP邻居划分为多个子集,这些子集分别称为“邻居束1”、“邻居束2”、…、“邻居束ρ”。选路线程根据类别项划分为η个,η为可变自然数,它需要根据处理器核的数量与P进行调整,以达到软件最优性能。例如,假设核的数量为4,ρ、η可以调成4,如果处理的报文较多,也可以将ρ、η调成8。3、解析报文邻居管理单元i (i为自然数且KiSp)用于处理与邻居束i的会话关系,处理过程中仅使用本邻居束中的邻居信息、路由信息及出口策略信息。邻居管理单元i从邻居束i的一个邻居接收到路由更新报文以后,解析出路由更新报文中的目的地址和路由属性,并封装成消息发送给前处理前缀分类单元。
4、查找类别项前处理前缀分类单元获得解析出的目的地址和路由属性组成的消息,根据目的地址查找类别项,按照查找到的类别项,向与该类别项对应的选路线程j(j为自然数且KjSn)发送携带目的地址和路由属性的消息。5、选路计算选路线程j根据消息中网络地址和路由属性在类别项中选择最优路径,计算最优路径需要根据预定标准进行衡量,例如路径长度、可靠性、延迟、带宽、负载、 通信代价等权值,继而将最优路径发送给邻居管理与前处理前缀分类线程中所有P个邻居
管理单元。6、路由更新播报所有ρ个邻居管理单元接收到选路线程j发送的最优路径后,每个邻居管理单元都会对本单元负责的邻居束中的每个邻居,对发送来的最优路径进行该邻居的出口策略过滤,将经过过滤的路由打包发送给该邻居。7、当有新的路由更新报文达到,转步骤3。上述方法实现了 BGP在多核处理器上多个线程并行处理路由更新报文,提高了工作效率,但该方法仍存在一些不足(1)由于该方法将对单个路由更新报文的解析与封装、选路计算过程分布在两个线程上并行执行,导致线程之间需要进行频繁通信,降低了工作效率;(2)该方法将全局路由信息预先划分为固定的类别项,无法反映选路线程访问类别项的真实情况,极易出现多个选路线程同时访问同一类别项而产生大量访存竞争,使得选路线程之间无法真正并行工作,限制了 BGP处理路由更新报文处理速度的继续提升。

发明内容
本发明要解决的技术问题在于提供一种多线程BGP并行处理方法,在降低线程间通信开销、减少线程之间访存竞争的前提下,充分利用多核处理器多线程并行执行优势, 加快BGP处理路由更新报文速度。本发明技术方案如下步骤1、构建BGP多线程结构。它采用主从处理方式,由一个主控线程和L个协议执行线程组成,L为可变自然数,L根据公式L = CXD-I来确定,其中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= μ XM确定,其中μ为子树数量参考系数,为大于等于4且小于等于64的偶数,M为划分子树集合数量,M为可变自然数,M根据公式M = 2XL来确定。具体方法是2. 2. 2. 1如果当前路由节点的左右子节点与左右子树访问次数均大于TXr1JU 路由表重构模块对该节点的左右子树执行剪枝操作(见《数据结构与算法分析》中第四章, (美)维斯著,冯舜玺译,机械工业出版社,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,......,%。具体方法是2. 2. 3. 1路由表重构模块将划分后的子树按照访问次数进行降序排列后得到路由表子树序列 ,3-2, · · ·,;2. 2. 3. 2累加子树集合仏(1 < i彡M)中所有子树的访问次数,计算出仏访问总次数,再将所有子树集合按照访问总次数降序排列,获得访问总次数最小和最大的子树集合Qa和Qe,Qa (α为子树集合的下标,a ^M)表示访问次数最小的子树集合,Q0 (β 为子树集合的下标,1 ^ β ^ Μ)表示访问次数最大的子树集合;2. 2. 3. 3从子树序列a1; a2,-,au中取出头子树 (1彡s彡U),s初始值为1,放入子树集合队(1 < t < M)中,放置子树的规则为当前访问次数最大的子树放置到访问总次数最小的集合Qa中。方法为判断条件^^/^PM)是否满足,即子树集合…去除顶部子树re[pe]之后的访问次数是否仍大于F(Qa),其中函数WQa)表示子树集合Qa 的访问次数,表示子树巧[ 0]的访问次数,rB表示Q0中子树,ρ0表示子树巧在… 中的位置,Kpe彡U,re[pe]是当前Q0中最晚放入的子树。如果满足上述条件,则进行 Qa与Qe的子树置换操作,即将巧[pe]放入Qa中,而把子树 放入到Q0中;如果条件不
满足,则路由表重构模块将子树 放入Qa中。该子树放置方法可以使F(Qk)(表示执行完此次子树放置操作之后各子树集合访问总次数的最大值)增长最小,最终获得访问均衡的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、邻居分配模块采取RoimdRobin方式计算出与路由器连接的每个邻居进行会话通信的协议执行线程,根据协议执行线程数量L将BGP邻居划分为L个邻居束,并将与邻居进行通信的端口地址(进行TCP/IP通信的地址,见《TCP/IP协议详解卷I》中第三章, 范建华译,机械工业出版社,2000年第一版)传递给对应的协议执行线程。具体方法为如果路由表重构定时器超时,转2. 2 ;如果路由表重构定时器未超时,当有新的邻居会话请求到达,邻居分配模块根据邻居的前缀地址为该邻居会话分配协议执行线程k(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为自然数且KbSL)中每个邻居的出口过滤策略(见《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如果当前路由节点的左右子节点与左右子树访问次数大于TXU—1,将左
8右子树逻辑划分为独立子树,然后转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 (ΤΧΓ1),则将左右子树从路由表中进行剪枝,在维持传统路由表逻辑关系不变的前提下划分出18个子树。子树由传统路由表中一部分节点组成,也是一棵二叉树,不同子树内的节点互不相同,且所有子树包含的节点为传统路由表节点总和。图中表格里记录了每个子树的节点组成,并通过累加子树中各节点访问次数计算出每个子树访问次数。
[2.2.3].将划分好的子树归类为M个子树集合,过程如图4(d)所示。首先,将18 个子树按照访问次数降序排列,得到子树序列al,a2,…,al8,然后依次将al_al8放入8个子树集合中。在子树放置初始时,各子树集合为空,则将子树al-a8依次放入集合1到集合 8中,子树集合访问次数也相应发生变化,例如集合1在放入al后访问次数由0变成131。 继而,子树a9_al8按照子树放置规则依次放入子树集合中,并更新子树集合访问次数。以放置子树al7为例,在放置前访问次数最大、最小集合分别为集合5与集合1,由于集合5在去除最晚放入的子树(al2)后的访问次数(121)小于集合1的访问次数(189),则将al7放入集合1中。最终得到各子树集合的子树组成。[2.2.4].组织索引树,如图4(e)所示。将划分子树的根节点按照二叉树构造方式组织成索引树,索引树中每个节点由前缀地址、前缀长度及所属集合三个关键属性进行标识;同时索引树中每个节点都指向一个子树,以节点2为例,它指向子树a2,a2由节点2、5、 6组成,与传统路由表结构相同,它们分别指向一个路由信息表,记录到达该节点的所有路由项及每个路由项所包含的路由属性。
权利要求
1.一种多线程边界网关协议并行处理方法,其特征在于包括以下步骤步骤1、构建BGP多线程结构,BGP多线程结构采用主从处理方式,由一个主控线程和L 个协议执行线程组成,L为可变自然数,L根据公式L = CXD-I来确定,其中C为多核处理器的核数,D为多核处理器每个核可支持的最大线程数;主控线程是执行BGP邻居分配、全局路由信息动态组织的软件线程,由邻居分配模块与路由表重构模块组成,邻居分配模块是用于计算邻居与协议执行线程对应关系的软件代码,路由表重构模块是用于动态更新全局路由表结构的软件代码;协议执行线程是完成与邻居束的具体会话关系的软件线程,由邻居管理模块、选路模块与路由广播模块组成,邻居管理模块是用于完成与邻居束中各邻居的会话建立与通信的软件代码,选路模块是执行最优路径选择的软件代码,路由广播模块是用于向其他协议执行线程发布本地最优路径的软件代码;步骤2、路由表重构模块设置路由表重构定时器,对全局路由信息进行周期性动态重构,方法是·2.1启动路由表重构定时器,若路由表重构定时器未超时,由邻居分配模块执行步骤 3 ;若路由表重构定时器超时,路由表重构模块执行2. 2 ;·2. 2重构路由表结构当路由表重构定时器超时时,首先设置超时标识,然后路由表重构模块将传统路由表逻辑划分成若干个子树集合,并构建快速索引树,具体方法是·2. 2. 1路由表重构模块对路由表进行后序遍历,统计路由表在定时器计时周期内各路由节点被访问总次数T,T为自然数;路由表以二叉树结构组织,每访问一个路由节点时累计路由表重构定时器计时期间该节点及它的左右子树被访问的次数,左右子树是以左右子节点为根的二叉树;·2. 2. 2对路由表执行层次遍历,将路由表逻辑地划分为若干个路由表子树,且子树数量上限为U,U为自然数,U根据公式U= μ XM确定,其中μ为子树数量参考系数,为大于等于4且小于等于64的偶数,M为划分子树集合数量,M为可变自然数,M根据公式M = 2 X L 来确定,具体方法是·2. 2. 2. 1如果当前路由节点的左右子节点与左右子树访问次数均大于TXU—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路由表重构模块将划分后子树按照访问次数进行降序排列后得到子树序列,3-2, · · ·,;2. 2. 3. 2累加子树集合&中所有子树的访问次数,1 ^ i ^ M,计算出&访问总次数, 再将所有子树集合按照子树集合访问总次数降序排列,获得访问总次数最小和最大的子树集合Qa和Qe,Qa表示访问次数最小的子树集合,Qe表示访问次数最大的子树集合,α为子树集合的下标,a ^M, β为子树集合的下标,1 ^ β ^M5·2. 2. 3. 3从子树序列B1, a2, ...,au中取出头子树as, 1 ^ s ^ U,s初始值为1,放入子树集合Qt中,1 < t <M,方法为判断条件M^Hj^y^^)是否满足,即子树集合…去除顶部子树巧[ 0]之后的访问次数是否仍大于F(Qa),如果满足,则进行Qa与…的子树置换操作,即将re[pe]放入Qa中,而把子树 放入到Q0中;如果不满足,则路由表重构模块将子树 放入Qa中,其中函数WQa)表示子树集合Qa的访问次数,表示子树巧[ 0] 的访问次数,r0表示Q0中子树,ρ0表示子树巧在…中的位置,1 Sp0 ^U, Γ0[ρ0]是当前Qe中最晚放入的子树;.2. 2. 3. 4如果s小于U,则s增加1,转2. 2. 3. 2 ;否则执行2. 2. 4 ; 2. 2. 4路由表重构模块按照构建二叉树的方法将所有划分子树的根节点组织成索引树,每一项索引由该节点的前缀地址、前缀长度及子树所属集合进行标识;继而,转步骤 2. 1 ;步骤3、邻居分配模块采取RoimdRobin方式计算出与路由器连接的每个邻居进行会话通信的协议执行线程,根据协议执行线程数量L将BGP邻居划分为L个邻居束,并将与邻居进行通信的端口地址传递给对应的协议执行线程,具体方法为如果路由表重构定时器超时,转2. 2 ;如果路由表重构定时器未超时,当有新的邻居会话请求到达,邻居分配模块根据邻居的前缀地址为该邻居会话分配协议执行线程k,并将邻居会话通信端口地址以消息方式发送给协议执行线程k,继而执行步骤4,k为自然数且KkSL ;如果路由表重构定时器未超时且没有新邻居会话请求到达,则继续执行步骤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所述的多线程边界网关协议并行处理方法,其特征在于所述路由表重构定时器为一个计时程序,计时时间设定为路由通告最大时间间隔。
全文摘要
本发明公开了一种多线程边界网关协议并行处理方法,目的是加快BGP处理路由更新报文速度。技术方案是构建由一个主控线程和L个协议执行线程组成的BGP多线程结构,主控线程由邻居分配模块与路由表重构模块组成,协议执行线程由邻居管理模块、选路模块与路由广播模块组成;路由表重构模块对全局路由信息进行动态重构;邻居分配模块计算出每个邻居对应的协议执行线程,将BGP邻居划分为L个邻居束,并将与邻居进行通信的端口地址传递给对应的协议执行线程;由邻居管理模块、选路模块与路由广播模块相互配合进行邻居会话交互。采用本发明能降低线程间通信开销,降低线程间同时访问路由表时引发的竞争,提高BGP运行速度。
文档编号H04L12/56GK102394809SQ201110310369
公开日2012年3月28日 申请日期2011年10月13日 优先权日2011年10月13日
发明者任珊珊, 王志英, 肖侬, 赖明澈, 陆洪毅, 马胜, 高蕾 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1