文章目录
- BGP的属性
- BGP属性分类(四类):
- BGP选路规则
- 1.Origin 起源属性,表示BGP路由来源。
- 2.as-path 路径属性,该属性表示路由经过的AS路径
- 3. next-hop 下一跳属性,该属性表示路由的下一跳
- 4. local-preference 本地优先级,这个属性用于选路,优选本地优先级大的路由
- 5. MED 用于选路的属性,但是和local-preference不一样的是该属性更像是开销值,用于影响对方
- 6、BGP 团体属性--Community
- 7、Preference_Value对选路的影响(自己有多个接口,可以选择走其中的一个)
- 8、聚合方式对选路的影响
- 9、EBGP邻居的路由优于IBGP邻居的路由
- 10、AS内部IGP Metric对BGP选路的影响
- 11、Router-ID与IP地址对BGP选路的影响
- 12、Originator_ID属性、Cluster_List属性(用于路由反射器的防环)
- 13、BGP路由聚合
BGP的属性
BGP属性分类(四类):
公认必遵(Well-known mandatory)公认强制
所有BGP路由器都可以识别,且必须存在于Update消息中。如果缺少这种属性,路由信息就会出错。
origin
as_path
next hop
公认任意(Well-known discretionary)公认非强制
所有BGP路由器都可以识别,但不要求必须存在于Update消息中,可以根据具体情况来决定是否添加到Update消息中。
Local-Preference
Atomic-Aggregate(as-set)原子聚合//标识汇总路由
MP Reach NLRI
可选过渡(Optional transitive)
BGP的路由器可以选择是否在Update消息中携带这种路由属性。接收的路由器如果不识别这种属性,可以转发个邻居路由器,邻居路由器可能会识别并使用到这种属性。
Aggreagator//聚合者,标识聚合路由的来源AS和聚合者。通告汇总设备的Router-ID。
Community
Extended-Communities
可选非过渡(Optional non-transitive)
BGP路由器可以选择是否在Update消息中携带这种属性。在整个路由发布的路径上,如果部分路由器不能识别该属性,可能会导致该属性无法发挥效用。因此接收的路由器如果不识别这种属性,将丢弃这种属性,不必在转发给邻居路由器。
MED(cost)
Originator-ID//标识路由的来源设备
Cluster-List//防止路由的反射回路
BGP选路规则
当到达同一目的地存在多条路由时,BGP依照如下策略顺序进行路由选择:
- 如果此路由的下一跳不可达,忽略此路由。
- 优选协议首选值(PrefVal)最高的路由。
- 优选本地优先级(Local_Pref)最高的路由。
- 优选本地生成的路由。
- 优选AS路径最短的路由。
- 比较Origin属性,依稀选Origin类型为IGP、EGP、Incomplete的路由。
- 优选MED值最小的路由。
- 优选从EBGP邻居学来的路由(EBGP路由优先级高于IBGP路由)
- 优选到下一跳IGP Metric较小的路由。
- 优选Cluster_List最短的路由。
- 优选Router ID最小的路由器发布的路由。
- 比较对等体的IP address,优选从具有较小IP地址的对等体学来的路由。
1.Origin 起源属性,表示BGP路由来源。
- i 表示在bgp宣告的路由,network(可以把路由表任何路由宣告进bgp)
- ?表示从外部重发布进来的路由,import可以把路由表路由重发布进bgp
- E 表示从EGP重发布进来,但是EGP淘汰了
起源还有选路的功效,i>e>?
2.as-path 路径属性,该属性表示路由经过的AS路径
有三种用途:
- 查看路由经过的AS路径的顺序(左边为最近经过的AS号)
- 防环,bgp不接收携带有自己AS号的路由用来防止AS之间路由环路
- 选路,bgp会选择AS-path短的路由为最优路由
as-overridee命令可以把路由中对方邻居的AS号改为自己的AS号,从而让对方接受含有对方AS号
的路由
allowas-in 命令可以把对方路由中含有自己AS号的路由过滤掉,从而接受对方含有自己AS号的
路由
fake-as 命令可以修改自己通告出去的AS号
有一个用法:去往目的地两条路径
3. next-hop 下一跳属性,该属性表示路由的下一跳
-
ebgp邻居在传递路由时会修改该属性为自己的更新源地址
-
ibgp邻居在传递路由时不会修改该属性,但是可以使用next-hop-local来修改该属性为自己的
更新源地址 -
本地路由下一跳是127.0.0.1
4. local-preference 本地优先级,这个属性用于选路,优选本地优先级大的路由
用法:用于本地AS去往其他AS的出口路由器的选择,特别强调该属性是本AS的路由器去影响本AS内的IBGP路由器,该属性侧重影响内部AS的选路
案列:
正常建立bgp邻居之后,宣告完路由,查看R2和R3的bgp路由表
现在写策略,在R3的入接口抓取R4的路由,修改local-preference为200(缺省为100,大的优),使得AS100内部去往4.4.4.4/24都走R3
#
ip ip-prefix 10 index 10 permit 4.4.4.0 24
#
#
route-policy Local_pre permit node 10
if-match ip-prefix 10
apply local-preference 200
#
route-policy Local_pre permit node 20
#
bgp100
peer 34.1.1.2 route-policy Local_pre import
修改之后,查看R2和R3的bgp路由表
可以发现,去4.4.4.4/24的Local preference值已经变为200,选路也走R3
在R2上测试一下:
注意该属性在EBGP之间不能传递所以不能在RTD上使用上述route-policy调用在EBGP邻居的export方向。 但是在RTC上可以用于IBGP的export方向。
联盟之间可以用该属性
5. MED 用于选路的属性,但是和local-preference不一样的是该属性更像是开销值,用于影响对方
AS到本地AS的选路。该属性适合对EBGP邻居施加选路影响(local-preference做不到)。
修改前:
R2上配置:
#
ip ip-prefix 10 index 10 permit 1.1.1.0 24
#
route-policy MED permit node 10
if-match ip-prefix 10
apply cost 10
#
route-policy MED permit node 20
#
bgp100
peer 24.1.1.2 route-policy MED export
#
修改后:可以看到med生效
*注意,该属性默认只能用于俩个AS之间的选路,也就是说如下图默认MED不适用
AS2和AS3之间MED不会影响到
如果要让上述MED生效需要如下命令:
[R4-bgp] compare-different-as-med
如果不敲以上命令,那么用AS-PATH属性完成选路。
ip ip-prefix 10 index 10 permit 10.1.1.0 24
ip ip-prefix 20 index 10 permit 20.1.1.0 24
route-policy local-p permit node 10
if-match ip-prefix 10
apply local-preference 90
#
route-policy local-p permit node 20
#
route-policy as-path permit node 10
if-match ip-prefix 20 apply as-path 400 additive
#
route-policy as-path permit node 20
bgp 400
peer 10.1.35.2 route-policy local-p import
peer 10.1.35.2 route-policy as-path export
6、BGP 团体属性–Community
BGP的Community属性的两个作用:
- 限定路由的传播范围
- 打标记,便于对符合相同条件的路由进行统一处理
Community属性分为两类∶一类是公认团体属性,另一类是扩展的团体属性。
公认团体属性分为4类∶
- Internet∶缺省属性,所有路由都属于Internet,此属性的路由可以通告给所有BGP 邻居;
- No.Export∶收到此属性的路由后,不将该路由发布到其他AS。如下图,RTB上希望 10.1.11.0/24的路由发布给AS12之后,不再发布给其他AS,则可将10.111.0/24的 Community属性设置为No_Export;
- No_Advertise∶收到此属性的路由后,不将该路由通告给任何其他的BGP邻居。如图,RTB上希望只将10.1.11.0/24的路由发布给RTC,并且不再通告给任何其他的BGP邻居,则可将10.1.11.0/24的Community属性设置为No_Advertise;。
- No_Export_Subconfed∶在联盟中使用,这里不做介绍。
扩展的团体属性用一组4字节为单位的列表来表示,路由器中扩展的团体属性格式为aa:nn或团体号;
aa∶nn中,a通常为AS编号,nn是管理员定义的团体属性标识;
团体号范围为0-4294967295,在RFC1997中,0-65535与4294901760-4294967295为
预留值,
如图所示,AS10内有10.1.10.0/24的用户网段,AS 11内有101.11.0/24的用户网段。为了区分用户网段,AS 10内的10.1.10.0/24设置了10∶12的Community,AS 11的 10.1.11.0/24设置了11∶12的Community,通过BGP发送给AS 12后,AS 12希望汇总后屏蔽掉明细路由再发送给AS 13,并且希望AS13收到路由后不再传递给其他AS,如何实现?
解决方法∶
在RTC上设置Community-filter,匹配Community为10∶12和11∶12的路由,再设置 route-policy匹配Community-filter,将两条路由聚合成10.1.10.0/23的路由并调用 route-policy。
在RTC上设置route-policy,设置团体属性为no-export,在RTC通告给RTD的 export方向调用该route-policy。
配置如下:
RTA
#
sysname RTA
#
interface Ethernet0/0/0
ip address 12.1.1.1 255.255.255.0
#
interface LoopBack0
ip address 10.1.10.1 255.255.255.0
#
bgp 10
router-id 1.1.1.1
peer 12.1.1.2 as-number 12
#
ipv4-family unicast
undo synchronization
network 10.1.10.0 255.255.255.0 route-policy community
peer 12.1.1.2 enable
peer 12.1.1.2 advertise-community
#
route-policy community permit node 10
apply community 10:12
#
route-policy community permit node 20
#
RTB
#
sysname RTB
#
interface Ethernet0/0/0
ip address 23.1.1.1 255.255.255.0
#
interface LoopBack0
ip address 10.1.11.1 255.255.255.0
#
bgp 11
router-id 2.2.2.2
peer 23.1.1.2 as-number 12
#
ipv4-family unicast
undo synchronization
network 10.1.11.0 255.255.255.0 route-policy community
peer 23.1.1.2 enable
peer 23.1.1.2 advertise-community
#
route-policy community permit node 10
apply community 11:12
#
route-policy community permit node 20
#
RTC
#
sysname RTC
#
interface Ethernet0/0/0
ip address 12.1.1.2 255.255.255.0
#
interface Ethernet0/0/1
ip address 23.1.1.2 255.255.255.0
#
interface GigabitEthernet0/0/0
ip address 34.1.1.1 255.255.255.0
#
bgp 12
router-id 3.3.3.3
peer 12.1.1.1 as-number 10
peer 23.1.1.1 as-number 11
peer 34.1.1.2 as-number 13
#
ipv4-family unicast
undo synchronization
aggregate 10.1.10.0 255.255.254.0 detail-suppressed suppress-policy agg
peer 12.1.1.1 enable
peer 23.1.1.1 enable
peer 34.1.1.2 enable
peer 34.1.1.2 route-policy no-export export
peer 34.1.1.2 advertise-community
#
route-policy no-export permit node 10
apply community no-export
#
route-policy no-export permit node 20
#
route-policy agg permit node 10
if-match community-filter 100
#
route-policy agg permit node 20
#
ip community-filter 100 permit 1.:12
#
RTD
#
bgp 13
router-id 4.4.4.4
peer 34.1.1.1 as-number 12
peer 45.1.1.2 as-number 14
#
ipv4-family unicast
undo synchronization
peer 34.1.1.1 enable
peer 45.1.1.2 enable
#
R5
#
bgp 14
router-id 5.5.5.5
peer 45.1.1.1 as-number 13
#
ipv4-family unicast
undo synchronization
peer 45.1.1.1 enable
#
看下各个路由器的BGP路由表
R5是用来验证一下RTC传到RTD上的社团属性是否生效,R5bgp路由表为空,说明社团属性在RTD上生效
7、Preference_Value对选路的影响(自己有多个接口,可以选择走其中的一个)
Preference_Value是BGP的私有属性(华为私有属性),Preference_Value相当于BGP选路规则中Weight值,仅在本地路由器生效。Preference_Value值越大,越优先。
如图所示,AS 200内有一个200.0.0.0/24的用户网段,AS 100内的管理员希望通过高带宽链路访问AS 200内的200.0.0.0/24网段,并希望在RTA上的策略只能影响自己的选路,不能影响其他设备,如何实现 ?
解决办法∶
在RTA上设置ip-prefix匹配200.0.0.0/24的路由,再设置route-policy调用该ip- prefix,并设置Preference_Value为100,将策略应用在对RTC发布路由的 import方向。
8、聚合方式对选路的影响
手动聚合>自动聚合
在使用路由聚合时需要注意,自动聚合只能对引入的BGP路由进行聚合,手动聚合可以对存在于BGP路由表中的路由进行聚合。
如果BGP路由表中既有引入的路由又有network宣告的路由时,只能采用手动聚合。
9、EBGP邻居的路由优于IBGP邻居的路由
根据选路原则,RTA会优选从EBGP邻居学习来的路由。
10、AS内部IGP Metric对BGP选路的影响
如图所示,AS 200内有一个200.0.0.0/24的用户网段,通过EBGP发布给RTB与RTC, RTB与RTC通过IBGP将路由发布给RTA。AS 100内的管理员希望通过高带宽链路访问AS 200内的200.0.0.0/24网段,RTA上该如何实现?
将RTA与RTB所连接口的OSPF Cost值调为100,RTA则将选择RTA->RTC->RTD的
路径访问200.0.0.0/24网段∶原因是RTA访问200.0.0.0/24时,到Next_hop 10.1.34.4的Cost(2)小于到 Next_hop 10.1.24.4 (101)的Cost。
11、Router-ID与IP地址对BGP选路的影响
如图所示,AS 200内有一个200.0.0.0/24的用户网段,通过EBGP发布给RTB和RTC,RTB和RTC通过IBGP将路由发布给RTA。RTA和RTB之间通过2条链路相连,RTA会如何优选?
RTA会选择下一跳为10.1.12.2作为下一跳访问200.0.0.0/24的网段∶
RTA选择RTA->RTB->RTD的路径访问200.0.0.0/24网段,原因是RTB的Router-ID比RTC小,BGP优选Router-ID较小的路由器发布的路由 ;
RTA选择下一跳为10.1.12.2地址所在的接口为出接口,原因是BGP优选IP地址较小的邻居学来的路由。
12、Originator_ID属性、Cluster_List属性(用于路由反射器的防环)
Originator_ID属性
- 该属性为可选非过渡;·
- 用于集群内的防环;
- 由路由反射器(RR)产生,携带了本地AS内该路由发送者的RouterID。
Cluster_List属性
- 该属性为可选非过渡;
- 用于集群间的防环;
- 由每个路由反射器(RR)产生,记录反射路由经过的集群。
Originator ID由RR产生,使用的Router ID的值标识路由的发送者,用于防止集群内产生路由环路。
- 当一条路由第一次被RR反射的时候,RR将Originator ID属性加入这条路由,标识这条路由的发起设备。如果一条路由中已经存在了Originator_ID属性,则RR将不会创建新的Originator_ID属性。
- 当设备接收到这条路由的时候,将比较收到的Originator ID和本地的RouterID,如果两个 ID相同 ,则不接收此路由。
路由反射器和它的客户机组成一个集群(Cluster)。在一个AS内,每个路由反射器使用唯一的 Cluster ID作为集群标识。
- 为了防止集群间产生路由环路,路由反射器使用Cluster_List属性,记录路由经过的所有集 群的Cluster ID。
- 当RR在它的客户机之间或客户机与非客户机之间反射路由时,RR会把本地ClusterID添加到Cluster_List的前面。如果Cluster_List为空,RR就创建一个。
- 当RR接收到一条更新路由时,RR会检查Cluster_List。如果Cluster_List中已经有本地Cluster_ID,丢弃该路由;如果没有本地Cluster_ID,将其加入ClusterList,然后反射该更新路由。
13、BGP路由聚合
BGP路由聚合概述
BGP在AS之间传递路由信息,随着AS数量的增多,单个AS规模的扩大,BGP路由表将变得十分庞大,因此带来如下两类问题 ∶
- 存储路由表将占用大量的内存资源,传输和处理路由信息需要消耗大量的带宽资源;。
- 如果传输的路由条目出现频繁的更新和撤销,对网络的稳定性会造成影响。
BGP路由聚合的必要性
如图所示,AS 100内有4个用户网段,AS 200内有4个用户网段。AS 300连接了一个Client AS,该AS内的路由器比较低端,处理能力较低,因此既希望能访问AS 100与AS 200内的网段,又不希望接收过多的明细路由,因此,通过路由聚合来节省内存和带宽资源,减少路由震荡带来的影响。
BGP路由聚合方法
静态
BGP路由聚合方法–自动聚合
自动聚合只对引入BGP的路由进行聚合,聚合到自然网段后发送给邻居。
BGP路由聚合方法–手动聚合
手动聚合对BGP本地路由表里存在的路由进行聚合,并且能指定聚合路由的掩码。
BGP路由聚合带来的问题–潜在环路(聚合路由会丢掉原明细路由的AS_Path属性)
问题:
解决:
为了解决BGP路由聚合带来的问题,设置了两个AS_Path属性∶
- Atomic-Aggregate∶公认任意属性,用于警告下游路由器出现了信息丢失,如图所 示,AS 200内设置了路由聚合的路由器在聚合后发生了路径丢失的现象,此时该路由器通过Update报文携带该属性通知自己的邻居发生了路径丢失。
- Aggregator∶可选过度属性,该属性包含发起聚合的路由器的AS号和Router-ID,表明发生聚合的位置。
AS_Path属性有两种类型∶
- AS_Sequence∶ 表示AS_Path内的AS号是一个有序的列表。
- AS_Set ∶表示AS_Path内的AS号是一个无序的列表。
AS_Path本身是一个有序的列表,因为AS_Path每经过一个AS都会将AS号添加到AS_Path中,并且按经过的顺序从左到右排列。
- 如图所示,AS 400向AS 300通告聚合路由时,AS_Path属性(大括号的除外)表示 该聚合路由依次经过了AS 200和AS 400。
当发生聚合后,如果需要聚合路由携带所有明细路由经过的AS号来防止环路,则在配置聚合的命令后添加as-set参数。
- 如图所示,AS 200内发生了聚合并配置了as-set参数,则聚合路由会将明细路由的
AS_Path信息用一个AS-Set集表示(放在中括号里的AS号信息,该集合的AS号没有先后顺序),携带在聚合路由后用以防止环路。
路由聚合解决了两类问题,一是减轻了设备传输和计算路由所需资源的负担,二是隐藏了具体的路由信息,减少了路由震荡的影响。但是路由聚合后,AS_Path属性丢失,存在产生环路的风险。
如果路由聚合后携带所有明细路由经过的AS信息,当明细路由发生频繁震荡时,聚合路由也可能受其影响频繁刷新。
因此,聚合路由是否携带丢失的AS_Path信息,需要设计者综合考虑网络环境。