BGP协议概念与配置(HCIP完整版)

发布时间:2024年01月11日

目录

一、BGP协议基础

1、路由的分类

2、为什么要使用BGP协议

3、BGP概述

4、AS号

二、BGP协议概述

1、场景

2、作用

3、优势

4、BGP邻居类型

5、BGP特征

6、BGP报文类型

7、BGP工作过程

8、BGP状态

9、BGP路由默认优先级为255

10、BGP邻居关系建立的完整流程

12、邻居常见配置

三、BGP邻居表和路由表

BGP实验

拓扑

需求

配置步骤

配置命令

邻居表解析

BGP路由表解析

四、IBGP基础配置

1、IBGP全互联实验

2、解析:修改下一跳: Next_Hop

3、为什么要使用loopback接口建立IBGP邻居关系

4、EBGP邻居可以使用loopback 接口建立邻居吗?

五、BGP通告原则

六、IBGP水平分割

1、IBGP水平分割

七、如何突破IBGP水平分割机制

1、BGP通告原则之三 :IBGP水平分割

2、突破IBGP水平分割的限制

3、IBGP全互联

拓扑

需求

配置命令

八、BGP联盟和路由反射器

1、全互联的弊端:

2、路由反射器RR

规则一

规则二

规则三

规则四

3、BGP联盟

4、路由反射器和联盟的比较

5、RR反射器实验

5、BGP联盟和路由器反射器实验

6、路由反射器防止环路

九、BGP属性

1、BGP属性分类

2、公认必遵属性解析:

Next_Hop属性:

AS_path属性:

Origin属性:

3、公认任意属性

Local_Preference属性

4、可选过渡属性

Community属性:团体属性

5、可选非过渡属性

MED属性:

Originator ID属性:

Cluster_List: 属性

十、BGP选路规则

1、BGP选路原则

十一、BGP选路规则实验

1、BGP选路规则实验-基础配置

2、验证:下一跳不可达

3、Route-policy

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

5、Local_pref属性:本地优先级

6、本地始发的BGP路由优于从邻居学习到的路由

7、本地设备始发的路由:手动聚合优于自动聚合,优于network,优于import-route

8、AS_Path属性

9、比较“Origin-起源属性”

10、MED属性:

11、从EBGP邻居学来的路由,优先于从IBGP邻居学来的路由

12、去往BGP路由的下一跳IP地址”的cost开销值-越小越好

13、如果前面8条选路规则都无法选出最优的BGP路由,那么我们就可以做负载均衡了

14、比较“cluster-list”的长度,越短越好

15、比较Router ID(Orginator_ID)的大小,越小越好

16、比较“peer 后面的IP地址的大小”,越小越好


一、BGP协议基础

1、路由的分类

1)直连路由

2)非直连路由(间接路由)

????????&:静态路由

????????&:动态路由

????????????????@:IGP: 内网网关路由协议(在企业内部或数据中心内部使用)

????????????????????????DV:距离矢量路由协议

????????????????????????????????-RIP(v1/v2)

????????????????????????????????-IGRP—网络直径:100—255(思科的私有协议)

????????????????????????????????-EIGRP—思科的私有

????????????????????????LS: 链路状态路由协议

????????????????????????????????-ISIS- 中间系统到中间系统

????????????????????????????????-OSPF —开放式最短路径优先

????????????????@: EGP : 外部网关路由协议:在不同公司之间使用,在不同的城市之间

????????????????????????BGP:边界网关协议 (路径矢量路由协议)

2、为什么要使用BGP协议

我们要在不同AS之间实现网络通信,需要使用EGP-BGP协议,当然我们还看重BGP的一些优势

1)非常稳定

2)可以传输大量的路由,支持大规模网络

3)具有非常丰富的路由控制策略,可以实现灵活的选路

3、BGP概述

-BGP:边界网关协议

-BGP是公有协议,任何厂商的设备都支持BGP

-BGP位于OSI的第7层 (应用层)

备注:

OSPF基于IP协议,为了可靠性,数据库同步:协商主从关系,序列号、有确认机制

4、AS号

-AS号(Autonomous System Number):自治系统:

-是互联网中的一种标识符,用于标识一个自治系统(AS)的唯一数字。

-自治系统是指由一组网络和路由器组成的网络。

-AS号可以帮助互联网中的路由器找到要到达目的地的IP地址的最短路径。

-AS号由互联网分配机构IANA(互联网分配号码管理局)分配。

-AS号的范围被划分为两类:公共AS号和私有AS号。

-公共AS号是指由IANA分配的AS号,可用于在全球范围内标识自治系统。

-私有AS号是指由互联网注册机构(IR)分配的AS号,用于在私有互联网中标识自治系统。

-AS通常使用“数字”来表示,称为AS号

-AS号的范围是从0到65535,其中0被保留不使用

-AS编号取值范围

????????&:之前—2字节表示,取值范围:1-65535

????????????????#私有AS号:64512-65534,可以用于在私有互联网中标识自治系统,但不会在公共互联网中出现。这些私有AS号通常用于连接组织的内部网络。

????????&:目前是4个字节:1-4294967295

????????????????4字节AS号的范围是从0到4294967295,其中0号AS被保留不使用

????????????????私有AS号范围是4200000000至4294967294

????????????????4字节AS号由IANA管理,并由全球RIR(区域互联网注册局)负责分配

在国内,中国的运营商通常将AS号按照不同的地理区域划分。

例如,中国电信在各省市设立了不同的自治系统,每个自治系统都有自己独立的AS号。而中国联通则将其网络划分为北方、南方、西南、东北、华东、华中六个区域,每个区域都分配了不同的AS号

AS号的划分方式取决于运营商的具体管理需求和网络架构,可以按照城市、区域、网络、子网等不同的维度进行划分。

截止2021年9月,中国共分配了超过37,000个AS号。要查询中国已分配的AS号,可以使用以下方法:

访问CNNIC官网:CNNIC是中国国家互联网信息中心

二、BGP协议概述

1、场景

场景一:遍布全国大型政企单位之间, 或大型数据中心

场景二:运营商骨干网

2、作用

在AS之间动态的交互路由信息

3、优势

1)稳定,基于TCP协议建立的,使用端口号TCP179,所以非常稳定

2)传递大量路由,可以跨多跳建立邻居关系

3)路由控制策略丰富

4、BGP邻居类型

EBGP: 外部邻居: 用于AS之间

IBGP: 内部邻居: 用于AS内部

5、BGP特征

?BGP使用传输层协议为TCP,TCP端口号179。路由器之间的BGP会话基于TCP连接而建立。

?运行BGP的路由器被称为BGP发言者(BGP Speaker),或BGP路由器。

?两个建立BGP会话的路由器互为对等体(Peer),说人话,就是BGP邻居

?BGP对等体之间交换BGP路由信息 , 说人话,BGP在邻居之间传递路由

?BGP路由器只发送增量的BGP路由更新,或进行触发式更新(不会周期性更新)。

?BGP能够传递大批量的路由,可在大规模网络中应用。

6、BGP报文类型

-open : 用于建立邻居关系 (类似于hello报文)

-keep alive : 用于维护邻居关系,周期性发送-60秒,保持BGP连接 (类似于hello)

-update : 用于传递路由和撤销路由 (类似于LSU报文)

-notification : 通知报文,用于通知BGP邻居之间的报错信息,用于断开BGP连接

-router-refresh : 重传报文,请求邻居重新发送路由信息

报文名称作用发送时刻
Open协商BGP对等体参数,建立对等体关系BGP TCP连接建立成功之后
Update发送BGP路由更新BGP邻居关系建立之后有路由需要发送或路由变化时向邻居发送Update报文
Notification报告错误信息,中止邻居关系当BGP在运行中发现错误时,发送Notification报文将错误通告给BGP邻居
Keepalive标志邻居建立,维持BGP邻居关系BGP路由器收到对端发送的Keepalive报文,将邻居状态置为已建立,同时后续定期发送keepalive报文用于保持连接
Route-refresh用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新能力的BGP设备会发送和响应此报文当路由策略发生变化时,触发请求对等体重新通告路由

BGP报文头部格式:五种报文都拥有相同的报文头

BGP报文头部字段解析:

BGP五种报文都拥有相同的报文头,格式如左侧所示,主要字段解释如下:

Marker:16Byte,用于标明BGP报文边界,所有bit均为“1”。

Length:2Byte,BGP报文总长度(包括报文头在内),以Byte为单位。

Type:1Byte,BGP报文的类型。其取值从1到5,分别表示Open、Update、Notification、Keepalive和Route-refresh报文。

Open报文格式:

Open报文字段解析:

Open报文是TCP连接建立之后发送的第一个报文,用于建立BGP对等体之间的连接关系,报文格式如左侧所示,主要字段解释如下:

Version:BGP的版本号。对于BGP 4来说,其值为4。

My AS(autonomoussystem):本地AS号。通过比较两端的AS号可以判断对端是否和本端处于相同AS。

Hold Time:保持时间。在建立对等体关系时两端要协商HoldTime,并保持一致。如果在这个时间内未收到对端发来的Keepalive报文或Update报文,则认为BGP连接中断。

BGP Identifier:BGP标识符,以IP地址的形式表示,用来识别BGP路由器。

Update报文格式:

Update报文字段解析:

Update报文用于在对等体之间传递路由信息,可以用于发布、撤销路由。

一个Update报文可以通告具有相同路径属性的多条路由,

这些路由保存在NLRI(NetworkLayer Reachable Information,网络层可达信息)中。

同时Update还可以携带多条不可达路由,用于告知对方撤销路由,这些保存在WithdrawnRoutes字段中。

报文格式如左侧所示,主要字段解释如下:

Withdrawn routes:不可达路由的列表。

Path attributes:与NLRI相关的所有路径属性列表,每个路径属性由一个TLV(Type-Length-Value)三元组构成。

NLRI:可达路由的前缀和前缀长度

Notification报文格式:

Notification报文格式字段解析:

当BGP检测到错误状态时(对等体关系建立时、建立之后都可能发生),就会向对等体发送Notification,告知对端错误原因。之后BGP连接将会立即中断。

Error Code、Errorsubcode:差错码、差错子码,用于告知对端具体的错误类型。

Data:用于辅助描述详细的错误内容,长度并不固定

Keepalive报文格式

Keepalive报文格式:字段解析:

BGP路由器收到对端发送的Keepalive报文,将对等体状态置为已建立,同时后续定期发送keepalive报文用于保持连接。

Keepalive报文格式中只包含报文头,没有附加其他任何字段。

Route-refresh报文格式:

Route-refresh报文字段解析

Route-refresh报文用来要求对等体重新发送指定地址族的路由信息,一般为本端修改了相关路由策略之后让对方重新发送Update报文,本端执行新的路由策略重新计算BGP路由。

相关字段内容如下:

AFI:AddressFamily Identifier,地址族标识,如IPv4。

Res.:保留,8个bit必须置0。

SAFI:SubsequentAddress Family Identifier,子地址族标识。

7、BGP工作过程

1)建立邻居

2)传递路由

8、BGP状态

1)idle :初始化状态

-tcp未连接状态,邻居的状态为idle , 当bgp设备和邻居进行tcp 连接时,会从当前的状态转为connect 状态

2)connect 状态: tcp 连接状态

-如果tcp 建立连接成功,bgp 设备会向邻居发送open报文,状态也会转为opensent 状态

-如果tcp 建立连接失败,bgp设备的状态会转为active 状态

3)active 状态:活跃状态

  • 在当前状态下,bgp 设备依然没有放弃希望,依然试图继续建立tcp 连接,如果成功,状态依然可以转为opensent 状态

-如果依然失败,bgp会停留在active 状态

备注:如果重传计时器超时,依然没有收到邻居回应,bgp设备会心灰意冷的返回上一个状态,上一个是connect 状态

4)opensent 状态: open报文已发送状态,已向邻居发送open报文

-如果bgp设备给邻居发送open报文后,如果收到来自邻居的回复,并且回复的报文是正确的,bgp 设备会继续发送报文,发送什么报文呢? 发送keep alive 报文,状态转为 open comfirm 状态

-如果bgp设备给邻居发送open报文后,如果收到来自邻居的回复,但是回复的报文有错误,bgp 设备会向邻居发送notification 报文(用于断开bgp连接状态),断开后会跳转到最初的idle 状态

5)open comfirm : open报文确认状态

-如果收到邻居发来的keep alive 报文,状态会转为established 建立状态

-如果收到邻居发来的notification 报文,状态会跳转为 idle 状态

6)established : 连接已建立状态

-如果收到邻居发来的正确的update 报文或者keepalive 报文,bgp就会认为邻居是正常的

  • 如果收到邻居发来的错误的update 报文或者keepalive 报文,bgp设备会发送notification 报文,通知邻居,我们分手把,不做邻居了,会回到idle 初始化状态

9、BGP路由默认优先级为255

10、BGP邻居关系建立的完整流程

12、邻居常见配置

EBGP邻居: 
 通常使用物理的直连接口建立EBGP邻居关系 
为什么:因为有直连检测机制,默认情况下非直连的网段建立EBGP邻居时,无法成功建立
 直连检测机制是什么?: 
直连检测机制是BGP协议中用于检测与其他自治系统(AS)直接连接的路由器是否在线和可用的一种机制。
它通过发送ICMP Echo请求消息来检测该路由器的在线状态
建立EBGP的邻居之间,发送的报文中IP头部的TTL值默认为1
 为什么要有直连检测机制? 
防止黑洞路由:
直连检测机制可以检测邻居之间是否存在黑洞路由情况。
黑洞路由是指通过一条不存在的路径将流量从源AS传输到目标AS,导致流量丢失。
直连检测机制可以通过发送和接收心跳消息来验证邻居是否可达,从而防止流量进入黑洞。

提高邻居的可达性:
直连检测机制确保相邻的EBGP邻居之间的直连网络正常工作。
正常的直连网络意味着邻居之间的物理连接是可靠的,数据可以顺利传输。
通过直连检测机制,在邻居断开连接或发生故障时可以及时检测到,并采取相应的措施,
例如选择备用路径或重新建立连接。

减少环路和路由错乱:
直连检测机制可以有效减少EBGP邻居之间的环路和路由错乱。
通过检测和验证直连网络,可以确保邻居之间的链路状态正确,
并避免因直连网络异常而导致的路由环路或错误路由传播。

提升网络性能:直连检测机制可以提升网络性能,减少故障恢复时间。
通过快速检测和识别直连故障,可以及时触发故障处理机制,提高网络的恢复速度和性能。

 IBGP邻居: 
通常使用loopback接口建立IBGP邻居关系
当两台IBGP邻居之间使用物理接口建立IBGP邻居关系时,如果物理链路故障,IBGP邻居也会down
如果两台IBGP邻居之间有多条物理链路时,使用loopback接口建立IBGP邻居,只要有一条物理链路
还能转发数据,IBGP邻居就不会出现故障,可以提高网络的可靠性和稳定性 


三、BGP邻居表和路由表

BGP实验

拓扑

需求

1)配置EBGP邻居关系

2)实现网络互通

配置步骤

1)配置接口IP地址

2)配置EBGP邻居

3)注入路由

配置命令

sysname R1 
#
interface GigabitEthernet0/0/0
 ip address 192.168.1.254 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.12.1 255.255.255.0 

#
bgp 100
 router-id 1.1.1.1
 peer 192.168.12.2 as-number 200 
 network 192.168.1.0 
 
 sysname R2 
#
interface GigabitEthernet0/0/0
 ip address 192.168.12.2 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.2.254 255.255.255.0 
#
bgp 200
 router-id 2.2.2.2
 peer 192.168.12.1 as-number 100 
 network 192.168.2.0 
 
 验证:查看邻居表
 <R1>display bgp peer 

 BGP local router ID : 1.1.1.1
 Local AS number : 100
 Total number of peers : 1      Peers in established state : 1

 Peer          V   AS  MsgRcvd  MsgSent  OutQ  Up/Down   State       PrefRcv

 192.168.12.2  4   200   45       46      0     00:42:35 Established    1

验证:查看路由表
<R1>display bgp routing-table 

 BGP Local router ID is 1.1.1.1 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete

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

 *>   192.168.1.0        0.0.0.0         0                     0      i
 *>   192.168.2.0        192.168.12.2    0                     0      200i
 
 验证:PC1和PC2 可以ping通

邻居表解析

 <R1>display bgp peer 

 BGP local router ID : 1.1.1.1
 Local AS number : 100
 Total number of peers : 1      Peers in established state : 1

 Peer          V   AS  MsgRcvd  MsgSent  OutQ  Up/Down   State       PrefRcv

 192.168.12.2  4   200   45       46      0     00:42:35 Established    1
 
 
 邻居表字段详细解析: 
-BGP local router ID :    //表示的BGP给当前这台设备分配的名字
-Local AS number :         //表示的是当前这个设备所属的AS号
-Total number of peers :   //表示当前设备一共有多少邻居
-Peers in established state :  //表示当前设备有效的邻居
-Peer :   //表示的是对端邻居的IP地址
- V :   //表示的是版本
-AS:     //表示的是邻居设备所在的AS号
-MsgRcvd:    //表示的是从邻居设备收到的消息数目
-MsgSent:     //表示的是向邻居设备发送的消息数目
-OutQ:       //表示的是 出向队列 (等待发往指定邻居的消息—出向数据—排队的数据)
bgp要求稳定,所以如果邻居设备无法向对端发送一个稳定的报文,那么这个报文就会被要求重新传输,
哪些需要重传的报文,就会放到这个出向队列中,所以正常情况下,这个参数的值是0,
如果这个参数不是0,说明和邻居之间的链路非常不稳定,容易出现网络拥塞和丢包

-State:    //表示的是邻居的状态,最完美的状态,就是established (建立)
-PrefRcv:   //表示的是从邻居设备所接受过来的路由条目的数量
目前这个值为0,就代表对端设备还没有给我们传递路由信息,就是没有给我们发路由
也可以这样表述:本段从对端设备上收到的路由前缀的数目(接收到的路由的数量)

BGP路由表解析

<R1>display bgp routing-table 

 BGP Local router ID is 1.1.1.1 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete

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

 *>   192.168.1.0        0.0.0.0         0                     0      i
 *>   192.168.2.0        192.168.12.2    0                     0      200i
 
   路由表字段解析: 
 BGP Local router ID : 标识的BGP路由器自己的Router-id
 
 Status codes : 状态代码 
  * - valid : 表示BGP路由是有效的,能用
  > - best : 表示BGP路由是最优的,自己可以用,别人也可以用

 Origin : 起源代码,表示该BGP路由是通过什么方式宣告进BGP协议的 
   i - IGP  :最优的 (通过network注入)
   e - EGP  :次优的
   ? - incomplete :最差的 (import 引入)
   
Network :表示BGP路由网段和掩码
NextHop :表示BGP路由的下一跳地址(如果是0.0.0.0 表示该路由是自己产生的)


@:接下来的这些,都是BGP路由条目的属性(后面讲BGP选路规则时还会详细分析和讲解这几个属性)
  MED  :  路由度量值,表示去往一个BGP路由的距离,类似于其他协议的cost
  
  LocPrf : 本地优先级,表明路由器的BGP本地优先级

  PrefVal :协议首选值,表示的是一个BGP路由的优选值,最高的路由
            协议首选值(PrefVal)是华为设备的特有属性,该属性仅在本地有效

  Path:AS路径,表示的是一个BGP路由AS_Path属性,
               AS_Path属性按顺序记录了一个BGP路由从本地到目的地址所要经过的所有AS编号
  
  Ogn:表示的是一个BGP路由的起源属性,主要用来定义路径信息的来源
  
       标记一条路由是怎么成为BGP路由的。它有以下3种类型:
       IGP:具有最高的优先级。通过network命令注入到BGP路由表的路由,其Origin属性为IGP。
       EGP:优先级次之,通过EGP得到的路由信息,其Origin属性为EGP。
       Incomplete:优先级最低。通过其他方式学习到的路由信息。
                   比如BGP通过import-route命令引入的路由

四、IBGP基础配置

1、IBGP全互联实验

拓扑

需求

实现R4的10.10.4.4 和R5的10.10.5.5互通

思路:

思路1:R4和R1建立EBGP邻居 (外部的EBGP邻居)

思路2:R3和R5建立EBGP邻居 (外部的EBGP邻居)

思路3:AS200内部的R1-R2-R3配置ospf-建立ospf邻居关系

思路5:R1和R2建立IBGP邻居 (内部的IBGP邻居)

思路6:R2和R3建立IBGP邻居 (内部的IBGP邻居)

思路4:R1和R3建立IBGP邻居 (内部的IBGP邻居)

思路7:在R4和R5中注入路由

配置步骤

1)配置路由器的接口IP地址

2)在AS200内部配置OSPF

3)配置BGP邻居关系

????????-开启BGP功能,进入AS

????????-配置Router-id

????????-配置邻居关系,指定邻居IP地址,指定邻居的AS号

4)在R4 和R5中注入路由

配置命令

R4的配置: 
 1)R4的接口配置: 
[R4]int g0/0/0
[R4-G0/0/0]ip add 192.168.14.4 24
[R4-G0/0/0]int lo0
[R4-LoopBack0]ip add 10.10.4.4 32

 2)R4的BGP配置: 
[R4]bgp 100
[R4-bgp]router-id 4.4.4.4
[R4-bgp]peer 192.168.14.1 as 200    //和R1建立外部邻居
[R4-bgp]network 10.10.4.4 32        //注入路由

 R1的配置: 
 1)R1的接口配置: 
[R1]int g0/0/0
[R1-G0/0/0]ip add 192.168.12.1 24
[R1-G0/0/0]int g0/0/1
[R1-G0/0/1]ip add 192.168.14.1 24

 2)R1的OSPF配置: 
[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]quit
[R1-ospf-1]quit

 3)R1的BGP配置: 
[R1]bgp 200  //开启BGP,配置AS200
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 192.168.14.4 as 100      //和R4建立外部邻居

[R1-bgp]peer 192.168.12.2 as 200      //和R2建立内部邻居
[R1-bgp]peer 192.168.12.2 next-hop-local   //修改下一跳

[R1-bgp]peer 192.168.23.3 as 200      //和R3建立内部邻居
[R1-bgp]peer 192.168.23.3 next-hop-local   //修改下一跳


 R2的配置: 
 1)R2的接口配置: 
[R2]int g0/0/0
[R2-G0/0/0]ip add 192.168.12.2 24
[R2-G0/0/0]int g0/0/1
[R2-G0/0/1]ip add 192.168.23.2 24

 2)R2的ospf配置: 
[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 192.168.23.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]quit

 3)R2的BGP配置: 
[R2]bgp 200
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 192.168.12.1 as 200    //和R1建立内部邻居
[R2-bgp]peer 192.168.23.3 as 200    //和R3建立内部邻居

 R3的配置: 
 1)R3的接口配置: 
[R3]int g0/0/0
[R3-G0/0/0]ip add 192.168.23.3 24
[R3-G0/0/0]int g0/0/1
[R3-G0/0/1]ip add 192.168.35.3 24

 2)R3的OSPF配置 
[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.23.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]quit
[R3-ospf-1]quit

 3)R3的BGP配置: 
[R3]bgp 200
[R3-bgp]router-id 3.3.3.3
[R3-bgp]peer 192.168.23.2 as 200    //和R2建立内部邻居
[R3-bgp]peer 192.168.23.2 next-hop-local  //修改下一跳

[R3-bgp]peer 192.168.12.1 as 200    //和R1建立内部邻居
[R3-bgp]peer 192.168.12.1 next-hop-local  //修改下一跳

[R3-bgp]peer 192.168.35.5 as 300    //和R5建立外部邻居


 R5的配置: 
 1)R5的接口配置: 
[R5]int g0/0/0
[R5-G0/0/0]ip add 192.168.35.5 24
[R5-G0/0/0]int lo0
[R5-LoopBack0]ip add 10.10.5.5 32

 2)R5的BGP配置: 
[R5]bgp 300
[R5-bgp]router-id 5.5.5.5
[R5-bgp]peer 192.168.35.3 as 200   //和R3建立外部邻居
[R5-bgp]network 10.10.5.5 32       //注入路由

 验证方法: 
1) <R2>dis ospf peer br      //在R2中查看ospf 邻居
2) <R1>ping 192.168.23.3     //在R1 ping  R3 通

3) <R1>dis bgp peer     //R1和R2 R3  R4 都是BGP邻居
 Peer            V   AS  MsgRcvd  MsgSent  OutQ  Up/Down       State     PrefRcv
 192.168.12.2    4   200    47      50     0     00:45:22    Established    0
 192.168.14.4    4   100    57      57     0     00:54:20    Established    1
 192.168.23.3    4   200    42      44     0     00:39:58    Established    1



 <R3>dis bgp peer      //R3和R1 R2  R5 都是BGP邻居
 Peer            V    AS   MsgRcvd  MsgSent  OutQ  Up/Down       State    PrefRcv
 192.168.12.1    4    200    48       48     0     00:45:14   Established    1
 192.168.23.2    4    200    47       48     0     00:45:42   Established    0
 192.168.35.5    4    300    42       43     0     00:39:08   Established    1 

 <R4>dis bgp routing-table     //所有的路由器都有这两条路由 
 *>   10.10.4.4/32       0.0.0.0         0                     0      i
 *>   10.10.5.5/32       192.168.14.1                          0      200 300i 


 <R4>ping -a 10.10.4.4  10.10.5.5      //可以通 

2、解析:修改下一跳: Next_Hop

1)始发路由器在给邻居传递BGP路由时,默认修改下一跳地址

1)在R4的始发路由器上注入路由10.10.4.4  下一跳为0.0.0.0
<R4>dis bgp routing-table 
       Network            NextHop        MED        LocPrf    PrefVal Path/Ogn
  *>   10.10.4.4/32        0.0.0.0          0                     0           i
  
 
 2)R1查看路由表,发现10.10.4.4的这条路由下一跳地址改为192.168.14.4
 <R1>display bgp routing-table
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn
 *>   10.10.4.4/32        192.168.14.4     0                     0      100 i
 
  备注:始发路由器在给邻居传递BGP路由时,默认修改下一跳地址,
                                   修改为和对端设备建立邻居的那个接口的IP地址 


2)从外部邻居哪里学来的路由,在传递给自己的内部邻居时,默认不修改下一跳地址

3)在R3中查看路由表,发现10.10.4.4的这条路由下一跳地址改为192.168.14.4
<R3>display bgp routing-table

      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn
   i  10.10.4.4/32       192.168.14.4    0          100        0      100 i
 
 备注:在R3中,我认为10.10.4.4 这条路由不是最优的,也不是有效的路由
      为什么?
      因为下一跳不可达,R3和下一跳地址192.168.14.4之间网络不可达
      
 为什么会出现这个问题?
      因为BGP路由器从外部邻居哪里学来的路由,在传递给自己的内部邻居时,默认不修改下一跳地址
      因为R1从外部邻居R4哪里学来的路由,在传递给内部邻居R3时,默认不修改下一跳地址
 
 如何解决这个问题:
      [R1]bgp 200
      [R1-bgp]peer 192.168.23.3 next-hop-local      //修改下一跳
      

3)外部邻居在传递路由的时候,默认修改下一跳地址

4)始发路由器在给邻居传递BGP路由时,默认修改下一跳地址

R4将BGP路由传递给EBGP邻居R1时,将该路由的下一跳地址设置为自己和R1建立邻居的那个接口IP地址:192.168.14.1

5)BGP路由器从外部邻居-EBGP邻居哪里学来的路由,在传递给自己的内部邻居-IBGP邻居时,默认不修改下一跳地址,会保持路由的下一跳地址不变

备注:所以R3收到R1发来的:10.10.4.0 这条路由后,发现这条路由不是有效的,为什么?

因为R3无法访问192.168.14.4 ,R3发现下一跳不可达,所以认为这条路由是无效的

解决方案:

3、为什么要使用loopback接口建立IBGP邻居关系

1、为什么IBGP邻居要使用loopback接口建立邻居

1)为什么IBGP邻居要用loopback 接口建立邻居呢?  因为用loopback接口建立邻居更加稳定和可靠
   使用物理接口的IP地址建立邻居,当物理接口和物理链路发送故障,BGP邻居就会down掉
   而使用loopback接口IP地址建立邻居,假设两台设备之间有3条物理链路,即便坏掉其中2条物理链路,
   即便只有1条物理链路互通,就可以保证BGP邻居的正常

[R1]bgp 100
[R1-bgp]peer 10.10.4.4 as 100   
[R1-bgp]peer 10.10.4.4  connect-interface LoopBack 0  

  //和R4 建立邻居的时候,使用lo0的接口IP地址(10.10.1.1),作为报文的源IP址、

    为什么?因为
    因为对端设备R4在配置BGP命令的时候写的是 peer 10.10.1.1 
    所以,只有报文的源IP是10.10.1.1 的时候,对方才会和你建立会话
  通过使用loopback 接口建立IBGP邻居,发现邻居真的建立成功来
    这个解决方案叫什么: 叫做更新源检测机制
    
    为什么一开始使用物理接口的IP地址,无法建立BGP邻居呢,因为BGP有更新源检测机制
    只有TCP报文的源IP地址,是我peer 后面写的地址,我才会和你建立邻居
  BGP设备会检测报文的源IP地址,所以叫做更新源检测机制
  
 2、更新源检测机制 
-当使用逻辑接口,建立IBGP时,需要考虑,更新源检查机制
-R1和R3建立IBGP邻居关系时,如果是使用loopback 接口建立邻居关系,
就要告诉路由器使用loopback接口的IP地址,封装BGP报文

4、EBGP邻居可以使用loopback 接口建立邻居吗?

sysname R1

interface GigabitEthernet0/0/1

ip address 192.168.13.1 255.255.255.0

#

interface LoopBack0

ip address 10.10.1.1 255.255.255.255

#

bgp 100

router-id 1.1.1.1

peer 10.10.3.3 as-number 200

peer 10.10.3.3 ebgp-max-hop 10

peer 10.10.3.3 connect-interface LoopBack0

ip route-static 10.10.3.3 255.255.255.255 192.168.13.3

sysname R3

#

interface GigabitEthernet0/0/0

ip address 192.168.13.3 255.255.255.0

#

interface LoopBack0

ip address 10.10.3.3 255.255.255.255

#

bgp 200

router-id 2.2.2.2

peer 10.10.1.1 as-number 100

peer 10.10.1.1 ebgp-max-hop 10

peer 10.10.1.1 connect-interface LoopBack0

#

ip route-static 10.10.1.1 255.255.255.255 192.168.13.1

EBGP邻居之间使用loopback 接口无法建立外部邻居

邻居状态是idle 状态,根本没有建立TCP会话,为什么?

因为三层不能互通, 10.10.1.1 和10.10.3.3 不通

所以我们在R1和R3中写静态路由,实现三层通信

邻居状态是active 状态,依然无法建立BGP邻居,为什么?

因为有更新源检测机制,TCP会话依然无法建立

我们在配置BGP邻居的时候,在指定用loopback接口建立邻居-发open报文来,发keeplive报文来,

但是最后发现错误,邻居又跳转回idle 状态来,为什么?

因为抓包发现,BGP的报文中,TTL值为1 当经过一台路由器转发的时候,TTL值减去1

当TTL值为0的时候,报文被丢弃,所以依然无法建立BGP邻居关系

为什么会这样,因为BGP有直连检测机制

BGP要求,凡是建立EBGP邻居的路由器,必须使用直连网段,使用物理接口的IP地址,建立邻居

为什么会有这种要求: 因为EBGP要求稳定性和可靠性, 使用直连网段,使用物理接口建立邻居,

BGP路由器能够感知到链路故障, 能够及时作出调整,如果用非直连网段建立EBGP邻居

路由器无法实时且有效的感知到网络故障

EBGP可以不可以也使用loopback接口建立邻居, 我们不怕不可靠,我们只想用loopback建立外部邻居,

行不行,也行, 那就需要更改设置,用不常规的手段来突破BGP的直连检测机制

怎么突破,修改TTL值,默认为1 ,改为200 改为100 改为50

五、BGP通告原则

BGP通告原则之一 : 仅将自己最优的路由发布给邻居

????????????????????????????????说人话:BGP路由器只会将自己认为最好的路由传递给自己的邻居

BGP通告原则之二 : 通过EBGP获得的最优路由发布给所有BGP邻居

????????????????????????????????说人话:从外部邻居学来的路由,会传递给自己所有的邻居

BGP通告原则之三 : 通过IBGP获得的最优路由不会发布给其他的IBGP邻居

????????????????????????????????说人话:BGP路由器从内部邻居学来的路由不会再传递自己的内部邻居

????????????????????????????????????????这叫内内不相传: 也就是传说中的IBGP水平分割

????????????????????????????????????????为什么IBGP要这么搞,防止路由环路

BGP通告原则之四:IGP和BGP不同步(华为默认不同步)

六、IBGP水平分割

1、IBGP水平分割

拓扑

需求

实现R4的10.10.4.4 和R5的10.10.5.5互通

思路1:R4和R1建立EBGP邻居 (外部的EBGP邻居)

思路2:R3和R5建立EBGP邻居 (外部的EBGP邻居)

思路3:AS200内部的R1-R2-R3配置ospf-建立ospf邻居关系

思路5:R1和R2建立IBGP邻居 (内部的IBGP邻居)

思路6:R2和R3建立IBGP邻居 (内部的IBGP邻居)

思路4:R1和R3建立IBGP邻居 (内部的IBGP邻居)

思路7:在R4和R5中注入路由

配置步骤

1)配置路由器的接口IP地址

2)在AS200内部配置OSPF

3)配置BGP邻居关系

4)在R4 和R5中注入路由

配置命令

R4的配置: 
 1)R4的接口配置: 
[R4]int g0/0/0
[R4-G0/0/0]ip add 192.168.14.4 24
[R4-G0/0/0]int lo0
[R4-LoopBack0]ip add 10.10.4.4 32

 2)R4的BGP配置: 
[R4]bgp 100
[R4-bgp]router-id 4.4.4.4
[R4-bgp]peer 192.168.14.1 as 200    //和R1建立外部邻居
[R4-bgp]network 10.10.4.4 32        //注入路由

 R1的配置: 
 1)R1的接口配置: 
[R1]int g0/0/0
[R1-G0/0/0]ip add 192.168.12.1 24
[R1-G0/0/0]int g0/0/1
[R1-G0/0/1]ip add 192.168.14.1 24

 2)R1的OSPF配置: 
[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]quit
[R1-ospf-1]quit

 3)R1的BGP配置: 
[R1]bgp 200  //开启BGP,配置AS200
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 192.168.14.4 as 100      //和R4建立外部邻居

[R1-bgp]peer 192.168.12.2 as 200      //和R2建立内部邻居
[R1-bgp]peer 192.168.12.2 next-hop-local   //修改下一跳

[R1-bgp]peer 192.168.23.3 as 200      //和R3建立内部邻居
[R1-bgp]peer 192.168.23.3 next-hop-local   //修改下一跳


 R2的配置: 
 1)R2的接口配置: 
[R2]int g0/0/0
[R2-G0/0/0]ip add 192.168.12.2 24
[R2-G0/0/0]int g0/0/1
[R2-G0/0/1]ip add 192.168.23.2 24

 2)R2的ospf配置: 
[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 192.168.23.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]quit

 3)R2的BGP配置: 
[R2]bgp 200
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 192.168.12.1 as 200    //和R1建立内部邻居
[R2-bgp]peer 192.168.23.3 as 200    //和R3建立内部邻居

 R3的配置: 
 1)R3的接口配置: 
[R3]int g0/0/0
[R3-G0/0/0]ip add 192.168.23.3 24
[R3-G0/0/0]int g0/0/1
[R3-G0/0/1]ip add 192.168.35.3 24

 2)R3的OSPF配置 
[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.23.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]quit
[R3-ospf-1]quit

 3)R3的BGP配置: 
[R3]bgp 200
[R3-bgp]router-id 3.3.3.3
[R3-bgp]peer 192.168.23.2 as 200    //和R2建立内部邻居
[R3-bgp]peer 192.168.23.2 next-hop-local  //修改下一跳

[R3-bgp]peer 192.168.12.1 as 200    //和R1建立内部邻居
[R3-bgp]peer 192.168.12.1 next-hop-local  //修改下一跳

[R3-bgp]peer 192.168.35.5 as 300    //和R5建立外部邻居


 R5的配置: 
 1)R5的接口配置: 
[R5]int g0/0/0
[R5-G0/0/0]ip add 192.168.35.5 24
[R5-G0/0/0]int lo0
[R5-LoopBack0]ip add 10.10.5.5 32

 2)R5的BGP配置: 
[R5]bgp 300
[R5-bgp]router-id 5.5.5.5
[R5-bgp]peer 192.168.35.3 as 200   //和R3建立外部邻居
[R5-bgp]network 10.10.5.5 32       //注入路由


 <R4>ping -a 10.10.4.4  10.10.5.5      //可以通 

思考-IBGP水平分割

????????R1和R2建立IBGP邻居了

????????R2和R3也建立IBGP邻居了

????????既然在AS200内部:R1和R2和R3都已经逐跳建立了IBGP邻居了

????????那么R1和R3是不是就没有必要在做IBGP邻居了

????????我们把R1和R3的邻居关系删除,看看会怎么样

R1配置:在R1中删除和R3的邻居关系
[R1]bgp 200
[R1-bgp]undo peer 192.168.23.3


R3的配置:在R3中删除和R1的邻居关系
[R3]bgp 200
[R3-bgp]undo peer 192.168.12.1



删除R1和R3的邻居关系后
发现网络不通了,为什么?

发现R4中没有去往10.10.5.5 的路由了
发现R5中没有去往10.10.4.4 的路由了为什么没有路由呢?

因为R2从R1哪里学来的路由,不会传递给R3
因为R2从R3哪里学来的路由,不会传递给R1

为什么会这样?  因为IBGP水平分割,内内不相传

如果解决这个问题呢?   IBGP全互联
什么是IBGP全互联:
在AS200内,所有的路由都会和所有的路由建立邻居
即:R1和R2建立邻居
   R2和R3建立邻居
   R1和R3建立邻居
   

七、如何突破IBGP水平分割机制

1、BGP通告原则之三 :IBGP水平分割

????????通过IBGP获得的最优路由不会发布给其他的IBGP邻居

????????说人话:BGP路由器从内部邻居学来的路由不会再传递自己的内部邻居

????????这叫内内不相传: 也就是传说中的IBGP水平分割

????????为什么IBGP要这么搞,防止路由环路

????????作用:解决IBGP内部路由环路问题

2、突破IBGP水平分割的限制

1) IBGP全互联

2) 路由反射器

3)BGP联盟

4)静态路由···· 在OSPF中引入BGP···· MPLS·····

3、IBGP全互联

拓扑

需求

使用IBGP全互联,实现全网互联互通

配置命令

 sysname R6 
#
interface GigabitEthernet0/0/0
 ip address 192.168.16.6 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.6.6 255.255.255.255 
#
bgp 100
 router-id 6.6.6.6
 peer 192.168.16.1 as-number 300 
 network 10.10.6.6 255.255.255.255
 
 
 sysname R1 
#
interface GigabitEthernet0/0/0
 ip address 192.168.16.1 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.12.1 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.1.1 255.255.255.255 
#
bgp 300
 router-id 1.1.1.1
 peer 10.10.2.2 as-number 300 
 peer 10.10.2.2 connect-interface LoopBack0
 peer 10.10.3.3 as-number 300 
 peer 10.10.3.3 connect-interface LoopBack0
 peer 10.10.4.4 as-number 300 
 peer 10.10.4.4 connect-interface LoopBack0
 peer 10.10.5.5 as-number 300 
 peer 10.10.5.5 connect-interface LoopBack0
 peer 192.168.16.6 as-number 100 
 peer 10.10.2.2 next-hop-local 
 peer 10.10.3.3 next-hop-local 
 peer 10.10.4.4 next-hop-local 
 peer 10.10.5.5 next-hop-local 

#
ospf 1 router-id 1.1.1.1 
 area 0.0.0.0 
  network 10.10.1.1 0.0.0.0 
  network 192.168.12.0 0.0.0.255 
  
  
 sysname R2 
#
interface GigabitEthernet0/0/0
 ip address 192.168.12.2 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.23.2 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.2.2 255.255.255.255 
#
bgp 300
 router-id 2.2.2.2
 peer 10.10.1.1 as-number 300 
 peer 10.10.1.1 connect-interface LoopBack0
 peer 10.10.3.3 as-number 300 
 peer 10.10.3.3 connect-interface LoopBack0
 peer 10.10.4.4 as-number 300 
 peer 10.10.4.4 connect-interface LoopBack0
 peer 10.10.5.5 as-number 300 
 peer 10.10.5.5 connect-interface LoopBack0
#
ospf 1 router-id 2.2.2.2 
 area 0.0.0.0 
  network 10.10.2.2 0.0.0.0 
  network 192.168.12.0 0.0.0.255 
  network 192.168.23.0 0.0.0.255 
  
  sysname R3 
#
interface GigabitEthernet0/0/0
 ip address 192.168.23.3 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.34.3 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.3.3 255.255.255.255 
#
bgp 300
 router-id 3.3.3.3
 peer 10.10.1.1 as-number 300 
 peer 10.10.1.1 connect-interface LoopBack0
 peer 10.10.2.2 as-number 300 
 peer 10.10.2.2 connect-interface LoopBack0
 peer 10.10.4.4 as-number 300 
 peer 10.10.4.4 connect-interface LoopBack0
 peer 10.10.5.5 as-number 300 
 peer 10.10.5.5 connect-interface LoopBack0
#
ospf 1 router-id 3.3.3.3 
 area 0.0.0.0 
  network 10.10.3.3 0.0.0.0 
  network 192.168.23.0 0.0.0.255 
  network 192.168.34.0 0.0.0.255  
  
 sysname R4 
#
interface GigabitEthernet0/0/0
 ip address 192.168.34.4 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.45.4 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.4.4 255.255.255.255 
#
bgp 300
 router-id 4.4.4.4
 peer 10.10.1.1 as-number 300 
 peer 10.10.1.1 connect-interface LoopBack0
 peer 10.10.2.2 as-number 300 
 peer 10.10.2.2 connect-interface LoopBack0
 peer 10.10.3.3 as-number 300 
 peer 10.10.3.3 connect-interface LoopBack0
 peer 10.10.5.5 as-number 300 
 peer 10.10.5.5 connect-interface LoopBack0
#
ospf 1 router-id 4.4.4.4 
 area 0.0.0.0 
  network 10.10.4.4 0.0.0.0 
  network 192.168.34.0 0.0.0.255 
  network 192.168.45.0 0.0.0.255  
  
 
  sysname R5 
#
interface GigabitEthernet0/0/0
 ip address 192.168.45.5 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.57.5 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.5.5 255.255.255.255 
#
bgp 300
 router-id 5.5.5.5
 peer 10.10.1.1 as-number 300 
 peer 10.10.1.1 connect-interface LoopBack0
 peer 10.10.2.2 as-number 300 
 peer 10.10.2.2 connect-interface LoopBack0
 peer 10.10.3.3 as-number 300 
 peer 10.10.3.3 connect-interface LoopBack0
 peer 10.10.4.4 as-number 300 
 peer 10.10.4.4 connect-interface LoopBack0
 peer 192.168.57.7 as-number 200 
 peer 10.10.1.1 next-hop-local 
 peer 10.10.2.2 next-hop-local 
 peer 10.10.3.3 next-hop-local 
 peer 10.10.4.4 next-hop-local 
#
ospf 1 router-id 5.5.5.5 
 area 0.0.0.0 
  network 10.10.5.5 0.0.0.0 
  network 192.168.45.0 0.0.0.255 
  
  
  
 sysname R7 
#
interface GigabitEthernet0/0/0
 ip address 192.168.57.7 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.7.7 255.255.255.255 
#
bgp 200
 router-id 7.7.7.7
 peer 192.168.57.5 as-number 300 
 network 10.10.7.7 255.255.255.255 
 
 
 

八、BGP联盟和路由反射器

1、全互联的弊端:

-但是全互联太麻烦了

1)全互联的不足

????????-邻居关系数量太多,增加设备资源的消耗

2、路由反射器RR

反射器角色

????????1) 路由反射器:Route Reflector:

????????????????允许把从IBGP对等体学到的路由反射到其他IBGP对等体的BGP设备

????????2) 客户机:Client:与RR形成反射邻居关系的IBGP设备,在AS内部客户机只需要与RR直连

????????3) 非客户机:non-client:既不是RR也不是客户机的IBGP设备

????????4)始发者:Originator:在AS内部始发路由的设备。

????????????????Originator_ID属性用于防止集群内产生路由环路。

????????5)集群:Cluster:路由反射器及其客户机的集合。

????????????????Cluster_List属性用于防止集群间产生路由环路。

反射器原理

客户机只需要与反射器建立IBGP邻居,客户机之间不需要建立邻居,减少了邻居关系的数量,通过RR将自身学习到的路由反射给邻居,实现路由的传递;

反射器通过命令指定自己的客户弃,客户机不知道谁是反射器,只有反射器知道谁是客户机,没有指定为客户机的路由器,就是非客户机

反射器打破了水平分割的限制,让IBGP邻居之前路由可以传递,不需要改变原有拓扑结构,配置简单,较为常用

反射原则

RR从客户学到的路由,会反射给客户和非客户

RR从非客户学到的路由,会反射给客户

RR从EBGP邻居学到的路由,会反射给客户机和非客户机

RR从非客户机学到的路由不会在反射给非客户机,(非非不反射

规则一

从非客户机学到的路由,会发布给EBGP邻居,会反射给客户机。

但是不会反射给另外一个非客户机

规则二

从客户机学到的路由,会发布给EBGP邻居

会反射给所有非客户机和客户机(发起此路由的客户机除外)。

规则三

从EBGP邻居学到的路由,发布给所有的非客户机和客户机

注意此处“反射”和“发送”的区别“发送”指的是传统情况下(相当于RR不存在的场景下)的BGP路由传递行为,而“反射”指的是遵循路由反射规则的情况下,RR执行的路由传递动作,被反射出去的路由会被RR插入特殊的路径属性

规则四

1)路由反射器配置(在出现水平分割的设备上配置路由反射器)

R4的配置 
bgp 64513
 router-id 4.4.4.4
  peer 10.10.3.3 reflect-client    //指定客户端
 peer 10.10.5.5 reflect-client    //指定客户端

3、BGP联盟

1)什么是BGP联盟呢?

????????-将一个大的AS系统,划分成多个小的AS系统

????????-联盟AS: 和外部建立邻居时使用的公有AS号,对外,联盟AS是一个独立的AS号

????????-子AS: 一个联盟AS内,可以包含多个子AS , 子AS之间是EBGP的邻居关系

每个子AS内部都是全互联IBGP邻居关系

2)联盟示意图

3)联盟的特点:

????????—简化了AS内部的IBGP邻居关系

????????—降低了AS内部网络设备的CPU的负担

????????—适用于大型的网络规模

4、路由反射器和联盟的比较

路由反射器联盟
不需要更改现有的网络拓扑,兼容性好。需要改变逻辑拓扑。
配置方便,只需要对作为反射器的设备进行配置,客户机并不需要知道自己是客户机。所有设备需要重新进行配置。
集群与集群之间仍然需要全连接。联盟的子AS之间是特殊的EBGP连接,不需要全连接。
适用于中、大规模网络。适用于大规模网络。

5、RR反射器实验

拓扑

需求

????????1)实现AS100内的10.10.6.6 和AS200内的10.10.7.7互联互通

配置步骤

????????配置接口IP地址

????????部署EBGP邻居

????????AS300内部部署OSPF

????????AS300内部部署IBGP

????????AS300内部部署RR-路由反射器

配置

sysname R6 
#
interface GigabitEthernet0/0/0
 ip address 192.168.16.6 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.6.6 255.255.255.255 
#
bgp 100
 router-id 6.6.6.6
 peer 192.168.16.1 as-number 300 
 network 10.10.6.6 255.255.255.255 

 sysname R1 
#
interface GigabitEthernet0/0/0
 ip address 192.168.16.1 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.12.1 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.1.1 255.255.255.255 
#
bgp 300
 router-id 1.1.1.1
 peer 10.10.2.2 as-number 300 
 peer 10.10.2.2 connect-interface LoopBack0
 peer 192.168.16.6 as-number 100 
 peer 10.10.2.2 next-hop-local 
#
ospf 1 router-id 1.1.1.1 
 area 0.0.0.0 
  network 10.10.1.1 0.0.0.0 
  network 192.168.12.0 0.0.0.255  

 sysname R2 
#
interface GigabitEthernet0/0/0
 ip address 192.168.12.2 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.23.2 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.2.2 255.255.255.255 
#
bgp 300
 router-id 2.2.2.2
 peer 10.10.1.1 as-number 300 
 peer 10.10.1.1 connect-interface LoopBack0
 peer 10.10.3.3 as-number 300 
 peer 10.10.3.3 connect-interface LoopBack0
 peer 10.10.3.3 reflect-client 
#
ospf 1 router-id 2.2.2.2 
 area 0.0.0.0 
  network 10.10.2.2 0.0.0.0 
  network 192.168.12.0 0.0.0.255 
  network 192.168.23.0 0.0.0.255 
  
 sysname R3 
#
interface GigabitEthernet0/0/0
 ip address 192.168.23.3 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.34.3 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.3.3 255.255.255.255 
#
bgp 300
 router-id 3.3.3.3
 peer 10.10.2.2 as-number 300 
 peer 10.10.2.2 connect-interface LoopBack0
 peer 10.10.4.4 as-number 300 
 peer 10.10.4.4 connect-interface LoopBack0
 peer 10.10.4.4 reflect-client
#
ospf 1 router-id 3.3.3.3 
 area 0.0.0.0 
  network 10.10.3.3 0.0.0.0 
  network 192.168.23.0 0.0.0.255 
  network 192.168.34.0 0.0.0.255 
  
 sysname R4 
#
interface GigabitEthernet0/0/0
 ip address 192.168.34.4 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.45.4 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.4.4 255.255.255.255 
#
bgp 300
 router-id 4.4.4.4
 peer 10.10.3.3 as-number 300 
 peer 10.10.3.3 connect-interface LoopBack0
 peer 10.10.5.5 as-number 300 
 peer 10.10.5.5 connect-interface LoopBack0
 peer 10.10.5.5 reflect-client
#
ospf 1 router-id 4.4.4.4 
 area 0.0.0.0 
  network 10.10.4.4 0.0.0.0 
  network 192.168.34.0 0.0.0.255 
  network 192.168.45.0 0.0.0.255  
  
 sysname R5 
#
interface GigabitEthernet0/0/0
 ip address 192.168.45.5 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.57.5 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.5.5 255.255.255.255 
#
bgp 300
 router-id 5.5.5.5
 peer 10.10.4.4 as-number 300 
 peer 10.10.4.4 connect-interface LoopBack0
 peer 192.168.57.7 as-number 200 
 peer 10.10.4.4 next-hop-local 
#
ospf 1 router-id 5.5.5.5 
 area 0.0.0.0 
  network 10.10.5.5 0.0.0.0 
  network 192.168.45.0 0.0.0.255 
 
 
 验证:
 R6: ping  -a  10.10.6.6 10.10.7.7  

5、BGP联盟和路由器反射器实验

1)拓扑

2)需求:

????????实现10.10.6.6/24 和 10.10.7.7/24的通信

3)配置思路:

????????--配置接口地址

????????--配置AS300内的OSPF

????????--配置EBGP邻居

????????--配置IBGP邻居

????????--配置BGP联盟

????????--配置BGP反射器

4)配置命令

sysname R6 
#
interface GigabitEthernet0/0/0
 ip address 192.168.16.6 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.6.6 255.255.255.255 
#
bgp 100
 router-id 6.6.6.6
 peer 192.168.16.1 as-number 300 
 network 10.10.6.6 255.255.255.255 

  
 sysname R1 
#
interface GigabitEthernet0/0/0
 ip address 192.168.16.1 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.12.1 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.1.1 255.255.255.255 
#
bgp 65001
 router-id 1.1.1.1
 confederation id 300
 peer 10.10.2.2 as-number 65001 
 peer 10.10.2.2 connect-interface LoopBack0
 peer 10.10.2.2 next-hop-local 
 peer 192.168.16.6 as-number 100 

#
ospf 1 router-id 1.1.1.1 
 area 0.0.0.0 
  network 10.10.1.1 0.0.0.0 
  network 192.168.12.0 0.0.0.255 
  
 sysname R2 
 #
interface GigabitEthernet0/0/0
 ip address 192.168.12.2 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.23.2 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.2.2 255.255.255.255 
#
bgp 65001
 router-id 2.2.2.2
 confederation id 300
 confederation peer-as 65002
 peer 10.10.1.1 as-number 65001 
 peer 10.10.1.1 connect-interface LoopBack0
 peer 192.168.23.3 as-number 65002 

#
ospf 1 router-id 2.2.2.2 
 area 0.0.0.0 
  network 10.10.2.2 0.0.0.0 
  network 192.168.12.0 0.0.0.255 
  network 192.168.23.0 0.0.0.255  
  
  
 sysname R3 
#
interface GigabitEthernet0/0/0
 ip address 192.168.23.3 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.34.3 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.3.3 255.255.255.255 
#
bgp 65002
 router-id 3.3.3.3
 confederation id 300
 confederation peer-as 65001
 peer 10.10.4.4 as-number 65002 
 peer 10.10.4.4 connect-interface LoopBack0
 peer 192.168.23.2 as-number 65001 
#
ospf 1 router-id 3.3.3.3 
 area 0.0.0.0 
  network 10.10.3.3 0.0.0.0 
  network 192.168.23.0 0.0.0.255 
  network 192.168.34.0 0.0.0.255 
  
 
 sysname R4 
#
interface GigabitEthernet0/0/0
 ip address 192.168.34.4 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.45.4 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.4.4 255.255.255.255 
#
bgp 65002
 router-id 4.4.4.4
 confederation id 300
 peer 10.10.3.3 as-number 65002 
 peer 10.10.3.3 connect-interface LoopBack0
 peer 10.10.5.5 as-number 65002 
 peer 10.10.5.5 connect-interface LoopBack0
  peer 10.10.5.5 reflect-client 
#
ospf 1 router-id 4.4.4.4 
 area 0.0.0.0 
  network 10.10.4.4 0.0.0.0 
  network 192.168.34.0 0.0.0.255 
  network 192.168.45.0 0.0.0.255 
  
 sysname R5 
#
interface GigabitEthernet0/0/0
 ip address 192.168.45.5 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.57.5 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.5.5 255.255.255.255 
#
bgp 65002
 router-id 5.5.5.5
 confederation id 300
 peer 10.10.4.4 as-number 65002 
 peer 10.10.4.4 connect-interface LoopBack0
 peer 192.168.57.7 as-number 200 
 peer 10.10.4.4 next-hop-local 

#
ospf 1 router-id 5.5.5.5 
 area 0.0.0.0 
  network 10.10.5.5 0.0.0.0 
  network 192.168.45.0 0.0.0.255 
  
 sysname R7 
#
interface GigabitEthernet0/0/0
 ip address 192.168.57.7 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.7.7 255.255.255.255 
#
bgp 200
 router-id 7.7.7.7
 peer 192.168.57.5 as-number 300 
 network 10.10.7.7 255.255.255.255 
 
 
 验证:在R6中验证 
ping  -a   10.10.6.6  10.10.7.7
 

6、路由反射器防止环路

1)路由反射器突破水平分割限制可能导致环路发生:RR的设定使得IBGP水平分割原则失效,这就可能导致环路的产生,为此RR会为BGP路由添加两个特殊的路径属性来避免出现环路:

2)路由反射器如何防止环路:

Originator_ID:始发者ID属性,属性用于防止集群内产生路由环路

Cluster_List:簇列表属性,属性用于防止集群间产生路由环路

Originator_ID、Cluster_List属性都属于可选非过渡类型

3)Originator ID属

?RR将一条BGP路由进行反射时会在反射出去的路由中增加Originator_ID,其值为本地AS中通告该路由的BGP路由器Router ID。

?若AS内存在多个RR,则Originator_ID属性由第一个RR创建,并且不被后续的RR所更改。

当BGP路由器收到一条携带Originator_ID属性的IBGP路由,并且Originator_ID属性值与自身的Router ID相同,则它不会学习该路由

4)路由反射簇 (Cluster)

?路由反射簇包括反射器RR及其Client。一个AS内允许存在多个路由反射簇(如下图)。

?每一个簇都有唯一的簇ID(Cluster_ID,默认为RR的BGP Router ID )。

?当一条路由被反射器反射后,该RR(该簇)的Cluster_ID就会被添加至路由的Cluster_list属性中。

当RR收到一条携带Cluster_list属性的BGP路由,且该属性值中包含该簇的Cluster_ID时,RR认为该条路由存在环路,因此将忽略关于该条路由的更新

5)Cluster_List

?R2发送给R1的路由,经过R1反射给R3时除了添加Originator_ID之外还会添加Cluster_List:10.0.1.1。R3再次反射给R4时, Cluster_List值为:10.0.3.3 10.0.1.1,R4再次反射给R1时Cluster_List值为:10.0.4.4 10.0.3.3 10.0.1.1。

当R4将路由反射给R1时,R1发现Cluster_List包含了自身Cluster_ID,判断存在环路,从而不学习该路由

6)抓包:分析反射器

ORIGINATOR_ID :(始发者ID):这个字段的值时始发者路由器的router-id

作用:在一个集群内防止路由环路

CLUSTER_LIST: 簇列表里面的内容是RR路由反射器的router-id )

作用:是在集群与集群之间防止路由环路

九、BGP属性

在BGP路由表中,到达同一目的地可能存在多条路由,为了选出最佳路由,会根据BGP的路由优选规则依次比较路由的BGP属性。

1、BGP属性分类

1)公认必遵:

????????--所有BGP设备都可以识别此类属性,

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

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

列举属性:

????????--Origin属性:定义路径信息的来源

????????--AS_path属性:按顺序记录一条路由从源地址到目的地址所经过的AS编号

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

2)公认任意

????????--所有BGP设备都可以识别此类属性

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

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

列举属性:

????????Local_Pref属性

3)可选过渡

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

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

列举属性:

????????Community:团体属性

4)可选非过渡

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

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

列举属性:

MED属性

????????--所有BGP设备都可以识别此类属性,

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

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

2、公认必遵属性解析:

Next_Hop属性:

?该属性是一个公认必遵属性,用于指定到达目标网络的下一跳地址。

?当路由器学习到BGP路由后,需对BGP路由的下一跳(Next_Hop)属性进行检查,必须保证下一跳可达,如果下一跳不可达,则表示这条BGP路由不可用。

?Next_Hop属性值的设置规则:

?BGP路由器在向EBGP邻居发路由时,会把该路由信息的下一跳地址设置为本端与对端建立BGP邻居关系的使用的那个接口IP地址

?BGP路由器将本地始发路由发给IBGP邻居时,会把该路由信息的下一跳属性设置为本端与对端建立BGP邻居关系的接口IP地址。

?路由器在收到EBGP邻居发来的BGP路由后,在将路由传递给自己的IBGP邻居时,会保持路由的下一跳地址(Next_Hop属性值)不变

?如果路由器收到某条BGP路由,该路由的Next_Hop属性值与EBGP对等体属于同一网段,那么该条路由的Next_Hop地址将保持不变并传递给它的BGP对等体。

1)EBGP邻居发路由时,会把该路由信息的下一跳地址设置为本端与对端建立BGP邻居关系的使用的那个接口IP地址。如图:

2)BGP路由器将本地始发路由发给IBGP邻居时,会把该路由信息的下一跳属性设置为本端与对端建立BGP邻居关系的接口IP地址。

3)路由器在收到EBGP邻居发来的BGP路由后,在将路由传递给自己的IBGP邻居时,会保持路由的下一跳地址(Next_Hop属性值)不变。

4)如果路由器收到某条BGP路由,该路由的Next_Hop属性值与EBGP对等体属于同一网段,那么该条路由的Next_Hop地址将保持不变并传递给它的BGP对等体。

5)修改Next_hop属性

使用peer next-hop-local命令可以在设置向IBGP对等体发路由时,把下一跳属性设为本端设备与对端设备建立BGP邻居时用的那个接口IP地址

AS_path属性

按顺序记录一条路由从源地址到目的地址所经过的AS编号

解析:

AS_Path: AS路径

NLRI:(Network Layer Reachability Information )网络层可达信息: (就是路由)

1)AS_Path 解析:

该属性为公认必遵属性,是前往目标网络的路由经过的AS号列表;

作用:防止EBGP邻居之间的环路;还可以做路由优选;

路由在被通告给EBGP邻居时,路由器会在该路由的AS_Path中写上本地的AS号;路由被通告给IBGP对等体时,AS_Path不会发生改变。

2)AS_Path防止EBGP邻居间的环路

3)备注:AS_Path 属性可以防止EBGP邻居间的环路:

R1从R4收到的BGP路由更新中AS_Path属性数值为:400 300 200 100,存在自身AS号,不接收该路由,从而防止了路由环路的产生。

4)AS_Path路由优选

AS_Path的重要作用之一便是影响BGP路由的优选,在上图中,R5同时从R2及R4学习到去往10.0.1.0/24网段的BGP路由,在其他条件相同的情况下,R5会优选R2通告的路由,因为该条路由的AS_Path属性值较短,也即AS号的个数更少

5)AS_Path类型

AS_SEQENCE :有序类型

AS_SET :无序类型

Origin属性

?该属性为公认必遵属性,它标识了BGP路由的起源。如上表所示,根据路由被引入BGP的方式不同,存在三种类型的Origin。

?当去往同一个目的地存在多条不同Origin属性的路由时,在其他条件都相同的情况下,BGP将按如Origin的下顺序优选路由:IGP > EGP > Incomplete。

3、公认任意属性

Local_Preference属性

????????-即本地优先级属性,是公认任意属性,可以用于告诉AS中的路由器,哪条路径是离开本AS的首选路径。

????????-Local_Preference属性值越大则BGP路由越优。缺省的Local_Preference值为100。

????????-该属性只能被传递给IBGP对等体,而不能传递给EBGP对等体

2)Local_Preference字段解析

Local_Preference为200的BGP路由优于Local_Preference为100的BGP路由,

?Local_Preference属性只能在IBGP对等体间传递(除非做了策略否则Local_Preference值在IBGP对等体间传递过程中不会丢失),而不能在EBGP对等体间传递,如果在EBGP对等体间收到的路由的路径属性中携带了Local_Preference,则会进行错误处理。

?但是可以在AS边界路由器上使用Import方向的策略来修改Local_Preference属性值。也就是在收到路由之后,在本地为路由赋予Local_Preference。

?路由器在向其EBGP对等体发送路由更新时,不能携带Local_Preference属性,但是对方接收路由之后,会在本地为这条路由赋一个缺省Local_Preference值(100),然后再将路由传递给自己的IBGP对等体。

本地使用network命令及import-route命令引入的路由, Local_Preference为缺省值100,并能在AS内向其他IBGP对等体传递,传递过程中除非受路由策略影响,否则Local_Preference不变

1)在BGP路由表中查看Local_Preference

4、可选过渡属性

Community属性:团体属性

团体属性为可选过渡属性,是一种路由标记,用于简化路由策略的执行

5、可选非过渡属性

MED属性:

?MED(Multi-Exit Discriminator,多出口鉴别器)是可选非过渡属性,是一种度量值,用于向外部对等体指出进入本AS的首选路径,即当进入本AS的入口有多个时,AS可以使用MED动态地影响其他AS选择进入的路径。

?MED属性值越小则BGP路由越优。

MED主要用于在AS之间影响BGP的选路。MED被传递给EBGP邻居后,在邻居的AS内传递路由时,携带该MED值,如果再要将路由再传递给其他的EBGP邻居时时,缺省不会携带MED属性

?缺省情况下,路由器只比较来同一个AS的路由MED值,也就是说,两条路由的起源AS号不相同,默认不比较MED值

?一台BGP路由器将路由通告给EBGP对等体时,是否携带MED属性,需要根据以下条件进行判断(不对EBGP对等体使用策略的情况下):

?如果该BGP路由是本地始发(本地通过network或import-route命令引入)的,则缺省携带MED属性发送给EBGP对等体。

?如果该BGP路由为从BGP对等体学习到,那么该路由传递给EBGP对等体时缺省不会携带MED属性。

?在IBGP对等体之间传递路由时,MED值会被保留并传递,除非部署了策略,否则MED值在传递过程中不发生改变也不会丢失。

Originator ID属性:

?RR将一条BGP路由进行反射时会在反射出去的路由中增加Originator_ID,其值为本地AS中通告该路由的BGP路由器Router ID。

?若AS内存在多个RR,则Originator_ID属性由第一个RR创建,并且不被后续的RR所更改。

当BGP路由器收到一条携带Originator_ID属性的IBGP路由,并且Originator_ID属性值与自身的Router ID相同,则它不会学习该路由

Cluster_List: 属性

?R2发送给R1的路由,经过R1反射给R3时除了添加Originator_ID之外还会添加Cluster_List:10.0.1.1。R3再次反射给R4时, Cluster_List值为:10.0.3.3 10.0.1.1,R4再次反射给R1时Cluster_List值为:10.0.4.4 10.0.3.3 10.0.1.1。

当R4将路由反射给R1时,R1发现Cluster_List包含了自身Cluster_ID,判断存在环路,从而不学习该路由

十、BGP选路规则

1、BGP选路原则

丢弃下一跳不可达的路由

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

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

3)比较:是本地始发的路由,还是从对等体学来的路由, 本地始发的BGP路由优于从其他对等体学习到的路由,本地始发的路由优先级:优选手动聚合>自动聚合>network>import>从对等体学到的。

4)比较“as-path” 属性-as号越短越好

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

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

7)比较EBGP邻居优先于IBGP邻居,-EBGP路由优先级高于IBGP路由

8)比较“去往BGP路由的下一跳IP地址”的cost开销值-越小越好

????????—如果前面8条选路规则无法选出最优的路由,我们就可以做负载均衡了

????????备注:AS号一致, 在要负载均衡的那台设备上开启负载均衡功能

9)比较“cluster-list”的长度,越短越好

10)比较Router ID(Orginator_ID)的大小,越小越好

11)比较“peer 后面的IP地址的大小”,越小越好

十一、BGP选路规则实验

1、BGP选路规则实验-基础配置

1)拓扑

2)基础配置 
 第一步:基础配置: 
 R1的配置: 
sysname R1
#
interface GigabitEthernet0/0/0
 ip address 192.168.12.1 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.14.1 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.1.1 255.255.255.255 
#
bgp 200
 router-id 1.1.1.1
 peer 10.10.2.2 as-number 200 
 peer 10.10.2.2 connect-interface LoopBack0
 peer 192.168.14.4 as-number 100 
 peer 10.10.2.2 next-hop-local 
#
ospf 1 router-id 1.1.1.1 
 area 0.0.0.0 
  network 10.10.1.1 0.0.0.0 
  network 192.168.12.0 0.0.0.255 

 R2的配置:   
sysname R2
#
interface GigabitEthernet0/0/0
 ip address 192.168.12.2 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.23.2 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.2.2 255.255.255.255 
#
bgp 200
 router-id 2.2.2.2
 peer 10.10.1.1 as-number 200 
 peer 10.10.1.1 connect-interface LoopBack0
 peer 10.10.3.3 as-number 200 
 peer 10.10.3.3 connect-interface LoopBack0

#
ospf 1 router-id 2.2.2.2 
 area 0.0.0.0 
  network 10.10.2.2 0.0.0.0 
  network 192.168.12.0 0.0.0.255 
  network 192.168.23.0 0.0.0.255 

 R3的配置: 
sysname R3
#
interface GigabitEthernet0/0/0
 ip address 192.168.23.3 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.35.3 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.3.3 255.255.255.255 
#
bgp 200
 router-id 3.3.3.3
 peer 10.10.2.2 as-number 200 
 peer 10.10.2.2 connect-interface LoopBack0
 peer 10.10.2.2 next-hop-local
 peer 192.168.35.5 as-number 300 

#
ospf 1 router-id 3.3.3.3 
 area 0.0.0.0 
  network 10.10.3.3 0.0.0.0 
  network 192.168.23.0 0.0.0.255  

 R4的配置:   
sysname R4
#
interface GigabitEthernet0/0/0
 ip address 192.168.14.4 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 10.10.45.4 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.4.4 255.255.255.255 
#
bgp 100
 router-id 4.4.4.4
 peer 192.168.14.1 as-number 200 

 R5的配置:   
sysname R5
#
interface GigabitEthernet0/0/0
 ip address 192.168.35.5 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 10.10.45.5 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.5.5 255.255.255.255 
#
bgp 300
 router-id 5.5.5.5
 peer 192.168.35.3 as-number 200
 

 第二步:注入路由 
 在R4中注入路由,并做路由过滤 
 
 1)创建ip-prefix 45.0 过滤路由信息 
ip ip-prefix  45.0  index 10 permit 10.10.45.0 24

 2)创建路由策略45.0 匹配ip-prefix过滤器 
route-policy 45.0 permit node 10 
   if-match ip-prefix  45.0  

 3)在BGP中和R1建邻居时,在出方向调用路由策略45.0,并且注入直连路由 
bgp 100
  peer 192.168.14.1 route-policy  45.0  export
   import-route direct  
  
 
 在R5中注入路由,并做路由过滤 
 1)创建ip-prefix 45.0 过滤路由信息 
ip ip-prefix 45.0 index 10 permit 10.10.45.0 24

 2)创建路由策略45.0 匹配ip-prefix过滤器 
route-policy 45.0 permit node 10 
   if-match ip-prefix 45.0 

 3)在BGP中和R1建邻居时,在出方向调用路由策略45.0,并且注入直连路由 
bgp 100
  peer 192.168.35.3 route-policy 45.0 export
   import-route direct  
  

第三步:验证结果
display ospf peer brief 
display bgp peer 


 <R2> display bgp routing-table 
 BGP Local router ID is 2.2.2.2 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>i  10.10.45.0/24      10.10.1.1       0          100        0      100?
 * i                     10.10.3.3       0          100        0      300?

2、验证:下一跳不可达

在R1中删除配置:
[R1]bgp 200
[R1-bgp]undo peer 10.10.2.2 next-hop-local

在R3中删除配置:
[R3]bgp 200
[R3-bgp]undo peer 10.10.2.2 next-hop-local

在R2中验证结果:
<R2>display  bgp routing-table 
 BGP Local router ID is 2.2.2.2 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

   i  10.10.45.0/24      192.168.14.4    0          100        0      100?
   i                     192.168.35.5    0          100        0      300?

3、Route-policy

-通过工具:过滤我们需要修改的路由条目

????????-有哪些工具:

????????????????&:ACL:访问控制列表:不精准

????????????????&:prefix-list : 地址前缀列表,比较精准,可以匹配路由的掩码,比ACL好

????????-这两个工具只能过滤路由信息,不能修改路由信息

-通过工具:修改路由条目的属性,从而影响BGP的选路,实现路由控制

????????-route-policy :路由策略,根据前缀列表抓到的路由,修改路由的属性

????????-route-policy 作为一个策略,是可以包含很多条目,不同的条目通过“序号”区分,这个序号我们称为:node

????????-当一个route-policy中包含多个条目的时候,会按照node 序号,从小到大,逐个检查

????????-router-policy 也是匹配即停止,一旦匹配到一个条目,就不在向下进行检查,如果所有的条目都没有被匹配,则执行拒绝所有的默认行为

????????-route-policy 包含两个语句

????????????????&:if-match :匹配 : 后面跟的是匹配条件, 我要匹配那个路由

????????????????&:apply : 修改:后面跟的是路由属性,我要修改路由的那个参数

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

-preferred_value

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

-华为特定的私有属性

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

第一步:恢复默认状态 

 R1设备恢复默认 
[R1]bgp 200 
[R1-bgp]peer 10.10.2.2 next-hop-local 

 R3设备恢复默认 
[R3]bgp 200
[R3-bgp]peer 10.10.2.2 next-hop-local

 第二步:查看R2设备的BGP路由表 
 [R2]display  bgp routing-table  
 BGP Local router ID is 2.2.2.2 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>i  10.10.45.0/24      10.10.1.1        0          100        0      100?
 * i                     10.10.3.3       0          100        0      300?
 
 第三步:在R2中修改PrefVal属性,让下一跳为10.10.3.3 的路由成为最优的路由 
 1)创建ip-prefix 45.0 过滤路由信息 
[R2]ip ip-prefix 45.0 permit 10.10.45.0 24   

 2)在R2中,创建路由策略:01-pre, 修改Prefval值为123 
[R2]route-policy 01-pre permit node 10 
[R2-route-policy]if-match ip-prefix 45.0    //匹配ip-prefix 45.0抓取的路由
[R2-route-policy] apply preferred-value 123 

 [R2]route-policy 01-pre permit node 20    //允许所有路由通过 
备注:因为路由策略的隐含规则是拒绝所有,所以配置路由策略时,最后加一条允许所有

 2)在R2中和R3建邻居的入方向调用路由策略 
[R2]bgp 200
[R2-bgp]peer 10.10.3.3 route-policy  01-pre import 

 备注:刷新bgp,快速同步
<R2>refresh bgp all import 


 第四步:验证结果: 
[R2]display bgp routing-table 
 BGP Local router ID is 2.2.2.2 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>i  10.10.45.0/24      10.10.3.3       0          100        123     300?
  * i                     10.10.1.1       0          100         0      100?
 

5、Local_pref属性:本地优先级

-local_preference

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

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

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

第一步:恢复默认状态
在R2上恢复默认
[R2]bgp 200
[R2-bgp] undo peer 10.10.3.3 route-policy 01-pre import 

 第二步:查看R2设备的BGP路由表 
[R2]display  bgp routing-table 
 BGP Local router ID is 2.2.2.2 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>i  10.10.45.0/24      10.10.1.1       0          100        0      100?
 * i                     10.10.3.3       0          100        0      300?
 
  第三步:在R3中修改Local_pref属性,让下一跳为10.10.3.3 的路由成为最优的路由 
 1)创建ip-prefix 45.0 过滤路由信息 
[R3]ip ip-prefix 45.0 permit 10.10.45.0 24   
 
 
 1)在R3中,创建路由策略:02-local, 修改Local_pref值为300
 [R3]route-policy 02-local permit node 10 
 [R3-route-policy]if-match ip-prefix 45.0    //匹配ip-prefix 45.0抓取的路由
 [R3-route-policy] apply local-preference 300  
 
  [R3]route-policy 02-local permit node 20    //允许所有路由通过 
 备注:因为路由策略的隐含规则是拒绝所有,所以配置路由策略时,最后加一条允许所有
 
 2)在R3中和R2建邻居的出方向调用路由策略
 [R3]bgp 200
 [R3-bgp]peer 10.10.2.2 route-policy  02-local export 
 
 

 备注:刷新bgp,快速同步
<R3>refresh bgp all export
<R2>refresh bgp all import 


第四步:验证结果:
<R2>dis bgp routing-table 
 BGP Local router ID is 2.2.2.2
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>i  10.10.45.0/24      10.10.3.3       0          300        0      300?
  * i                     10.10.1.1       0          100        0      100?
 

6、本地始发的BGP路由优于从邻居学习到的路由

第一步:恢复默认状态
在R3上恢复默认
[R3]bgp 200
[R3-bgp] undo  peer 10.10.2.2 route-policy 02-local export 

第二步:查看R2设备的BGP路由表
[R2]display  bgp routing-table 
 BGP Local router ID is 2.2.2.2 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>i  10.10.45.0/24      10.10.1.1       0          100        0      100?
 * i                     10.10.3.3       0          100        0      300?
 
 第三步:在R3中创建静态路由,注入BGP路由表,产生本地始发路由
 
[R3]ip route-static 10.10.45.0 24 null0
[R3]bgp 200
[R3-bgp]import-route static 

第四步:验证结果:
[R3]display bgp routing-table 
 BGP Local router ID is 3.3.3.3 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>   10.10.45.0/24       0.0.0.0           0                     0      ?
 *                       192.168.35.5    0                     0      300?
 

7、本地设备始发的路由:手动聚合优于自动聚合,优于network,优于import-route

第一步:在R3中创建静态路由,注入BGP路由表,产生本地始发路由
[R3]ip route-static 10.10.45.128 25 null0
[R3]ip route-static 10.10.45.192 26 null0
[R3]ip route-static 10.10.45.224 27 null0

 [R3]bgp 200
[R3-bgp]import-route static    //注入静态路由 

第二步:查看R3的BGP路由表
[R3]display bgp routing-table 
 BGP Local router ID is 3.3.3.3 
 Total Number of Routes: 5
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>   10.10.45.0/24      0.0.0.0         0                     0      ? 
 *                       192.168.35.5    0                     0      300?
 *>   10.10.45.128/25    0.0.0.0         0                     0      ?
 *>   10.10.45.192/26    0.0.0.0         0                     0      ?
 *>   10.10.45.224/27    0.0.0.0         0                     0      ?
 
  第三步:在R3中做手动聚合
[R3]bgp 200  
[R3-bgp]aggregate 10.10.45.0 24 

第四步:查看R3的BGP路由表
[R3]display bgp routing-table 
 BGP Local router ID is 3.3.3.3 
 Total Number of Routes: 6
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>   10.10.45.0/24      127.0.0.1                              0      ?
 *                        0.0.0.0          0                     0      ?
 *                       192.168.35.5    0                     0      300?
 *>   10.10.45.128/25    0.0.0.0         0                     0      ?
 *>   10.10.45.192/26    0.0.0.0         0                     0      ?
 *>   10.10.45.224/27    0.0.0.0         0                     0      ?
 
 备注:手动聚合优于import-route
 验证:
  [R3]display bgp routing-table 10.10.45.0 
 BGP local router ID : 3.3.3.3
 Local AS number : 200
 Paths:    3 available, 1 best, 1 select 
 
  1)最优的:手动聚合的 
 BGP routing table entry information of 10.10.45.0/24:
   Aggregated route.  
 Route Duration: 00h02m06s  
 Direct Out-interface: NULL0
  Original nexthop: 127.0.0.1 
 Qos information : 0x0
  AS-path Nil, origin incomplete, pref-val 0, valid, local, best, select, pre 255
 Aggregator: AS 200, Aggregator ID 3.3.3.3 
 Advertised to such 2 peers:
    192.168.35.5
    10.10.2.2
 
 
  2)有效的:R3通过import-route的始发路由 
 BGP routing table entry information of 10.10.45.0/24:
  Imported route.  
  From: 0.0.0.0 (0.0.0.0) 
 Route Duration: 00h17m04s  
 Direct Out-interface: NULL0
 Original nexthop: 0.0.0.0
 Qos information : 0x0
 AS-path Nil, origin incomplete, MED 0, pref-val 0, valid, local, pre 60,  not pr
eferred for route type 
  Not advertised to any peer yet 


 3)有效的:R3通过R5学习来的路由
 BGP routing table entry information of 10.10.45.0/24:
  From: 192.168.35.5 (5.5.5.5) 
 Route Duration: 01h05m14s  
 Direct Out-interface: GigabitEthernet0/0/1
 Original nexthop: 192.168.35.5
 Qos information : 0x0
 AS-path 300, origin incomplete, MED 0, pref-val 0, valid, external, pre 255,  no
t preferred for route type
 Not advertised to any peer yet 
 
 
 第五步:在R2的设备上查看BGP路由表
 <R2>display bgp routing-table 
 BGP Local router ID is 2.2.2.2 
 Total Number of Routes: 5
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>i  10.10.45.0/24      10.10.3.3                   100        0      ?
 * i                     10.10.1.1       0          100        0      100?
 *>i  10.10.45.128/25    10.10.3.3       0          100        0      ?
 *>i  10.10.45.192/26    10.10.3.3       0          100        0      ?
 *>i  10.10.45.224/27    10.10.3.3       0          100        0      ?
 
  第六步:在R3中做手动聚合的时候,抑制明细路由,降低R2的BGP路由表的规模 
 1)打开抓包软件,在R3和R2之间抓包,抓取R3发的update报文, 查看是否有撤销明细路由
 
 2)在R3中做手动聚合的时候,抑制明细路由,降低R2的BGP路由表的规模
 [R3]bgp 200 
[R3-bgp]aggregate 10.10.45.0 24 detail-suppressed  

第七步:在R2的BGP路由表验证结果
<R2>display bgp routing-table 
 BGP Local router ID is 2.2.2.2 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>i  10.10.45.0/24      10.10.3.3                   100        0      ?
 * i                     10.10.1.1       0          100        0      100?
 
  备注:下一跳为10.10.3.3 的路由为什么会优于10.10.1.1 ,因为AS-path号短 
 
 第八步:在R3中查看BGP路由表
 [R3]display bgp routing-table 
 BGP Local router ID is 3.3.3.3 
 Total Number of Routes: 6
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>   10.10.45.0/24      127.0.0.1                              0      ?
 *                       0.0.0.0         0                     0      ?
 *                       192.168.35.5    0                     0      300?
  s>    10.10.45.128/25    0.0.0.0         0                     0      ?
  s>    10.10.45.192/26    0.0.0.0         0                     0      ?
  s>    10.10.45.224/27    0.0.0.0         0                     0      ?
 
  备注:手动聚合的路由最优,明细路由被抑制了 
 
  第九步:在R3中,做自动聚合 
 [R3]bgp 200
[R3-bgp]summary automatic  

第十步:在R3中查看BGP路由表
[R3]display bgp routing-table 
 BGP Local router ID is 3.3.3.3 
 Total Number of Routes: 7
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>   10.0.0.0           127.0.0.1                             0      ?
 *>   10.10.45.0/24      127.0.0.1                             0      ? 
 *                       0.0.0.0         0                     0      ?
 *                       192.168.35.5    0                     0      300?
  s>    10.10.45.128/25    0.0.0.0         0                     0      ?
  s>    10.10.45.192/26    0.0.0.0         0                     0      ?
  s>    10.10.45.224/27    0.0.0.0         0                     0      ?
 
 备注:10.0.0.0  这条路由是自动聚合的路由
 
 第十一步:在R3中做手动聚合,在聚合一条和自动聚合相同的路由,10.0.0.0/8
[R3]bgp 200 
[R3-bgp] aggregate 10.0.0.0 8 

第十二步:在R3中验证结果,确认是手动聚合最优还是自动聚合最优
[R3]display bgp routing-table 
 BGP Local router ID is 3.3.3.3 
 Total Number of Routes: 8
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>   10.0.0.0           127.0.0.1                             0      ?
 *                       127.0.0.1                             0      ? 
 *>   10.10.45.0/24      127.0.0.1                             0      ?
 *                       0.0.0.0         0                     0      ?
 *                       192.168.35.5    0                     0      300?
 s>   10.10.45.128/25    0.0.0.0         0                     0      ?
 s>   10.10.45.192/26    0.0.0.0         0                     0      ?
 s>   10.10.45.224/27    0.0.0.0         0                     0      ?
 
 继续验证:手动聚合最优还是自动聚合最优
  [R3]display bgp routing-table 10.10.45.0 
 BGP local router ID : 3.3.3.3
 Local AS number : 200
 Paths:   3 available, 1 best, 1 select
 BGP routing table entry information of 10.10.45.0/24:
  Aggregated route.  
 Route Duration: 00h14m14s  
 Direct Out-interface: NULL0
 Original nexthop: 127.0.0.1
 Qos information : 0x0
 AS-path Nil, origin incomplete, pref-val 0, valid, local, best, select, pre 255
 Aggregator: AS 200, Aggregator ID 3.3.3.3, Atomic-aggregate
 Advertised to such 2 peers:
    192.168.35.5
    10.10.2.2
    
 BGP routing table entry information of 10.10.45.0/24:
 Imported route. 
 From: 0.0.0.0 (0.0.0.0)
 Route Duration: 00h37m58s  
 Direct Out-interface: NULL0
 Original nexthop: 0.0.0.0
 Qos information : 0x0
 AS-path Nil, origin incomplete, MED 0, pref-val 0, valid, local, pre 60, not pr
eferred for route type
 Not advertised to any peer yet

 BGP routing table entry information of 10.10.45.0/24:
 From: 192.168.35.5 (5.5.5.5)
 Route Duration: 01h26m08s  
 Direct Out-interface: GigabitEthernet0/0/1
 Original nexthop: 192.168.35.5
 Qos information : 0x0
 AS-path 300, origin incomplete, MED 0, pref-val 0, valid, external, pre 255, no
t preferred for route type
 Not advertised to any peer yet
 
 备注:验证:手动聚合优于自动聚合
 

8、AS_Path属性

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

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

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

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

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

-该属性可以做路径优选

第一步:在R3中恢复默认配置
[R3]bgp 200
[R3-bgp]undo summary automatic
[R3-bgp]undo aggregate 10.0.0.0 255.0.0.0 
[R3-bgp]undo aggregate 10.10.45.0 255.255.255.0 detail-suppressed 
[R3-bgp] undo import-route static  

[R3]undo ip route-static 10.10.45.0 255.255.255.0 NULL0
[R3]undo ip route-static 10.10.45.128 255.255.255.128 NULL0
[R3]undo ip route-static 10.10.45.192 255.255.255.192 NULL0
[R3]undo ip route-static 10.10.45.224 255.255.255.224 NULL0


第二步:在R2中查看BGP路由表
<R2>display bgp routing-table 
 BGP Local router ID is 2.2.2.2 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>i  10.10.45.0/24      10.10.1.1       0          100        0      100?
 * i                     10.10.3.3       0          100        0      300?
 
 第三步:在R1中修改AS_Path属性,让下一跳为10.10.3.3 的路由成为最优的路由 
 备注:先抓包,查看R1发的update报文

 1)创建地址前缀列表 
[R1]ip ip-prefix 45.0 permit 10.10.45.0 24
 
 2) 创建路由策略,添加as_path属性值 
[R1]route-policy 03-as permit node 10
[R1-route-policy]if-match ip-prefix 45.0
[R1-route-policy]apply as-path 100 additive 

 [R1]route-policy 45.0 permit node 20 

2) 在R1和R2建邻居的出方向调用路由策略
[R1]bgp 200 
[R1-bgp]peer 10.10.2.2 route-policy 03-as export


第四步:验证结果:
<R2>display bgp routing-table 

 BGP Local router ID is 2.2.2.2 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete


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

 *>i  10.10.45.0/24      10.10.3.3       0          100        0      300?
 * i                     10.10.1.1       0          100        0       100 100? 
 
 
 


9、比较“Origin-起源属性”

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

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

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

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

第一步:在R1中恢复默认配置
[R1]bgp 200
[R1-bgp]undo peer 10.10.2.2 route-policy 03-as export

第二步:查看R2的BGP路由表
<R2>display bgp routing-table 
 BGP Local router ID is 2.2.2.2 

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

  *>i  10.10.45.0/24      10.10.1.1        0          100        0      100?
 * i                     10.10.3.3       0          100        0      300?
 
 
 第三步:在R5中,用network 注入路由
[R5]bgp 300
[R5-bgp]network 10.10.45.0 24

第四步:验证结果
<R2>display  bgp routing-table 
 BGP Local router ID is 2.2.2.2 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>i  10.10.45.0/24      10.10.3.3        0          100        0      300 i 
 * i                     10.10.1.1       0          100        0      100?
 
  备注:network 优于import-route 
 
 
  第四步:恢复默认 
1):在R5中恢复默认
[R5]bgp 300
[R5-bgp]undo network 10.10.45.0 24

2):在R2中查看BGP路由表
<R2>display bgp routing-table 
 BGP Local router ID is 2.2.2.2 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>i  10.10.45.0/24      10.10.1.1       0          100        0      100?
 * i                     10.10.3.3       0          100        0      300?
 
 
 
 第五步:了解即可-e - EGP  优于  ? - incomplete 
Origin : i - IGP, e - EGP, ? - incomplete
e - EGP  优于  ? - incomplete

[R3]ip ip-prefix 04-ogn  permit 10.10.45.0 24
[R3]route-policy 04-ogn permit node 10
[R3-route-policy]if-match ip-prefix 04-ogn
[R3-route-policy]apply origin egp 300   //修改路由条目起源属性


[R3]bgp 200
[R3-bgp]peer 10.10.2.2 route-policy  04-ogn export 
[R3-bgp]q
[R3]q  
<R3>refresh bgp all export 


<R2>dis bgp routing-table 

 BGP Local router ID is 2.2.2.2 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete

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

 *>i  10.10.45.0/24      10.10.3.3       0          100        0       300e 
 * i                     10.10.1.1       0          100        0      100?
 
 
 

10、MED属性:

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

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

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

第一步:在R3中恢复默认
[R3]bgp 200
[R3-bgp]undo peer 10.10.2.2 route-policy 04-ogn export

第二步:在R2中查看BGP路由表
<R2>display bgp routing-table 
 BGP Local router ID is 2.2.2.2 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>i  10.10.45.0/24      10.10.1.1       0          100        0      100?
 * i                     10.10.3.3       0          100        0      300?
 
 
 第三步:在R1中修改med属性,让下一跳为10.10.3.3 的路由成为最优的路由 
 备注:先抓包,查看R4发给R1的update报文
 备注:在抓包,查看R1发给R2的update报文
 
1)创建地址前缀列表
[R1]ip ip-prefix 45.0 permit 10.10.45.0 24
 
 
2)创建路由策略,修改med值为999
[R1]route-policy 05-med permit node 10
 [R1-route-policy]if-match ip-prefix 45.0 
[R1-route-policy]apply cost 999

 [R1]route-policy 05-med permit node 20 

3)R1和R2建邻居的出方向调用路由策略
[R1]bgp 200 
[R1-bgp]peer 10.10.2.2 route-policy 05-med export

第四步:在R2中验证结果
<R2>display bgp routing-table 
 BGP Local router ID is 2.2.2.2 

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

  *>i  10.10.45.0/24      10.10.1.1        999          100        0       100? 
 * i                     10.10.3.3       0          100        0       300? 
 
 备注:下一跳为10.10.1.1 的路由的med值为999,但是依然是最优路由
 因为:默认情况下,BGP路由器只比较来同一个AS的路由MED值,
 也就是说,两条路由的起源AS号不相同,默认不比较MED值

那怎么办呢,可以让两条路由的as号相同,做一个实验

 第五步: 修改AS号,让两条路由的AS号相同 
在R3中修改路由条目的属性,把R3中的路由条目的AS号覆盖为100 和R1的路由AS号相同
1)创建地址前缀列表
[R3]ip ip-prefix 45.0 permit 10.10.45.0 24

[R3]route-policy 06-med permit node 10     //创建路由策略
[R3-route-policy]if-match ip-prefix 45.0
[R3-route-policy]apply as-path  100 overwrite    //修改as号

 [R3]route-policy 06-med permit node 20 

[R3]bgp 200
[R3-bgp]peer 10.10.2.2 route-policy 06-med export   //调用路由策略

<R3>refresh bgp all export    //重传


第六步:在R2中验证结果
<R2>dis bgp routing-table

 BGP Local router ID is 2.2.2.2 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete


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

 *>i  10.10.45.0/24      10.10.3.3       0          100        0        100? 
 * i                     10.10.1.1       9999       100        0        100? 

备注:两条路由的AS号相同,可以比较MED值,越小越优先

但是在一个大的网络环境中,修改AS号是不现实的,所以这并不是一个很好的解决方案
所以我们要有一种方法, 即便两条路由的AS号不同,也让BGP路由器可以比较MED值
这个就需要在BGP路由器中,开启一种特殊能力,
 这种能力就是:允许比较来自不同自治系统中的邻居的路由的MED值 

 第七步:在R3中恢复AS号为300
[R3]bgp 200 
[R3-bgp]undo peer 10.10.2.2 route-policy 06-med export    //删除调用

<R3>refresh bgp all export   //重传路由

 第八步:检查,发现恢复默认,虽然10.10.1.1的MED值大,但是10.10.1.1 依然是最优的路由 
<R2>dis bgp routing-table 

 BGP Local router ID is 2.2.2.2 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete


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

 *>i  10.10.45.0/24      10.10.1.1       9999       100        0      100?
 * i                     10.10.3.3       0          100        0      300?
 
 
 
   第九步:在R2中,允许比较来自不同自治系统中的邻居的路由的MED值 
[R2]bgp 200
[R2-bgp] compare-different-as-med    

第十步:验证结果
[R2]display bgp routing-table 
 BGP Local router ID is 2.2.2.2 

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

  *>i  10.10.45.0/24      10.10.3.3       0           100        0      300?
 * i                     10.10.1.1        999         100        0      100?
 

11、从EBGP邻居学来的路由,优先于从IBGP邻居学来的路由

(备注:前提:路由前面6项选路参数都相同,无法选出最优的情况下)

第一步:在R1和R2中恢复默认
[R1]bgp 200
[R1-bgp]undo  peer 10.10.2.2 route-policy 05-med export

[R2]bgp 200
[R2-bgp]undo compare-different-as-med


第二步:在R2创建静态路由,注入始发路由
1)创建静态路由
[R2]ip route-static 10.10.45.0 24 null0

2)注入始发路由
[R2]bgp 200
[R2-bgp]import-route static 

3)创建路由策略,添加as号
[R2]route-policy 07-as permit node 10
[R2-route-policy]apply as-path 500 additive 

4)在R2和R3建邻居的出方向调用路由策略
[R2]bgp 200
[R2-bgp]peer 10.10.3.3 route-policy 07-as export

5)刷新bgp 等待时间
<R2>refresh bgp all export 
<R3>refresh bgp all import

第三步:在R3中验证: (备注:AS号不能用200) 
<R3>display bgp routing-table
 BGP Local router ID is 3.3.3.3 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>   10.10.45.0/24      192.168.35.5     0                     0      300?
 * i                     10.10.2.2       0          100        0      500?
 
 
 备注:协议首选值,本地优先级,as号,med值,注入方式都相同的情况下, 
 从EBGP邻居学来的路由优于IBGP学来的路由
  备注:locprf :值为空,但是也是100,  可以抓包验证
      R3收到R5通告的10.10.45.0 的路由后,就会添加本地优先级值为100

12、去往BGP路由的下一跳IP地址”的cost开销值-越小越好

第一步:在R2中恢复默认
[R2]bgp 200
[R2-bgp]undo peer 10.10.3.3 route-policy 07-as  export    //删除路由策略调用

[R2]undo ip route-static 10.10.45.0 255.255.255.0 NULL0   //删除静态路由

第二步:验证R3和R2的BGP路由表是否恢复默认
 <R3>dis  bgp routing-table  
 Total Number of Routes: 1
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>   10.10.45.0/24      192.168.35.5    0                     0      300?
 
 
 [R2]display bgp routing-table  

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

 *>i  10.10.45.0/24      10.10.1.1       0          100        0      100?
 * i                     10.10.3.3       0          100        0      300?
 
 
 
 第三步:查看去往下一跳地址的cost值
 在R2中去往10.10.45.0/24的这条路由,下一跳分别为10.10.1.1 和10.10.3.3
 那么去往10.10.1.1 和10.10.3.3 的cost值分别是多少呢?
 
 [R2]display ip routing-table 10.10.1.1 
Destination/Mask    Proto  Pre   Cost    NextHop         Interface

10.10.1.1/32          OSPF      10     1        192.168.12.1    G0/0/0

 [R2]display ip routing-table 10.10.3.3 
Destination/Mask    Proto  Pre   Cost    NextHop         Interface

10.10.3.3/32         OSPF      10     1        192.168.23.3    G0/0/1


第四步:把R2去往10.10.1.1 的ospf路由的cost值调高,让下一跳为10.10.3.3的路由变成最优的

[R2]int g0/0/0
[R2-G0/0/0 ] ospf cost 9 
[R2-G0/0/0]quit

验证:
[R2]display ip routing-table 10.10.1.1
Destination/Mask     Proto   Pre  Cost    NextHop        Interface

10.10.1.1/32         OSPF    10     9        192.168.12.1    G0/0/0


验证:
[R2]display ip routing-table 10.10.3.3
Destination/Mask    Proto  Pre   Cost    NextHop         Interface

10.10.3.3/32        OSPF    10     1        192.168.23.3    G0/0/1


第五步:验证结果
[R2]dis bgp routing-table 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>i  10.10.45.0/24        10.10.3.3       0          100        0      300? 
 * i                     10.10.1.1       0          100        0      100?
 
 备注:因为R2去往10.10.3.3的ospf路由的cost值小,所以在BGP路由表中去往10.10.45.0/24的路由
      最优的路由是下一跳为10.10.3.3的路由
      这个就是 “去往BGP路由的下一跳IP地址”的cost开销值-越小越好” 
      
      

13、如果前面8条选路规则都无法选出最优的BGP路由,那么我们就可以做负载均衡了

如果前面8条选路规则都无法选出最优的BGP路由,我们就认为这两条都可以是最好的路由

我们就可以做负载均衡,就可以做等价路由了,但是在BGP路由中,去往同一目的地,永远只有一条最优的路由,如果我们 要做负载均衡,需要在IP核心路由表实现

就是在IP核心路由表中,可以出现去往10.10.45.0/24的等价路由,但是BGP路由表永远只有一条最优路由 (但是,如果要实现负载分担,需要两条路由的AS号一致)

第一步:在R2中恢复cost默认值
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]undo ospf cost     //删除cost值,恢复默认

验证:
[R2]display ip routing-table 10.10.1.1
Destination/Mask    Proto   Pre   Cost      NextHop         Interface

10.10.1.1/32        OSPF    10    1         192.168.12.1     G0/0/0


第二步:验证BGP路由表
[R2]display bgp routing-table 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>i  10.10.45.0/24       10.10.1.1        0          100        0      100?
 * i                     10.10.3.3       0          100        0      300?
 
 第三步:实现负载均衡,在IP核心路由表实现等级路由
 
<R2> display  ip routing-table 10.10.45.0 
Destination/Mask    Proto   Pre  Cost     NextHop         Interface

10.10.45.0/24       IBGP    255  0         10.10.1.1        G0/0/0


备注:在BGP路由表,去往10.10.45.0/24 的路由,最优的下一跳为10.10.1.1
     在IP核心路由表,去往10.10.45.0/24 的路由,最优的下一跳为10.10.1.1
     
    
 现在我们要做在R2的BGP中做负载均衡
 [R2]bgp  200
 [R2-bgp]maximum load-balancing  ibgp  2    //配置负载分担 
 
 验证:R2的IP核心路由表中,发现配置完负载均衡后,去往10.10.45.0/24的路由还是只有一条
 
[R2]display ip routing-table 10.10.45.0
Destination/Mask    Proto   Pre  Cost      NextHop         Interface

10.10.45.0/24       IBGP    255   0        10.10.1.1       G0/0/0

为什么会这样呢? 因为在IP的核心路由表中,做负载均衡是有条件的,要求BGP路由表中两条路由的AS号一致

 第四步:在R3中修改AS号,修为100 ,或者在R1中修改AS号,修改为300
       要让R2中的这两条BGP路由的AS号相同才可以执行负载分担 
        
  1)我们在R3中修改AS号,修改为100 
 
[R3]route-policy 08-as permit node 10    //创建路由策略
[R3-route-policy]apply as-path  100 overwrite   //修改as号为100
[R3-route-policy]quit

[R3]bgp 200  
[R3-bgp]peer 10.10.2.2 route-policy 08-as export    //调用路由策略
[R3-bgp]quit

<R3>refresh bgp all export    //重传路由

2) 验证:在R2的BGP路由表中验证
<R2>display bgp routing-table 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>i  10.10.45.0/24      10.10.1.1       0          100        0        100? 
 * i                     10.10.3.3       0          100        0        100? 

 备注:两条路由的AS号相同,都是100
 
  第五步:在R2的BGP中,执行负载分担 
 [R2]bgp  200
 [R2-bgp]maximum load-balancing  ibgp  2   //配置负载分担
 
  第六步:再次验证: 
 <R2>display ip routing-table 10.10.45.0
Destination/Mask    Proto   Pre  Cost     NextHop        Interface

 10.10.45.0/24       IBGP    255  0       10.10.1.1       G0/0/0
                    IBGP    255  0       10.10.3.3       G0/0/1 
                    
备注:在R2和IP核心路由表,有了等价路由,实现了负载分担
     但是在BGP中的路由表,依然只有一条最优的路由

<R2>display bgp routing-table 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

  *>i  10.10.45.0/24      10.10.1.1       0          100        0      100? 
  * i                     10.10.3.3       0          100        0      100?

14、比较“cluster-list”的长度,越短越好

1) 拓扑: R1和R4之间的连线,叉叉掉

 第一步: 在R2和R3中恢复默认配置
[R2]bgp 200
[R2-bgp]undo maximum load-balancing ibgp 2    //删除负载均衡


[R3]bgp 200
[R3-bgp]undo peer 10.10.2.2 route-policy 08-as  export    //删除路由策略

<R3>refresh bgp all export     //重传路由

第二步: 在R1中检查有没有BGP路由
<R1>dis bgp routing-table      //R1的BGP路由表为空

如何让R1学习到去往10.10.45.0/24的路由呢?
两个方法:
1)R3和R1建立邻居,R3通告路由给R1和R2
2)R2做成路由反射器,R2反射给R1路由

如果R3和R1建立邻居,通告10.10.45.0/24的路由给R1
如果R2反射给R1 10.10.45.0/24的路由,
那么R1的BGP路由表中,会有两条去往10.10.45.0/24的路由,那么那条路由是最优的
是R3通告的是最优的呢,还是R2反射的是最优的呢?
验证一下:

 第三:R3和R1建立邻居 
[R3]bgp 200
[R3-bgp]peer 10.10.1.1 as 200
[R3-bgp]peer 10.10.1.1 connect-interface LoopBack 0
[R3-bgp]peer 10.10.1.1 next-hop-local 


[R1]bgp 200
[R1-bgp]peer 10.10.3.3 as 200
[R1-bgp]peer 10.10.3.3 connect-interface LoopBack 0
[R1-bgp]peer 10.10.3.3 next-hop-local 

验证:R3和R1的邻居关系
[R3]display bgp peer 

 BGP local router ID : 3.3.3.3
 Local AS number : 200
 Total number of peers : 3      Peers in established state : 3

Peer            V      AS  MsgRcvd  MsgSent  OutQ  Up/Down       State   PrefRcv

 10.10.1.1       4     200   2        4        0  00:00:37    Established    0 
10.10.2.2       4     200   39       44       0  00:37:27    Established    0
192.168.35.5    4    300    281      296      0  04:24:11    Established    1


 第四:R2配置路由反射器,把R1做出客户机 
[R2]bgp 200
[R2-bgp]peer 10.10.1.1 reflect-client   


第五步:验证结果
[R1]display bgp routing-table 

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

 *>i  10.10.45.0/24      10.10.3.3       0          100        0      300?
 * i                     10.10.3.3       0          100        0      300?


备注:在R1中BGP路由表中,去往10.10.45.0/24 的路由,有两条,下一跳都是10.10.3.3 

疑问1 : 为什么这两条路由的下一跳相同呢?

解答:R2的这条路由也是从 R3(10.10.3.3)  哪里学来的,所以在R2的BGP路由表中:
     去往10.10.45.0/24的路由的下一跳本来就是10.10.3.3
     R2在把路由反射给R1的的时候,默认是不会修改路由的下一跳地址的
     所以R1从R2哪里学到的路由下一跳是10.10.3.3
     R3通告给R1的路由下一跳也是10.10.3.3
     

疑问2:到底谁给我们的是最优的,是R2反射给我们的是最优的,还是R3通告给我们的是最优的呢?
解答:R3通告给R1的路由是最优的
为什么?
因为R2反射给R1的路由,添加了属性: CLUSTER_LIST: 2.2.2.2  

BGP选路原则9: 比较“cluster-list”的长度,越短越好

R3通告给R1的路由,不包含CLUSTER_LIST 属性
所以R3通告给R1的优于R2反射的

验证方式:
<R1>display bgp routing-table 10.10.45.0

 BGP local router ID : 1.1.1.1
 Local AS number : 200
 Paths:   2 available, 1 best, 1 select
 BGP routing table entry information of 10.10.45.0/24:
  From: 10.10.3.3 (3.3.3.3)--从10.10.3.3学来的路由是最优的 
 Route Duration: 00h13m37s  
 Relay IP Nexthop: 192.168.12.2
 Relay IP Out-Interface: GigabitEthernet0/0/0
 Original nexthop: 10.10.3.3
 Qos information : 0x0
 AS-path 300, origin incomplete, MED 0, localpref 100, pref-val 0, valid, intern
al, best, select, active, pre 255, IGP cost 2
 Not advertised to any peer yet

 BGP routing table entry information of 10.10.45.0/24:
  From: 10.10.2.2 (2.2.2.2)  --从10.10.2.2的学来的路由不是最优的 
 Route Duration: 00h14m28s  
 Relay IP Nexthop: 192.168.12.2
 Relay IP Out-Interface: GigabitEthernet0/0/0
 Original nexthop: 10.10.3.3
 Qos information : 0x0
 AS-path 300, origin incomplete, MED 0, localpref 100, pref-val 0, valid, intern
al, pre 255, IGP cost 2,  not preferred for Cluster List 
 Originator:  3.3.3.3
  Cluster list: 2.2.2.2 
 Not advertised to any peer yet

1) R2反射的路由—抓包分析

2) R3通告的路由,抓包分析

15、比较Router ID(Orginator_ID)的大小,越小越好

1)拓扑图恢复正常,R1和R4连线恢复

第一步:恢复默认
1)在R2中删除路由器反射器
[R2]bgp 200
[R2-bgp]undo peer 10.10.1.1 reflect-client 

2) 在R3和R1中,删除邻居
[R3]bgp 200
[R3-bgp]undo peer 10.10.1.1 


[R1]bgp 200
[R1-bgp]undo peer 10.10.3.3

3)在R2中检查BGP路由表
[R2]display  bgp routing-table 
 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>i  10.10.45.0/24      10.10.1.1       0          100        0      100?
 * i                     10.10.3.3       0          100        0      300?

备注:在R2中去往10.10.45.0/24  还是有两条路由,其中最优是下一跳为10.10.1.1的
为什么?
因为: R1的router-id 小,所以下一跳为10.10.1.1 路由是最优的路由

 第二步:让下一跳为10.10.3.3的 路由成为最优的路由 
怎么做? 修改R1的router-id ,调高为9.9.9.9
[R1]bgp  200
[R1-bgp]router-id 9.9.9.9

第三步:在R2中验证BGP路由表
[R2]display bgp routing-table 

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

 *>i  10.10.45.0/24      10.10.3.3       0          100        0      300?
 * i                     10.10.1.1       0          100        0      100?

备注:在R2中去往10.10.45.0/24  还是有两条路由,最优的变为10.10.3.3了

[R2]display bgp routing-table 10.10.45.0

 BGP local router ID : 2.2.2.2
 Local AS number : 200
 Paths:   2 available, 1 best, 1 select
 BGP routing table entry information of 10.10.45.0/24:
  From: 10.10.3.3 (3.3.3.3) 
 Route Duration: 00h23m15s  
 Relay IP Nexthop: 192.168.23.3
 Relay IP Out-Interface: GigabitEthernet0/0/1
 Original nexthop: 10.10.3.3
 Qos information : 0x0
 AS-path 300, origin incomplete, MED 0, localpref 100, pref-val 0, valid, intern
al, best, select, active, pre 255, IGP cost 1
 Not advertised to any peer yet

 BGP routing table entry information of 10.10.45.0/24:
  From: 10.10.1.1  (9.9.9.9) 
 Route Duration: 00h01m36s  
 Relay IP Nexthop:  192.168.12.1 
 Relay IP Out-Interface: GigabitEthernet0/0/0
 Original nexthop: 10.10.1.1
 Qos information : 0x0
 AS-path 100, origin incomplete, MED 0, localpref 100, pref-val 0, valid, intern
al, pre 255, IGP cost 1,   not preferred for router ID   :败给routr-id 
   Not advertised to any peer yet 

16、比较“peer 后面的IP地址的大小”,越小越好

1)拓扑

说明:
R1/R2/R3/R4 都位于AS100区域
R1/R2/R3/R4 部署OSPF
R1/R2/R3/R4 建立IBGP邻居关系
R2/R3是路由反射器都与R4相连,R4是客户机
在R4上注入路由 10.10.45.0/24


 第一步:基础配置: 
 sysname R1 
#
interface GigabitEthernet0/0/0
 ip address 192.168.12.1 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.13.1 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.1.1 255.255.255.255 
#
bgp 100
 router-id 1.1.1.1
  peer 10.10.3.3 as-number 100  
 peer 10.10.3.3 connect-interface LoopBack0
  peer 10.10.9.9 as-number 100   
 peer 10.10.9.9 connect-interface LoopBack0
#
ospf 1 router-id 1.1.1.1 
 area 0.0.0.0 
  network 10.10.1.1 0.0.0.0 
  network 192.168.12.0 0.0.0.255 
  network 192.168.13.0 0.0.0.255 
 

 sysname R2 
#
interface GigabitEthernet0/0/0
 ip address 192.168.12.2 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.24.2 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.9.9 255.255.255.255 
#
bgp 100
 router-id 2.2.2.2
 peer 10.10.1.1 as-number 100 
 peer 10.10.1.1 connect-interface LoopBack0
 peer 10.10.4.4 as-number 100 
 peer 10.10.4.4 connect-interface LoopBack0
#
ospf 1 router-id 2.2.2.2 
 area 0.0.0.0 
  network 10.10.9.9 0.0.0.0 
  network 192.168.12.0 0.0.0.255 
  network 192.168.24.0 0.0.0.255 

 sysname R3 
#
interface GigabitEthernet0/0/0
 ip address 192.168.13.3 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.34.3 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.3.3 255.255.255.255 
#
bgp 100
 router-id 3.3.3.3
 peer 10.10.1.1 as-number 100 
 peer 10.10.1.1 connect-interface LoopBack0
 peer 10.10.4.4 as-number 100 
 peer 10.10.4.4 connect-interface LoopBack0
#
ospf 1 router-id 3.3.3.3 
 area 0.0.0.0 
  network 10.10.3.3 0.0.0.0 
  network 192.168.13.0 0.0.0.255 
  network 192.168.34.0 0.0.0.255 


 sysname R4 
#
interface GigabitEthernet0/0/0
 ip address 192.168.24.4 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 192.168.34.4 255.255.255.0 
#
interface LoopBack0
 ip address 10.10.4.4 255.255.255.255 
#
interface LoopBack1
 ip address 10.10.45.4 255.255.255.0 
#
bgp 100
 router-id 4.4.4.4
 peer 10.10.3.3 as-number 100 
 peer 10.10.3.3 connect-interface LoopBack0
 peer 10.10.9.9 as-number 100 
 peer 10.10.9.9 connect-interface LoopBack0
#
ospf 1 router-id 4.4.4.4 
 area 0.0.0.0 
  network 10.10.4.4 0.0.0.0 
  network 192.168.24.0 0.0.0.255 
  network 192.168.34.0 0.0.0.255 
  
 第二步:在R4中注入路由 
[R4]bgp 100  
[R4-bgp]network 10.10.45.0 24

在R4中验证:
[R4-bgp]display bgp routing-table 

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

 *>   10.10.45.0/24      0.0.0.0         0                     0      i
 
 
 在R2中验证:有最优路由
 在R3中验证:有最优路由
 
 但是在R1中验证:发现没有路由:有IBGP水平分割
 如何解决: 部署路由反射器
 
 第三步:R2和R3部署路由反射器, R4是客户机 
[R2]bgp 100
[R2-bgp]peer 10.10.4.4 reflect-client 

[R3]bgp 100
[R3-bgp]peer 10.10.4.4 reflect-client 


第四步:在R1中验证
<R1>display bgp routing-table 

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

  *>i  10.10.45.0/24      10.10.4.4       0          100        0      i 
 * i                     10.10.4.4       0          100        0      i
 
 
   <R1>display bgp routing-table 10.10.45.0 

 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.45.0/24:
   From: 10.10.3.3 (3.3.3.3) 
 Route Duration: 00h31m50s  
 Relay IP Nexthop: 192.168.12.2
 Relay IP Out-Interface: GigabitEthernet0/0/0
 Original nexthop: 10.10.4.4
 Qos information : 0x0
 AS-path Nil, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, bes
t, select, active, pre 255, IGP cost 2
 Originator:   4.4.4.4
 Cluster list: 3.3.3.3
 Not advertised to any peer yet

 BGP routing table entry information of 10.10.45.0/24:
  From: 10.10.9.9 (2.2.2.2) 
 Route Duration: 00h27m31s  
 Relay IP Nexthop: 192.168.12.2
 Relay IP Out-Interface: GigabitEthernet0/0/0
 Original nexthop: 10.10.4.4
 Qos information : 0x0
 AS-path Nil, origin igp, MED 0, localpref 100, pref-val 0, valid, internal, pre
 255, IGP cost 2,  not preferred for peer address 
 Originator:  4.4.4.4
 Cluster list: 2.2.2.2
 Not advertised to any peer yet
 
  备注:当前面10项选路规则都一致的情况下, 比较peer 后面的IP地址
      peer 后面的IP地址越小越优先
文章来源:https://blog.csdn.net/weixin_72194028/article/details/135472142
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。