一种并行处理路由更新报文的方法及装置 【技术领域】
本发明涉及通信技术领域,特别涉及一种并行处理路由更新报文的方法及装置。
背景技术
为了便于管理,计算机网络被划分成多个AS(Autonomous System,称自治系统或自治域),各个AS的边界路由器之间通过域间路由协议来交换路由信息,目前主要使用的域间路由协议是边际网关协议BGP-4(Border Gateway Protocol,边际网关协议)。交换域间路由信息的路由器称做BGP“发言者”,两个建立BGP会话的发言者互为对方的“邻居”,它们之间的关系称做“邻居关系”。
由于涉及的网络规模巨大,变化频繁,运行BGP的路由器需要处理的路由信息数量是巨大的,对路由器性能的要求日益提高。多核处理器为提高计算机的性能提供了契机。在具有多核处理器的计算机上,不同的任务可以同时运行在不同的核上,具有提高计算效率的极大潜力。将BGP软件进行适当的改造,使之能够以多个线程的形式运行在多核处理器上,不仅可以使程序并行运行,利用多核资源提高工作效率,还可以省掉大量的通讯报文。
现有技术一中公开了一种集中式BGP的实现方式,集中式BGP只有一个进程,一个线程,运行在单个处理器上。它可以不划分功能模块,但目前的大多数实现中都会划分出多个功能模块,各个模块有任务的时候,将任务排队,交错执行。
现有技术二中公开了一种分布式BGP的实现方式,分布式BGP是分成多个部分,各个部分同时运行在多个路由器上,可以同时运行,各个节点在维护内部分布式BGP邻居关系的同时,分别维护各自在外部的BGP邻居集合,处理各自邻居集合的报文和路由信息,选出本节点的局部符合预定标准路由之后发送给其它节点,进行路由同步计算,选出全局符合预定标准路由,再将全局符合预定标准路由通告给邻居。
在对现有技术进行研究后,本发明人发现:现有技术一中的集中式BGP,在路由信息量大、更新频繁的情况下,集中式BGP的工作效率低。使用多核处理器时,集中式BGP在同一时间只能运行在一个核上,和使用单核处理器相比,没有提高效率的潜力。而现有技术二中分布式BGP需要多个路由器和高速通讯网络,成本较高。由于各个路由器是独立的,分布式BGP的各部分之间需要进行大量的通讯,占用了BGP的资源、工作时间和网络带宽,有的分布式BGP需要进行路由同步计算,这些因素都限制了分布式BGP的效率提升。
【发明内容】
为了使多核环境下更能高效的实现处理路由更新报文,能够充分利用多核处理器的优势,提高处理路由更新报文的工作效率,本发明实施例提供了一种并行处理路由更新报文的方法及装置。所述技术方案如下:
一方面,提供了一种并行处理路由更新报文的方法,所述方法包括:
按照路由地址前缀对路由信息进行分类,得到至少两个类别项;
当接收到多个路由更新报文后,对所述多个路由更新报文分别进行解析,解析出多个路由地址和多个路由属性;
根据所述多个路由地址的路由地址前缀在所述类别项中分别查找每个路由地址前缀对应的类别项;
在查找到的类别项中,根据所述路由属性选出符合预定标准的路由信息。
提供了一种并行处理路由更新报文的方法,所述方法包括:
接收多个路由更新报文;
对所述多个路由更新报文进行解析,解析出路由更新报文中的路由信息,所述路由信息包括:路由地址和路由属性,并选择携带下一跳可达的路由信息;
在下一跳可达的路由信息和已有的路由信息中选择到达同一地址前缀的符合预定标准的路由信息。
提供了一种并行处理路由更新报文的方法,所述方法包括:
接收到多个路由更新报文后,对所述多个路由更新报文进行解析,解析出多个路由信息,所述路由信息包括:路由地址和路由属性;
根据所述多个路由地址前缀和路由属性进行选路计算,计算出多个局部符合预定标准的路由信息;
在所述多个局部符合预定标准的路由信息和已有的路由信息中进行选择,进一步选择出全局符合预定标准的路由信息。
还提供了一种并行处理路由更新报文的装置,所述装置包括:
分类模块,用于按照路由地址前缀对路由信息进行分类,得到至少两个类别项;
解析模块,用于对接收到的多个路由更新报文进行解析,解析出多个路由信息,所述多个路由信息包括:多个路由地址和多个路由属性;
查找模块,用于根据所述解析模块得到的多个路由地址的路由地址前缀在所述多个类别项中分别查找每个路由地址前缀对应的类别项;
计算模块,用于在查找到的类别项中进行选路计算。
提供了一种并行处理路由更新报文的装置,所述装置包括:
通信模块,用于接收多个路由更新报文,并发送所述多个路由更新报文;
解析模块,用于解析出多个路由更新报文中的多个路由信息,所述多个路由信息包括:多个路由地址和路由属性,并选择下一跳可达地路由信息;
选择模块,用于在所述下一跳可达的路由信息和已有的路由信息中选择到达同一地址前缀的符合预定标准的路由信息。
提供了一种并行处理路由更新报文的装置,所述装置包括:
解析模块,用于接收多个路由更新报文后,对所述多个路由更新报文进行解析,解析出多个路由信息,所述多个路由信息包括:多个路由地址和路由属性;
计算模块,用于根据所述多个路由地址的路由地址前缀和路由属性进行选路计算,计算出多个局部符合预定标准的路由信息;
选择模块,用于在计算出的多个局部符合预定标准的路由信息和已有的路由信息中选择出全局符合预定标准的路由信息。
本发明实施例提供的技术方案的有益效果是:
通过对BGP协议进行灵活的补充,对BGP软件进行多线程改造,并相应地改造数据结构,使BGP程序能够以多个线程的方式,并行地运行在多核处理器的多个核上,可以充分利用多核处理器带来的优势,提高工作效率,增强BGP程序的实时性。并且线程数目可以调节,具有较强的适应环境的能力。
【附图说明】
图1是本发明实施例1提供的处理路由更新报文的方法流程图;
图2是本发明实施例1提供的处理路由更新报文的方法中数据存储示意图;
图3是本发明实施例2提供的处理路由更新报文的方法流程图;
图4是本发明实施例2提供的处理路由更新报文的方法中数据存储示意图;
图5是本发明实施例3提供的处理路由更新报文的方法流程图;
图6是本发明实施例3提供的处理路由更新报文的方法中数据存储示意图;
图7是本发明实施例4提供的处理路由更新报文的方法流程图;
图8是本发明实施例4提供的处理路由更新报文的方法中数据存储示意图;
图9是本发明实施例5提供的处理路由更新报文的装置结构图;
图10是本发明实施例5提供的处理路由更新报文的另一种装置结构图;
图11是本发明实施例6提供的处理路由更新报文的装置结构图;
图12是本发明实施例6提供的处理路由更新报文的另一种装置结构图;
图13是本发明实施例7提供的处理路由更新报文的装置结构图;
图14是本发明实施例7提供的处理路由更新报文的另一种装置结构图。
【具体实施方式】
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。其中,附图2、4、6、8中涉及到的所有实心箭头均代表消息队列,空心双箭头均代表数据访存,双箭头均代表下一跳查询,在此说明,以下描述中不再赘述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例提供了一种并行处理路由更新报文的方法,对BGP软件进行了多线程改造,使BGP程序能够以多个线程的方式,并行地运行在多核处理器的多个核上,提高了处理路由更新报文的效率。
实施例1
本发明实施例提供了一种并行处理路由更新报文的方法,所述方法包括:按照路由地址前缀对路由信息进行分类,得到至少两个类别项;当接收到多个路由更新报文后,对所述多个路由更新报文进行解析,解析出多个路由地址和路由属性;根据所述多个路由地址前缀在所述类别项中分别查找对应的类别项;在查找到的类别项中,根据所述路由属性选出符合预定标准的路由信息。参见图1,所述方法具体包括:
101:按照路由地址前缀对全部路由信息进行分类计算,将不同前缀范围的路由信息放进不同的类别项(可以是散列表的表项、树结构中的“子树”等任何可以划分的数据结构)。同一个地址前缀只能放进一个类别项中;每个类别项包含的地址前缀与别的类别项没有交叉;而所有类别项的地址前缀的集合,是所有目的地址列表。
102:将BGP核心功能划分为多个邻居管理和前处理前缀分类线程、多个选路线程。其中,多个邻居管理和前处理前缀分类线程包括多个邻居管理单元和一个前处理前缀分类单元。
上述邻居管理和前处理前缀分类线程是根据邻居关系划分的,BGP全部邻居关系划分成多个子集,这些子集分别称作“邻居束1”、“邻居束2”、……“邻居束m”,每个邻居管理单元负责维护BGP全部邻居关系的一个子集,邻居管理单元可以是m个;
上述选路线程是根据类别项划分的,与类别项是有对应关系的,可以是n个,其中,m和n是可变的自然数,以达到软件的最优性能为目的,可以根据实际情况,对m和n进行调节,例如,根据核的数量,假设核的数量为6,可以将m和n调成6,但如果处理的报文比较多,也可以将m和n调成12,或,将m调成6,将n调成12。
103:邻居管理单元i负责维护邻居束i的邻居关系,从邻居束i的一个邻居收到路由更新报文以后,邻居管理单元i解析路由更新报文中的网络目的地址和路由属性,并将解析出的网络目的地址和路由属性封装成消息,放入消息队列,发送给前处理前缀分类单元,其中0<i<m。
104:前处理前缀分类单元从邻居管理单元i的消息队列中取出消息后,根据网络目的地址前缀查找类别项,按照查找到的类别项,将携带网络目的地址前缀和路由属性的消息发送给与该类别项对应的选路线程j,其中0<j<n。
105:选路线程j收到前处理前缀分类线程的消息后,根据消息中网络目的地址前缀和路由属性在类别项中进行选路计算,计算出符合预定标准的路由信息,并将计算出的路由信息的路由地址前缀和路由属性封装成消息,发送给所有的m个邻居管理单元。
其中,预定标准,有不同的衡量权值,例如:路径长度、可靠性、延迟、带宽、负载、通信代价等达到预定的权值,本发明实施例中,预定标准等同,在以下内容中提到时,不再赘述。
106:所有的m个邻居管理单元收到选路线程j的消息后,其中每个邻居管理单元对本线程负责的邻居束中的每个邻居,将消息中携带的符合预定标准的路由信息过该邻居的出口策略,并将过策略后的路由信息通告给该邻居管理单元负责维护的邻居。
进一步地,上述方法中的路由信息和邻居信息可以存储在已有数据库中,也可以建立一个新的数据库,用来存储路由信息和邻居信息。为了具体地体现出数据存储,参见图2,上述方法可以具体如下:
按照路由地址前缀进行分类计算,将不同前缀范围的路由信息放进不同的类别项,类别项存储在全局路由分类库201中。
局部邻居信息库i202存储邻居管理线程i203的所有邻居的信息,邻居管理单元i203收到邻居发来的路由更新报文以后,解析路由更新报文中的目的地址和路由属性,并将解析出的目的地址和路由属性封装成消息发送给前处理前缀分类单元204。
前处理前缀分类单元204收到消息后,根据消息中的目的地址前缀在全局路由分类库201中查找类别项,如果配置了策略,则将接收到的目的地址和路由属性等路由信息过入口策略库205,将过策略后新生成的路由属性维护到全局路由属性库206,按照查找到的类别项,将目的地址前缀和路由属性发送给与该类别项对应的选路线程j207。
选路线程j207收到前处理前缀分类线程204的消息后,根据目的地址前缀和路由属性进行选路计算。将计算出的符合预定标准的路由信息,记录在全局路由分类库201中,并将计算出的路由的地址前缀和属性封装成消息,发送给所有的m个邻居管理单元。
所有的m个邻居管理单元接收到选路线程的消息后,每个邻居管理单元,例如邻居管理单元i203,对本线程的邻居束中的每个邻居,将该符合预定标准的路由信息过该邻居的局部出口策略库i208,将过策略后的路由信息保存在局部路由信息库i209中,并根据策略,将该符合预定标准的路由信息通告给该线程负责的邻居。
本实施例通过划分多个线程,使BGP软件在多核环境下实现在多个线程中并行处理路由更新报文;按照路由地址前缀进行分类计算,得到多个类别项,前处理前缀分类线程根据路由地址前缀查找类别项,选路线程在查找到的类别项内部进行选路计算,使得不同类别项内部的选路过程可以并行进行,提高了工作效率;将邻居信息和路由信息分别存储在对应的数据库中,不仅使多个线程能够共享和处理数据,并大大减少了访存冲突,提高了程序的并行性。
实施例2
本发明实施例提供了一种并行处理路由更新报文的方法,所述方法包括:按照路由地址前缀对路由信息进行分类,得到至少两个类别项;当接收到多个路由更新报文后,对所述多个路由更新报文进行解析,解析出多个路由地址和路由属性;根据所述多个路由地址前缀在所述类别项中分别查找对应的类别项;在查找到的类别项中,根据所述路由属性选出符合预定标准的路由信息。参见图3,所述方法具体包括:
301:按照路由地址前缀进行分类计算,将不同前缀范围的路由信息放进不同的类别项(可以是散列表的表项、树结构中的“子树”等任何可以划分的数据结构)。同一个地址前缀只能放进一个类别项中;每个类别项包含的地址前缀与别的类别项没有交叉;而所有类别项的地址前缀的集合,是所有目的地址列表。
302:将BGP核心功能划分为多个邻居管理和前处理前缀分类线程和多个选路线程。
邻居管理和前处理前缀分类线程是根据邻居关系划分的,BGP全部邻居关系划分成多个子集,这些子集分别称作“邻居束1”、“邻居束2”、……“邻居束m”,每个邻居管理和前处理前缀分类线程负责维护BGP全部邻居关系的一个子集,邻居管理和前处理前缀分类线程可以是m个;
选路线程是根据类别项划分的,与类别项是有对应关系的,可以是n个,其中m和n是可变的自然数,根据核的数量进行调节。
303:邻居管理和前处理前缀分类线程i负责维护邻居束i的邻居关系,从邻居束i的一个邻居收到路由更新报文以后,邻居管理和前处理前缀分类线程i解析路由更新报文的报文头,其中0<i<m。
304:邻居管理和前处理前缀分类线程i解析路由更新报文中的网络目的地址和路由属性,根据网络目的地址前缀查找类别项,按照查找到的类别项,将携带网络目的地址前缀和路由属性的消息发送给与该类别项对应的选路线程j,其中0<j<n。
305:选路线程j收到邻居管理和前处理前缀分类线程的消息后,根据消息中的网络目的地址前缀和路由属性在类别项中进行选路计算,计算出符合预定标准的路由信息,并将计算出的符合预定标准的路由信息的路由地址前缀和路由属性封装成消息,发送给所有的m个邻居管理和前处理前缀分类线程。
306:所有的m个邻居管理和前处理前缀分类线程收到选路线程j的消息后,其中每个邻居管理和前处理前缀分类线程对本线程负责的邻居束中的每个邻居,将消息中携带的路由信息过该邻居的出口策略库,并根据策略,将该符合预定标准的路由信息通告给该邻居管理和前处理前缀分类线程负责的邻居。
进一步地,在上述方法中还可以进行数据存储,如将路由信息和邻居信息存储在数据库中,参见图4,上述方法可以具体如下:
按照路由地址前缀进行分类计算,将不同前缀范围的路由信息放进不同的类别项,类别项存储在全局路由分类库401中。
局部邻居信息库i402存储邻居管理和前处理前缀分类线程i403的所有邻居的信息,邻居管理和前处理前缀分类线程i403收到一个邻居发来的路由更新报文以后,邻居管理和前处理前缀分类线程i403解析报文头,解析报文中的网络目的地址和路由属性,将路由属性维护到全局路由属性库404中;如果对该邻居配置了策略,则将路由信息过局部策略库i405,将过策略后新生成的属性维护到全局路由属性库404;根据路由地址前缀在全局路由分类库401中查找类别,按照查找到的类别项,将携带路由地址前缀和路由属性的消息对应地发送给与该类别项对应的选路线程j406。
选路线程j406收到邻居管理和前处理前缀分类线程i403的消息后,根据路由的地址前缀和属性进行选路计算。将计算出的符合预定标准的路由信息,记录在全局路由分类库401中,并将计算出的路由的地址前缀和属性封装成消息,发送给所有的邻居管理和前处理前缀分类线程。
所有邻居管理和前处理前缀分类线程,例如邻居管理和前处理前缀分类线程i403,收到选路线程j406的消息后,对本线程的邻居束中的每个邻居,将该符合预定标准的路由信息过该邻居的局部策略库i405,将过策略后的路由信息保存在局部路由信息库i407中,并根据策略,将该路由信息通告给该线程负责的邻居。
本实施例通过划分多个线程,使BGP软件在多核环境下实现在多个线程中并行处理路由更新报文;按照路由地址前缀进行分类计算,得到多个类别项,邻居管理和前处理前缀分类线程根据路由地址前缀进行查找类别项,选路库线程在查找到的类别项内部进行选路,使得不同类别项内部的选路过程可以并行进行,提高了工作效率;将邻居信息和路由信息分别存储在对应的数据库中,不仅使多个线程能够共享和处理数据,并大大减少了访存冲突,提高了程序的并行性。
实施例3
本发明实施例提供了一种并行处理路由更新报文的方法,所述方法包括:接收多个路由更新报文;对所述多个路由更新报文进行解析,解析出路由更新报文中的路由信息,所述路由信息包括:路由地址和路由属性,并选择携带下一跳可达的路由信息;在下一跳可达的路由信息和已有的路由信息中选择到达同一地址前缀的符合预定标准的路由信息。参见图5,所述方法具体包括:
501:将BGP核心功能划分为邻居管理线程、第一阶段选路线程、第二阶段选路线程、第三阶段选路线程。其中,所述第二阶段选路线程包括了与路由器的全局路由表管理模块(Routing Table Management,RTM)进行交互的模块,该模块也可以独立出来成为一个RTM交互线程。
502:邻居管理线程收到邻居发来的路由更新报文,邻居管理线程将路由更新报文发送给第一阶段选路线程。
503:第一阶段选路线程解析路由更新报文的内容,解析出的地址前缀和路由属性等信息。向RTM交互模块查询,确定路由的下一跳可达后,第一阶段选路线程将下一跳可达的路由信息发送给第二阶段选路线程。
504:第二阶段选路线程从消息队列中取出下一跳可达的路由信息后,并在该下一跳可达的路由信息和已有的路由信息中选择到达同一目的地址前缀的符合预定标准的路由信息,下发给RTM交互模块,并将选出的符合预定标准的路由信息封装成消息发送给第三阶段选路线程。
505:第三阶段选路线程将消息中的符合预定标准的路由信息过每个邻居的出口策略,生成新的路由信息。并第三阶段选路线程将新的路由信息封装成消息发送给邻居管理线程。
506:邻居管理线程将第三阶段选路线程发来的新的路由信息封装成路由更新报文,发送给该线程负责的邻居。
进一步地,在上述方法中还可以进行数据存储,如将路由信息和邻居信息存储在数据库中,参见图6,上述方法可以具体如下:
邻居信息库601存储所有邻居的信息,邻居管理线程602收到邻居发来的路由更新报文,发送给第一阶段选路线程603。
第一阶段选路线程603解析路由更新报文的内容,将地址前缀和路由属性等信息维护到路由信息库604。调用路由策略库605中的入口策略,对路由过策略,生成的新属性维护进路由信息库604,路由信息库604向RTM交互模块606查询,确定路由的下一跳可达后,第一阶段选路线程603将下一跳可达的路由信息封装成消息发送给第二阶段选路线程607。
第二阶段选路线程607从消息队列中取出下一跳可达的路由信息,在下一跳可达的路由信息和已有的路由信息中选择到达同一目的地址前缀的符合预定标准的路由信息,下发给RTM交互模块606,第二阶段选路线程607将选出的符合预定标准的路由信息封装成消息发送给第三阶段选路线程608。
第三阶段选路线程608将消息中的符合预定标准的路由信息过每个邻居的出口策略,生成新的路由信息维护到路由信息库604。第三阶段选路线程608将新的路由信息封装成消息发送给邻居管理线程602。
邻居管理线程602将第三阶段选路线程608发来的新的路由信息封装成路由更新报文,发送给该线程负责的邻居。
本实施例通过划分多个线程,使BGP软件在多核环境下实现在多个线程中并行处理路由更新报文,提高了工作效率;将邻居信息和路由信息分别存储在对应的数据库中,不仅使多个线程能够共享和处理数据,并大大减少了访存冲突,提高了程序的并行性。
实施例4
本发明实施例提供了一种并行处理路由更新报文的方法,所述方法包括:接收到多个路由更新报文后,同时对所述多个路由更新报文进行解析,解析出多个路由信息,所述路由信息包括:路由地址和路由属性;根据所述多个路由地址前缀和路由属性进行选路计算,计算出多个局部符合预定标准的路由信息;在所述多个局部符合预定标准的路由信息和已有的路由信息中进行选择,进一步选择出全局符合预定标准的路由信息。参见图7,所述方法具体包括:
701:将BGP核心功能划分为多个邻居管理和路由处理线程和一个路由同步线程。其中,每个邻居管理和路由处理线程包括邻居管理单元和路由处理单元。
邻居管理和路由处理线程是根据邻居关系划分的,BGP全部邻居关系划分成多个子集,这些子集分别称作“邻居束1”、“邻居束2”、……“邻居束m”,每个邻居管理单元负责维护BGP全部邻居关系的一个子集,邻居管理单元可以是m个,m是可变的自然数,可以根据核的数量进行调节。
702:邻居管理和路由处理线程中的邻居管理单元i负责维护邻居束i的邻居关系,从邻居束i的一个邻居收到来自其它邻居的路由更新报文以后,邻居管理单元i解析路由更新报文的报文头,将解析出的路由地址前缀和属性发送给路由处理单元i,其中0<i<m。
703:路由处理单元i根据接收到的路由地址前缀和路由属性在本单元内部进行选路计算,计算出局部符合预定标准的路由信息,并将计算出的局部符合预定标准的路由信息发送给路由同步线程。
704:路由同步线程根据收到的局部符合预定标准的路由信息和已有的路由信息,选出全局符合预定标准的路由信息,发送给各邻居管理和路由同步线程的邻居管理单元。
705:邻居管理和路由同步线程中的各邻居管理单元收到全局符合预定标准的路由信息后,对本线程负责的邻居束中的每个邻居,将该全局符合预定标准的路由信息过该邻居的出口策略,并根据策略,将过策略后的全局符合预定标准的路由信息通告给该邻居管理单元负责的邻居。
进一步地,在上述方法中还可以进行数据存储,如将路由信息和邻居信息存储在数据库中,参见图8,上述方法可以具体如下:
局部邻居信息库i801存储邻居管理和路由同步线程i802的所有邻居的信息。邻居管理和路由同步线程i802中的邻居管理单元i8021从邻居收到路由更新报文以后,邻居管理单元i8021解析报文头,解析报文中的网络目的地址和路由属性,如果对该邻居配置了策略,则将路由信息过局部策略库i803中的入口策略,将过策略后新生成的属性维护到全局路由信息库804中;邻居管理和路由同步线程i802中的路由处理单元i8022根据路由的地址前缀和属性在本单元内部进行选路计算,计算出局部符合预定标准的路由信息,记录在局部路由信息库i805中,并将计算出的局部符合预定标准的路由信息的路由地址前缀和属性发送给路由同步线程806。
路由同步线程806根据全局路由信息库804中的信息,选出全局符合预定标准的路由信息,发送给RTM交互线程807、邻居管理和路由同步线程i802中的邻居管理单元i8021。
邻居管理单元i8021收到全局符合预定标准的路由信息后,对本单元的邻居束中的每个邻居,将该全局符合预定标准的路由信息过该邻居的局部策略库i803中的出口策略(过策略后可能生成新的属性),将过策略后的全局符合预定标准的路由信息保存在全局路由信息库804中,并根据策略,邻居管理单元i8021可能将该全局符合预定标准的路由信息通告给该单元所属的邻居管理和路由处理线程i802负责维护的邻居(也可能不通告)。至此核心工作流程结束。
本实施例通过划分多个线程,使BGP软件在多核环境下实现在多个线程中并行处理路由更新报文;通过多线程间路由同步计算,提高了工作效率;将邻居信息和路由信息分别存储在对应的数据库中,不仅使多个线程能够共享和处理数据,并大大减少了访存冲突,提高了程序的并行性。
实施例5
本发明实施例提供了一种并行处理路由更新报文的装置,参见图9,该装置包括:
分类模块901,用于按照路由地址前缀对路由信息进行分类,得到多个类别项;
解析模块902,用于对接收到的多个路由更新报文进行解析,解析出多个路由地址和多个路由属性;
查找模块903,用于根据解析模块902解析出的多个路由地址的路由地址前缀在多个类别项中分别查找每个路由地址前缀对应的类别项;
计算模块904,用于在查找模块903查找到的类别项中进行选路计算。
参见图10,上述装置还包括:划分模块905,用于根据邻居关系划分多个邻居管理和前处理前缀分类线程,根据多个类别项划分多个选路线程;
相应地,解析模块902包括:
多个邻居管理和前处理前缀分类线程,用于维护邻居关系和互相通告新的路由信息,还用于将符合预定标准的路由信息过邻居的出口策略;当每个邻居管理和前处理前缀分类线程接收到邻居发来的路由更新报文后,解析出路由地址和路由属性;
查找模块903包括:
多个邻居管理和前处理前缀分类线程,每个邻居管理和前处理前缀分类线程对解析出路由地址和路由属性的路由信息过入口策略,将解析出的路由地址前缀经过分类算法,在多个类别项中查找对应的类别项,并按照查找到的类别项发送路由地址和路由属性;
计算模块904具体包括:
多个选路线程,用于接收多个邻居管理和前处理前缀分类线程发送的多个路由地址和路由属性,根据路由地址和路由属性在对应的类别项中进行选路计算,计算出符合预定标准的路由信息,并将符合预定标准的路由信息发送给划分模块中的所有邻居管理和前处理前缀分类线程;
划分模块905中的每个邻居管理和前处理前缀分类线程,还用于将接收到的符合预定标准的路由信息过邻居的出口策略,生成新的路由信息,并将新的路由信息通告给邻居。
上述划分模块905划分的多个邻居管理和前处理前缀分类线程包括:多个邻居管理单元和一个前处理前缀分类单元;
上述解析模块902具体包括:多个邻居管理单元,用于维护邻居关系;当每个邻居管理单元接收到邻居发来的路由更新报文后,解析出路由地址和路由属性,并发送解析出路由地址和路由属性的路由信息;
查找模块903具体包括:一个前处理前缀分类单元,用于接收到多个邻居管理单元发送的多个路由信息后,将多个路由信息过入口策略,将过策略后的多个路由信息中路由地址前缀经过分类算法,在多个类别项中分别查找对应的类别项,并按照查找到的类别项发送路由地址和路由属性。
本实施例通过划分模块划分多个线程,使BGP软件在多核环境下实现在多个线程中并行处理路由更新报文;分类模块按照路由地址前缀进行分类计算,得到多个类别项,查找模块根据路由地址前缀在多个类别项中查找对应的类别项,计算模块根据路由地址前缀和路由属性在查找到的类别项内部进行选路计算,使得不同类别项内部的选路过程可以并行进行,提高了工作效率。
实施例6
本发明实施例提供了一种并行处理路由更新报文的装置,参见图11,该装置具体包括:
通信模块1101,用于接收邻居发送的多个路由更新报文,并将多个路由更新报文发送;
解析模块1102,用于接收通信模块1101发送的多个路由更新报文,并对多个路由更新报文进行解析,解析出路由更新报文中的路由地址和路由属性,并选择携带下一跳可达的路由信息;
选择模块1103,用于在下一跳可达的路由信息和已有的路由信息中选择到达同一地址前缀的符合预定标准的路由信息;
参见图12,装置还包括:
过策略模块1104,用于将符合预定标准的路由信息过出口策略,生成新的路由信息。
划分模块1105,用于划分邻居管理线程、第一阶段选路线程、第二阶段选路线程和第三阶段选路线程;
相应地,通信模块1101具体包括:
邻居管理线程,用于维护邻居关系,接收邻居发来的路由更新报文,对路由更新报文进行初步解析,并发送经初步解析的路由更新报文;
解析模块1102具体包括:
第一阶段选路线程,用于解析邻居管理线程发送的经初步解析的路由更新报文,将解析的路由信息过入口策略,并查询下一跳可达的路由信息,发送下一跳可达的路由信息;
选择模块1103具体包括:
第二阶段选路线程,用于接收第一阶段选路线程发送的下一跳可达的路由信息,并在下一跳可达的路由信息和已有的路由信息中,选择到达同一目的地址前缀的符合预定标准的路由信息,发送符合预定标准的路由信息;
过策略模块1104具体包括:
第三阶段选路线程,用于接收符合预定标准的路由信息,将符合预定标准的路由信息过出口策略,生成新的路由信息,并将新的路由信息发送给接收模块中的邻居管理线程;
接收模块中的邻居管理线程,还用于将接收到的新的路由信息通告给邻居。
本实施例通过划分模块划分多个线程,使BGP软件在多核环境下实现在多个线程中并行处理路由更新报文,提高了工作效率。
实施例7
本发明实施例提供了一种并行处理路由更新报文的装置,参见图13,该装置包括:
解析模块1301,用于接收到邻居发来的多个路由更新报文后进行解析,解析出多个路由地址和多个路由属性;
计算模块1302,用于根据由解析模块1301解析出的路由地址的路由地址前缀和路由属性在本模块内进行选路计算,计算出局部符合预定标准的路由信息;
选择模块1303,用于在计算模块1302计算出的局部符合预定标准的路由信息和已有的路由信息中选择出全局符合预定标准的路由信息。
参见图14,装置还包括:
划分模块1304,用于划分多个邻居管理和路由处理线程和一个路由同步线程;多个邻居管理和路由处理线程具体包括:多个邻居管理单元和多个路由处理单元;
相应地,解析模块1301具体包括:
多个邻居管理单元,用于维护邻居关系,每个邻居管理单元接收到邻居发来的路由更新报文后进行解析,并发送解析出的路由地址和路由属性;
计算模块1302具体包括:
多个路由处理单元,每个路由处理单元接收到对应的邻居管理单元发送的路由地址前缀和路由属性后,将路由信息过入口策略,在单元内部进行选路计算,计算出局部符合预定标准的路由信息,并发送局部符合预定标准的路由信息;
选择模块1303具体包括:
一个路由同步线程,用于接收多个路由处理单元发送的到多个局部符合预定标准的路由信息后,在多个局部符合预定标准的路由信息和已有的路由信息中选择出全局符合预定标准的路由信息,并将全局符合预定标准的路由信息发送给解析模块中的所有邻居管理单元;
解析模块1301中的每个邻居管理单元,还用于将接收到的全局符合预定标准的路由信息过出口策略,生成新的路由信息,并将新的路由信息通告给邻居。
本实施例通过划分模块划分多个线程,使BGP软件在多核环境下实现在多个线程中并行处理路由更新报文;通过路由同步线程进行路由同步计算,提高了工作效率。
以上实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件程序存储在可读取的介质中,存储介质例如,计算机中的硬盘、光盘或软盘。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。