目录
路由反射器 --- Router Reflector(RR)
IBGP水平分割
即当路由器从一个IBGP对等体处学习到一条路由信息,他将不再把这条路由通告给其他的IBGP对等体。
路由反射器 --- Router Reflector(RR)
可以将一台IBGP设备配置成为路由反射器(RR),被配置为路由反射器的设备在一定条件下将反射学习到的路由信息。
在我们指定一台设备成为反射器的RR的同时,必须指定一个或者多个邻居成为他的客户,RR和客户之间构成的系统我们称为反射簇,每一个簇中RR的RID。其他没有定义为客户端邻居被称为非客户。
反射规则:
1、如果路由反射器从自己客户处学来一条IBGP路由,则他将反射给自己所有的客户和非客户。
2、如果路由反射器从自己非客户处学来一条IBGP路由,则他将反射给自己所有的客户,但是不反射给非客户。
3、当路由器在进行路由反射时,只反射给自己BGP路由中最优的路由。(和BGP路由的传递规则相同)
因为IBGP水平分割主要是为了防止路由环路产生,二路由反射后相当于打破了IBGP水平分割的规则,则将有可能出现路由环路。所以为了避免路由环路从产生,路由反射器在设计的时候,专门引入了两个属性,来避免环路的产生。 --- Originator_ID(起源者ID),Cluster_list(簇列表)
起源者ID,反射这条路由信息始发者的RID。当这条路有经过RR反射之后,反射出来的路由信息中将增加这个属性。如果RR收到一条路由信息中已经存在起源者ID属性,则不去修改这个属性。当一台设备收到一条路由信息后,发现里面的起源者ID是自己本地的RID,则将不去接收这条路由信息,避免路由回传。
如果,一个AS内部存在多次反射的话,那么一定存在多个反射簇,则每个RR在反射路由信息的时候,会在路由信息中的簇列表属性中加入本地的簇ID。
注意:这两个属性,只是用来在IBGP内部进行防环的,所以当这些路由被传递到EBGP对等体时,将不携带这两个属性。
RR在进行路由反射时,除了会在路由信息中添加以上两个属性外,其他属性不变。
RR的配置
[r3-bgp]peer 2.2.2.2 reflect-client //指定R2作为反射器客户,同时R3自己成为RR。
联邦
联邦EBGP关系之间仅继承EBGP之间路由传递的规则,但是不能像EBGP对等体一样修改路由属性,还需要遵守AS-BY-AS规则,但是一种特殊的存在。
联邦EBGP之间防环可以直接采用EBGP水平分割的机制来进行防环,直接在AS_PATH属性中增加成员AS号来进行防环,只不过联邦的AS号会使用括号括起来。来进行区分。这个属性主要是用来进行AS内部防环使用,所以也不会传递给EBGP对等体。
[r2]bgp 64512 //联邦成员启动BGP进程时需要使用小号(联邦成员的AS号)启动
[r2-bgp]router-id 2.2.2.2
[r2-bgp]confederation id 2 //联邦成员进程中一定要声明自己的大号(真实所在的AS号)
[r2-bgp]peer 12.0.0.1 as-number 1
[r2-bgp]peer 3.3.3.3 as-number 64512 //和联邦成员建立IBGP邻居关系时使用的小号
[r2-bgp]peer 3.3.3.3 connect-interface LoopBack 0
[r3]bgp 64512
[r3-bgp]router-id 3.3.3.3
[r3-bgp]confederation id 2
[r3-bgp]peer 2.2.2.2 as-number 64512
[r3-bgp]peer 2.2.2.2 connect-interface LoopBack 0
[r3-bgp]confederation peer-as 64513 //需要建立联邦的EBGP对等体关系时,需要先声明对方的小号
[r3-bgp]peer 4.4.4.4 as-number 64513
[r3-bgp]peer 4.4.4.4 connect-interface LoopBack 0
[r3-bgp]peer 4.4.4.4 ebgp-max-hop 2 //因为联邦EBGP之间是按照EBGP对等体的传输给i则来完成的,所以默认的TTL值为1,并且存在直连检测,所需要通过修改TTL值的方式,让其关闭直连检测。
解决IBGP水平分割的缺陷是一个联邦内部只能存在一对IBGP对等体关系,因为IBGP之间路由只能传递一次,所以实际工程中,往往可以将联邦和路由反射器结合来使用。
BGP的选路原则
BGP选路的前提条件:丢弃所有不可用的路由信息
属性名称 | 传播范围 | 默认值 | 评判标准(大优或小优) |
PV | 不传播 | 0(0-65535) | 越大越优 |
LP | IBGP对等体之间 | 100 | 越大越优 |
AS_PATH | BGP对等体之间 | 记录的数量越少越优 | |
OGN | BGP对等体之间 | 根据起源类型决定 | I>e>? |
MED | BGP对等体之间 | 默认取值为全局路由表中的开销值 | 越小越优 |
1、优选Preferred-value属性值最大的路由
这个属性是华为设备的私有属性,可以理解为权重。
PV属性是本设备上选路优先级最高的属性,这个属性越大越优。该属性是不会进行传递的,只能 在本设备上进行修改,也只能在本设备上生效,传递出去的路由条目中将不携带这个属性,所以对方收到的路由后,这个属性依然会依据默认值进行加表。
所以,这个属性是本设备上干涉选路最方便的属性。
第一种修改方法:
[r4-bgp]peer 3.3.3.3 preferred-value 100 //通过该命令可以修改对应邻居发送的路由信息的PV值。
负载分担:即不同的流量走不同的路线,分担一条单一线路的压力。
第二种修改方法:
(1)前缀列表抓取流量
[r4]ip ip-prefix pv permit 10.0.0.0 24
(2)路由策略修改属性
[r4]route-policy pv permit node 10
Info: New Sequence of this List.
[r4-route-policy]if-match ip-prefix pv
[r4-route-policy]apply preferred-value 100
[r4-route-policy]q
[r4]route-policy pv permit node 20 ---- 添加空表,放通剩余流量
Info: New Sequence of this List.
[r4-route-policy]q
(3)在BGP上调用路由策略
[r4-bgp]peer 3.3.3.3 route-policy pv import ---- 注意,
调用的时候需要选择方向;入方向影响自身,出方向影响他人。
2、优选Local-Preference属性最大的路由
LP:本地优先级属性,默认值为100,越大越优。LP属性可以进行传递,但是只能在IBGP邻居之间传递,传递到EBGP邻居时将不携带该属性,所以这个属性是在IBGP内部选路最常用的属性。
第一种修改方法:
[r3-bgp]default local-preference 200 //将R3发送的路由信息中的LP值修改为200
第二种修改方法:
[r3]ip ip-prefix lp permit 10.0.0.0 24
[r3]route-policy lp permit node 10
Info: New Sequence of this List.
[r3-route-policy]if-match ip-prefix lp
[r3-route-policy]apply local-preference 200
[r3-route-policy]q
[r3]route-policy lp permit node 20
Info: New Sequence of this List.
[r3-bgp]peer 4.4.4.4 route-policy lp export //针对4.4.4.4指向出方向的路由策略
3、优先级
自己始发的大于从别人那学的,自己发布的路由的多种方法的优先级为:手工聚合>自动聚合>network>重发布
4、优选AS_PATH属性最短的路由
AS_PATH选路的基本原则:记录AS号越少越优
(1)我们在聚合路由时开启AS_SET功能后,将不同的AS明细路由的AS号用大括号括起来放入AS_PATHS属性中。但注意,在比较选路时,不管大括号中包含多少个AS号,我们都当作时一个来看待。
(2)联邦时,我们联邦内部也需要使用AS来进行防环,我们用小括号括起来表示。这种情况下,我们在进行AS_PATH长度比较时,将不考虑小括号中的内容。
R1的出方向
[r1]ip ip-prefix as permit 10.0.0.0 24
[r1]route-policy as permit node 10
Info: New Sequence of this List.
[r1-route-policy]apply as-path 11 22 33 ?
INTEGER<1-4294967295> AS number in asplain format
(number<1-4294967295>)
STRING<3-11> AS number in asdot format
(number<1-65535>.number<0-65535>)
additive Append to original As Number --- 指在原有的AS号基础上增加AS号
overwrite Overwrite original As Number --- 处于防环的考虑,建议使用additive
[r1]route-policy as permit node 20 //空表放通所有
Info: New Sequence of this List.
[r1-route-policy]
[r1-bgp]peer 12.0.0.2 route-policy as export //出方向上调用影响AR2
[r2-route-policy]apply as-path 1 1 1 additive
我们随便添加的AS号,可能在真实网络中存在。因为AS_PATH属性还可以进行防环,所以这样写可能导致这几个AS无法接受该路由信息。所以为了避免这种情况发生,我们可以将添加的AS号全改为真实离开的AS号,毕竟选路只跟长度有关,和内容无关。
5、优选 起源码属性最优的
OGN:起源码
1、通过Network发布的路由," I "," I "代表该路由起源于IGP协议(包括静态路由和直连路由)。
2、通过EGP协议发布的路由," e ",指定是BGP协议之前的外部网关协议。(EGP协议,由于目前该协议基本上不用了,所以E标记很少见。)
3、通过除以上两种方式发布的路由,其重发布路由的起源码的标记就是" ? "。
这三种起源码的优先级关系为:I > e > ?
[r1]route-policy ogn permit node 10
Info: New Sequence of this List.
[r1-route-policy]if-match ip-prefix ogn
[r1-route-policy]apply origin ?
egp Remote EGP
igp Local IGP
incomplete Unknown heritage
[r1-route-policy]apply origin incomplete
6、优选MED值最小的路由
MED:多出口鉴别属性。MED属性的初始值,是继承了IGP协议或者是静态路由或者直连路由在路由表中的开销值。
该属性可以影响其他AS的流量如何流入自己AS中?
BGP协议在进行宣告时,可以宣告路由表中任意的路由条目,默认将这些路由的开销值继承到BGP路由的MED属性中。若本地宣告的BGP路由传递给EBGP邻居,将携带MED值,便于EBGP邻居所在的AS内部的设备进行选路。若本地通过IBGP邻居学到的BGP路由,也会传递给自己的EBGP邻居,但是将会将MED值归0传递。因为这些度量并不是本地产生的。
总结:存在EBGP邻居关系的所有设备都建议宣告内部AS的路由。
注意:我们在进行MED值比较时,多条相同的路由信息必须来自同一个AS才可以,即AS_PATH属性中最左边的AS号必须相同,否则没有可比性,将直接跳过这一条的比较。
[r2]route-policy med permit node 10
Info: New Sequence of this List.
[r2-route-policy]if-match ip-prefix med
[r2-route-policy]apply cost 100
[r2-route-policy]q
[r4]ping -r -a 4.4.4.4 1.1.1.1 //记录命令,可以记录数据传递的路径信息
7、优选到达NEXT_HOP的IGP度量值最小的路由
指的是到达下一跳本地路由表中的开销值进行比较,和其他参数无关。
BGP的路由过滤
1、通过路由策略进行过滤
[r1]ip ip-prefix aa permit 192.168.1.0 24
[r1]route-policy aa deny node 10
Info: New Sequence of this List.
[r1-route-policy]if-match ip-prefix aa
[r1-route-policy]q
[r1]route-policy aa permit no 20
Info: New Sequence of this List.
[r1-route-policy]q
[r1]bgp 1
[r1-bgp]peer 12.0.0.2 route-policy aa export
2、通过前缀列表来进行过滤
[r2]ip ip-prefix aa deny 192.168.2.0 24
[r2]ip ip-prefix aa permit 0.0.0.0 0 less-equal 32
[r2]bgp 2
[r2-bgp]peer 12.0.0.1 ip-prefix aa import
3、通过过滤列表进行过滤
[r3]acl 2000
[r3-acl-basic-2000]rule deny source 192.168.3.0 0
[r3-acl-basic-2000]rule permit source any
[r3-acl-basic-2000]q
[r3]bgp 2
[r3-bgp]peer 13.0.0.1 filter-policy 2000 import
BGP的社团属性
社团属性可以类似的理解为路由标记。我们可以给不同的BGP路由当中打入不同社团属性,之后,携带社团属性进行通告,之后,便可以根据路由中的社团属性抓取流量,制定策略。
社团属性本身其实就是个标号,用来区分路由的 --- 由32位二进制构成 --- 两种写法:1,直接十进制表示;2,十六位:十六位 --- 前16位设定为该路由所在AS的AS号,后16位为自定义编号。
注意:一条路由中可以打入多个社团属性
BGP当中,也定义了几个公认的社团属性
1、0X00000000 ---- internet
所有BGP路由默认属于这个名称为“internet”的社团中。如果我们使用路由过滤器匹配社团属性为internet的路由时,将匹配到任意一条BGP路由
2、0XFFFFFF02 --- no - advertise
被打上这个社团属性的路由将不被通告给其对等体
3、0XFFFFFF01 --- no - export
被打上这个社团属性的路由间无法通告给自己的EBGP邻居(不包括联邦的EBGP邻居)
4、0XFFFFFF03 --- no - export - subconfed
被打上这个社团属性的路由间无法通告给自己的EBGP邻居,包括联邦的EBGP邻居
(以该图环境进行社团的基础配置)
[r1]route-policy aa permit node 10
Info: New Sequence of this List.
[r1-route-policy]apply community ?
INTEGER<0-4294967295> Specify community number
STRING<3-11> Specify aa<0-65535>:nn<0-65535>
internet Internet(well-known community attributes)
no-advertise Do not advertise to any peer (well-known community attributes)
no-export Do not export to externa peers(well-known community attributes)
no-export-subconfed Do not send outside a sub-confederation(well-known community attributes)
none No community attribute
[r1-route-policy]apply community no-advertise //在路由信息中添加社团属性
[r1-bgp]peer 12.0.0.2 advertise-community //各大厂商默认传递BGP路由信息时不同高社团属性,所以必须通过此命令让社团属性正常通告。
通过社团属性过滤器抓取流量
[r1-bgp]network 172.16.1.0 24 route-policy com1 //发布流量时更改属性
[r1-bgp]network 172.16.3.0 24 route-policy com2
[r1]ip community-filter 1 permit 1:11 //通过community-filter来抓取流量
[r1]ip community-filter 2 permit 1:22
[r1]route-policy bb deny node 10
Info: New Sequence of this List.
[r1-route-policy]if-match community-filter 1
[r1-route-policy]q
[r1]route-policy bb permit node 20
Info: New Sequence of this List.
[r1-route-policy]if-match community-filter 2
[r1-route-policy]apply community ?
INTEGER<0-4294967295> Specify community number
STRING<3-11> Specify aa<0-65535>:nn<0-65535>
internet Internet(well-known community attributes)
no-advertise Do not advertise to any peer (well-known community attributes)
no-export Do not export to external peers(well-known community attributes)
no-export-subconfed Do not send outside a sub-confederation(well-known community attributes)
none No community attribute
[r1-route-policy]apply community no-export additive //添加多个社团属性需要后面加参数 --- additive
[r1]route-policy bb permit node 30 //空表放通所有
[r1]bgp 1
[r1-bgp]peer 12.0.0.2 route-policy bb export //调用