一种BGP更新报文的传输方法和装置与流程

文档序号:14748393发布日期:2018-06-22 05:55阅读:179来源:国知局

本发明涉及通信领域,尤其涉及一种BGP更新报文的传输方法和装置。



背景技术:

BGP(BorderGatewayProtocol,边界网关协议)是一种既可以用于不同AS(AutonomousSystem,自治系统)之间,又可以用于同一AS内部的动态路由协议。而且,BGP是运行于TCP(TransmissionControlProtocol,传输控制协议)上的路由协议,且TCP运行于IP之上,对于传输的每个BGP报文来说,该BGP报文中均会依次包含IP报文头、TCP报文头和BGP报文类型对应的BGP数据。

BGP更新报文作为BGP报文的一种类型,主要用于传输路由信息。对于BGP更新报文来说,依次包含一个IP报文头、一个TCP报文头和BGP更新数据。目前,网络中的网络设备通常将属性相同的一个或多个路由的路由信息组成一个BGP更新数据(该BGP更新数据的长度未超过设定长度,该BGP更新数据的属性字段仅能写入一个属性),并为该条BGP更新数据添加一个TCP报文头和一个IP报文头,得到一个BGP更新报文,并将该BGP更新报文发送给邻居网络设备。这样,在网络中存在较多属性不同的路由时,网络设备会发送很多个BGP更新报文,导致网络中传输的BGP更新报文的数量较多。



技术实现要素:

本发明提供一种BGP更新报文的传输方法,应用于网络设备上,所述方法包括以下步骤:

将需要发送给邻居网络设备的路由存储到通告表中;

根据所述通告表中的第一路由生成该第一路由对应的BGP更新数据,并从所述通告表中删除该第一路由;

在判断出该BGP更新数据的长度不大于预设阈值且当前通告表中不存在与该第一路由的属性相同的路由时,将该BGP更新数据添加到预设的缓冲区中;

判断当前缓冲区中的BGP更新数据的总长度是否不大于所述预设阈值,并在判断为是时,判断当前通告表是否为空;

若是,根据当前缓冲区中的所有BGP更新数据生成一个BGP更新报文,并发送给所述邻居网络设备,清空当前缓冲区;

否则,将当前通告表作为所述通告表,继续执行根据所述通告表中的第一路由,生成该第一路由对应的BGP更新数据,并从所述通告表中删除该第一路由的步骤。

本发明提供一种BGP更新报文的传输装置,所述装置应用于网络设备上,所述装置具体包括:

第一存储模块,用于将需要发送给邻居网络设备的路由存储到通告表中;

第一生成模块,用于根据所述通告表中的第一路由生成该第一路由对应的BGP更新数据,并从所述通告表中删除该第一路由;

第二存储模块,用于在判断出该BGP更新数据的长度不大于预设阈值且当前通告表中不存在与该第一路由的属性相同的路由时,将该BGP更新数据添加到预设的缓冲区中;

判断模块,用于判断当前缓冲区中的BGP更新数据的总长度是否不大于所述预设阈值,并在判断为是时,判断当前通告表是否为空;

第二生成模块,用于在当前通告表为空时,根据当前缓冲区中的所有BGP更新数据生成一个BGP更新报文,并发送给所述邻居网络设备,清空当前缓冲区;在当前通告表不为空时,将当前通告表作为所述通告表,并由所述第一生成模块执行根据所述通告表中的第一路由,生成该第一路由对应的BGP更新数据,并从所述通告表中删除该第一路由的过程。

基于上述技术方案,本发明实施例中,可以生成包括多个BGP更新数据的BGP更新报文,每个BGP更新数据包括具有相同属性的一个或者多个路由,这样,可以在一个BGP更新报文中携带多个具有不同属性的路由,从而减少BGP更新报文的数量,并节约网络设备之间的传输带宽。

附图说明

为了更加清楚地说明本发明实施例或者现有技术中的技术方案,下面将对本发明实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1是本发明一种实施方式中的应用场景示意图;

图2是本发明一种实施方式中的BGP更新报文的传输方法的流程图;

图3是本发明一种实施方式中的BGP更新报文的格式示意图;

图4是本发明另一种实施方式中的BGP更新报文的传输方法的流程图;

图5是本发明一种实施方式中的网络设备的硬件结构图;

图6是本发明一种实施方式中的BGP更新报文的传输装置的结构图。

具体实施方式

在本发明使用的术语仅仅是出于描述特定实施例的目的,而非限制本发明。本发明和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

如图1所示,网络设备A和网络设备B之间建立了BGP邻居,网络设备A上存在路由1、路由2、路由3、路由4、路由5等路由,并需要将这五条路由发送给网络设备B。假设这五条路由的属性各不相同,则一个BGP更新报文中只能携带一个路由。这样,网络设备A共通过5个BGP更新报文才能够将五条路由分别发送给网络设备B,浪费了网络设备A与网络设备B之间的传输带宽。而且,在每个BGP更新报文中,BGP更新数据的长度可能只有几十个字节,如50个字节,而基于协议规定,IP报文头和TCP报文头的总长度会大于40个字节,这样,IP报文头和TCP报文头的额外开销,占用整个BGP更新报文的比例很大,而BGP更新报文的有效数据(即BGP更新数据)占用整个BGP更新报文的比例很小,从而导致BGP更新报文传输性能急剧下降。

针对上述发现,本发明实施例中提出了一种BGP更新报文的传输方法,通过BGP更新报文携带多个BGP更新数据,并在每个BGP更新数据中携带具有相同属性的一个或者多个路由,从而使BGP更新报文可以携带具有不同属性的多个路由,节约网络设备之间的传输带宽。其中,该属性可以为路径属性,且路径属性可以包括但不限于以下之一或者任意组合:自治系统标识(即AS标识)、本地优先级(即Local_Pref)等。当然,该属性还可以包括路由的其它属性,在此不再详加赘述。

如图2所示,该BGP更新报文的传输方法具体可以包括但不限于以下步骤:

步骤201,网络设备将需要发送给邻居网络设备的路由存储到通告表中。

步骤202,网络设备根据所述通告表中的第一路由生成该第一路由对应的BGP更新数据,并从所述通告表中删除该第一路由。

步骤203,网络设备在判断出该BGP更新数据的长度不大于预设阈值且当前通告表中不存在与该第一路由的属性相同的路由时,将该BGP更新数据添加到预设的缓冲区中。其中,该当前通告表是指删除第一路由之后的通告表。

步骤204,网络设备判断当前缓冲区中的BGP更新数据的总长度是否不大于所述预设阈值,并在判断为是时,判断当前通告表是否为空;若是,则执行步骤205;若否,则执行步骤206。

步骤205,网络设备根据当前缓冲区中的所有BGP更新数据生成一个BGP更新报文,并发送给所述邻居网络设备,并清空当前缓冲区。

在一个例子中,网络设备根据当前缓冲区中的所有BGP更新数据生成一个BGP更新报文的过程,具体可以包括但不限于如下方式:为当前缓冲区中的所有BGP更新数据添加一个TCP报文头和IP报文头,得到一个BGP更新报文。

步骤206,网络设备将当前通告表作为所述通告表,返回继续执行步骤202。

本发明实施例中,针对步骤204,在网络设备判断当前缓冲区中的BGP更新数据的总长度是否不大于所述预设阈值之后,如果判断为否,则根据当前缓冲区中除最后添加的BGP更新数据之外的所有BGP更新数据生成一个BGP更新报文,并发送给所述邻居网络设备,从当前缓冲区中删除除最后添加的BGP更新数据之外的所有BGP更新数据。之后,继续执行判断当前通告表是否为空的步骤;若是,执行步骤205;若否,执行步骤206。

在一个例子中,网络设备根据当前缓冲区中除最后添加的BGP更新数据之外的所有BGP更新数据生成一个BGP更新报文的过程,具体可以包括但不限于如下方式:网络设备为当前缓冲区中除最后添加的BGP更新数据之外的所有BGP更新数据添加一个TCP报文头和IP报文头,得到一个BGP更新报文。

本发明实施例中,在根据所述通告表中的第一路由生成该第一路由对应的BGP更新数据之后,网络设备在判断出该BGP更新数据的长度不大于预设阈值且当前通告表中存在至少一个与该第一路由的属性相同的路由时,将与该第一路由的属性相同的第二路由的路由信息添加到该BGP更新数据中,并判断已添加第二路由的路由信息的该BGP更新数据的长度是否不大于所述预设阈值。

若是,从当前通告表中删除该第二路由,并判断删除该第二路由后的通告表中是否还存在与该第一路由的属性相同的第二路由,并在判断为是时,将已添加第二路由的路由信息的BGP更新数据作为该BGP更新数据,继续执行将与该第一路由的属性相同的第二路由的路由信息添加到该BGP更新数据中的步骤;并在判断为否时,将已添加第二路由的路由信息的该BGP更新数据添加到所述缓冲区中,继续执行步骤204。

若否,将当前通告表作为所述通告表,将该第二路由作为该第一路由,返回继续执行步骤202。

其中,在已添加第二路由的路由信息的该BGP更新数据的长度不大于所述预设阈值时,在从当前通告表中删除该第二路由之后,如果通告表中还存在与该第一路由的属性相同的路由(此时还将该路由称为第二路由),则将已添加第二路由的路由信息的BGP更新数据作为该BGP更新数据,继续执行将与该第一路由的属性相同的第二路由的路由信息添加到该BGP更新数据中的步骤,以此类推,一直到与该第一路由的属性相同的所有第二路由的路由信息均添加到该BGP更新数据中,或者,直到添加了第二路由的路由信息的该BGP更新数据的长度大于所述预设阈值。

其中,在已添加第二路由的路由信息的该BGP更新数据的长度大于所述预设阈值时,除执行将当前通告表作为所述通告表,将该第二路由作为该第一路由,返回继续执行步骤202之外,仍采用现有技术的处理方式,从该BGP更新数据中删除最后添加的第二路由的路由信息,并为删除该第二路由的路由信息的BGP更新数据添加一个TCP报文头和IP报文头,得到一个BGP更新报文,并发送该BGP更新报文。

基于上述技术方案,本发明实施例中,该BGP更新报文可以包括IP报文头、TCP报文头、多个BGP更新数据,这多个BGP更新数据共用一个IP报文头、一个TCP报文头。如图3所示,为BGP更新报文的格式示意图,该BGP更新报文中依次包括了一个IP报文头、一个TCP报文头、BGP更新数据1、BGP更新数据2、BGP更新数据3和BGP更新数据4。

以下结合图4所示的流程图,对BGP更新报文的传输方法进行说明。

步骤401,网络设备A将需要发送给网络设备B的路由存储到通告表。

其中,在网络设备A和网络设备B之间建立BGP邻居之后,网络设备A会获得需要发送给网络设备B的路由,这些路由可以是直接在网络设备A上配置的静态路由,也可以是网络设备A基于路由协议学习到的路由,对于路由的获得方式,在此不再赘述。

例如,需要发送给网络设备B的路由可以包括路由1.1.1.1/32、路由2.1.1.1/32、路由3.1.1.1/32、路由4.1.1.1/32、路由5.1.1.1/32等五个路由。其中,路由1.1.1.1/32、路由2.1.1.1/32、路由3.1.1.1/32具有属性1,路由4.1.1.1/32具有属性2,路由5.1.1.1/32具有属性3。之后,网络设备A将1.1.1.1/32、2.1.1.1/32、3.1.1.1/32、4.1.1.1/32、5.1.1.1/32存储到通告表中。

步骤402,网络设备A根据所述通告表中的第一路由生成该第一路由对应的BGP更新数据,并从所述通告表中删除该第一路由。

例如,网络设备A从通告表中选取1.1.1.1/32作为第一路由,并生成该第一路由1.1.1.1/32对应的BGP更新数据1,并从所述通告表中删除该第一路由,且删除第一路由之后的通告表为当前通告表,该当前通告表中包括2.1.1.1/32、3.1.1.1/32、4.1.1.1/32、5.1.1.1/32。

在生成该第一路由1.1.1.1/32对应的BGP更新数据1的过程中,可以生成包括第一路由1.1.1.1/32的路由信息、第一路由的属性等字段的BGP更新数据1,该BGP更新数据1还可以包括其它字段,其具体生成过程在此不再赘述。

步骤403,网络设备A判断该BGP更新数据的长度是否不大于预设阈值。如果是,则执行步骤404。如果否,则确定发生错误,执行异常处理。

其中,预设阈值可以根据实际经验进行选择,例如,BGP更新数据的最大长度为4096个字节时,则预设阈值可以小于等于4096个字节。

其中,网络设备A在生成该第一路由1.1.1.1/32对应的BGP更新数据1之后,由于该BGP更新数据1中只包含第一路由1.1.1.1/32的路由信息,因此,该BGP更新数据1的长度通常不大于预设阈值,执行步骤404。但是,在某些情况下,如果生成该第一路由对应的BGP更新数据时发生错误,导致该BGP更新数据的长度大于预设阈值,则可以确定发生错误,并执行异常处理,如网络设备A发送告警消息,以使维护人员手工分析发生错误的原因等,该过程不再赘述。

步骤404,网络设备A判断该当前通告表中是否存在与该第一路由的属性相同的路由。如果存在,则执行步骤405;如果不存在,则执行步骤412。

例如,由于该当前通告表中存在与该第一路由1.1.1.1/32的属性相同的两个路由(如2.1.1.1/32和3.1.1.1/32),因此,网络设备A可以执行步骤405。

步骤405,网络设备A将与该第一路由的属性相同的第二路由的路由信息添加到该BGP更新数据中,并执行步骤406。

例如,网络设备A将与该第一路由1.1.1.1/32的属性相同的第二路由2.1.1.1/32的路由信息添加到该BGP更新数据1中,并执行步骤406。

步骤406,网络设备A判断已添加第二路由的路由信息的该BGP更新数据的长度是否不大于所述预设阈值。如果是,执行步骤407。如果否,执行步骤408。

步骤407,网络设备A从当前通告表中删除该第二路由,并执行步骤409。

步骤408,网络设备A将当前通告表作为所述通告表,将该第二路由作为该第一路由,并返回继续执行步骤402。

在这种情况下,网络设备还采用现有的处理方式,从该BGP更新数据中删除最后添加的第二路由的路由信息,为删除该第二路由的路由信息的BGP更新数据添加一个TCP报文头和IP报文头,得到一个BGP更新报文,发送该BGP更新报文给网络设备B。

步骤409,网络设备A判断删除该第二路由后的通告表中是否还存在与该第一路由的属性相同的第二路由。如果是,执行步骤410。如果否,执行步骤411。

步骤410,网络设备A将已添加第二路由的路由信息的BGP更新数据作为该BGP更新数据,并返回继续执行步骤405。

步骤411,网络设备A将已添加第二路由的路由信息的该BGP更新数据添加到所述缓冲区中,并继续执行步骤413。

例如,网络设备A将第二路由2.1.1.1/32的路由信息添加到BGP更新数据1中之后,在步骤406中,网络设备A判断已添加第二路由的路由信息的该BGP更新数据1(包含1.1.1.1/32的路由信息和2.1.1.1/32的路由信息)的长度是否不大于预设阈值。此时还没有从通告表中删除2.1.1.1/32。

如果大于预设阈值,则网络设备A执行步骤408,将当前通告表(包括2.1.1.1/32、3.1.1.1/32、4.1.1.1/32、5.1.1.1/32)作为所述通告表,将该第二路由(2.1.1.1/32)作为该第一路由,并返回执行步骤402。此外,网络设备A从BGP更新数据1中删除该第二路由(2.1.1.1/32)的路由信息,并为删除该第二路由(2.1.1.1/32)的路由信息的BGP更新数据1(只包含1.1.1.1/32的路由信息)添加一个TCP报文头和IP报文头,得到一个BGP更新报文,并向网络设备B发送该BGP更新报文。

如果不大于预设阈值,则网络设备A执行步骤407,从当前通告表中删除该第二路由(2.1.1.1/32),执行步骤409。在步骤409中,由于删除该第二路由(2.1.1.1/32)后的通告表包括3.1.1.1/32、4.1.1.1/32、5.1.1.1/32。即,存在与该第一路由1.1.1.1/32的属性相同的路由(如3.1.1.1/32),因此,网络设备A执行步骤410,将已添加第二路由(2.1.1.1/32)的路由信息的BGP更新数据作为该BGP更新数据,并返回继续执行步骤405。

在执行步骤405时,网络设备A将与该第一路由1.1.1.1/32的属性相同的第二路由3.1.1.1/32的路由信息添加到该BGP更新数据1中,并执行步骤406。

在步骤406中,网络设备A判断已添加第二路由的路由信息的该BGP更新数据1(包含1.1.1.1/32的路由信息、2.1.1.1/32的路由信息、3.1.1.1/32的路由信息)的长度是否不大于预设阈值。此时还没有从通告表中删除3.1.1.1/32。

如果大于预设阈值,则网络设备A执行步骤408,将当前通告表(包括3.1.1.1/32、4.1.1.1/32、5.1.1.1/32)作为所述通告表,将该第二路由(3.1.1.1/32)作为该第一路由,并返回继续执行步骤402。此外,网络设备A从BGP更新数据1中删除该第二路由(3.1.1.1/32)的路由信息,并为删除该第二路由(3.1.1.1/32)的路由信息的BGP更新数据1(此时包含1.1.1.1/32的路由信息和2.1.1.1/32的路由信息)添加一个TCP报文头和IP报文头,得到一个BGP更新报文,并向网络设备B发送该BGP更新报文。

如果不大于预设阈值,则网络设备A执行步骤407,从当前通告表中删除该第二路由(3.1.1.1/32),并执行步骤409。在步骤409中,由于删除该第二路由(3.1.1.1/32)后的通告表包括4.1.1.1/32、5.1.1.1/32。即,不存在与该第一路由1.1.1.1/32的属性相同的路由,因此,网络设备A执行步骤411,将已添加第二路由(3.1.1.1/32)的路由信息的该BGP更新数据添加到所述缓冲区中,并继续执行步骤413。

步骤412,网络设备A将该BGP更新数据添加到预设的缓冲区中,并继续执行步骤413。

步骤413,网络设备A判断当前缓冲区中的BGP更新数据的总长度是否不大于所述预设阈值。如果是,则执行步骤414;如果否,则执行步骤417。

步骤414,网络设备A判断当前通告表是否为空。若是,则执行步骤415;若否,执行步骤416。

步骤415,网络设备A根据当前缓冲区中的所有BGP更新数据生成一个BGP更新报文,并发送给所述网络设备B,并清空当前缓冲区。

步骤416,网络设备A将当前通告表作为所述通告表,返回继续执行步骤402。

在步骤414中,由于当前通告表中还存在路由4.1.1.1/32和5.1.1.1/32,因此,执行步骤416,网络设备A将当前通告表作为所述通告表,返回继续执行步骤402。在步骤402中,网络设备A从通告表中选取4.1.1.1/32作为第一路由,并生成该第一路由4.1.1.1/32对应的BGP更新数据2,并从所述通告表中删除第一路由4.1.1.1/32,且删除第一路由之后的通告表为当前通告表,该当前通告表中包括5.1.1.1/32。在步骤403中,网络设备A判断出该BGP更新数据2的长度不大于预设阈值,执行步骤404。在步骤404中,网络设备A判断出该当前通告表中不存在与该第一路由4.1.1.1/32的属性相同的路由,执行步骤412。在步骤412中,网络设备A将该BGP更新数据2添加到预设的缓冲区中,执行步骤413。在步骤413中,网络设备A判断出当前缓冲区中的BGP更新数据的总长度(即BGP更新数据1与BGP更新数据2的长度之和)不大于所述预设阈值,执行步骤414。在步骤414中,网络设备A判断出当前通告表不为空,执行步骤416,网络设备A将当前通告表作为所述通告表,返回继续执行步骤402。

后续在步骤402中,网络设备A从通告表中选取5.1.1.1/32作为第一路由,并生成该第一路由5.1.1.1/32对应的BGP更新数据3,并从所述通告表中删除第一路由5.1.1.1/32,且删除第一路由之后的通告表为当前通告表,该当前通告表为空。在步骤403中,网络设备A判断出该BGP更新数据3的长度不大于预设阈值,执行步骤404。在步骤404中,网络设备A判断出该当前通告表中不存在与该第一路由5.1.1.1/32的属性相同的路由,执行步骤412。在步骤412中,网络设备A将该BGP更新数据3添加到预设的缓冲区中,执行步骤413。

在步骤413中,如果网络设备A判断出当前缓冲区中的BGP更新数据的总长度(即BGP更新数据1、BGP更新数据2、BGP更新数据3的长度之和)大于所述预设阈值,执行步骤417。或者,在步骤413中,如果网络设备A判断出当前缓冲区中的BGP更新数据的总长度不大于所述预设阈值,执行步骤414,在步骤414中,网络设备A判断出当前通告表为空,执行步骤415。

在步骤415中,网络设备A根据当前缓冲区中的所有BGP更新数据生成一个BGP更新报文的过程,具体可以包括但不限于如下方式:为当前缓冲区中的所有BGP更新数据添加一个TCP报文头和IP报文头,得到一个BGP更新报文。

例如,网络设备A为当前缓冲区中的BGP更新数据1、BGP更新数据2、BGP更新数据3添加一个TCP报文头和IP报文头,得到一个BGP更新报文。

步骤417,网络设备A根据当前缓冲区中除最后添加的BGP更新数据之外的所有BGP更新数据生成一个BGP更新报文,并发送给所述网络设备B,并从当前缓冲区中删除除最后添加的BGP更新数据之外的所有BGP更新数据。

之后,网络设备A继续执行步骤414,对于后续过程步骤赘述。

在一个例子中,网络设备A根据当前缓冲区中除最后添加的BGP更新数据之外的所有BGP更新数据生成一个BGP更新报文的过程,具体可以包括但不限于如下方式:网络设备A为当前缓冲区中除最后添加的BGP更新数据之外的所有BGP更新数据添加一个TCP报文头和IP报文头,得到一个BGP更新报文。

例如,网络设备A为当前缓冲区中的除最后添加的BGP更新数据3之外的所有BGP更新数据(BGP更新数据1、BGP更新数据2)添加一个TCP报文头和IP报文头,得到一个BGP更新报文。

之后,网络设备A继续执行步骤414,在执行步骤414时,判断出当前通告表为空,执行步骤415,在执行步骤415时,网络设备A为当前缓冲区中的BGP更新数据3添加一个TCP报文头和IP报文头,得到一个BGP更新报文。

在上述过程中,网络设备A内可以包括BGP处理模块,IP处理模块和TCP处理模块。由IP处理模块在BGP更新数据前添加IP报文头,由TCP处理模块在BGP更新数据前添加TCP报文头,而其它处理均由BGP处理模块执行。

基于上述技术方案,本发明实施例中,可以生成包括多个BGP更新数据的BGP更新报文,每个BGP更新数据包括具有相同属性的一个或者多个路由,这样,可以在一个BGP更新报文中携带多个具有不同属性的路由,从而减少BGP更新报文的数量,并节约网络设备之间的传输带宽。而且,可以降低IP报文头、TCP报文头的比例,在每个BGP更新报文中,IP报文头、TCP报文头的额外开销,占用整个BGP更新报文的比例很小,而BGP更新报文的有效数据(即BGP更新数据)占用整个BGP更新报文的比例很大,从而提高BGP更新报文的传输性能。而且,减少了BGP处理模块和TCP处理模块之间的交互次数,从而使得BGP对等体之间在进行报文交互时更加高效。

基于与上述方法同样的发明构思,本发明实施例中还提供了一种BGP更新报文的传输装置,该BGP更新报文的传输装置应用在网络设备上。其中,该BGP更新报文的传输装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在的网络设备的处理器,读取非易失性存储器中对应的计算机程序指令形成的。从硬件层面而言,如图5所示,为本发明提出的BGP更新报文的传输装置所在的网络设备的一种硬件结构图,除了图5所示的处理器、非易失性存储器外,网络设备还可以包括其他硬件,如负责处理报文的转发芯片、网络接口、内存等;从硬件结构上来讲,该网络设备还可能是分布式设备,可能包括多个接口卡,以便在硬件层面进行报文处理的扩展。

如图6所示,为本发明提出的BGP更新报文的传输装置的结构图,所述装置具体包括:

第一存储模块11,用于将需要发送给邻居网络设备的路由存储到通告表;

第一生成模块12,用于根据所述通告表中的第一路由生成该第一路由对应的BGP更新数据,并从所述通告表中删除该第一路由;

第二存储模块13,用于在判断出该BGP更新数据的长度不大于预设阈值且当前通告表中不存在与该第一路由的属性相同的路由时,将该BGP更新数据添加到预设的缓冲区中;

判断模块14,用于判断当前缓冲区中的BGP更新数据的总长度是否不大于所述预设阈值,并在判断为是时,判断当前通告表是否为空;

第二生成模块15,用于在当前通告表为空时,根据当前缓冲区中的所有BGP更新数据生成一个BGP更新报文,并发送给所述邻居网络设备,清空当前缓冲区;在当前通告表不为空时,将当前通告表作为所述通告表,并由所述第一生成模块12执行根据所述通告表中的第一路由,生成该第一路由对应的BGP更新数据,并从所述通告表中删除该第一路由的过程。

所述第二生成模块15,还用于在所述判断模块14判断当前缓冲区中的BGP更新数据的总长度是否不大于所述预设阈值之后,在判断为否时,根据当前缓冲区中除最后添加的BGP更新数据之外的所有BGP更新数据生成一个BGP更新报文,并发送给所述邻居网络设备,从当前缓冲区中删除除最后添加的BGP更新数据之外的所有BGP更新数据,并由所述判断模块14继续执行判断当前通告表是否为空的过程。

所述第一生成模块12,还用于在判断出该BGP更新数据的长度不大于预设阈值且当前通告表中存在至少一个与该第一路由的属性相同的路由时,将与该第一路由的属性相同的第二路由的路由信息添加到该BGP更新数据中;

所述判断模块14,还用于判断已添加第二路由的路由信息的该BGP更新数据的长度是否不大于所述预设阈值;

所述第一生成模块12,还用于当判断结果为是时,从当前通告表中删除该第二路由,并由所述判断模块14判断删除该第二路由后的通告表中是否还存在与该第一路由的属性相同的第二路由,并在判断为是时,由所述第一生成模块12将已添加第二路由的路由信息的BGP更新数据作为该BGP更新数据,继续执行将与该第一路由的属性相同的第二路由的路由信息添加到该BGP更新数据中的过程;并在判断为否时,由所述第二存储模块13将已添加第二路由的路由信息的该BGP更新数据添加到所述缓冲区中,并由所述判断模块14继续执行判断当前缓冲区中的BGP更新数据的总长度是否不大于所述预设阈值的过程;

当判断结果为否时,将当前通告表作为所述通告表,将该第二路由作为该第一路由,并由第一生成模块12继续执行根据所述通告表中的第一路由,生成该第一路由对应的BGP更新数据,并从所述通告表中删除该第一路由的过程。

所述第二生成模块15,具体用于在根据当前缓冲区中的所有BGP更新数据生成一个BGP更新报文的过程中,为当前缓冲区中的所有BGP更新数据添加一个TCP报文头和IP报文头,得到一个BGP更新报文。

所述第二生成模块12,具体用于在根据当前缓冲区中除最后添加的BGP更新数据之外的所有BGP更新数据生成一个BGP更新报文的过程中,为当前缓冲区中除最后添加的BGP更新数据之外的所有BGP更新数据添加一个TCP报文头和IP报文头,得到一个BGP更新报文。

其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。

本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可进一步拆分成多个子模块。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1