一种边界网关协议的实现方法和装置制造方法

文档序号:8005983阅读:216来源:国知局
一种边界网关协议的实现方法和装置制造方法
【专利摘要】本发明公开了一种IPv6网络中的BGP协议的实现方法:BGP speaker将自身对应的各IPv6全球单播地址中的一个作为自身的IPv6BGP ID,并基于所述IPv6BGP ID与作为通信对端的BGP speaker之间建立BGP连接并进行通信。本发明同时公开了一种BGP speaker。应用本发明所述方案,能够简化配置过程并降低对网络规划的要求。
【专利说明】一种边界网关协议的实现方法和装置

【技术领域】
[0001]本发明涉及互联网技术,特别涉及一种互联网协议版本6 (IPv6, InternetProtocol Vers1n6)网络中的边界网关协议(BGP,Border Gateway Protocol)的实现方法和装置。

【背景技术】
[0002]目前,BGP协议及其扩展已经在全世界互联网中得到了广泛应用。
[0003]通常,将运行BGP协议的路由器称为BGP speaker, BGP speaker用BGP ID进行标示。现有标准中规定,BGP ID是一个4字节的无符号整数,并配置为BGP speaker的一个端口的有效IPv4地址。BGP ID是BGP协议中的一个重要参数,可用于建立BGP连接以及进行最优路由选择等。
[0004]IPv6地址为128位的IP地址,地址资源丰富,可彻底解决目前IPv4网络面临的IP地址资源不足的问题,目前已经在全世界范围内得到了广泛部署。
[0005]最初的BGP协议是针对IPv4网络设计的,不能用于传递IPv6路由,但经过多协议扩展之后,经过能力协商之后的BGP speaker之间也可以使用BGP协议来传递IPv6路由。
[0006]但是,在纯IPv6环境下,即在仅运行IPv6协议的网络(简称为IPv6网络冲,将不会再为路由器配置IPv4地址,相应地,也就无法再按照现有方式配置BGP ID,进而导致BGP协议无法运行。
[0007]为此,现有技术中提出了如下解决方式:在IPv6网络中,当为BGP speaker配置了IPv6相关信息后,再为其额外配置一个专门的4字节无符号整数作为BGP ID ;而且,同一个自治域(AS, Autonomous System)内部的BGP speaker的BGP ID需要仔细规划,以避免重复。
[0008]可见,现有方式中,需要额外配置BGP ID,而且对网络规划的要求较高,应用起来不够简单方便。


【发明内容】

[0009]有鉴于此,本发明提供了一种IPv6网络中的BGP协议的实现方法和装置,能够简化配置过程并降低对网络规划的要求。
[0010]为达到上述目的,本发明的技术方案是这样实现的:
[0011]一种IPv6网络中的BGP协议的实现方法,包括:
[0012]BGP speaker将自身对应的各IPv6全球单播地址中的一个作为自身的IPv6BGPID ;
[0013]基于所述IPv6BGP ID与作为通信对端的BGP speaker之间建立BGP连接并进行通信。
[0014]一种 BGP speaker,该 BGP speaker 应用于 IPv6 网络中,包括:
[0015]第一处理模块,用于将所在BGP speaker对应的各IPv6全球单播地址中的一个作为所在BGP speaker的IPv6BGP ID,并发送给第二处理模块;
[0016]所述第二处理模块,用于基于所述IPv6BGP ID与作为通信对端的BGP speaker之间建立BGP连接并进行通信。
[0017]可见,采用本发明所述方案,针对每个BGP speaker,可直接将其对应的各IPv6全球单播地址中的一个作为其BGP ID,即IPv6BGP ID,而无需像现有技术中一样,在为BGPspeaker配置完IPv6相关信息后,再为其额外配置一个4字节无符号整数作为BGP ID,从而简化了配置过程;而且,由于IPv6全球单播地址具有唯一性,因此也就无需再针对各BGPspeaker的IPv6BGP ID进行网络规划,以避免重复,从而降低了对网络规划的要求;再有,本发明所述方案实现起来简单方便,便于普及和推广。

【专利附图】

【附图说明】
[0018]图1为本发明IPv6网络中的BGP协议的实现方法实施例的流程图。

【具体实施方式】
[0019]针对现有技术中存在的问题,本发明中提出一种IPv6网络中的BGP协议的实现方案,对BGP ID进行扩展,允许BGP speaker使用IPv6全球单播地址作为BGP ID,称为IPv6BGP ID,并充分考虑对已有BGP协议的兼容性,只有通过IPv6地址建立BGP连接的BGPspeaker 之间才使用 IPv6BGP ID。
[0020]图1为本发明IPv6网络中的BGP协议的实现方法实施例的流程图。如图1所示,对于IPv6网络中的每个BGP speaker,其可分别按照步骤11?12所示方式进行处理。
[0021]步骤11:BGP speaker将自身对应的各IPv6全球单播地址中的一个作为自身的IPv6BGP ID0
[0022]BGP speaker可将自身某一端口的IPv6全球单播地址作为自身的BGP ID,由于该BGP ID为IPv6全球单播地址,因此称为IPv6BGP ID。
[0023]BGP speaker具体将哪个IPv6全球单播地址作为IPv6BGP ID可根据实际情况而定,并可通过配置进行设定,或者按照一定规则自行设定。
[0024]步骤12:BGP speaker基于所述IPv6BGP ID与作为通信对端的BGP speaker之间建立BGP连接并进行通信。
[0025]以下从不同方面,对本发明所述方案的具体实现作进一步地详细说明。
[0026]一)BGP 连接
[0027]对于本领域技术人员公知的内容,本发明中将不作介绍,仅介绍改进后的相关内容。
[0028]I)对于 IPv6 网络中的每个BGP speaker 如BGP speaker x,当需要时,BGP speakerX可向BGP speaker y发送打开(OPEN)消息,将OPEN消息中的BGP ID字段的取值设置为0,并在OPEN消息中的能力选项字段中携带自身的IPv6BGP ID。
[0029]为便于表述和区分,将发送OPEN消息的BGP speaker称为BGP speaker x,将接收OPEN 消息的 BGP speaker 称为 BGP speaker y。
[0030]现有技术中,能力选项字段中通常会进一步包括以下三个字段:能力代码(Capability Code)、能力长度(Capability Length)以及能力值(Capability Value)。
[0031]本发明所述方案中,可用Capability Value字段来携带IPv6BGP ID ;相应地,将Capability Length字段的取值设置为16,即Capability Length字段用于指示Capability Value字段的长度为16字节;Capability Code字段的取值可为O?255之间的一个整数,具体取值可在后续向互联网数字分配机构(IANA, Internet AssignedNumbers Authority)进行申请,Capability Code字段用于指示所在能力选项为IPv6BGPID能力选项。
[0032]2) BGP speaker y接收到BGP speaker x发送来的OPEN消息后,可确定其中的BGP ID字段的取值是否为O ;如果是,则可进一步确定其中的IPv6BGP ID能力选项字段中是否携带有一个合法有效的IPv6全球单播地址;如果是,则将该IPv6全球单播地址作为BGP speaker x 的 IPv6BGP ID。
[0033]如果BGP speaker y确定BGP ID字段的取值为0,但IPv6BGP ID能力选项字段中未携带有一个合法有效的IPv6全球单播地址,则可产生一个通知(Notificat1n)消息,并将该Notificat1n消息返回给BGP speaker x,以通知BGP speaker x发生了错误。其中,将Notificat1n消息中的错误代码(Error Code)字段的取值设置为2(表示Open MessageError,打开消息错误),将Notificat1n消息中的错误子码(Error Subcode)字段的取值设置为3 (表示Bad BGP Identifier,错误的BGP标示)。
[0034]另外,如果BGP speaker y确定BGP ID字段的取值不为0,则可按照现有方式进行处理。
[0035]再有,BGP speaker y正确获取到BGP speaker x的IPv6BGP ID后,如果检测至IjBGP连接冲突,则可将自身的IPv6BGP ID与BGP speaker x的IPv6BGP ID分别转换成16字节无符号整数后进行比较,选出一个取值较大的IPv6BGP ID,保留选出的IPv6BGP ID对应的BGP speaker发起的BGP连接,断开未选出的IPv6BGP ID对应的BGP speaker发起的BGP连接。
[0036]综合上述介绍,当BGP speaker y接收到BGP speaker x发送来的OPEN消息后,可进行如下处理:
[0037]A、确定其中的BGP ID字段的取值是否为0,如果否,则将该OPEN消息按照不含IPv6BGP ID的方式进行处理,即按照现有方式进行处理,如果是,则执行步骤B ;
[0038]B、确定IPv6BGP ID能力选项字段中的Capability Value字段中是否携带有一个合法有效的IPv6全球单播地址,如果否,则产生一个Notificat1n消息,并将其中的Error Code字段的取值设置为2,将其中的Error Subcode字段的取值设置为3,将该Notificat1n消息返回给BGP speaker x,如果是,则执行步骤C ;
[0039]C、确定与BGP speaker x之间的BGP连接状态是否发生冲突,如果发生冲突,SPBGP speaker x 向 BGP speaker y 发起了 BGP 连接,BGP speaker y 也向 BGP speaker x 发起了 BGP连接,则将自身的IPv6BGP ID与BGP speaker x的IPv6BGP ID分别转换成16字节无符号整数后进行比较,并从两个IPv6BGP ID中选出一个取值较大的IPv6BGP ID,保留选出的IPv6BGP ID对应的BGP speaker发起的BGP连接,断开未选出的IPv6BGP ID对应的BGP speaker发起的BGP连接。
[0040]需要说明的是,上述从两个IPv6BGP ID中选出一个取值较大的IPv6BGP ID的方式仅为举例说明,并不用于限制本发明的技术方案,从实现上来说,如果选择取值较小的,也是可以的。
[0041]二)聚汇(Aggregator)属性
[0042]BGP协议中包括多个BGP属性,其中一个即为Aggregator属性,Aggregator属性中也需要用到BGP ID,因此也需要对Aggregator属性进行扩展。
[0043]现有标准中规定,Aggregator属性中包括类型(Type)、长度(Length)和取值(Value)等字段,其中,Type字段的取值为7,Length字段的取值为6 (6个字节),Value字段中包括2个字节的AS号+ 4个字节的BGP ID (IPv4地址);而经扩展后,Type字段的取值仍为7,但Length字段的取值则为18 (18个字节),Value字段中则包括2个字节的AS号+ 16个字节的BGP ID (IPv6地址)。
[0044]具体来说,对于IPv6网络中的每个BGP speaker,当需要进行路由汇聚时,该BGPspeaker可将Aggregator属性中的Length字段的取值设置为18,并将其中的Value字段设置为包括:2字节的该BGP speaker的AS号,以及16字节的该BGP speaker的IPv6BGPID。
[0045]三)路由选择
[0046]对于IPv6网络中的每个BGP speaker,当需要选择不同BGP speaker宣告的路由时,
[0047]如果同一路由分别来自两个不同的BGP speaker,且其中一个BGP speaker的BGPID 为 IPv4BGP ID,而另一个 BGP speaker 的 BGP ID 为 IPv6BGP ID,则该 BGP speaker 可优选 BGP ID 为 IPv6BGP ID 的 BGP speaker 宣告的路由;
[0048]如果同一路由分别来自两个不同的BGP speaker,且两个BGP speaker的BGP ID均为IPv6BGP ID,则该BGP speaker可将两个IPv6BGP ID分别转换成16字节无符号整数后进行比较,并优选取值较小的IPv6BGP ID对应的BGP speaker宣告的路由。
[0049]需要说明的是,上述优选BGP ID为IPv6BGP ID的BGP speaker宣告的路由以及优选取值较小的IPv6BGP ID对应的BGP speaker宣告的路由的方式仅为举例说明,并不用于限制本发明的技术方案,从实现上来说,如果优选BGP ID为IPv4BGP ID的BGP speaker宣告的路由以及优选取值较大的IPv6BGP ID对应的BGP speaker宣告的路由,也是可以的。
[0050]基于上述介绍,本发明同时公开了一种BGP speaker,该BGP speaker应用于IPv6网络中,包括:
[0051]第一处理模块,用于将所在BGP speaker对应的各IPv6全球单播地址中的一个作为所在BGP speaker的IPv6BGP ID,并发送给第二处理模块;
[0052]第二处理模块,用于基于所述IPv6BGP ID与作为通信对端的BGP speaker之间建立BGP连接并进行通信。
[0053]其中,
[0054]第二处理模块向通信对端的BGP speaker发送OPEN消息,将OPEN消息中的BGP ID字段的取值设置为0,并在OPEN消息中的能力选项字段中携带所在BGP speaker的IPv6BGPID0
[0055]所述BGP speaker中还可进一步包括:第三处理模块;
[0056]第三处理模块,用于当接收到通信对端的BGP speaker发送来的OPEN消息时,确定OPEN消息中的BGP ID字段的取值是否为O ;如果是,则进一步确定OPEN消息中的能力选项字段中是否携带有一个合法有效的IPv6全球单播地址;如果是,则将该IPv6全球单播地址作为通信对端的BGP speaker的IPv6BGP ID。
[0057]另外,
[0058]第三处理模块还可进一步用于,若确定BGP ID字段的取值为0,但能力选项字段中未携带有一个合法有效的IPv6全球单播地址,则产生一个Notificat1n消息,并将该Notificat1n消息返回给通信对端的BGP speaker ;
[0059]其中,将Notificat1n消息中的Error Code字段的取值设置为2,将Notificat1n消息中的Error Subcode字段的取值设置为3。
[0060]再有,
[0061]第三处理模块还可进一步用于,当检测到BGP连接冲突时,从第一处理模块中获取所在BGP speaker的IPv6BGP ID,并将所在BGP speaker的IPv6BGP ID以及通信对端的BGP speaker的IPv6BGP ID分别转换成16字节无符号整数后进行比较,选出一个取值较大的IPv6BGP ID,保留选出的IPv6BGP ID对应的BGP speaker发起的BGP连接,断开未选出的IPv6BGP ID对应的BGP speaker发起的BGP连接。
[0062]所述BGP speaker中还可进一步包括:第四处理模块;
[0063]第四处理模块,用于当需要进行路由汇聚时,从第一处理模块中获取所在BGPspeaker的IPv6BGP ID,并将BGP属性中的Aggregator属性中的Length字段的取值设置为18,将其中的Value字段设置为包括:2字节的所在BGP speaker的AS号,以及16字节的所在 BGP speaker 的 IPv6BGP ID。
[0064]所述BGP speaker中还可进一步包括:第五处理模块;
[0065]第五处理模块,用于当需要选择不同BGP speaker宣告的路由时,
[0066]如果同一路由分别来自两个不同的BGP speaker,且其中一个BGP speaker的BGPID 为 IPv4BGP ID,而另一个BGP speaker 的BGP ID 为 IPv6BGPID 为 IPv6BGPID的BGP speaker宣告的路由;
[0067]如果同一路由分别来自两个不同的BGP speaker,且两个BGP speaker的BGP ID均为IPv6BGP ID,则将两个IPv6BGP ID分别转换成16字节无符号整数后进行比较,优选取值较小的IPv6BGP ID对应的BGP speaker宣告的路由。
[0068]上述装置实施例的具体工作流程请参照前述方法实施例中的相应说明,此处不再赘述。
[0069]总之,采用本发明所述方案,针对每个BGP speaker,可直接将其对应的各IPv6全球单播地址中的一个作为其BGP ID,即IPv6BGP ID,而无需像现有技术中一样,在为BGPspeaker配置完IPv6相关信息后,再为其额外配置一个4字节无符号整数作为BGP ID,从而简化了配置过程;而且,由于IPv6全球单播地址具有唯一性,因此也就无需再针对各BGPspeaker的IPv6BGP ID进行网络规划,以避免重复,从而降低了对网络规划的要求;再有,本发明所述方案实现起来简单方便,便于普及和推广。
[0070]综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种互联网协议版本6IPV6网络中的边界网关协议BGP的实现方法,其特征在于,包括: 边界网关协议路由器BGP speaker将自身对应的各IPv6全球单播地址中的一个作为自身的 IPv6BGP ID ; 基于所述IPv6BGP ID与作为通信对端的BGP speaker之间建立BGP连接并进行通信。
2.根据权利要求1所述的方法,其特征在于,所述基于所述IPv6BGPID与所述通信对端的BGP speaker之间建立BGP连接包括: 向所述通信对端的BGP speaker发送打开OPEN消息,将所述OPEN消息中的BGP ID字段的取值设置为0,并在所述OPEN消息中的能力选项字段中携带自身的IPv6BGP ID ; 所述通信对端的BGP speaker接收到所述OPEN消息后,确定所述BGP ID字段的取值是否为O ;如果是,则进一步确定所述能力选项字段中是否携带有一个合法有效的IPv6全球单播地址;如果是,则将该IPv6全球单播地址作为发送所述OPEN消息的BGP speaker的IPv6BGP ID0
3.根据权利要求2所述的方法,其特征在于,所述将该IPv6全球单播地址作为发送所述OPEN消息的BGP speaker的IPv6BGP ID之后,进一步包括: 若所述通信对端的BGP speaker检测到BGP连接冲突,则将自身的IPv6BGP ID与发送所述OPEN消息的BGP speaker的IPv6BGP ID分别转换成16字节无符号整数后进行比较,选出一个取值较大的IPv6BGP ID,保留选出的IPv6BGP ID对应的BGP speaker发起的BGP连接,断开未选出的IPv6BGP ID对应的BGP speaker发起的BGP连接。
4.根据权利要求2所述的方法,其特征在于, 所述在所述OPEN消息中的能力选项字段中携带自身的IPv6BGP ID包括:在所述能力选项字段中的能力值Capability Value字段中携带自身的IPv6BGP ID。
5.根据权利要求2所述的方法,其特征在于,该方法进一步包括: 若确定所述BGP ID字段的取值为0,但所述能力选项字段中未携带有一个合法有效的IPv6全球单播地址,则所述通信对端的BGP speaker产生一个通知Notificat1n消息,并将所述Notificat1n消息返回给发送所述OPEN消息的BGP speaker ; 其中,将所述Notificat1n消息中的错误代码Error Code字段的取值设置为2,将所述Notificat1n消息中的错误子码Error Subcode字段的取值设置为3。
6.根据权利要求1?5中任一项所述的方法,其特征在于,该方法进一步包括: 当需要进行路由汇聚时,所述BGP speaker将BGP属性中的聚汇Aggregator属性中的长度Length字段的取值设置为18,并将其中的取值Value字段设置为包括:2字节的所述BGP speaker的自治域AS号,以及16字节的所述BGP speaker的IPv6BGPID。
7.根据权利要求1?5中任一项所述的方法,其特征在于,该方法进一步包括: 当需要选择不同BGP speaker宣告的路由时, 如果同一路由分别来自两个不同的BGP speaker,且其中一个BGP speaker的BGP ID为 IPv4BGP ID,而另一个 BGP speaker 的 BGP ID 为 IPv6BGP ID,则所述 BGP speaker 优选BGP ID 为 IPv6BGP ID 的 BGP speaker 宣告的路由; 如果同一路由分别来自两个不同的BGP speaker,且两个BGP speaker的BGP ID均为IPv6BGP ID,则所述BGP speaker将两个IPv6BGP ID分别转换成16字节无符号整数后进行比较,优选取值较小的IPv6BGP ID对应的BGP speaker宣告的路由。
8.一种边界网关协议路由器BGP speaker,其特征在于,该BGP speaker应用于互联网协议版本6IPv6网络中,包括: 第一处理模块,用于将所在BGP speaker对应的各IPv6全球单播地址中的一个作为所在BGP speaker的IPv6BGP ID,并发送给第二处理模块; 所述第二处理模块,用于基于所述IPv6BGP ID与作为通信对端的BGP speaker之间建立BGP连接并进行通信。
9.根据权利要求8所述的BGPspeaker,其特征在于, 所述第二处理模块向所述通信对端的BGP speaker发送打开OPEN消息,将所述OPEN消息中的BGP ID字段的取值设置为0,并在所述OPEN消息中的能力选项字段中携带所在BGPspeaker 的 IPv6BGP ID。
10.根据权利要求9所述的BGPspeaker,其特征在于, 所述BGP speaker中进一步包括:第三处理模块; 所述第三处理模块,用于当接收到所述通信对端的BGP speaker发送来的OPEN消息时,确定所述OPEN消息中的BGP ID字段的取值是否为O ;如果是,则进一步确定所述OPEN消息中的能力选项字段中是否携带有一个合法有效的IPv6全球单播地址;如果是,则将该IPv6全球单播地址作为所述通信对端的BGP speaker的IPv6BGP ID。
11.根据权利要求10所述的BGPspeaker,其特征在于, 所述第三处理模块进一步用于,若确定所述BGP ID字段的取值为0,但所述能力选项字段中未携带有一个合法有效的IPv6全球单播地址,则产生一个通知Notificat1n消息,并将所述Notificat1n消息返回给所述通信对端的BGP speaker ; 其中,将所述Notificat1n消息中的错误代码Error Code字段的取值设置为2,将所述Notificat1n消息中的错误子码Error Subcode字段的取值设置为3。
12.根据权利要求10所述的BGPspeaker,其特征在于, 所述第三处理模块进一步用于,当检测到BGP连接冲突时,从所述第一处理模块中获取所在BGP speaker的IPv6BGP ID,并将所在BGP speaker的IPv6BGP ID以及所述通信对端的BGP speaker的IPv6BGP ID分别转换成16字节无符号整数后进行比较,选出一个取值较大的IPv6BGP ID,保留选出的IPv6BGP ID对应的BGP speaker发起的BGP连接,断开未选出的IPv6BGP ID对应的BGP speaker发起的BGP连接。
13.根据权利要求8?12中任一项所述的BGPspeaker,其特征在于, 所述BGP speaker中进一步包括:第四处理模块; 所述第四处理模块,用于当需要进行路由汇聚时,从所述第一处理模块中获取所在BGPspeaker的IPv6BGP ID,并将BGP属性中的聚汇Aggregator属性中的长度Length字段的取值设置为18,将其中的取值Value字段设置为包括:2字节的所在BGPspeaker的自治域AS号,以及16字节的所在BGP speaker的IPv6BGP ID。
14.根据权利要求8?12中任一项所述的BGPspeaker,其特征在于, 所述BGP speaker中进一步包括:第五处理模块; 所述第五处理模块,用于当需要选择不同BGP speaker宣告的路由时, 如果同一路由分别来自两个不同的BGP speaker,且其中一个BGP speaker的BGPID为IPv4BGP ID,而另一个BGP speaker 的 BGP ID 为 IPv6BGP ID,则优选BGP ID 为 IPv6BGP ID的BGP speaker宣告的路由; 如果同一路由分别来自两个不同的BGP speaker,且两个BGP speaker的BGP ID均为IPv6BGP ID,则将两个IPv6BGP ID分别转换成16字节无符号整数后进行比较,优选取值较小的IPv6BGP ID对应的BGP speaker宣告的路由。
【文档编号】H04L29/12GK104426872SQ201310386728
【公开日】2015年3月18日 申请日期:2013年8月30日 优先权日:2013年8月30日
【发明者】李振强 申请人:中国移动通信集团公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1