BGP属性、BGP选路原则、BGP选路实验

目录

一、BGP属性

1、BGP属性分类

2、公认必遵:

3、公认任意:

4、可选过渡

5、可选非过渡

二、BGP选路原则

三、BGP选路实验

1、基础配置实验

2、下一跳不可达的路由会被丢弃

3、验证:PrefVal属性:协议首选值

4、Local_pref属性:本地优先级

5、AS_Path属性

6、比较“Origin-起源属性”--指的是已什么方式注入进BGP协议的

7、MED属性:


一、BGP属性

1、BGP属性分类

1)公认必遵:

2)公认任意:

3)可选过渡:

4)可选非过渡:

2、公认必遵:

--所有BGP设备都要认识这一类属性,

--而且这类属性必须存在于Update报文中

--如果缺少这类属性,update报文不完整, 路由信息会出现错误

列举属性:

--Origin属性:起源属性,路由是通过network 注入的,还是通过import 注入的

--AS_path属性:这条路由是从哪里来的,从哪个AS号来的,经过了哪个AS号,

--Next_Hop:定义路由的下一跳信息

3、公认任意:

--所有BGP设备认识此类属性

--这类属性不要求必须存在于Update报文中(可以在,也可以不在)

--如果缺少这类属性,路由信息不会出现错误

列举属性:

Local_Pref属性

4、可选过渡

--所有BGP设备可以认识,也可以不认识此类属性

--如果不认识,但仍然会接收此类属性,并且会通告给邻居

列举属性:

Community:团体属性

5、可选非过渡

--所有BGP设备都可以认识,也可以不认识此类属性(可以认识,也可以不认识)

--如果不认识,会忽略此类属性,而且不会通告邻居

列举属性:

MED属性

二、BGP选路原则

BGP选路原则: 根据BGP属性来的,所以要先了解属性,在判断路由优选原则

第一个:丢弃下一跳不可达的路由

        :这不是BGP选路原则(至少华为不是这么认为的),因为在任何路由协议中,我们都会认为下一跳不可达的路由是无效的

        :(但是有其他厂商会把这条原则当做BGP选路原则的第一原则)

然后进行选路:

1、比较“协议首选值-pref-val”属性,数值越大越好,默认值是0,只在本设备生效,不会传递

2、比较“本地优先级-local_pref”属性,数值越大越好,默认值是100

3、比较“as-path” 属性-as号越短越好

4、比较“起源属性”-指的是已什么方式注入进BGP协议的

5、比较“MED”属性,指的是一个路由器去往一个BGP路由网段的距离,类似cost

三、BGP选路实验

1、基础配置实验

需求:

        1)建立IBGP和EBGP邻居

配置步骤:

        1)配置接口IP地址

        2)在AS100内部配置OSPF

        3)配置IBGP邻居和EBGP邻居

        4)在R4中注入路由 10.10.4.4/32

        5)下一跳不可达--验证

        6)配置下一跳可达--验证

配置命令:

第一步:基础配置:配置接口IP地址, AS100内部配置OSPF
R1的配置:
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 192.168.12.1 24
[R1-GigabitEthernet0/0/0]int g0/0/1
[R1-GigabitEthernet0/0/1]ip add 192.168.13.1 24
[R1-GigabitEthernet0/0/1]int lo0
[R1-LoopBack0]ip add  10.10.1.1 32 
[R1-LoopBack0]quit
[R1]ospf 1  router-id 1.1.1.1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]network 192.168.13.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0] network 10.10.1.1 0.0.0.0 


R2的配置:
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ip address 192.168.12.2 24
[R2-GigabitEthernet0/0/0]int g0/0/1
[R2-GigabitEthernet0/0/1]ip address 192.168.24.2 24
[R2-GigabitEthernet0/0/1]int lo0
[R2-LoopBack0]ip add 10.10.2.2 32
[R2-LoopBack0]q
[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255  
[R2-ospf-1-area-0.0.0.0]network 10.10.2.2 0.0.0.0


R3的配置:
[R3]int g0/0/0
[R3-GigabitEthernet0/0/0]ip add 192.168.13.3 24
[R3-GigabitEthernet0/0/0]int g0/0/1
[R3-GigabitEthernet0/0/1]ip add 192.168.34.3 24
[R3-GigabitEthernet0/0/1]int lo0
[R3-LoopBack0]ip add 10.10.3.3 32
[R3-LoopBack0]q
[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network 192.168.13.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]network 10.10.3.3 0.0.0.0


R4的基础配置
[R4]int g0/0/0
[R4-GigabitEthernet0/0/0]ip add 192.168.24.4 24
[R4-GigabitEthernet0/0/0]int g0/0/1
[R4-GigabitEthernet0/0/1]ip add 192.168.34.4 24
[R4-GigabitEthernet0/0/1]int lo0
[R4-LoopBack0]ip add 10.10.4.4 32


 第二步:配置IBGP和EBGP邻居关系 

 R1的配置: 
[R1]bgp 100
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 10.10.2.2 as 100
[R1-bgp]peer 10.10.2.2 connect-interface LoopBack 0
[R1-bgp]peer 10.10.3.3 as 100  
[R1-bgp]peer 10.10.3.3 connect-interface LoopBack 0


[R2]bgp 100
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 10.10.1.1 as 100  
[R2-bgp]peer 10.10.1.1 connect-interface LoopBack 0
[R2-bgp]peer 192.168.24.4 as 200


[R3]bgp 100
[R3-bgp]router-id 3.3.3.3
[R3-bgp]peer 10.10.1.1 as 100  
[R3-bgp]peer 10.10.1.1 connect-interface LoopBack 0
[R3-bgp]peer 192.168.34.4 as 200


[R4]bgp 200
[R4-bgp]router-id 4.4.4.4
[R4-bgp]peer 192.168.24.2 as 100
[R4-bgp]peer 192.168.34.3 as 100



第三步:验证邻居关系
display  bgp  peer

2、下一跳不可达的路由会被丢弃

需求:

1)下一跳不可达验证

配置:

第一步:在R4中注入路由 

R4的配置:
[R4]bgp 200
[R4-bgp]network 10.10.4.4 32

 第二步:验证R4和R2和R3的邻居关系,邻居建立成功 
<R4>display bgp peer 
  
Peer            V     AS     MsgRcvd   MsgSent  OutQ   Up/Down       State        PrefRcv

192.168.24.2    4     100      124      125     0      02:02:37      Established    0
192.168.34.3    4     100      124      125     0      02:02:23      Established    0  

 第三步:在R2和R3中验证BGP路由 
[R2-bgp]display bgp routing-table 
 Total Number of Routes: 1
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 * >    10.10.4.4/32       192.168.24.4    0                     0      200i

 备注:在R2中,10.10.4.4/32的路由是最优的 


[R3]display bgp routing-table 
 Total Number of Routes: 1
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 * >     10.10.4.4/32       192.168.34.4    0                     0      200i
 
   备注:在R3中,10.10.4.4/32的路由是最优的 
 
 
 
   第四步:在R1中验证BGP路由 
 
 [R1]display bgp routing-table 

 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

   i  10.10.4.4/32       192.168.24.4    0          100        0      200i
   i                     192.168.34.4    0          100        0      200i
   
   
  备注:在R1中,学习到两条去往10.10.4.4/32的路由,分别是R2和R3通告给R1的
  但是这两条路由都是无效的,为什么,因为下一跳不可达,所以目的地址也不可达,所以R1认为这两条路由无效
  
  那么为什么下一跳不可达呢? 因为R2和R3在从外部邻居R4哪里学来路由,在传递给自己的内部邻居R1时,
  默认不会修改路由的下一跳
  
  
   第五步:在R1的IP核心路由表去验证,发现R1没有去往10.10.4.4 的路由 
 [R1]display ip routing-table 10.10.4.4
 
  第六步:总结:丢弃下一跳不可达的路由 
 
 
   第七步:让R1中的路由可用 
 如果让下一跳可达呢,如果让R1中的路由生效且最优呢:需要在R2和R3在给R1传递路由的时候修改下一跳
 
 R2的配置:
 [R2]bgp 100
 [R2-bgp]peer 10.10.1.1 next-hop-local  修改下一跳
 
 R3的配置:
 [R3]bgp 100
 [R3-bgp]peer 10.10.1.1 next-hop-local   修改下一跳
 
 
   第八步:再次验证R1的路由表 
 [R1]display bgp routing-table 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>i  10.10.4.4/32       10.10.2.2       0          100        0      200i 
   i                     10.10.3.3       0          100        0      200i

3、验证:PrefVal属性:协议首选值

-preferred_value

-默认值0,数值越大越优先

-华为特定的私有属性

-只在本设备有效,不在网络中随路由传递

在R1中去验证路由表

 第一步:证R1的路由表
 [R1]display bgp routing-table 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf     PrefVal  Path/Ogn

 *>i  10.10.4.4/32       10.10.2.2       0          100          0       200i
   i                     10.10.3.3       0          100          0       200i


备注:R1中去往10.10.4.4的路由有两条,但是下一跳为10.10.2.2 的为最优, 为什么是10.10.2.2的为最优
因为,这是做的BGP选路,用的第10条选路规则
比较R2和R3的router-id , 由于R2的router-id  2.2.2.2  比R3的router-id 3.3.3.3 小
所以R2通告给R1的路由是最优的,
为什么用第10条选路规则,因为这两条路由的前9条规则,无法比较出来谁最优,所以使用第10条规则
如果你不相信我,你可以自己去测试
怎么测试呢?  将R2的router-id 改为9.9.9.9  大于R3的3.3.3.3
然后你就会发现在R1中去往10.10.4.4/32的路由,下一跳为10.10.3.3 变成最优了

具体操作命令:
[R2]bgp 100
[R2-bgp]router-id 9.9.9.9

 在R1中去验证路由表 
<R1>dis bgp routing-table 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>i  10.10.4.4/32       10.10.3.3       0          100        0      200i 
 * i                     10.10.2.2       0          100        0      200i

!!!!记住验证完一定要在恢复默认,把R2的router-id 在改回2.2.2.2
[R2]bgp 100
[R2-bgp]router-id 2.2.2.2

 在R1中去验证路由表-发现恢复默认 
<R1>display  bgp  routing-table 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>i  10.10.4.4/32       10.10.2.2       0          100        0      200i 
 * i                     10.10.3.3       0          100        0      200i






实验需求:
修改路由的PrefVal(协议首选值)属性值,让下一跳为10.10.3.3的那条路由成为最优的路由

配置步骤:
1)在R1中创建ip-prefix 抓取10.10.4.4的路由
2)在R1中使用router-policy修改路由的属性
3)在R1中BGP中,在R1和R3建立邻居的 入方向 去调用路由策略

备注:ip-prefix 是什么:  这个工具叫做地址前缀列表,专门用来抓取路由条目的
备注:router-policy 是什么:  这个工具叫做路由策略,用来控制路由,过滤路由,和修改路由属性的


配置命令:

第一步:在R1中要修改那条路由,我就去抓那条路由
       在R1中使用ip-prefix 抓取10.10.4.4的路由

[R1]ip ip-prefix 3.3 permit 10.10.4.4 32 

第二步:使用路由策略去修改路由10.10.4.4/32的属性

1)将抓到这条路由和路由策略绑定在一起
[R1]route-policy 3.3 permit node 10          //创建路由策略,命名为3.3   允许节点10
[R1-route-policy]if-match ip-prefix  3.3    //将抓到这条路由和路由策略绑定在一起


2)修改路由的属性值,把路由协议首选值的属性修改为123
[R1-route-policy]apply preferred-value 123         // 将协议首选值修改为123
                                          

第三步:在BGP中去调用这条路由策略,在R1和R3建立 邻居的入方向调用,为什么要在入方向调用
      因为协议首选值,这个属性,只在我的本机起作用,不能在在网络中传递

[R1]bgp 100
[R1-bgp]peer 10.10.3.3 route-policy 3.3 import


<R1>refresh bgp all import   //返回到用户视图,重传路由刷新

第四步:在R1中验证结果

<R1>dis bgp routing-table 

 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf      PrefVal  Path/Ogn

  *>i  10.10.4.4/32       10.10.3.3       0          100        123     200i 
  * i                     10.10.2.2       0          100        0      200i
 
 备注:由于下一跳为10.10.3.3的这条路由的协议首选值该问123,所以下一跳为10.10.3.3的这条路由变为最优
 
 
  验证: 
  <R1>dis bgp routing-table 10.10.4.4 

 BGP local router ID : 1.1.1.1
 Local AS number : 100
 Paths:     2 available, 1 best, 1 select 
 BGP routing table entry information of 10.10.4.4/32:
   From: 10.10.3.3 (3.3.3.3) 
 Route Duration: 00h00m58s  
 Relay IP Nexthop: 192.168.13.3
 Relay IP Out-Interface: GigabitEthernet0/0/1
 Original nexthop: 10.10.3.3
 Qos information : 0x0
 AS-path 200, origin igp, MED 0, localpref 100,  pref-val 123,  valid, internal, b
est, select, active, pre 255, IGP cost 1
 Not advertised to any peer yet

 BGP routing table entry information of 10.10.4.4/32:
 From: 10.10.2.2 (2.2.2.2)
 Route Duration: 00h00m58s  
 Relay IP Nexthop: 192.168.12.2
 Relay IP Out-Interface: GigabitEthernet0/0/0
 Original nexthop: 10.10.2.2
 Qos information : 0x0
 AS-path 200, origin igp, MED 0, localpref 100,  pref-val 0 , valid, internal, pre
 255, IGP cost 1,  not preferred for PreVal   :败给协议首选值了 
 Not advertised to any peer yet

4、Local_pref属性:本地优先级

-local_preference

-默认情况下,在IBGP邻居间传递,不在EBGP邻居间传递,在EBGP传递update报文的时候默认不携带这个属性

-默认值100,数值越大越优先

-在AS内的IBGP邻居之间,出方向和入方向都可以修改该属性

第一步: 在R1中删除上一个实验的配置,恢复路由表默认状态

1)在R1中删除路由策略的调用
[R1]bgp  100
[R1-bgp]undo peer 10.10.3.3 route-policy 3.3 import 

2)在R1中先删除原有的路由策略的配置,删除修改协议首选值
[R1]route-policy  3.3  permit  node 10    //进入路由策略
 [R1-route-policy]undo apply preferred-value    //删除修改的协议首选值 

第二步: 在R1中,重新进入路由策略,修改本地优先级属性值
[R1]route-policy 3.3 permit node 10             //进入路由策略3.3
 [R1-route-policy]apply local-preference 300    //修改本地优先级为300 

第三步:在R1中 做路由策略调用
[R1-bgp]peer 10.10.3.3 route-policy 3.3 import      //在R1收到R3传来的路由的入方向修改路由属性

<R1>refresh bgp all import   //重传路由

第四步:验证结果
<R1>display bgp routing-table 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal   Path/Ogn

  *>i  10.10.4.4/32       10.10.3.3       0           300         0      200i 
  * i                     10.10.2.2       0           100         0      200i

5、AS_Path属性

-在AS-path 属性表里面,会记录路由信息经过的AS数 ,每经过一个AS ,都会按照顺序将AS号记录在列表里面

-最右侧的为起源AS号,最左侧的为邻居的AS号

-AS-path属性:AS号越短越优先(经过的AS号越少越优先)

-任何一个BGP路由,都必须携带这个属性

-该属性可以防止EBGP邻居之间的环路

-该属性可以做路径优选

第一步:在R1中删除路由策略的调用,恢复默认

[R1]bgp 100
[R1-bgp]undo peer 10.10.3.3 route-policy 3.3 import


第二步:验证R1的路由表:
[R1]dis bgp routing-table 

 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>i  10.10.4.4/32       10.10.2.2       0          100        0      200i
 * i                     10.10.3.3       0          100        0      200i
 
 

第二步: 删除修改本地优先级,  配置修改AS-path 属性值
[R1]route-policy 3.3 permit node 10   //进入路由策略
[R1-route-policy]undo apply local-preference    //删除apply (删除修改的本地优先级的属性值)

[R1-route-policy]apply as-path 200 200  additive   //修改路由的属性,添加AS号   


第三步:在BGP中调用路由策略,在R1收到R2传递的路由的时候,给这个条路由修改AS-Path属性
[R1]bgp 100
[R1-bgp]peer 10.10.2.2  route-policy 3.3 import 


第四步:验证结果
<R1>display bgp routing-table 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>i  10.10.4.4/32       10.10.3.3       0          100        0      200i 
 * i                     10.10.2.2       0          100        0      200 200 200i
 
 
 备注:
为什么添加的as号都为200呢,是只能添加200吗?  不是,可以添加任意值的as号
只所以都添加200,不添加其他AS号仅仅是为了预防,因为AS_Path防止环路而导致路由无法传递
比如:如果我们添加了AS_path 500  ,如果我们要把路由传递给AS500的自制系统,就无法传递了
我们不清楚我们的前方会出现哪些AS号,所以我们尽量不要占用其他的AS号
      
      

6、比较“Origin-起源属性”--指的是已什么方式注入进BGP协议的

-Origin属性用来定义路由信息的来源:

        Origin : i - IGP, e - EGP, ? - incomplete (优先级)

        &:IGP:优先级高,通过network命令注入到BGP路由表的路由,其Origin属性为'i'。

        &: e - EGP : 次优的,

        &:Incomplete:优先级低,如:通过import-route注入的路由,其Origin属性为 '?'。

===============================在R1中做删除================================

第一步: 删除路由策略调用
[R1]bgp 100
[R1-bgp]undo peer 10.10.2.2 route-policy 3.3 import 

第二步:删除路由策略
[R1]undo route-policy 3.3

第三步:验证R1的路由表:检查是否恢复默认
[R1]dis bgp routing-table 

 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>i  10.10.4.4/32       10.10.2.2       0          100        0      200i 
 * i                     10.10.3.3       0          100        0      200i
 

=================================在R2上做实验了==============================

第四步:在R2上创建地址前缀列表
[R2]ip ip-prefix  4.4  permit 10.10.4.4 32

第五步:在R2上创建路由策略,匹配地址前缀列表,并且修改路由的属性
[R2]route-policy 4.4 permit node 10
[R2-route-policy]if-match ip-prefix 4.4      //路由策略匹配地址前缀列表抓到的路由

[R2-route-policy]apply origin incomplete    //修改路由的起源属性,改为import注入

第六步:在R2的BGP上调用路由策略
[R2]bgp 100
[R2-bgp]peer 10.10.1.1 route-policy 4.4 export   //R2给R1传递路由的出方向上,调用路由策略

 
 第七步:验证结果
 <R1>dis bgp routing-table 

 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>i  10.10.4.4/32       10.10.3.3       0          100        0      200i 
  * i                     10.10.2.2       0          100        0      200 ? 
 

7、MED属性:

-MED:多出口鉴别器,是可选非过渡属性,是一种度量值

--MED默认值是0,值越小越优先

--作用两个AS之间,收到MED属性的AS,默认不将这个属性通告给第三方AS

第一步:在 R2 中删除调用
[R2-bgp]undo peer 10.10.1.1 route-policy 4.4 export

第二步:验证 R1 的路由表:检查是否恢复默认
[R1]dis bgp routing-table 

 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>i  10.10.4.4/32       10.10.2.2       0          100        0      200i
 * i                     10.10.3.3       0          100        0      200i
 
 
第三步:在 R2 中-进入路由策略,删除修改的起源属性值
[R2]route-policy  4.4 permit  node 10
[R2-route-policy]undo apply origin    //删除修改的起源属性值,恢复默认

[R2-route-policy]apply cost 999    //修改路由的MED属性值为999

第四步:在 R2 中调用路由策略
[R2]bgp 100  
[R2-bgp]peer 10.10.1.1 route-policy  4.4 export    

//R2在给R1发路由的时候,在出方向修改路由的MED值为999


第五步:验证结果
<R1>display bgp routing-table 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>i  10.10.4.4/32       10.10.3.3       0          100        0      200i 
  * i                     10.10.2.2      999         100        0      200i
  • 27
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值