bgp路由控制
在这篇文章中,我们将探讨bgp路由控制,并分享一些有用的技巧和经验,希望对您有所启发。
本文目录一览:
- 1、BGP是什么路由
- 2、BGP的路由优选规则和负载分担
- 3、BGP路由过滤
BGP是什么路由
满意答案流星划过夜空。ゞ9级2009-04-14BGP(Border Gateway Protocol)是一种自治系统间的动态路由发现协议,它的基本功能是在自治系统间自动交换无环路的路由信息,通过交换带有自治系统号(AS)序列属性的路径可达信息,来构造自治区域的拓扑图,从而消除路由环路并实施用户配置的路由策略。与OSPF 和RIP 等在自治区域内部运行的协议对应,BGP 是一类EGP(Exterior Gateway Protocol)协议,而OSPF 和RIP 等为IGP(Interior Gateway Protocol)协议。BGP 协议经常用于ISP 之间。BGP 协议从1989 年以来就已经开始使用。它最早发布的三个版本分别是RFC1105(BGP-1)、RFC1163(BGP-2)和RFC1267(BGP-3),当前使用的是RFC1771(BGP- 4)。 随着INTERNET 的飞速发展,路由表的体积也迅速增加,自治区域间路由信息的交换量越来越大,影响了网络的性能。BGP 支持无类别域间选路CIDR(Classless Interdomain Routing),可以有效的减少日益增大的路由表。BGP-4 正迅速成为事实上的Internet 边界路由协议标准。特性描述如下:BGP 是一种外部路由协议,与OSPF、RIP 等的内部路由协议不同,其着眼点不在于发现和计算路由,而在于控制路由的传播和选择最好的路由。通过携带AS 路径信息,可以彻底解决路由循环问题。为控制路由的传播和路由选择,它为路由附带属性信息。是一种在自治系统之间动态交换路由信息的路由协议。BGP是为取代最初的外部网关协议EGP设计的。它也被认为是一个路径矢量协议。
BGP的路由优选规则和负载分担
1.Preferred-Value数值
Preference_Value是BGP的私有属性(华为私有属性),Preference_Value相当于BGP选路规则中Weight值,仅在本地路由器生效。Preference_Value值越大,越优先,默认缺省值为0 只能改变自己的入向选路。
默认情况下,会选择Router id小的作为自己的最优下一跳
step1:在R1上使用ip-prefix或者acl筛选出路由条目
step2:使用路由策略(由于首选值只在本地路由器生效,所以只能应用在本设备的入方向)
step3:在R1的BGP进程中调用路由策略
step4:验证现象(R1到达4.4.4.4/32的下一跳指向R3,首选值被修改成100)
小结:Pre-Value最大,Preference_Value值越大,越优先,默认缺省值为0,且只在本地路由器有效。
2. Local_Preference
Local_Pref属性仅在IBGP邻居之间有效,不通告给其他AS。它表明路由器的BGP优先级,用于判断流量离开AS时的最佳路由。一般用来控制本区域流量怎么出去,默认情况下Local-Pref值为100 该数值越大 优先级越高
默认情况下,会选择Router id小的作为自己的最优下一跳(即R2)
step1:在R1上使用ip-prefix后者acl筛选出路由条目
step2:使用路由策略
step3:在BGP进程中调用路由策略
1:R1中BGP进程里指向R3的入方向上(改大)
2:R3中BGP进程里指向R1的出方向上(改大)
3:R3中BGP进程里指向R4的入方向上 (改大)
4:R1中BGP进程里指向R2的入方向上 (改小)
5:R2中BGP进程里指向R1的出方向上 (改小)
6:R2中BGP进程里指向R4的入方向上 (改小)
不能调用在R4的export方向上面(因为Local-preference只能在本AS内进行传递的)
step:验证现象
3.路由生成方式
AggregateSummaryNetworkimport从邻居学习的路由
BGP在IPv4网络中支持自动聚合和手动聚合两种方式,而IPv6网络中仅支持手动聚合方式:
1:自动聚合:对BGP引入的路由进行聚合。配置自动聚合后,BGP将按照自然网段聚合路由(例如非自然网段A类地址10.1.1.1/24和10.2.1.1/24将聚合为自然网段A类地址10.0.0.0/8),并且BGP向对等体只发送聚合后的路由。
2:手动聚合:对BGP本地路由表中存在的路由进行聚合。手动聚合可以控制聚合路由的属性,以及决定是否发布具体路由。
为了避免路由聚合可能引起的路由环路,BGP设计了AS_Set属性。AS_Set属性是一种无序的AS_Path属性,标明聚合路由所经过的AS号。当聚合路由重新进入AS_Set属性中列出的任何一个AS时,BGP将会检测到自己的AS号在聚合路由的AS_Set属性中,于是会丢弃该聚合路由,从而避免了路由环路的形成。
自动聚合summary
step1:在R4上使用ip-prefix或者acl筛选出目标路由,使用Route policy调用。
step2:在BGP进程中将路由引入,并配置自动聚合命令
step3:在R4上查看BGP路由表,发现明细路由被抑制
step4:在R1上查看BGP路由表,发现路由被聚合成自然网段。
手动聚合
step1:在R4的BGP进程里宣告4.4.4.4/24的路由,并配置手工聚合,并抑制明细路由
step2:在R4上查看BGP路由表,明细路由通过detail-suppressed被抑制。
step3:在R1上查看BGP路由表,发现只收到R1的聚合路由。
手工聚合
1:as-set信息在避免路由环路时很重要,因为它记录了被聚合路由所经过的AS
2:attribute-policy 设置聚合路由的属性
3:detail-suppressed参数是把明细给抑制,如果不加的话,会把明细路由和聚合路由都传过去
4:origin-policy仅选择符合route-policy的具体路由来生成聚合路由(只要有这条路由信息,我才能产生聚合路由)
5:suppress-policy能产生聚合路由,但抑制指定路由的通告,可以使用route-policy和if-match子句有选择的抑制一些具体路由,其他具体路由仍被通告(抑制聚合中的某些路由)
路由聚合产生的问题
如果路由聚合后携带所有明细路由经过的AS信息,当明细路由发生频繁震荡时,聚合路由也可能受其影响频繁刷新。因此,聚合路由是否携带丢失的AS_Path信息,需要设计者综合考虑网络环境
4:AIGP
BGP优选AIGP较小的路由。AIGP属性是一种新的BGP路由属性,用于传递并累加IGP Cost值,该属性为可选非过渡属性。在一个AIGP域内部署AIGP属性,可以使BGP像IGP那样基于路由的Cost值优选出最优路由,从而保证一个AIGP域内的设备都按照最优路径进行数据转发。AIGP的比较遵循如下规则:
1:有AIGP属性的路由优先级高于没有AIGP属性的路由。
2:如果路由都存在AIGP属性,则比较AIGP属性与其下一跳的IGP Cost之和,优选该值较小的。
AIGP属性只能通过路由策略添加。在BGP引入、接收或发送路由时,可以人为通过路由策略里的 apply aigp { cost | inherit-cost }命令设置AIGP属性值的大小。其中,在BGP引入IGP路由时,若不进行设置,BGP路由没有AIGP属性值。
bgp 200(R4)
#
ipv4-family unicast
peer 14.1.1.2 aigp //使能与对等体之间的AIGP能力
peer 15.1.1.2 aigp //使能与对等体之间的AIGP能力
peer 14.1.1.2 route-policy 1 export
peer 15.1.1.2 route-policy 1 export
#
route-policy 1 permit node 10 //定义路由策略的第一个节点,设置路由4.4.4.4/32的AIGP为10
if-match ip-prefix prefix1
apply aigp 10
#
route-policy 1 permit node 20 //定义路由策略的第二个节点,不设置匹配条件,允许其他路由通过路由策略
if-match ip-prefix prefix1
apply aigp 5
#
ip ip-prefix prefix1 index 10 permit 4.4.4.4 32 //定义地址前缀列表prefix1,匹配路由
R2:
ipv4-family unicast
peer 14.1.1.1 aigp //使能与对等体之间的AIGP能力
R3:
ipv4-family unicast
peer 15.1.1.2 aigp //使能与对等体之间的AIGP能力
5.AS_Path
AS_Path属性有四种形式,分别是:AS_Sequence、AS_Set、AS_Confed_Sequence和AS_Confed_Set。
AS_Sequence:它是到目的地的路径上所经过的AS号的有序集合,按照顺序记录了路由经过的所有AS。
AS_Set:它是到目的地的路径上所经过的AS号的无序集合。AS_Set通常用在路由聚合的场景。
AS_Confed_Sequence:是联盟内子AS的一个有序集合。
AS_Confed_Set:是联盟内子AS的一个无序集合,主要用在联盟内路由聚合的场景。
AS号追加
route-policy 1 permit node 10 //定义路由策略add_asn的第一个节点
if-match ip-prefix prefix1 //匹配IP地址前缀列表prefix1
apply as-path 65003 65003 65003 additive
AS号替换
配置 apply as-path 命令时,如果选择 overwrite 参数,则可以对AS_Path中的编号进行替换。AS编号替换的应用比较灵活,主要有以下几种情况:
隐藏路由的真实路径信息。
如果配置了 as-path-limit 命令,接收路由时会检查AS_Path属性中的AS号是否超限,如果超限则丢弃路由。这样对于AS_Path较长的路由,在接收之前,可以把AS_Path替换成较短的AS_Path,防止路由由于AS号超限而被丢弃。
缩短AS_Path长度,使路由被优选。
AS号替换还可以用于形成负载分担
6.Origin
Origin属性主要有三种:
IGP:具有最高的优先级。路由是用 network 命令注入到BGP路由表中的,则Origin属性为IGP。
EGP:优先级次之。通过EGP得到的路由信息,其Origin属性为EGP。
Incomplete:优先级最低。路由是用 import-route 命令注入到BGP路由表中的,则Origin属性为Incomplete。
3种Origin属性的优先级为:ieIncomplete(?)
7.MED(越小越优,默认为0)
特点:仅在AS内部或者相邻两个AS之间传递,收到此属性的AS一方不会再将其通告给任何其他第三方AS
MED属性相当于IGP使用的度量值(Metrics),它用于判断流量进入AS时的最佳路由(用于比较来自相同AS的路由)
修改方法:
注意要点:
执行 compare-different-as-med 命令后,BGP将强制比较来自不同AS的路由的MED值。除非能够确认不同的AS采用了同样的IGP和路由选择方式,否则不要使用 compare-different-as-med 命令(可能产生环路)。
执行 bestroute med-none-as-maximum 命令后,BGP选路时将该路由的MED值按最大值4294967295来处理,选路结束后,MED值恢复为原始值。
执行 bestroute med-confederation 命令后,只有当AS_Path中不包含外部AS号(不属于联盟的子AS),且AS_CONFED_SEQUENCE的第一个AS号相同时,才能比较MED值的大小。
执行 deterministic-med 命令后,将消除路由接收顺序对选路结果的影响。
step1:在R4上使用ip-prefix或者acl命令匹配路由
step2:使用Route policy匹配ip-prefix或者acl,apply cost
step3:在R1上验证
8.邻居类型(EBGP优于IBGP路由)
在运营商网络存在多个出口设备从Internet获取路由的场景,出口设备会经常比较邻居类型。
所有设备处于同一个AS。SwitchA和SwitchB做为运营商网络的出口设备,之间建立IBGP邻居关系,并且和其他的设备也都建立IBGP邻居关系。做为运营商网络的出口设备,SwitchA和SwitchB同时从Internet获取路由,然后将EBGP路由向自己的所有IBGP邻居发布。在这种情况下,SwitchA和SwitchB上分别有一条IBGP路由和EBGP路由,并且二者的AS_Path属性相同。通过邻居类型的比较,SwitchA和SwitchB都选择EBGP路由做为最优路由。
9.IGP的开销值
默认情况下:R1会优先选择R2作为到达4.4.4.4/32的下一跳(router id小)
在R1的G0/0/0接口下使用命令ospf cost 10,使IGP的开销值大于默认开销值1.
验证如下:
10.Cluster_list
step2:RR收到客户机Client 1的update报文后,RR第一次反射该路由时,会把cluster-ID添加到Cluster_List,如果RR没有cluster_ID属性,则自己创建一个再添加。同时也会把Originator_ID添加进去,标识此条路由的发起设备(Router ID值)
11. Router ID (越小越优)
Router ID在自治系统AS中可以标识一台路由器:
如果路由携带Originator_ID属性,选路过程中将比较Originator_ID的大小(不再比较Router ID),并优选Originator_ID最小的路由。缺省情况下,BGP在选择最优路由时在Cluster-List之后比较Originator-ID。配置 bestroute routerid-prior-clusterlist 命令后,BGP在选择最优路由时在Cluster-List之前比较Originator-ID。
12:对等体地址
多链路场景EBGP之间一般用loopback0接口作为更新源地址,也可以使用不同的接口地址作为更新源
负载分担:
配置BGP负载分担后,满足如下所有条件的多条BGP路由会成为等价路由,进行负载分担:
1:首选值(PrefVal)相同。
2:本地优先级(Local_Pref)相同。
3:都是聚合路由,或者都不是聚合路由。
4:AIGP值相同。
5:AS_Path属性完全相同。
6:Origin类型(IGP、EGP、Incomplete)相同。
7:MED(Multi_Exit Discriminator)值相同。
8:都是EBGP路由或都是IBGP路由。配置 maximum load-balancing eibgp 命令后,BGP在选择最优VPN路由时忽略该条比较。
AS内部IGP的Metric相同。配置 maximum load-balancing eibgp 命令后,BGP在选择最优VPN路由时忽略该条比较。
此外,需要特别指出的是,携带标签的BGP路由与不携带标签的BGP路由即使满足上述条件,也不能形成负载分担。
step1:在R4的BGP进程中network一条路由之后,R1的路由表中存在两条到达4.4.4.4/32的BGP路由,但是只会优选下一跳为R2作为自己的下一跳,因为router id小,此时查看路由表如下所示:
step2:在R1的BGP进程中使用maximum load-balancing ibgp 2命令(ebgp也可以)实现负载分担。
BGP路由过滤
BGP路由是构成之Internet路由表的核心,目前规模已经达到十几万条。在实际应用中并不是所有的业务路由器都会需要全部的Internet路由,而且在AS之间,也仅需要接收或发布部分路由。所以我们在很多时候需要对BGP路由进行过滤来控制路由的发送和接收。
1 BGP路由过滤的手段
我们知道路由过滤主要是以对路由所携带的信息作为匹配条件做过滤,BGP的属性众多,相较于其他路由所携带的路由信息就很多,所以对于BGP的路由过滤也要灵活的多。
1.1 ACL/IP 前缀列表
ACL:用户在定义ACL时可以指定IP地址和子网范围,用于匹配路由信息的目的网段地址或下一跳地址。
IP Prefix:IP Prefix的作用类似于ACL,但比它更为灵活,且更易于用户理解。使用IP Prefix过滤路由信息时,其匹配对象为前缀和掩码。
ACL、IP前缀列表主要是对BGP路由的前缀做过滤,可以实现对不同前缀地址做不同的过滤。
1.2 AS 路径过滤列表
AS路径过滤列表仅用于BGP。BGP的路由信息中,包含有自治系统路径域。as-path就是针对自治系统路径域指定匹配条件。
BGP可以直接使用AS路径过滤列表对路由做过滤,它可以以BGP路由的AS-PATH属性作为过滤条件,可以实现对来自不同AS的路由做过滤。
当想拒绝某一个AS始发的所有路由,用AS路径过滤列表显然要简单的多。
1.3 Route Policy
路由策略相较于前两种方法,提供了更丰富的手段。既可以使用ACL、IP前缀列表和AS路径列表对BGP路由做过滤,还可以使用其他匹配条件,比如:
团体属性列表(community-list):BGP的路由信息包中,包含一个community属性域,用来标识一个团体。community-list就是针对团体属性域指定匹配条件。
扩展团体属性列表(extcommunity-list):可用于VPN的Route-Target(路由目标)扩展extcommunity-list就是针对扩展团体属性指定匹配条件。
综上看,BGP路由常用来被过滤的条件主要是路由前缀、AS-PATH属性、Community属性,当然还有一些其他匹配条件(MED、next-hop、route-type、route-source、interface、tag)也可以被用来做过滤。
2 BGP路由过滤的实施点
BGP路由过滤的策略可以在本地对从对等体接收路由入方向、本地发布路由以及对对等体发送路由出方向处实施。
2.1 接收路由(Import Policy)
在收到BGP对等体的路由时,我们可以执行路由策略,过滤我们不需要的BGP路由。
路由策略的执行在BGP往路由表添加路由之前,所以路由一旦被过滤掉,这些路由不添加到在执行策略的设备的路由表中,在本地不负责转发。
路由策略可以对所有接收的路由作过滤,也可以只对特定的BGP对等体或对等体组作过滤。
2.2 本地发布路由
对于本地发布的路由,主要是指通过network、import方式本地发布的BGP路由,我们可以执行路由策略,过滤我们不需要发布的BGP路由。
路由策略的执行在BGP往路由表添加路由之前,这些路由可以有选择的发布给所有BGP对等体。
2.3 发送路由(Export Policy)
在给BGP对等体发送路由的时候,我们也可以执行路由策略,过滤我们不想发布的BGP路由。
路由策略的执行在BGP往路由表添加路由之后,所以本地路由表中匹配deny策略的路由依然生效,在本地可以转发,只不过不向配置策略的对等体发送该BGP路由,让对等体无法从自己学习使用该路由。
路由策略可以对所有对等体做过滤,也可以只对特定的BGP对等体或对等体组作过滤。
通过本文中提供的方法和技巧,您可以轻松地优化和保护您的无线网络,以获得更好的连接和安全性。