bgp路由识别方法、装置及设备
1.本技术是向中国国家知识产权局提交的申请日为2019年03月11日、申请号为201910181646.7、发明名称为“bgp路由识别方法、装置及设备”的申请的分案申请。
技术领域
2.本技术实施例涉及通信技术领域,尤其涉及一种bgp路由识别方法、装置及设备。
背景技术:3.自治系统(autonomous system,as)是可以自主决定在本系统内部采用何种路由协议的网络单位,每个自治系统对应一个全局唯一的自治系统号码(as number)。不同自治系统之间传播路由信息时采用边界网关协议(border gateway protocol,bgp)。每个自治系统中包括至少一个路由设备,其中一个路由设备作为该自治系统的bgp发言者(bgp speaker),用于与其他自治系统中的bgp speaker建立bgp会话,通过bgp会话实现路由信息的传播。
4.不同自治系统之间传播的bgp路由中包括自治系统路径属性(as_path attribute),as_path attribute指示了从本地自治系统到该bgp路由的起源自治系统(origin as)所要经过的所有自治系统。示例性的,以as1向as2发送bgp路由为例,as1中作为bgp speaker的路由设备向as2中作为bgp speaker的路由设备发送bgp路由时,as1将本地自治系统对应的as number添加到as_path attribute的最前面(最左边),然后将bgp路由发送出去。
5.现有技术中,为了避免形成路由环路,在as2接收到bgp路由之后,会对其中的as_path attribute进行检测,若as_path attribute中包括本地自治系统对应的as number,则直接将该bgp路由丢弃或者忽略;或者,在as1生成bgp路由之后发送bgp路由之前,as1对待发送的bgp路由进行环路检测,若as_path attribute中包括对端自治系统对应的as number,则直接将该bgp路由丢弃或者忽略。
6.实际应用中,经常出现攻击者劫持bgp路由并对bgp路由进行伪造的情况,现有技术中的bgp路由传播机制,无法及时发现路由劫持情况,导致存在网络安全隐患。
技术实现要素:7.本技术实施例提供一种bgp路由识别方法、装置及设备,以及时发现路由异常情况,提高网络安全性。
8.第一方面,本技术实施例提供一种边界网关协议bgp路由识别方法,包括:
9.网络设备获取bgp路由,所述bgp路由包括自治系统路径属性as_path attribute,所述as_path attribute包含第一自治系统号码as number,所述网络设备所在或所管辖的自治系统对应的as number是第二as number,所述第一as number等于所述第二as number;
10.所述网络设备根据所述第一as number以及所述第二as number,确定所述bgp路
由是否为异常的。
11.可选的,所述bgp路由包括第一互联网协议ip前缀;
12.所述网络设备根据所述第一as number以及所述第二as number,确定所述bgp路由是否为异常的,包括:
13.所述网络设备根据所述第一as number是所述as_path attribute中的第一个元素element,以及,所述网络设备没有发布过包含所述第一ip前缀的路由,确定所述bgp路由是异常的。
14.可选的,所述bgp路由包括第一互联网协议ip前缀;
15.所述网络设备根据所述第一as number以及所述第二as number,确定所述bgp路由是否为异常的,包括:
16.所述网络设备根据所述第一as number是所述as_path attribute中的第一个元素element,所述网络设备发布过包含第二ip前缀的路由,以及,所述网络设备没有发布过包含所述第一ip前缀的路由,确定所述bgp路由是异常的,所述第一ip前缀是所述第二ip前缀的子前缀。
17.可选的,所述bgp路由包括第一互联网协议ip前缀;
18.所述网络设备根据所述第一as number以及所述第二as number,确定所述bgp路由是否为异常的,包括:
19.所述网络设备根据所述第一as number是所述as_path attribute中的第一个元素element,所述网络设备向特定as发布过仅限于所述特定as使用的包含所述第一ip前缀的路由,以及,所述as_path attribute中包括第三as number或者不包括所述第二as number,确定所述bgp路由是异常的。
20.可选的,所述网络设备根据所述第一as number以及所述第二as number,确定所述bgp路由是否为异常的,包括:
21.所述网络设备根据所述第一as number不是所述as_path attribute中的第一个元素element,以及,所述网络设备所在或所管辖的自治系统与第四as number对应的自治系统没有建立bgp会话,确定所述bgp路由是异常的,所述第四as number是所述as_path attribute中与所述第一as number相邻的元素。
22.可选的,所述bgp路由包括第一互联网协议ip前缀;
23.所述网络设备根据所述第一as number以及所述第二as number,确定所述bgp路由是否为异常的,包括:
24.所述网络设备根据所述第一as number不是所述as_path attribute中的第一个元素element,所述网络设备所在或所管辖的自治系统与左as建立有bgp会话,所述网络设备所在或所管辖的自治系统与右as建立有bgp会话,以及,所述网络设备没有接收过来自所述右as的包含所述第一ip前缀的路由,或者,所述网络设备没有向所述左as发布过包含所述第一ip前缀的路由,确定所述bgp路由是异常的;
25.所述右as对应的as number以及所述左as对应的as number是与所述as_path attribute中与所述第一as number相邻的两个元素,所述右as对应的as number位于所述第一as number的右侧,所述左as对应的as number位于所述第一as number的左侧。
26.第二方面,本技术实施例提供一种边界网关协议bgp路由识别方法,包括:
27.网络设备获取bgp路由,所述bgp路由包括自治系统路径属性as_path attribute,所述as_path attribute包含第一自治系统号码as number,所述网络设备所在或所管辖的自治系统的邻居自治系统对应的as number是第二as number,所述第一as number等于所述第二as number;
28.所述网络设备根据所述第一as number以及所述第二as number,确定所述bgp路由是否为异常的。
29.可选的,所述bgp路由包括第一互联网协议ip前缀;
30.所述网络设备根据所述第一as number以及所述第二as number,确定所述bgp路由是否为异常的,包括:
31.所述网络设备根据所述第一as number是所述as_path attribute中的第一个元素element,以及,所述邻居自治系统没有发布过包含所述第一ip前缀的路由,确定所述bgp路由是异常的。
32.可选的,所述bgp路由包括第一互联网协议ip前缀;
33.所述网络设备根据所述第一as number以及所述第二as number,确定所述bgp路由是否为异常的,包括:
34.所述网络设备根据所述第一as number是所述as_path attribute中的第一个元素element,所述邻居自治系统发布过包含第二ip前缀的路由,以及,所述邻居自治系统没有发布过包含所述第一ip前缀的路由,确定所述bgp路由是异常的,所述第一ip前缀是所述第二ip前缀的子前缀。
35.可选的,所述网络设备根据所述第一as number以及所述第二as number,确定所述bgp路由是否为异常的,包括:
36.所述网络设备根据所述第一as number不是所述as_path attribute中的第一个元素element,以及,所述邻居自治系统与第三as number对应的自治系统没有建立bgp会话,确定所述bgp路由是异常的,所述第三as number是所述as_path attribute中与所述第一as number相邻的元素。
37.可选的,所述bgp路由包括第一互联网协议ip前缀;
38.所述网络设备根据所述第一as number以及所述第二as number,确定所述bgp路由是否为异常的,包括:
39.所述网络设备根据所述第一as number不是所述as_path attribute中的第一个元素element,所述邻居自治系统与左as建立有bgp会话,所述邻居自治系统与右as建立有bgp会话,所述邻居自治系统接收过来自所述右as的包含第一ip前缀的路由,以及,所述邻居自治系统没有向所述左as发布过包含所述第一ip前缀的路由,确定所述bgp路由是异常的;
40.所述右as对应的as number以及所述左as对应的as number是与所述as_path attribute中与所述第一as number相邻的两个元素,所述右as对应的as number位于所述第一as number的右侧,所述左as对应的as number位于所述第一as number的左侧。
41.第三方面,本技术实施例提供一种边界网关协议bgp路由识别装置,包括:
42.获取模块,用于获取bgp路由,所述bgp路由包括自治系统路径属性as_path attribute,所述as_path attribute包含第一自治系统号码as number,所述网络设备所在
或所管辖的自治系统对应的as number是第二as number,所述第一as number等于所述第二as number;
43.识别模块,用于根据所述第一as number以及所述第二as number,确定所述bgp路由是否为异常的。
44.可选的,所述bgp路由包括第一互联网协议ip前缀,所述识别模块具体用于:
45.根据所述第一as number是所述as_path attribute中的第一个元素element,以及,所述网络设备没有发布过包含所述第一ip前缀的路由,确定所述bgp路由是异常的。
46.可选的,所述bgp路由包括第一互联网协议ip前缀,所述识别模块具体用于:
47.根据所述第一as number是所述as_path attribute中的第一个元素element,所述网络设备发布过包含第二ip前缀的路由,以及,所述网络设备没有发布过包含所述第一ip前缀的路由,确定所述bgp路由是异常的,所述第一ip前缀是所述第二ip前缀的子前缀。
48.可选的,所述bgp路由包括第一互联网协议ip前缀,所述识别模块具体用于:
49.根据所述第一as number是所述as_path attribute中的第一个元素element,所述网络设备向特定as发布过仅限于所述特定as使用的包含所述第一ip前缀的路由,以及,所述as_path attribute中包括第三as number或者不包括所述第二as number,确定所述bgp路由是异常的。
50.可选的,所述识别模块具体用于:
51.根据所述第一as number不是所述as_path attribute中的第一个元素element,以及,所述网络设备所在或所管辖的自治系统与第四as number对应的自治系统没有建立bgp会话,确定所述bgp路由是异常的,所述第四as number是所述as_path attribute中与所述第一as number相邻的元素。
52.可选的,所述bgp路由包括第一互联网协议ip前缀,所述识别模块具体用于:
53.根据所述第一as number不是所述as_path attribute中的第一个元素element,所述网络设备所在或所管辖的自治系统与左as建立有bgp会话,所述网络设备所在或所管辖的自治系统与右as建立有bgp会话,以及,所述网络设备没有接收过来自所述右as的包含所述第一ip前缀的路由,或者,所述网络设备没有向所述左as发布过包含所述第一ip前缀的路由,确定所述bgp路由是异常的;
54.所述右as对应的as number以及所述左as对应的as number是与所述as_path attribute中与所述第一as number相邻的两个元素,所述右as对应的as number位于所述第一as number的右侧,所述左as对应的as number位于所述第一as number的左侧。
55.第四方面,本技术实施例提供一种边界网关协议bgp路由识别装置,包括:
56.获取模块,用于获取bgp路由,所述bgp路由包括自治系统路径属性as_path attribute,所述as_path attribute包含第一自治系统号码as number,所述网络设备所在或所管辖的自治系统的邻居自治系统对应的as number是第二as number,所述第一as number等于所述第二as number;
57.识别模块,用于根据所述第一as number以及所述第二as number,确定所述bgp路由是否为异常的。
58.可选的,所述bgp路由包括第一互联网协议ip前缀,所述识别模块具体用于:
59.根据所述第一as number是所述as_path attribute中的第一个元素element,以
及,所述邻居自治系统没有发布过包含所述第一ip前缀的路由,确定所述bgp路由是异常的。
60.可选的,所述bgp路由包括第一互联网协议ip前缀,所述识别模块具体用于:
61.根据所述第一as number是所述as_path attribute中的第一个元素element,所述邻居自治系统发布过包含第二ip前缀的路由,以及,所述邻居自治系统没有发布过包含所述第一ip前缀的路由,确定所述bgp路由是异常的,所述第一ip前缀是所述第二ip前缀的子前缀。
62.可选的,所述识别模块具体用于:
63.根据所述第一as number不是所述as_path attribute中的第一个元素element,以及,所述邻居自治系统与第三as number对应的自治系统没有建立bgp会话,确定所述bgp路由是异常的,所述第三as number是所述as_path attribute中与所述第一as number相邻的元素。
64.可选的,所述bgp路由包括第一互联网协议ip前缀,所述识别模块具体用于:
65.根据所述第一as number不是所述as_path attribute中的第一个元素element,所述邻居自治系统与左as建立有bgp会话,所述邻居自治系统与右as建立有bgp会话,所述邻居自治系统接收过来自所述右as的包含第一ip前缀的路由,以及,所述邻居自治系统没有向所述左as发布过包含所述第一ip前缀的路由,确定所述bgp路由是异常的;
66.所述右as对应的as number以及所述左as对应的as number是与所述as_path attribute中与所述第一as number相邻的两个元素,所述右as对应的as number位于所述第一as number的右侧,所述左as对应的as number位于所述第一as number的左侧。
67.第五方面,本技术实施例提供一种网络设备,其特征在于,包括:存储器、处理器以及计算机程序,所述计算机程序存储在所述存储器中,所述处理器运行所述计算机程序执行第一方面任一项所述的方法,或者,如第二方面任一项所述的方法。
68.第六方面,本技术实施例提供一种芯片,包括:存储器、处理器以及计算机程序,所述计算机程序存储在所述存储器中,所述处理器运行所述计算机程序执行如第一方面任一项所述的方法,或者,如第二方面任一项所述的方法。
69.第七方面,本技术实施例提供一种存储介质,所述存储介质包括计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项所述的方法,或者,如第二方面任一项所述的方法。
70.本技术实施例提供的bgp路由识别方法、装置及设备,网络设备获取bgp路由,所述bgp路由包括自治系统路径属性as_path attribute,所述as_path attribute包含第一自治系统号码as number,所述网络设备所在或所管辖的自治系统对应的as number是第二as number,所述第一as number等于所述第二as number;所述网络设备根据所述第一as number以及所述第二as number,确定所述bgp路由是否为异常的,从而能够及时发现路由劫持等原因导致的异常环路路由,提高了网络安全性。
附图说明
71.图1为本技术适用的网络架构的示意图一;
72.图2为本技术适用的网络架构示意图二;
73.图3为本技术实施例中bgp路由传播过程示意图;
74.图4为本技术一实施例提供的bgp路由识别方法的流程示意图;
75.图5为本技术实施例的应用场景示意图一;
76.图6为本技术实施例的应用场景示意图二;
77.图7为本技术另一实施例提供的bgp路由识别方法的流程示意图;
78.图8为本技术实施例的应用场景示意图三;
79.图9为本技术实施例的应用场景示意图四;
80.图10为本技术一实施例提供的bgp路由识别装置的结构示意图;
81.图11为本技术另一实施例提供的bgp路由识别装置的结构示意图;
82.图12为本技术一实施例提供的网络设备的硬件结构示意图。
具体实施方式
83.本技术实施例描述的网络架构以及业务场景是为了说明本技术实施例的技术方案,并不构成对于本技术实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
84.首先对本技术实施例中涉及的概念进行解释:
85.(1)自治系统(autonomous system,as):在互联网中,一个as是一个有权自主地决定在本系统中应采用何种路由协议的网络单位。这个网络单位可以是一个简单的网络也可以是由一个或多个普通的网络组成的网络群体,它是一个单独的可管理的网络单元(例如:一个运营商、一所大学、一个企业)。一个自治系统有时也被称为是一个路由选择域(routing domain)。在一个自治系统中的所有路由设备必须相互连接,运行相同的路由协议。一个自治系统对应一个唯一的自治系统号码(as number)。
86.(2)内部网关协议(interior gateway protocol,igp):在一个自治系统内部所使用的一种路由协议。一个自治系统内部包括多个路由设备,多个路由设备之间互相连接,各路由设备之间通过igp协议传播路由。
87.(3)边界网关协议(border gateway protocol,bgp):用于在不同自治系统之间的传播路由。不同自治系统中作为bgp speaker的路由设备之间建立bgp会话,通过bgp会话传播路由。示例性的,全国各大网络运营商多数都是通过bgp协议与自身的as number来实现多线互联的,使用bgp协议互联后,网络运营商的所有骨干路由设备将会判断到互联网数据中心(internet data center,idc)的最佳路由,以保证不同网络运营商用户的高速访问。
88.图1为本技术适用的网络架构的示意图一,该网络架构中包括至少两个as,示例性的,图1中示出了包括5个as的场景。不同as之间传播bgp路由时采用边界网关协议(border gateway protocol,bgp)。图1中,不同as之间的连线表示bgp会话。一个bgp会话连接的两个as可以互称为邻居as。例如:图1中的as1与as2互为邻居as,as2与as3互为邻居as,as1与as4互为邻居as,as4与as5互为邻居as。
89.图2为本技术适用的网络架构示意图二,图2示例了网络架构中包括as1和as2的场景。如图2所示,每个as中均可以包括多个路由设备,as内部的路由设备之间为igp会话连接。每个as中负责与其他as进行bgp路由传播的as称为bgp发言者(bgp speaker)。如图2所
示,as1内部的路由设备2为bgp speaker,as2内部的路由设备5为bgpspeaker。
90.一个bgp会话连接的两个as中的各自的bgpspeaker互为bgp对等体。例如:图2中的路由设备2与路由设备5互为bgp对等体。示例性的,当as1向as2发送bgp路由时,需要在路由设备2与路由设备5之间建立bgp会话,从而路由设备2通过bgp会话将bgp路由发送给路由设备5。
91.图1和图2只是举例说明,并非限定,该网络架构中还可以包括更多的自治系统和路由设备。另外,路由设备可以是具有路由功能的任意设备,包括但不限于路由器、交换机等。另外,每个as中除了路由设备之外,还可以包括其他设备,例如:控制器、服务器等。
92.图3为本技术实施例中bgp路由传播过程示意图,如图3所示,示例性的,网络中包括4个as,分别为as100、as200、as300、as500。其中,as500与as200之间建立bgp会话,as200与as100之间建立bgp会话,as100与as300之间建立bgp会话。
93.对于一条bgp路由的传播过程而言,始发该bgp路由的自治系统称为起源as(origin as),转发该bgp路由的自治系统称为转发as(transit as)。例如,起源as中的一个bgp speaker始发了bgp路由。该bgp路由中可以携带该bgp speaker产生的origin attribute。origin attribute是一种知名强制属性(a well-known mandatory attribute)。关于origin attribute,可以参考ietf发布的rfc4271定义的路径属性(path attributes)。
94.示例性的,图3中示例了两条bgp路由。第一条bgp路由的传播过程为as100-》as200-》as500,对于该条bgp路由,as100称为起origin as,as200和as500称为transit as。第二条bgp路由的传播过程为as100-》as300,对于该条bgp路由,as100称为origin as,as300称为transit as。
95.不同自治系统之间传播的bgp路由中包括互联网协议(internet protocol,ip)前缀和自治系统路径属性as_path attribute。
96.其中,ip前缀表示该bgp路由对应的中origin as发布的网络地址集合。本技术实施例中,如无特殊说明,ip前缀均采用ip地址加掩码位数的方式进行表示,即:
97.a.b.c.d/x
98.其中,a.b.c.d为ip地址,x为掩码位数。示例性的,10.10.0.0/16表示的是从10.10.10.0.0到10.10.255.255之间的所有网络地址;10.10.10.0/24表示的是从10.10.10.0至10.10.10.255之间的所有网络地址。
99.as_path attribute包括该bgp路由所经过的各as对应的自治系统号码(as number)。as_path attribute中记录的各as number是按照从本地自治系统到始发自治系统(origin as)所要经过的各自治系统的顺序依次排列。as_path attribute中的最右边第一个as number表示的是bgp路由中origin as的号码,其余as number表示的是bgp路由中transit as的号码。示例性的,某bgp路由的as_path attribute为:100、200、300,则说明该bgp路由从as300始发后,依次经过了as200和as100的转发。
100.可以理解的,origin as在发布一条bgp路由时,在bgp路由中携带ip前缀和as_path attribute,ip前缀指示的是该bgp路由所支持的网络地址集合,as_path attribute指示的是到达origin as所要依次经过的各as。当网络中其他as接收到该bgp路由后,可以获知该bgp路由对应的origin as的网络地址集合,并获取达到origin as所要经过的各as。
当其他as需要向这些网络地址集合中的地址发送报文时,选择在该bgp路由上传递报文。
101.下面结合图3描述bgp路由的传播过程。假设as100根据自身业务需求,需要向其他as发布bgp路由,该bgp路由包含的ip前缀为207.126.0.0/16。as100将本地自治系统的as number添加到as_path attribute中,并通过update消息将该bgp路由发送给as100的邻居as。如图3所示,as100分别向as200和as300发送了bgp路由,该bgp路由的内容如表1所示。
102.表1
103.ip前缀207.126.0.0/16as_path attribute100
104.继续参见图3,as200接收到该bgp路由后,对该bgp路由进行学习,然后把本地自治系统的as number添加到as_path attribute的最前面(最左边),并将bgp路由发送给as200的邻居as500。as200发送给as500的bgp路由的内容如表2所示。可以理解的,as300接收到as100发送的bgp路由后的处理过程与as200类似,此处不再赘述。
105.表2
106.ip前缀207.126.0.0/16as_path attribute200,100
107.as500接收到as200发送的bgp路由后,对该bgp路由进行学习,然后把本地自治系统的as number添加到as_path attribute的最前面(最左边),并将bgp路由发送给as500的邻居自治系统。as500发出的bgp路由的内容如表3所示。
108.表3
109.ip前缀207.126.0.0/16as_path attribute500,200,100
110.由图3可知,每个自治系统接收到bgp路由后,根据其中的as_path attribute,即可获知从本地自治系统去往as100所要依次经过的as,也就是说,按照as_path attribute中从左向右的as number的顺序即可到达as100。
111.在网络中进行bgp路由传播的过程中,有可能出现环路。例如:as100发布一个bgp路由后,该bgp路由经过其他as的转发后,又传播到了as100;或者,as100发布一个bgp路由后,经过as200的转发传播到as300,后续又经过一个或者多个as的转发后,又传播到了as200或as300。为了避免在bgp路由传播过程中形成环路,需要在bgp路由传播过程中进行环路检测。
112.一种技术中,作为接收端的自治系统在接收到bgp路由后,对bgp路由中的as_path attribute进行检测。如果as_path attribute中出现本地自治系统的as number,则认为出现环路,将该bgp路由丢弃或者忽略,以免形成环路。
113.另一种技术中,如果使能了自治系统之间的水平分割功能,则作为发送端的自治系统在向接收端自治系统发送bgp路由之前,对待发送的bgp路由进行检测。如果as_path attribute中出现接收端自治系统对应的as number,则认为出现环路,将该bgp路由丢弃或者忽略,以免该bgp路由发送到接收端as后形成环路。
114.然而,当前部署bgp的网络上,经常会发生伪造bgp路由的事件。具体的,路由劫持者劫持到bgp路由后,对bgp路由中的ip前缀或者as_path attribute进行篡改,生成伪造的
bgp路由。
115.路由劫持者可能有如下目的:
116.1、路由劫持者试图使伪造后的路由看起来像是某些as发布的路由,或者看起来像是传播过程中经过了某些as,使路由看起来像一条正常的路由,避免引起别人的警觉;
117.2、路由劫持者在bgp路由的as_path attribute中加入某些自治系统的as number,阻止这些使用这些as number的系统接收该bgp路由。示例性的,bgp路由的as_path attribute中有as500之后,as500接收到这条路由时,会认为是路由环路而将其丢弃,可见路由劫持者正是利用了现有bgp协议处理中环路检测处理的特点。
118.下面结合具体的例子,分别描述上述两种技术下,路由劫持对网络安全的影响。
119.假设网络中包括6个as,分别为:as100、as200、as300、as400、as500、as600。某bgp路由的origin as为as600,始发的ip前缀为10.10.0.0/16。该bgp路由从as600始发后,经过as500、as400后传播到as300,as300再将该bgp路由传播给as200。正常情况下,as300向as200发送的bgp路由的内容如表4所示。
120.表4
121.ip前缀10.10.0.0/16as_path attribute300,400,500,600
122.一种可能的路由伪造场景中,该bgp路由传播到as300后,位于as300的路由劫持者对该路由的as_path attribute进行篡改。篡改的bgp路由的内容如表5所示。as200接收到篡改的bgp路由。该场景下,as300将as200伪造为该bgp路由的origin as,使得该bgp路由看起来像是as200始发的。
123.表5
124.ip前缀10.10.0.0/16as_path attribute300,200
125.另一种可能的路由伪造场景中,该bgp路由传播到as300后,位于as300的路由劫持者对该路由的as_path attribute进行篡改。篡改的bgp路由的内容如表6所示。as200接收到篡改的bgp路由。该场景下,as300将as200伪造为该bgp路由的transit as,使得该bgp路由看起来像是经过了as200的转发。
126.表6
127.ip前缀10.10.0.0/16as_path attribute300,200,600
128.需要说明的是,实际应用中,还会存在其他可能的路由伪造场景,本实施例不一一列举,上述两种路由伪造场景仅为示例性说明。
129.基于上述的第一种技术,当as200接收到如表5或者如表6所示的伪造路由时可以执行环路检测。在环路检测过程中,检测到as_path attribute中包括本地自治系统的as number(200)。因此,会认为该bgp路由为环路路由,as200直接丢弃或者忽略该bgp路由。而实际上,针对表5所示的数据,as200并未始发该bgp路由;针对表6所示的数据,as200并未转发过该bgp路由。也就是说,该场景下的环路并非正常环路,而是由于路由劫持者的伪造导致的环路。
130.基于上述的第二种技术,假设as300将表5或者表6所示的路由作为待发送的bgp路由。as300在向as200发送之前,执行环路检测过程。环路检测过程中,检测到as_path attribute包括接收端as200的as number(200)。进而,认为该bgp路由被发送到as200后会形成环路。因此,as300直接将该bgp路由丢弃或者忽略。而实际上,针对表5所示的数据,as200实际并未始发过该bgp路由;针对表6所示的数据,as200并未转发过该bgp路由,也就是说,该场景下的环路并非正常环路,而是由于路由劫持者的伪造导致的环路。
131.可见,上述两种技术中,当自治系统中的网络设备检测到路由环路时,直接丢弃或者忽略该bgp路由。以上使得无法及时发现路由劫持情况,导致存在网络安全隐患。
132.为了解决上述技术问题,本技术实施例提供一种bgp路由识别方法。当bgp路由中出现环路的情况下,能够进一步识别到该bgp路由是否是异常的。例如是否是伪造路由或者协议配置错误导致的路由异常。从而,能够及时发现网络中的路由传播异常情况,提高网络安全性。
133.图4为本技术一实施例提供的bgp路由识别方法的流程示意图。如图4所示,本实施例的方法包括:s401以及s402。
134.s401:网络设备获取bgp路由,所述bgp路由包括自治系统路径属性as_path attribute,所述as_path attribute包含第一自治系统号码as number,所述网络设备所在或所管辖的自治系统对应的as number是第二as number,所述第一as number等于所述第二as number。
135.本实施例中,网络设备可以是自治系统内部的任意网络设备。例如:网络设备可以是自治系统内的路由设备,比如作为bgp speaker的路由设备。另外,网络设备还可以是管辖自治系统的网络设备。例如:网络设备可以是用于控制和监控自治系统内部各路由设备的控制器或者服务器。
136.本实施例中的网络设备所在或所管辖的自治系统,是在bgp路由传播过程中作为接收端的自治系统。为了描述方便,本实施例中将执行主体网络设备所在或所管辖的自治系统称为本地自治系统。将在bgp路由传播过程中作为发送端的自治系统,称为发送端自治系统。
137.第一种可能的应用场景中,网络设备为本地自治系统内部作为bgp speaker的路由设备。图5为本技术实施例的应用场景示意图一。如图5所示,在本地自治系统的路由设备中设置bgp路由识别装置,用于执行本实施例的方法。
138.该场景下,s401中的网络设备获取bgp路由,包括:路由设备接收bgp路由。具体的,路由设备接收由发送端自治系统中的bgp speaker发送的bgp路由。
139.第二种可能的应用场景中,网络设备为管辖本地自治系统的控制器。图6为本技术实施例的应用场景示意图二。如图6所示,在管辖本地自治系统的控制器中设备bgp路由识别装置,用于执行本实施例的方法。
140.该场景下,s401中的网络设备获取bgp路由,包括:控制器接收由路由设备发送的bgp路由。具体的,本地自治系统的路由设备(例如bgp speaker)从发送端自治系统的bgp speaker接收到bgp路由后,将该bgp路由转发给控制器。
141.针对每个自治系统而言,控制器与该自治系统内部的路由设备通过bgp监测协议(bgp monitoring protocol,bmp)连接。控制器用于监控路由设备的bgp路由的接收情况。
为支持本实施例,bmp协议需要做一些扩展。当前bmp协议的rfc7854支持7种消息类型,包括下述的type 0~6。本实施例中新增一种消息类型,即下述的type=tbd1:diagnosis message,该消息用于收集各路由设备的诊断信息。
142.type=0:route monitoring
143.type=1:statistics report
144.type=2:peer down notification
145.type=3:peer up notification
146.type=4:initiation message
147.type=5:termination message
148.type=6:route mirroring message
149.type=tbd1:diagnosis message
150.具体的,本地自治系统中bgp speaker与控制器之间建立bmp会话。本地自治系统中bgp speaker和发送端自治系统中的bgp speaker之间建立bgp会话。本地自治系统中bgp speaker接收到bgp路由信息后,将该bgp路由信息封装在上述新增的诊断消息中。然后,将该诊断消息转发给控制器。控制器通过解析该诊断消息,获取bgp路由,执行后续的bgp路由识别过程。
151.本实施例中,网络设备获取的bgp路由中包括自治系统路径属性as_path attribute,其中,as_path attribute中可以包括一个或者多个自治系统号码(as number)。本实施例对应的应用场景中,as_path attribute中包括与本地自治系统的自治系统号码相同的as number。为了描述方便,本实施例中将本地自治系统对应的as number称为第二as number,将as_path attribute中与第二as number相同的as number称为第一as number。也就是说,第一as number等于第二as number。
152.当然,bgp路由除了as_path attribute之外,还可以包括其他信息,例如:ip前缀。ip前缀可以携带在网络层可达信息(network layer reachabilityinformation,nlri)域。nlri field可以携带在bgp update消息中。本技术中,ip前缀也可以称为ip地址前缀。
153.下面结合举例进行说明。假设网络中包括四个自治系统,分别为:as100、as200、as300、as400。一条bgp路由从as100始发(originated)后,经过as200、as300转发到as400后,as400接收的bgp路由中的内容如表7所示。
154.表7
155.ip前缀10.10.0.0/16as_path attribute300,200,100
156.网络设备获取到该bgp路由。由于as_path attribute中不包括本地自治系统对应的as number(400),因此,可以按照已有的路由传播过程进行处理。例如,将本地自治系统的as number(400)添加至as_path attribute的最前面(最左边),并将bgp路由传播给as400的邻居自治系统。本技术中,as400是指as number为400的as。
157.假设as400接收到的bgp路由如表8或者如表9所示。由于as_path attribute中包括本地自治系统的as number(400),因此,执行步骤s402,从而确定该bgp路由是否是异常的。
158.表8
159.ip前缀10.10.0.0/16as_path attribute300,400
160.表9
161.ip前缀10.10.0.0/16as_path attribute300,400,100
162.s402:所述网络设备根据所述第一as number以及所述第二as number,确定所述bgp路由是否为异常的。
163.本实施例中,异常可以是bgp路由是伪造的。另外,异常也可以是协议配置错误导致的bgp路由异常。
164.bgp路由伪造可以具体是路由劫持者对bgp路由进行篡改。例如,路由劫持者劫持到bgp路由后对bgp路由中的ip前缀和/或as_path attribute进行篡改,使得篡改后的bgp路由看起来像是由某个as始发的,或者看起来像是经过了某些as的转发。
165.协议配置错误导致的bgp路由异常是指,由于某个自治系统的配置错误导致bgp路由被传播到不应该接收该bgp路由的自治系统中。例如:as1向as2发布了一条bgp路由,并在该bgp路由的团体属性(community attribute)中指示该bgp路由是专供as2使用的。例如,as2接收到的bgp路由携带禁止输出团体属性(no_exportcommunities attribute)。no_exportcommunities attribute的值可以是0xffffff01。as2协议配置正确的情况下,as2可以根据no_exportcommunities attribute确定该bgp路由是专供as2使用的。由于as2的协议配置错误,as2将该bgp路由转发给了as3。该场景中,as3是不应该接收该bgp路由的as。另一种场景中,as2将该bgp路由转发至其他as。其他as将该bgp路由转发至as1。该场景中,其他as以及as1是不应该接收该bgp路由的as。本实施例中将该情况对应的bgp路由称为“由于协议配置错误导致的bgp路由异常”。
166.本实施例中,网络设备获取到的bgp路由中,当as_path attribute中包括与本地自治系统对应的as number相等的第一as number时,确定bgp路由是异常的。当as_path attribute中不包括与本地自治系统对应的as number相等的第一as number时,确定bgp路由是正常的。
167.一种可能的实施方式中,所述网络设备根据所述第一as number、所述第二as number以及所述第一as number在所述as_path attribute中的位置,确定所述bgp路由是否为异常的。
168.本实施例中,在网络设备获取到的bgp路由的as_path attribute中包括与本地自治系统的as number相等的第一as number时,可以进一步根据所述第一as number在所述as_path attribute中的位置,确定所述bgp路由是否为异常的。
169.其中,as_path attribute可以包括一个或者多个as number。每个as number可以称为as_path attribute的一个元素(element)。本实施例中,第一as number在所述as_path attribute中的位置是指:第一as number是as_path attribute中第几个元素。
170.可以理解的,第一as number与本地自治系统对应的第二as number相等。当第一as number是as_path attribute中第一个元素时,说明本地自治系统是bgp路由的origin as。当第一as number不是as_path attribute中第一个元素时,说明本地自治系统是bgp路由的transit as。
171.其中,第一个元素是指位于as_path attribute最右位置(rightmost position)的元素。
172.当根据第一as number在所述as_path attribute中的位置确定出本地自治系统是bgp路由中的origin as或者transit as后,可以进一步根据as_path attribute确定该bgp路由是否是异常的。
173.一种可能的实施方式中,若第一as number是as_path attribute的第一个元素,说明本地自治系统是bgp路由的origin as。可以确定出as_path attribute中与第一as number左相邻的as number。通过判断左相邻的as number对应的自治系统是否与本地自治系统建立bgp会话,来确定该bgp路由是否为伪造的。例如:若所述左相邻的as number对应的自治系统并未与本地自治系统建立bgp会话,则说明该bgp路由是伪造的。
174.另一种可能的实施方式中,若第一as number不是as_path attribute的第一个元素,说明本地自治系统是bgp路由的transit as。可以确定出as_path attribute中与第一as number左相邻的as number和右相邻的as number,通过判断左相邻的as number对应的自治系统和右相邻的as number对应的自治系统是否与本地自治系统建立bgp会话,来确定该bgp路由是否为伪造的。例如:若左相邻的as number对应的自治系统和右相邻的as number对应的自治系统中,至少一个没有与本地自治系统建立bgp会话,则说明该bgp路由是伪造的。
175.具体实施过程中,可以在本地自治系统的数据库中存储网络中各自治系统之间的实际连接关系,即各自治系统之间建立bgp会话的连接关系。当网络设备接收到如表8或者如表9所示的bgp路由时,可以根据bgp路由中的as_path attribute以及数据库中存储的各自治系统之间的实际连接关系进行判断。
176.需要说明的是,本实施例中的数据库,可以是设置在本地自治系统的路由设备上的数据库。也可以是设置在本地自治系统内部的其他网络设备的数据库。还可以是设置在管辖本地自治系统的控制器或者服务器中的数据库。本实施例对此不作具体限定。
177.一种可能的实施方式中,在网络中设置全局控制器。全局控制器与网络中的各个自治系统连接,用于从各个自治系统中获取路由信息以及各自治系统之间的连接关系信息。同时,全局控制器还用于将收集到的信息同步至各个自治系统的本地数据库中。从而每个自治系统均可以从本地数据库中查询到各自治系统的路由信息以及各自治系统之间的连接关系信息。
178.进一步的,在bgp路由中还包括ip前缀的情况下,在确定bgp路由是否异常时还可以结合ip前缀进行判断。下面结合几种具体的实施方式进行介绍。
179.一种可能的实施方式中,所述bgp路由包括第一互联网协议ip前缀,所述网络设备根据所述第一as number是所述as_path attribute中的第一个元素element,以及,所述网络设备没有发布过包含所述第一ip前缀的路由,确定所述bgp路由是异常的。
180.另一种表述方式为:若本地自治系统对应的as number是所述as_path attribute中的第一个元素element时,并且,本地自治系统没有发布过包含第一ip前缀的路由,则确定bgp路由是异常的。
181.本技术中,“发布”包括:初始生成(originated)并发布,和,接收并发布。初始生成(originated)并发布指的是自治系统初始生成bgp路由并发布给其他as。接收并发布指的
是自治系统从其他as接收到bgp路由并发布给另外的as。本实施例中,“初始生成并发布”可以称为始发,“接收并发布”可以称为转发。
[0182]“网络设备没有发布过包含第一ip前缀的路由”具体可以是网络设备在执行s402之前尚未发布过包含ip前缀的路由。“网络设备没有发布过包含第一ip前缀的路由”具体实现时可以是第一种情况或者第二种情况。第一种情况是网络设备没有初始生成并发布过包含第一ip前缀的路由。例如,网络设备没有生成包含第一ip前缀的路由。网络设备的数据库没有记录包含第一ip前缀的路由。第二种情况是网络设备没有接收并发布过包含第一ip前缀的路由。例如,网络设备没有从其他as接收过包含第一ip前缀的路由并发布给另外的as。
[0183]
具体实施过程中,本地自治系统的数据库用于记录本地自治系统发布的至少一个第二ip前缀,当bgp路由中的第一ip前缀与各第二ip前缀均不匹配,则确定bgp路由是异常的。
[0184]
需要说明的是,上述的匹配是指完全匹配,即ip地址和掩码位数完全匹配。
[0185]
下面举例说明,假设本地自治系统的数据库中记录了本地自治系统发布过两个ip前缀,分别为:10.1.0.0/16、10.2.0.0/16。
[0186]
一种情况下,路由设备获取的bgp路由中,本地自治系统对应的as number是所述as_path attribute中的第一个元素element,并且bgp路由中的ip前缀为10.3.0.0/16。该情况下,网络设备在进行bgp路由识别时,由于bgp路由中的ip前缀(10.3.0.0/16)与上述数据库中记录的两个ip前缀(10.1.0.0/16、10.2.0.0/16)均不匹配,因此,确定该bgp路由是伪造的。
[0187]
另一种情况下,路由设备获取的bgp路由中,本地自治系统对应的as number是所述as_path attribute中的第一个元素element,并且bgp路由中的ip前缀为10.2.1.0/24。该情况下,网络设备进行bgp路由识别时,由于bgp路由中的ip前缀(10.2.1.0/24)与上述数据库中记录的两个ip前缀(10.1.0.0/16、10.2.0.0/16)均不匹配,因此,确定bgp路由是伪造的。
[0188]
本实施方式对应的场景为:本地自治系统对应的as number是所述as_path attribute中的第一个元素element,但是,本地自治系统没有发布过包含第一ip前缀的路由。该场景下,说明是劫持者对bgp路由的ip前缀或as_path attribute进行了伪造,使得伪造后的路由看起来像是该ip前缀是本地自治系统发布的,因此,这是纯粹的路由伪造事件,可以将该类型的路由伪造称为异常类型1。
[0189]
另一种可能的实施方式中,所述bgp路由包括第一互联网协议ip前缀,所述网络设备根据所述第一as number是所述as_path attribute中的第一个元素element,所述网络设备发布过包含第二ip前缀的路由,以及,所述网络设备没有发布过包含所述第一ip前缀的路由,确定所述bgp路由是异常的,所述第一ip前缀是所述第二ip前缀的子前缀。
[0190]
本技术中,网络设备发布过包含第二ip前缀的路由可以是网络设备执行s402之前发布过包含第二ip前缀的路由。
[0191]
另一种表述方式为:若本地自治系统对应的as number是所述as_path attribute中的第一个元素element,并且,所述第一ip前缀是本地自治系统发布过的某个第二ip前缀的子前缀,但是,本地自治系统没有发布过所述第一ip前缀,则确定所述bgp路由是异常的。
[0192]
其中,本实施例中“第一ip前缀是第二ip前缀的子前缀”是指:第一ip前缀所指示
的网络地址集合是第二ip前缀所指示的网络地址集合的子集,并且第一ip前缀所指示的网络地址集合不等于第二ip前缀所指示的网络地址集合。示例性的,假设第一ip前缀为10.10.192.0/24,第二ip前缀为10.10.128.0/17,由于第一ip前缀对应的网络地址集合为从10.10.192.0至10.10.192.255之间的网络地址,第二ip前缀对应的网络地址集合为从10.10.128.0至10.10.255.255之间的网络地址,第一ip前缀对应的网络地址集合是第二ip前缀对应的网络地址集合的子集,因此,认为第一ip前缀是第二ip前缀的子前缀。
[0193]
本实施方式对应的场景为:本地自治系统对应的as number是所述as_path attribute中的第一个元素element,并且,所述第一ip前缀是本地自治系统发布过的某个第二ip前缀的子前缀,但是本地自治系统没有发布过所述第一ip前缀。该场景下,说明是劫持者对bgp路由的ip前缀或as_path attribute进行了伪造,使得伪造后的路由看起来像是本地自治系统发布过某个ip前缀的子前缀,因此,这是纯粹的路由伪造事件,可以将该类型的路由伪造称为异常类型2。
[0194]
又一种可能的实施方式中,所述网络设备根据第一as number是所述as_path attribute中的第一个元素element,以及,所述网络设备向所述as_path attribute中与第一as number相邻的元素对应的自治系统发布过包含所述第一ip前缀的路由,确定所述bgp路由是正常的。
[0195]
示例性的,假设本地自治系统的数据库中记录了as100曾向as200发布过一条bgp路由,ip前缀为10.10.10.0/24。若网络设备接收到的bgp路由的ip前缀为10.10.10.0/24,as_path attribute为300、200、100,则确定该bgp路由为正常的。
[0196]
本实施例中,在确定bgp路由是正常的情况下,说明该bgp路由的环路类型为正常环路,可以按照现有技术中的处理方式,对该bgp路由丢弃或者忽略处理,以免造成路由环路。
[0197]
又一种可能的实施方式中,所述bgp路由包括第一互联网协议ip前缀,所述网络设备根据所述第一as number是所述as_path attribute中的第一个元素element,所述网络设备向特定as发布过仅限于所述特定as使用的包含所述第一ip前缀的路由,以及,所述as_path attribute中包括第三as number或者不包括所述第二as number,确定所述bgp路由是异常的。
[0198]
其中,第三as number不等于第一as number,也不等于第二as number。
[0199]
本技术中,网络设备向特定as发布过仅限于所述特定as使用的包含所述第一ip前缀的路由,可以是网络设置在执行s402之前发布过仅限于特定as使用的包含第一ip前缀的路由。
[0200]
其中,网络设备向特定as发布过仅限于特定as使用的包含第一ip前缀的路由,可以具体是指网络设备在发布包含第一ip前缀的路由时,在该路由的团体属性(community attribute)中指示了该路由仅限于特定as专用。例如,网络设备在发布包含第一ip前缀的路由时,在团体属性中携带禁止输出团体属性(no_exportcommunities attribute)。no_exportcommunities attribute的值可以是0xffffff01。
[0201]
具体实施过程中,本地自治系统的数据库还用于记录本地自治系统发布(advertised)过的ip前缀,并且还记录各ip前缀发布给哪些as,以及各ip前缀是否是某些特定as专用等信息。当网络设备获取到bgp路由后,在判断bgp路由是否为异常路由时,通过
查询数据库中的相关信息进行判断。
[0202]
下面结合举例进行说明。假设本地自治系统的数据库中记录了as100曾向as200发布过一条bgp路由,ip前缀为10.10.10.0/24。并且,本地自治系统在发布该bgp路由时指定了该路由为as200专用的路由。
[0203]
一种情况下,as100获取到bgp路由后,发现bgp路由的内容如表10所示。bgp路由中的ip前缀为10.10.10.0/24,as_path attribute为300、200、100。as100的网络设备在进行路由识别时,通过查询数据库发现自己确实向as200发布过前缀为10.10.10.0/24的路由,但是该路由是as200专用的。而自己接收到的如表10所示的bgp路由中,as200将该路由转发给了as300。说明as200在接收到as100发送的专用路由后,没有按照协议配置进行使用,违反了路由使用约定。本实施例中,将该bgp路由的类型称为异常类型3。
[0204]
表10
[0205]
ip前缀10.10.10.0/24as_path attribute300、200、100
[0206]
另一种情况下,as100获取到bgp路由后,发现bgp路由的内容如表11所示。bgp路由中的ip前缀为10.10.10.0/24,as_path attribute为300、400、100。as100的网络设备在进行路由识别时,通过查询数据库发现自己确实发布过前缀为10.10.10.0/24的路由,但是该路由是发布给as200专用的。而自己接收到的如表10所示的bgp路由中as_path attribute中不包括200,说明该路由可能是被劫持者劫持后对as_path attribute进行伪造得到的。本实施例中,将该bgp路由的类型称为异常类型4。
[0207]
表11
[0208]
ip前缀10.10.10.0/24as_path attribute300,400,100
[0209]
又一种可能的实施方式中,所述网络设备根据所述第一as number是所述as_path attribute中的第一个元素element,所述网络设备向特定as发布过仅限于所述特定as使用的包含所述第一ip前缀的路由,以及,所述as_path attribute中包括所述第二as number且不包括第三as number,确定所述bgp路由是正常的。其中,第三as number不等于第一as number,也不等于第二as number。
[0210]
示例性的,假设本地自治系统的数据库中记录了as100曾向as200发布过一条bgp路由,ip前缀为10.10.10.0/24,并且该路由是as200专用的。若网络设备接收到的bgp路由的ip前缀为10.10.10.0/24,as_path attribute为200、100,即as_path attribute中不包括除特定as之前的其他as,则确定该bgp路由为正常的。
[0211]
本实施例中,在确定bgp路由是正常的情况下,说明该bgp路由的环路类型为正常环路,可以按照现有技术中的处理方式,对该bgp路由丢弃或者忽略处理,以免造成路由环路。
[0212]
又一种可能的实施方式中,所述网络设备根据所述第一as number不是所述as_path attribute中的第一个元素element,以及,所述网络设备所在或所管辖的自治系统与第四as number对应的自治系统没有建立bgp会话,确定所述bgp路由是异常的,所述第四as number是所述as_path attribute中与所述第一as number相邻的元素。
[0213]
其中,第四as number可以是一个as number,也可以是两个as number。
[0214]
也就是说,as_path attribute中与第一as number相邻的一个或者两个as number中,至少一个对应的自治系统与本地自治系统没有建立bgp会话,则确定bgp路由为异常的。
[0215]
本技术中,本地自治系统与第四as number对应的自治系统没有建立bgp会话,可以具体是在网络设备执行s402之前,本地自治系统与第四as number对应的自治系统没有建立bgp会话。
[0216]
具体实施过程中,本地自治系统的数据库还用于存储各自治系统之间的连接关系,即存储各自治系统之间是否建立bgp会话。网络设备获取到bgp路由后,根据as_path attribute确定出与第一as number相邻的as number后,可以通过查询数据库,确定这些相邻的as number对应的自治系统与本地自治系统是否建立bgp会话。
[0217]
下面举例说明,假设本地自治系统as100的数据库中记录了as100与as200建立了bgp会话,并且,as100也与as300建立了bgp会话。
[0218]
一种情况下,网络设备获取的bgp路由中as_path attribute为200、100、400。通过查询数据库,由于as400与as100实际没有建立bgp会话,因此,确定该bpg路由为异常的。该情况下,本实施例中的第四as number具体是指400。
[0219]
另一种情况下,网络设备获取的bgp路由中as_path attribute为500、100、400。通过查询数据库,由于as400与as100实际没有建立bgp会话,且as500与as100实际也没有建立bgp会话,因此,确定该bpg路由为异常的。该情况下,本实施例中的第四as number包括400和500。
[0220]
本实施方式对应的场景中,网络设备获取的bgp路由中,本地自治系统对应的as number不是所述as_path attribute中的第一个元素element,并且,所述as_path attribute中与本地自治系统的as number相邻的元素中,存在至少一个相邻的元素对应的自治系统与本地自治系统没有建立bgp会话。该场景下,说明是劫持者劫持到路由后,对路由中的as_path attribute进行篡改,使得篡改后的路由看起来像是经过了本地自治系统,因此,该情况是纯粹的路由伪造事件,本实施例中,将该bgp路由的类型称为异常类型5。
[0221]
又一种可能的实施方式中,所述bgp路由包括第一互联网协议ip前缀,所述网络设备根据所述第一as number不是所述as_path attribute中的第一个元素element,所述网络设备所在或所管辖的自治系统与左as建立有bgp会话,所述网络设备所在或所管辖的自治系统与右as建立有bgp会话,以及,所述网络设备没有接收过来自所述右as的包含所述第一ip前缀的路由,或者,所述网络设备没有向所述左as发布过包含所述第一ip前缀的路由,确定所述bgp路由是异常的。
[0222]
其中,所述右as对应的as number以及所述左as对应的as number是与所述as_path attribute中与所述第一as number相邻的两个元素,所述右as对应的as number位于所述第一as number的右侧,所述左as对应的as number位于所述第一as number的左侧。
[0223]
具体实施过程中,本地自治系统的数据库除了存储各自治系统之间是否建立bgp会话之外,还用于存储本地自治系统转发的历史bgp路由信息。例如:本地自治系统从哪些自治系统接收过哪些ip前缀,以及向哪些自治系统发布过哪些ip前缀。网络设备获取到bgp路由后,根据as_path attribute确定出与第一as number相邻的as number。然后,可以通过查询数据库,确定这些相邻的as number对应的自治系统与本地自治系统是否建立bgp会
话。并确定本地自治系统是否从相邻的as number对应的自治系统接收过bgp路由中的ip前缀,或者,本地自治系统是否向相邻的as number对应的自治系统发布过bgp路由中的ip前缀。
[0224]
下面举例说明,假设本地自治系统为as100。as100中的网络设备获取的bgp路由中as_path attribute为200、100、400,ip前缀为10.10.10.0/24。在网络设备进行路由识别时,若通过查询数据库发现,虽然as400与本地自治系统as100建立了bgp会话,并且,as200与本地自治系统as100也建立了bgp会话,但是,本地自治系统as100并没有从as400接收过包括ip前缀10.10.10.0/24的路由,则确定该bpg路由为异常的。
[0225]
或者,若通过查询数据库发现,虽然as400与本地自治系统as100建立了bgp会话,as200与本地自治系统as100也建立了bgp会话,并且,本地自治系统也从as400接收过包括ip前缀10.10.10.0/24的路由,但是,本地自治系统as100并没有向as200发布过包括ip前缀10.10.10.0/24的路由,则确定该bpg路由为异常的。
[0226]
本实施方式对应的场景中,网络设备获取的bgp路由中,本地自治系统对应的as number不是所述as_path attribute中的第一个元素element,并且,所述as_path attribute中与本地自治系统的as number相邻的元素中,左相邻元素对应的自治系统和右相邻元素对应的自治系统均与本地自治系统建立bgp会话,但是,本地自治系统并没有从右相邻元素对应的自治系统中接收过包括该ip前缀的路由,或者,并没有向左相邻元素对应的自治系统中发布过包括该ip前缀的路由。该场景下,说明是劫持者劫持到路由后,对路由中的ip前缀或者as_path attribute进行篡改,使得篡改后的路由看起来像是经过了本地自治系统,因此,该情况是纯粹的路由伪造事件,本实施例中,将该bgp路由的类型称为异常类型6。
[0227]
又一种可能的实施方式中,所述网络设备根据所述第一as number不是所述as_path attribute中的第一个元素element,所述网络设备所在或所管辖的自治系统与左as建立有bgp会话,所述网络设备所在或所管辖的自治系统与右as建立有bgp会话,所述网络设备接收过来自所述右as的包含所述第一ip前缀的路由,以及,所述网络设备向所述左as发布过包含所述第一ip前缀的路由,确定所述bgp路由是正常的。
[0228]
其中,所述右as对应的as number以及所述左as对应的as number是与所述as_path attribute中与所述第一as number相邻的两个元素,所述右as对应的as number位于所述第一as number的右侧,所述左as对应的as number位于所述第一as number的左侧。
[0229]
本实施例中,在确定bgp路由是正常的情况下,说明该bgp路由的环路类型为正常环路,可以按照现有技术中的处理方式,对该bgp路由丢弃或者忽略处理,以免造成路由环路。
[0230]
在上述各实施例的基础上,所述网络设备确定所述bgp路由为异常的之后,还包括:
[0231]
所述网络设备生成路由异常对应的日志信息和/或告警信息,通知所述as_path attribute中的各as number对应的自治系统进行路由修正。
[0232]
具体的,在识别出bgp路由异常之后,可以在网络设备本地生成bgp路由异常对应的日志信息,还可以向本地自治系统对应的网管服务器上报告警信息,使得用户能够及时发现网络中的异常路由传播,并及时进行路由修正,提高网络的安全性和稳定性。
message,该消息用于收集各路由设备的诊断信息。
[0243]
type=0:route monitoring
[0244]
type=1:statistics report
[0245]
type=2:peer down notification
[0246]
type=3:peer up notification
[0247]
type=4:initiation message
[0248]
type=5:termination message
[0249]
type=6:route mirroring message
[0250]
type=tbd1:diagnosis message
[0251]
具体的,本地自治系统中bgp speaker与控制器之间建立bmp会话。本地自治系统中bgp speaker和邻居自治系统中的bgp speaker之间建立bgp会话。本地自治系统中bgp speaker生成待发送的bgp路由后,将该bgp路由封装在上述新增的诊断消息中。然后将该诊断消息转发给控制器。控制器通过解析该诊断消息,获取bgp路由,执行后续的bgp路由识别过程。
[0252]
本实施例中,网络设备获取的bgp路由中包括自治系统路径属性as_path attribute,其中,as_path attribute中可以包括一个或者多个自治系统号码(as number)。本实施例对应的应用场景中,as_path attribute中包括与邻居自治系统的自治系统号码相同的as number。为了描述方便,本实施例中将邻居自治系统对应的as number称为第二as number,将as_path attribute中与第二as number相同的as number称为第一as number。也就是说,第一as number等于第二as number。
[0253]
当然,bgp路由除了as_path attribute之外,还可以包括其他信息,例如:ip前缀。ip前缀可以携带在网络层可达信息(network layer reachabilityinformation,nlri)域。nlri field可以携带在bgp update消息中。本技术中,ip前缀也可以称为ip地址前缀。。
[0254]
下面结合举例进行说明。假设网络中包括四个自治系统,分别为:as100、as200、as300、as400。一条bgp路由从as100始发(originated)后,经过as200转发as300后,as300将本地自治系统对应的as number添加至as_path attribute的最前面(最左边),生成待发送给as400的bgp路由,该待发送bgp路由中的内容如表12所示。
[0255]
表12
[0256]
ip前缀10.10.0.0/16as_path attribute300,200,100
[0257]
as300对应的网络设备获取到待发送bgp路由。由于as_path attribute中不包括邻居自治系统对应的as number(400),因此,不触发执行本实施例的bgp路由识别方法,按照现有的路由传播过程进行处理。例如,将bgp路由传播给as400。本技术中,as400是指as number为400的as。
[0258]
假设as300生成的待发送bgp路由如表13或者如表14所示。由于as_path attribute中包括邻居自治系统的as number(400),因此,执行步骤s702,确定该bgp路由是否是异常的。
[0259]
表13
[0260]
ip前缀10.10.0.0/16
as_path attribute300,400
[0261]
表14
[0262]
ip前缀10.10.0.0/16as_path attribute300,400,100
[0263]
s702:所述网络设备根据所述第一as number以及所述第二as number,确定所述bgp路由是否为异常的。
[0264]
本实施例中,异常可以是bgp路由是伪造的。另外,异常也可以是由于协议配置错误导致的bgp路由异常。
[0265]
bgp路由伪造是指路由劫持者劫持到bgp路由后对bgp路由中的ip前缀和/或as_path attribute进行伪造,使得伪造后的bgp路由看起来像是由某个as始发的,或者看起来像是经过了某些as的转发。
[0266]
协议配置错误导致的bgp路由异常是指,由于某个自治系统的配置错误导致bgp路由被传播到不应该接收该bgp路由的自治系统中。例如:as1向as2发布了一条bgp路由,并在该bgp路由的团体属性(community attribute)中指示该bgp路由是专供as2使用的。例如,as2接收到的bgp路由携带禁止输出团体属性(no_exportcommunities attribute)。no_exportcommunities attribute的值可以是0xffffff01。as2协议配置正确的情况下,as2可以根据no_exportcommunities attribute确定该bgp路由是专供as2使用的。由于as2的协议配置错误,as2将该bgp路由转发给了as3。该场景中,as3是不应该接收该bgp路由的as。另一种场景中,as2将该bgp路由转发至其他as。其他as将该bgp路由转发至as1。该场景中,其他as以及as1是不应该接收该bgp路由的as。本实施例中将该情况对应的bgp路由称为“由于协议配置错误导致的bgp路由异常”。
[0267]
本实施例中,网络设备获取到的bgp路由中,当as_path attribute中包括与邻居自治系统对应的as number相等的第一as number时,确定bgp路由是异常的。当as_path attribute中不包括与邻居自治系统对应的as number相等的第一as number时,确定bgp路由是正常的。
[0268]
一种可能的实施方式中,所述网络设备根据所述第一as number、所述第二as number以及所述第一as number在所述as_path attribute中的位置,确定所述bgp路由是否为异常的。
[0269]
本实施例中,网络设备获取到bgp路由的as_path attribute中包括与邻居自治系统的as number相等的第一as number时,可以进一步根据所述第一as number在所述as_path attribute中的位置,确定所述bgp路由是否为异常的。
[0270]
其中,as_path attribute可以包括一个或者多个as number。每个as number可以称为as_path attribute的一个元素(element)。本实施例中,第一as number在所述as_path attribute中的位置是指:第一as number是as_path attribute中第几个元素。
[0271]
可以理解的,第一as number与邻居自治系统对应的第二as number相等。当第一as number是as_path attribute中第一个元素时,说明邻居自治系统是bgp路由的origin as。当第一as number不是as_path attribute中第一个元素时,说明邻居自治系统是bgp路由的transit as。
[0272]
其中,第一个元素是指位于as_path attribute最右位置(rightmost position)
的元素。
[0273]
当根据第一as number在所述as_path attribute中的位置确定出邻居自治系统是bgp路由中的origin as或者transit as后,可以进一步根据as_path attribute确定该bgp路由是否是异常的。
[0274]
一种可能的实施方式中,若第一as number是as_path attribute的第一个元素,说明邻居自治系统是bgp路由的origin as。可以确定出as_path attribute中与第一as number左相邻的as number。然后通过判断左相邻的as number对应的自治系统是否与邻居自治系统建立bgp会话,来确定该bgp路由是否为伪造的。例如:若所述左相邻的as number对应的自治系统并未与邻居自治系统建立bgp会话,则说明该bgp路由是伪造的。
[0275]
另一种可能的实施方式中,若第一as number不是as_path attribute的第一个元素,说明邻居自治系统是bgp路由的transit as。可以确定出as_path attribute中与第一as number左相邻的as number和右相邻的as number。然后通过判断左相邻的as number对应的自治系统和右相邻的as number对应的自治系统是否与邻居自治系统建立bgp会话,来确定该bgp路由是否为伪造的。例如:若左相邻的as number对应的自治系统和右相邻的as number对应的自治系统中,至少一个没有与邻居自治系统建立bgp会话,则说明该bgp路由是伪造的。
[0276]
具体实施过程中,可以在本地自治系统的数据库中存储网络中各自治系统之间的实际连接关系,即各自治系统之间建立bgp会话的连接关系。当网络设备获取到到如表8或者如表9所示的bgp路由时,可以根据bgp路由中的as_path attribute以及数据库中存储的各自治系统之间的实际连接关系进行判断。
[0277]
需要说明的是,本实施例中的数据库,可以是设置在本地自治系统的路由设备上的数据库。也可以是设置在本地自治系统内部的其他网络设备的数据库。还可以是设置在管辖本地自治系统的控制器或者服务器中的数据库。本实施例对此不作具体限定。
[0278]
一种可能的实施方式中,在网络中设置全局控制器,全局控制器与网络中的各个自治系统连接,用于从各个自治系统中获取路由信息以及各自治系统之间的连接关系信息,同时,全局控制器还用于将收集到的信息同步至各个自治系统的本地数据库中,从而每个自治系统均可以从本地数据库中查询到各自治系统的路由信息以及各自治系统之间的连接关系信息。
[0279]
进一步的,在bgp路由中还包括ip前缀的情况下,在确定bgp路由是否异常时还可以结合ip前缀进行判断。下面结合几种具体的实施方式进行介绍。
[0280]
一种可能的实施方式中,所述网络设备根据所述第一as number是所述as_path attribute中的第一个元素element,以及,所述邻居自治系统没有发布过包含所述第一ip前缀的路由,确定所述bgp路由是异常的。
[0281]
另一种表述方式为:若邻居自治系统对应的as number是所述as_path attribute中的第一个元素element时,并且,邻居自治系统没有发布过包含第一ip前缀的路由,则确定bgp路由是异常的。
[0282]
本技术中,“发布”包括:初始生成(originated)并发布,和,接收并发布。初始生成(originated)并发布指的是自治系统初始生成bgp路由并发布给其他as。接收并发布指的是自治系统从其他as接收到bgp路由并发布给另外的as。本实施例中,“初始生成并发布”可
以称为始发,“接收并发布”可以称为转发。
[0283]“网络设备没有发布过包含第一ip前缀的路由”具体可以是网络设备在执行s402之前尚未发布过包含ip前缀的路由。“邻居自治系统没有发布过包含第一ip前缀的路由”具体实现时可以是第一种情况或者第二种情况。第一种情况是邻居自治系统没有初始生成并发布过包含第一ip前缀的路由。例如,邻居自治系统没有生成包含第一ip前缀的路由。数据库没有记录邻居自治系统包含第一ip前缀的路由。第二种情况是邻居自治系统没有接收并发布过包含第一ip前缀的路由。例如,邻居自治系统没有从其他as接收过包含第一ip前缀的路由并发布给另外的as。
[0284]
具体实施过程中,本地自治系统的数据库用于记录邻居自治系统发布的至少一个第二ip前缀,当bgp路由中的第一ip前缀与各第二ip前缀均不匹配,则确定bgp路由是异常的。
[0285]
需要说明的是,上述的匹配是指完全匹配,即ip地址和掩码位数完全匹配。
[0286]
下面举例说明,假设数据库中记录了邻居自治系统发布过两个ip前缀,分别为:10.1.0.0/16、10.2.0.0/16。
[0287]
一种情况下,路由设备获取的bgp路由中,邻居自治系统对应的as number是所述as_path attribute中的第一个元素element,并且bgp路由中的ip前缀为10.3.0.0/16。该情况下,网络设备在进行bgp路由识别时,由于bgp路由中的ip前缀(10.3.0.0/16)与上述数据库中记录的两个ip前缀(10.1.0.0/16、10.2.0.0/16)均不匹配,因此,确定该bgp路由是伪造的。
[0288]
另一种情况下,路由设备获取的bgp路由中,邻居自治系统对应的as number是所述as_path attribute中的第一个元素element,并且bgp路由中的ip前缀为10.2.1.0/24。该情况下,网络设备进行bgp路由识别时,由于bgp路由中的ip前缀(10.2.1.0/24)与上述数据库中记录的两个ip前缀(10.1.0.0/16、10.2.0.0/16)均不匹配,因此,确定bgp路由是伪造的。
[0289]
本实施方式对应的场景为:邻居自治系统对应的as number是所述as_path attribute中的第一个元素element,但是,邻居自治系统没有发布过包含第一ip前缀的路由。该场景下,说明是劫持者对bgp路由的ip前缀或as_path attribute进行了伪造,使得伪造后的路由看起来像是该ip前缀是邻居自治系统发布的,因此,这是纯粹的路由伪造事件,可以将该类型的路由伪造称为异常类型7。
[0290]
另一种可能的实施方式中,所述网络设备根据所述第一as number是所述as_path attribute中的第一个元素element,所述邻居自治系统发布过包含第二ip前缀的路由,以及,所述邻居自治系统没有发布过包含所述第一ip前缀的路由,确定所述bgp路由是异常的,所述第一ip前缀是所述第二ip前缀的子前缀。
[0291]
另一种表述方式为:若邻居自治系统对应的as number是所述as_path attribute中的第一个元素element,并且,所述第一ip前缀是邻居自治系统发布过的某个第二ip前缀的子前缀,但是邻居自治系统没有发布过所述第一ip前缀,则确定所述bgp路由是异常的。
[0292]
本技术中,邻居自治系统发布过包含第二ip前缀的路由可以是在网络设备执行s702之前,邻居自治系统发布过包含第二ip前缀的路由。
[0293]
其中,本实施例中“第一ip前缀是第二ip前缀的子前缀”是指:第一ip前缀所指示
的网络地址集合是第二ip前缀所指示的网络地址集合的子集。示例性的,假设第一ip前缀为10.10.192.0/24,第二ip前缀为10.10.128.0/17,由于第一ip前缀对应的网络地址集合为从10.10.192.0至10.10.192.255之间的网络地址,第二ip前缀对应的网络地址集合为从10.10.128.0至10.10.255.255之间的网络地址,第一ip前缀对应的网络地址集合是第二ip前缀对应的网络地址集合的子集,因此,认为第一ip前缀是第二ip前缀的子前缀。
[0294]
本实施方式对应的场景为:邻居自治系统对应的as number是所述as_path attribute中的第一个元素element,并且,所述第一ip前缀是邻居自治系统发布过的某个第二ip前缀的子前缀,但是邻居自治系统没有发布过所述第一ip前缀。该场景下,说明是劫持者对bgp路由的ip前缀或as_path attribute进行了伪造,使得伪造后的路由看起来像是邻居自治系统发布过某个ip前缀的子前缀,因此,这是纯粹的路由伪造事件,可以将该类型的路由伪造称为异常类型9。
[0295]
又一种可能的实施方式中,所述网络设备根据第一as number是所述as_path attribute中的第一个元素element,以及,所述邻居自治系统向所述as_path attribute中与第一as number相邻的元素对应的自治系统发布过包含所述第一ip前缀的路由,确定所述bgp路由是正常的。
[0296]
示例性的,假设数据库中记录了邻居自治系统as100曾向as200发布过一条bgp路由,ip前缀为10.10.10.0/24。若网络设备接收到的bgp路由的ip前缀为10.10.10.0/24,as_path attribute为300、200、100,则确定该bgp路由为正常的。
[0297]
本实施例中,在确定bgp路由是正常的情况下,说明该bgp路由的环路类型为正常环路,可以按照现有技术中的处理方式,对该bgp路由丢弃或者忽略处理,以免造成路由环路。
[0298]
又一种可能的实施方式中,所述网络设备根据所述第一as number不是所述as_path attribute中的第一个元素element,以及,所述邻居自治系统与第三as number对应的自治系统没有建立bgp会话,确定所述bgp路由是异常的,所述第三as number是所述as_path attribute中与所述第一as number相邻的元素。
[0299]
其中,第三as number可以是一个as number,也可以是两个as number。
[0300]
也就是说,as_path attribute中与第一as number相邻的一个或者两个as number中,至少一个相邻的as number对应的自治系统与邻居自治系统没有建立bgp会话,则确定bgp路由为异常的。
[0301]
本技术中,邻居自治系统与第三as number对应的自治系统没有建立bgp会话,可以具体是在网络设备执行s702之前,邻居自治系统与第三as number对应的自治系统没有建立bgp会话。
[0302]
具体实施过程中,数据库还用于存储各自治系统之间的连接关系,即存储各自治系统之间是否建立bgp会话。网络设备获取到bgp路由后,根据as_path attribute确定出与第一as number相邻的as number后,可以通过查询数据库,确定这些相邻的as number对应的自治系统与本地自治系统是否建立bgp会话。
[0303]
下面举例说明,假设数据库中记录了as100与as200建立了bgp会话,并且,as100也与as300建立了bgp会话。
[0304]
一种情况下,假设as200待向邻居as100发送bgp路由,该待发送的bgp路由中as_
path attribute为200、100、400。通过查询数据库,由于as400与as100实际没有建立bgp会话,因此,确定该bpg路由为异常的。该情况下,本实施例中的第三as number具体是指400。
[0305]
另一种情况下,假设as200待向邻居as100发送bgp路由,该待发送bgp路由中as_path attribute为500、100、400。通过查询数据库,由于as400与as100实际没有建立bgp会话,且as500与as100实际也没有建立bgp会话,因此,确定该bpg路由为异常的。该情况下,本实施例中的第三as number包括400和500。
[0306]
本实施方式对应的场景中,网络设备获取的bgp路由中,邻居自治系统对应的as number不是所述as_path attribute中的第一个元素element,并且,所述as_path attribute中与邻居自治系统的as number相邻的元素中,存在至少一个相邻的元素对应的自治系统与本地自治系统没有建立bgp会话。该场景下,说明是劫持者劫持到路由后,对路由中的as_path attribute进行篡改,使得篡改后的路由看起来像是经过了邻居自治系统,因此,该情况是纯粹的路由伪造事件,本实施例中,将该bgp路由的类型称为异常类型9。
[0307]
又一种可能的实施方式中,所述bgp路由包括第一互联网协议ip前缀,所述网络设备根据所述第一as number不是所述as_path attribute中的第一个元素element,所述邻居自治系统与左as建立有bgp会话,所述邻居自治系统与右as建立有bgp会话,所述邻居自治系统接收过来自所述右as的包含第一ip前缀的路由,以及,所述邻居自治系统没有向所述左as发布过包含所述第一ip前缀的路由,确定所述bgp路由是异常的。
[0308]
其中,所述右as对应的as number以及所述左as对应的as number是与所述as_path attribute中与所述第一as number相邻的两个元素,所述右as对应的as number位于所述第一as number的右侧,所述左as对应的as number位于所述第一as number的左侧。
[0309]
具体实施过程中,数据库除了存储各自治系统之间是否建立bgp会话之外,还用于存储邻居自治系统转发的历史bgp路由信息。例如:邻居自治系统从哪些自治系统接收过哪些ip前缀,以及向哪些自治系统发布过哪些ip前缀。网络设备获取到bgp路由后,根据as_path attribute确定出与第一as number相邻的as number。然后可以通过查询数据库,确定这些相邻的as number对应的自治系统与邻居自治系统是否建立bgp会话。并确定邻居自治系统是否从相邻的as number对应的自治系统接收过bgp路由中的ip前缀,或者,邻居自治系统是否向相邻的as number对应的自治系统发布过bgp路由中的ip前缀。
[0310]
下面举例说明,假设as200待向邻居自治系统as100发送bgp路由。待发送的bgp路由中as_path attribute为200、100、400,ip前缀为10.10.10.0/24。在as200中的网络设备在进行路由识别时,若通过查询数据库发现,虽然as400与邻居自治系统as100建立了bgp会话,并且,as200与邻居自治系统as100也建立了bgp会话,但是,邻居自治系统as100并没有从as400接收过包括ip前缀10.10.10.0/24的路由,则确定该bpg路由为异常的。
[0311]
或者,若通过查询数据库发现,虽然as400与邻居自治系统as100建立了bgp会话,as200与邻居自治系统as100也建立了bgp会话,并且,邻居自治系统as100也从as400接收过包括ip前缀10.10.10.0/24的路由,但是,邻居自治系统as100并没有向as200发布过包括ip前缀10.10.10.0/24的路由,则确定该bpg路由为异常的。
[0312]
本实施方式对应的场景中,网络设备获取的bgp路由中,邻居自治系统对应的as number不是所述as_path attribute中的第一个元素element,并且,所述as_path attribute中与邻居自治系统的as number相邻的元素中,左相邻元素对应的自治系统和右
相邻元素对应的自治系统均与邻居自治系统建立bgp会话,但是,邻居自治系统并没有从右相邻元素对应的自治系统中接收过包括该ip前缀的路由,或者,并没有向左相邻元素对应的自治系统中发布过包括该ip前缀的路由。该场景下,说明是劫持者劫持到路由后,对路由中的ip前缀或者as_path attribute进行篡改,使得篡改后的路由看起来像是经过了邻居自治系统,因此,该情况是纯粹的路由伪造事件,本实施例中,将该bgp路由的类型称为异常类型10。
[0313]
又一种可能的实施方式中,所述网络设备根据所述第一as number不是所述as_path attribute中的第一个元素element,所述邻居自治系统与左as建立有bgp会话,所述邻居自治系统与右as建立有bgp会话,所述邻居自治系统接收过来自所述右as的包含所述第一ip前缀的路由,以及,所述邻居自治系统向所述左as发布过包含所述第一ip前缀的路由,确定所述bgp路由是正常的。
[0314]
其中,所述右as对应的as number以及所述左as对应的as number是与所述as_path attribute中与所述第一as number相邻的两个元素,所述右as对应的as number位于所述第一as number的右侧,所述左as对应的as number位于所述第一as number的左侧。
[0315]
本实施例中,在确定bgp路由是正常的情况下,说明该bgp路由的环路类型为正常环路,可以按照现有技术中的处理方式,对该bgp路由丢弃或者忽略处理,以免造成路由环路。
[0316]
在上述各实施例的基础上,所述网络设备确定所述bgp路由为异常的之后,还包括:
[0317]
所述网络设备生成路由异常对应的日志信息和/或告警信息,通知所述as_path attribute中的各as number对应的自治系统进行路由修正。
[0318]
具体的,在识别出bgp路由异常之后,可以在网络设备本地生成bgp路由异常对应的日志信息,还可以向本地自治系统对应的网管服务器上报告警信息,使得用户能够及时发现网络中的异常路由传播,并及时进行路由修正,提高网络的安全性和稳定性。
[0319]
本实施例提供的bgp路由识别方法,包括:网络设备获取bgp路由,所述bgp路由包括自治系统路径属性as_path attribute,所述as_path attribute包含第一自治系统号码as number,所述网络设备所在或所管辖的自治系统的邻居自治系统对应的as number是第二as number,所述第一as number等于所述第二as number;所述网络设备根据所述第一as number以及所述第二as number,确定所述bgp路由是否为异常的,从而能够及时发现路由劫持等原因导致的异常环路路由,提高了网络安全性。
[0320]
图10为本技术一实施例提供的bgp路由识别装置的结构示意图。本实施例的bgp路由识别装置可设置于作为接收端的自治系统的网络设备中,该网络设备可以是作为接收端的自治系统内部的路由设备,还可以是管辖作为接收端的自治系统的控制器。如图10所示,本实施例的bgp路由识别装置100包括:获取模块101和识别模块102。
[0321]
其中,获取模块101,用于获取bgp路由,所述bgp路由包括自治系统路径属性as_path attribute,所述as_path attribute包含第一自治系统号码as number,所述网络设备所在或所管辖的自治系统对应的as number是第二as number,所述第一as number等于所述第二as number;
[0322]
识别模块102,用于根据所述第一as number以及所述第二as number,确定所述
bgp路由是否为异常的。
[0323]
可选的,所述bgp路由包括第一互联网协议ip前缀,所述识别模块102具体用于:
[0324]
根据所述第一as number是所述as_path attribute中的第一个元素element,以及,所述网络设备没有发布过包含所述第一ip前缀的路由,确定所述bgp路由是异常的。
[0325]
可选的,所述bgp路由包括第一互联网协议ip前缀,所述识别模块102具体用于:
[0326]
根据所述第一as number是所述as_path attribute中的第一个元素element,所述网络设备发布过包含第二ip前缀的路由,以及,所述网络设备没有发布过包含所述第一ip前缀的路由,确定所述bgp路由是异常的,所述第一ip前缀是所述第二ip前缀的子前缀。
[0327]
可选的,所述bgp路由包括第一互联网协议ip前缀,所述识别模块102具体用于:
[0328]
根据所述第一as number是所述as_path attribute中的第一个元素element,所述网络设备向特定as发布过仅限于所述特定as使用的包含所述第一ip前缀的路由,以及,所述as_path attribute中包括第三as number或者不包括所述第二as number,确定所述bgp路由是异常的。
[0329]
可选的,所述识别模块102具体用于:
[0330]
根据所述第一as number不是所述as_path attribute中的第一个元素element,以及,所述网络设备所在或所管辖的自治系统与第四as number对应的自治系统没有建立bgp会话,确定所述bgp路由是异常的,所述第四as number是所述as_path attribute中与所述第一as number相邻的元素。
[0331]
可选的,所述bgp路由包括第一互联网协议ip前缀,所述识别模块102具体用于:
[0332]
根据所述第一as number不是所述as_path attribute中的第一个元素element,所述网络设备所在或所管辖的自治系统与左as建立有bgp会话,所述网络设备所在或所管辖的自治系统与右as建立有bgp会话,以及,所述网络设备没有接收过来自所述右as的包含所述第一ip前缀的路由,或者,所述网络设备没有向所述左as发布过包含所述第一ip前缀的路由,确定所述bgp路由是异常的;
[0333]
所述右as对应的as number以及所述左as对应的as number是与所述as_path attribute中与所述第一as number相邻的两个元素,所述右as对应的as number位于所述第一as number的右侧,所述左as对应的as number位于所述第一as number的左侧。
[0334]
本实施例的bgp路由识别装置,可用于执行如图4所示的方法实施例,其实现原理和技术效果类似,此处不再赘述。
[0335]
图11为本技术另一实施例提供的bgp路由识别装置的结构示意图。本实施例的bgp路由识别装置可设置于作为发送端的自治系统的网络设备中,该网络设备可以是作为发送端的自治系统内部的路由设备,还可以是管辖作为发送端的自治系统的控制器。如图11所示,本实施例的bgp路由识别装置110包括:获取模块111和识别模块112。
[0336]
其中,获取模块111,用于获取bgp路由,所述bgp路由包括自治系统路径属性as_path attribute,所述as_path attribute包含第一自治系统号码as number,所述网络设备所在或所管辖的自治系统的邻居自治系统对应的as number是第二as number,所述第一as number等于所述第二as number;
[0337]
识别模块112,用于根据所述第一as number以及所述第二as number,确定所述bgp路由是否为异常的。
[0338]
可选的,所述bgp路由包括第一互联网协议ip前缀,所述识别模块112具体用于:
[0339]
根据所述第一as number是所述as_path attribute中的第一个元素element,以及,所述邻居自治系统没有发布过包含所述第一ip前缀的路由,确定所述bgp路由是异常的。
[0340]
可选的,所述bgp路由包括第一互联网协议ip前缀,所述识别模块112具体用于:
[0341]
根据所述第一as number是所述as_path attribute中的第一个元素element,所述邻居自治系统发布过包含第二ip前缀的路由,以及,所述邻居自治系统没有发布过包含所述第一ip前缀的路由,确定所述bgp路由是异常的,所述第一ip前缀是所述第二ip前缀的子前缀。
[0342]
可选的,所述识别模块112具体用于:
[0343]
根据所述第一as number不是所述as_path attribute中的第一个元素element,以及,所述邻居自治系统与第三as number对应的自治系统没有建立bgp会话,确定所述bgp路由是异常的,所述第三as number是所述as_path attribute中与所述第一as number相邻的元素。
[0344]
可选的,所述bgp路由包括第一互联网协议ip前缀,所述识别模块112具体用于:
[0345]
根据所述第一as number不是所述as_path attribute中的第一个元素element,所述邻居自治系统与左as建立有bgp会话,所述邻居自治系统与右as建立有bgp会话,所述邻居自治系统接收过来自所述右as的包含第一ip前缀的路由,以及,所述邻居自治系统没有向所述左as发布过包含所述第一ip前缀的路由,确定所述bgp路由是异常的;
[0346]
所述右as对应的as number以及所述左as对应的as number是与所述as_path attribute中与所述第一as number相邻的两个元素,所述右as对应的as number位于所述第一as number的右侧,所述左as对应的as number位于所述第一as number的左侧。
[0347]
本实施例的bgp路由识别装置,可用于执行如图7所示的方法实施例,其实现原理和技术效果类似,此处不再赘述。
[0348]
图12为本技术一实施例提供的网络设备的硬件结构示意图。本实施例的网络设备可以是自治系统内的路由设备,还可以是管辖自治系统的控制器。如图12所示,该网络设备120包括:处理器121以及存储器122;其中,存储器122,用于存储计算机程序;处理器121,用于执行存储器存储的计算机程序,以实现上述实施例中网络设备所执行的方法。具体可以参见前述方法实施例中的相关描述。
[0349]
可选地,存储器122既可以是独立的,也可以跟处理器121集成在一起。
[0350]
当所述存储器122是独立于处理器121之外的器件时,所述网络设备120还可以包括:
[0351]
总线123,用于连接所述存储器122和处理器121。
[0352]
本实施例提供的网络设备,可用于执行上述任一方法实施例所示的网络设备所执行的方法,其实现原理和技术效果类似,本实施例此处不再赘述。
[0353]
本技术实施例还提供一种存储介质,所述存储介质包括计算机程序,所述计算机程序用于实现如上任一方法实施例中网络设备所执行的bgp路由识别方法。
[0354]
本技术实施例还提供一种芯片,包括:存储器、处理器以及计算机程序,所述计算机程序存储在所述存储器中,所述处理器运行所述计算机程序执行上述任一方法实施例中
网络设备所执行的bgp路由识别方法。
[0355]
在本技术所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0356]
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0357]
另外,在本技术各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述模块成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0358]
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本技术各个实施例所述方法的部分步骤。
[0359]
应理解,上述处理器可以是中央处理单元(英文:central processing unit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digital signal processor,简称:dsp)、专用集成电路(英文:application specific integrated circuit,简称:asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合申请所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
[0360]
存储器可能包含高速ram存储器,也可能还包括非易失性存储nvm,例如至少一个磁盘存储器,还可以为u盘、移动硬盘、只读存储器、磁盘或光盘等。
[0361]
总线可以是工业标准体系结构(industry standard architecture,isa)总线、外部设备互连(peripheral component,pci)总线或扩展工业标准体系结构(extended industry standard architecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本技术附图中的总线并不限定仅有一根总线或一种类型的总线。
[0362]
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
[0363]
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(application specific integrated circuits,简称:asic)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。