向IGP中注入BGP路由:
一般不建议将BGP的路由重分布进IGP,因为路由条目很大,很容易造成IGP的瘫痪。
默认情况下只能将EBGP的路由重分布进IGP。默认不让IBGP的路由重分布进BGP是为了防止环路。如果非要将IBGP的路由重分布进IGP。需要在进程内使用以下命令:
router bgp 123
bgp redistribute-internal
将BGP路由注入OSPF或EIGRP时,会将AS-PATH中最前面一个AS号作为TAG值重分布过去。
再把OSPF重分布进BGP时,可用以下方法将TAG还原为AS-PATH route-map WOLF set as-path tag
router bgp 123
redi ospf 110 match in ex 1 ex 2 route-map WOLF
<向BGP注入默认路由>
方法一:
ip route 0.0.0.0 0.0.0.0 null 0 router bgp 12 network 0.0.0.0
方法二:
ip route 0.0.0.0 0.0.0.0 null 0 router bgp 12
redistribute static
default-information originate
方法三:
router bgp 12 neighbor x.x.x.x default-originate
router bgp 12
neighbor x.x.x.x default-originate route-map xx //加入条件路由
注意:在使用条件路由时,必须用prefix来匹配路由才行,ACL不行
--------------------------------------------------------------------
-----------------------
-------------------------------------------------------------------------------------------
<Reflector>路由反射器
·路由反射器就是一台路由器,可以将它的IBGP邻居指定为自已的客户端。
·路由反射器打破了IBGP的水平分割规则,它的传递规则如下:
1、从EBGP学到的一条路由,会传给client和非client端
2、从client端学到的路由,会传给其它client和非client端
3、从非客户端收到路由,会转发给客户端以及EBGP邻居,但不会转发给非客户端。
配置路由反射器--- R2:
router bgp 123
neighbor 1.1.1.1 route-reflector-client //将R2配置为路由反射器,R1为客户端
当RR的客户full mesh时,可以用 no bgp client-to-client reflection
禁止客户到客户的路由反射。可以减少路由更新。
路由反射器中的两个防环机制:
路由反射器会为自已反射出去的IBGP路由加上两个参数,一个是originator-id、一个是cluster-id,都是用于防环
originator-id:
路由反射器在反射一条IBGP路由时,会将起源路由器的router-id作为originator-id放进路由中。
originator-id用来防止一个路由器去学习自已发出的一条路由
? ?
?
?
在IBGP环境中,当RR在接收到一条路由时,首先检查这条路由的originator是否与本路由器的router-id一样,如果一样将不接收。
当RR接收了此路由,并且是最优的,而且这条路由是由客户传过来的,那么在转发时,RR将检查这条路由的originator,如果跟RR的某一个IBGP邻居的router-id一样,这时将不会发送这条路由给这个邻居;
如果这条路由是从非客户传过来的,RR就不会检查这条路由的originator,假如这时RR有一个IBGP邻居的router-id与这条路由的origintor一样,RR也会将这条路由发给这个邻居。这个邻居接收到这条路由,检查这条路由的originator是否与自己的router-id一样,如果一样将不接收。
简言之:所有路由器在接收路由时,检查originator。如果这是客户发来的路由,RR在转发时检查originator。否则由邻居自己检查。
cluster-id:
·路由反射器和其客户的集合被称为集群(cluster),每一个集群都有一个cluster-id,默认情况下路由反射器的router-id会被用做cluster-id,也可以手工指定。路由反射器所传递的路由都会带上这个cluster-id。如果一条路由经过了多个RR,那么将带上多个cluster-id。
·可以通过命令bgp cluster-id 1.1.1.1来修改cluster-id,cluster-id为32位的值,可以写成点分十进制,也可以写成十进制数 ·当RR接收到一条从IBGP邻居传过来的路由,看到这条路由的cluster-list里包含自己的cluster-id,将不接收这条路由。所以,cluster-id是用于集群之间的防环。
<Confederation> 联邦
·将大AS划分成若干个小AS,小AS之间是EBGP关系
·1、联邦中的所有路由器都必须用起小AS号。(Route bgp 小AS) router bgp 64512
·2、联邦中的所有路由器都必须声明大AS号 router bgp 64512
bgp confederation identifier 123
·3、连接小AS的边界路由器要互相指peers: router bgp 64512
bgp confederation peers 64513
(对端小AS号)
注意:两个小AS之间也要解决多跳问题,大AS的边界路由器必须向内做next-hop-self。
·联邦外路由器和联邦的边界路由器建立邻居关系时,neighbor大AS号。 ·联邦中的小AS号(64512)不算作AS-Path属性比较,只算作一个
·在sh ip bgp中,小AS号会用括号括住,并且不算做一个进行路径比较的AS号
BGP选路策略--
属性分类
1、公认强制的--所有的BGP的updata消息都要包含该属性
2、公认自由决定的--该属性是可选可不选的,但是所有的BGP进程都能识别 3、可选传递的--即使BGP进程不能识别该属性,也会继续传递下去
4、可选非传递的--如果BGP进程不能识别该属性,可以忽略这条updata,并且不传递下去
例如:
1、公认强制属性
--AS路径(AS-path) --下一跳(next-hop) --源头(origin)
2、公认自由决定的
--本地优先级(local preferent)
3、可选传递的
--社团属性(community)
4、可选非传递属性 --MED
weight(权重)--cisco私有技术,只具有本地意义,用于本地路由器进行选路
一条路由信息包含了一组属性,每一个属性由三个字段组成。 ·属性类型 ·属性长度 ·属性值
以下为BGP选路原则:
CISCO所定义的选路原则标准是11条,这里加了两条(中文的两条),共13条。
所加的两条算不上标准的选路原则,只是做一个补充而已。
? ? ? ? ? ? ? ? ? ? ? ? ?
Prefer highest weight (local to router). Prefer highest local preference (global within AS).
Prefer route originated by the local router (next hop = 0.0.0.0). Prefer shortest AS path.
Prefer lowest origin code (IGP < EGP < incomplete).
Prefer lowest MED (exchanged between autonomous systems).
Prefer EBGP path over IBGP path. Prefer the path through the closest IGP neighbor.
如果配置了maximum-path[ibgp]n,如果存在多条等价的路径,会插入多条路径。
Prefer oldest route for EBGP paths. Prefer the path with the lowest neighbor BGP router ID.
多跳路径的始发路由器ID相同,那么选择CLUSTER_LIST长度短的
Prefer the path with the lowest neighbor IP address.