目录
7、本地设备始发的路由:手动聚合优于自动聚合,优于network,优于import-route
11、从EBGP邻居学来的路由,优先于从IBGP邻居学来的路由
12、去往BGP路由的下一跳IP地址”的cost开销值-越小越好
13、如果前面8条选路规则都无法选出最优的BGP路由,那么我们就可以做负载均衡了
15、比较Router ID(Orginator_ID)的大小,越小越好
1)直连路由
2)非直连路由(间接路由)
????????&:静态路由
????????&:动态路由
????????????????@:IGP: 内网网关路由协议(在企业内部或数据中心内部使用)
????????????????????????DV:距离矢量路由协议
????????????????????????????????-RIP(v1/v2)
????????????????????????????????-IGRP—网络直径:100—255(思科的私有协议)
????????????????????????????????-EIGRP—思科的私有
????????????????????????LS: 链路状态路由协议
????????????????????????????????-ISIS- 中间系统到中间系统
????????????????????????????????-OSPF —开放式最短路径优先
????????????????@: EGP : 外部网关路由协议:在不同公司之间使用,在不同的城市之间
????????????????????????BGP:边界网关协议 (路径矢量路由协议)
我们要在不同AS之间实现网络通信,需要使用EGP-BGP协议,当然我们还看重BGP的一些优势
1)非常稳定
2)可以传输大量的路由,支持大规模网络
3)具有非常丰富的路由控制策略,可以实现灵活的选路
-BGP:边界网关协议
-BGP是公有协议,任何厂商的设备都支持BGP
-BGP位于OSI的第7层 (应用层)
备注:
OSPF基于IP协议,为了可靠性,数据库同步:协商主从关系,序列号、有确认机制
-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是中国国家互联网信息中心
场景一:遍布全国大型政企单位之间, 或大型数据中心
场景二:运营商骨干网
在AS之间动态的交互路由信息
1)稳定,基于TCP协议建立的,使用端口号TCP179,所以非常稳定
2)传递大量路由,可以跨多跳建立邻居关系
3)路由控制策略丰富
EBGP: 外部邻居: 用于AS之间
IBGP: 内部邻居: 用于AS内部
?BGP使用传输层协议为TCP,TCP端口号179。路由器之间的BGP会话基于TCP连接而建立。
?运行BGP的路由器被称为BGP发言者(BGP Speaker),或BGP路由器。
?两个建立BGP会话的路由器互为对等体(Peer),说人话,就是BGP邻居
?BGP对等体之间交换BGP路由信息 , 说人话,BGP在邻居之间传递路由
?BGP路由器只发送增量的BGP路由更新,或进行触发式更新(不会周期性更新)。
?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,子地址族标识。
1)建立邻居
2)传递路由
1)idle :初始化状态
-tcp未连接状态,邻居的状态为idle , 当bgp设备和邻居进行tcp 连接时,会从当前的状态转为connect 状态
2)connect 状态: tcp 连接状态
-如果tcp 建立连接成功,bgp 设备会向邻居发送open报文,状态也会转为opensent 状态
-如果tcp 建立连接失败,bgp设备的状态会转为active 状态
3)active 状态:活跃状态
-如果依然失败,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就会认为邻居是正常的
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邻居就不会出现故障,可以提高网络的可靠性和稳定性
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,就代表对端设备还没有给我们传递路由信息,就是没有给我们发路由 也可以这样表述:本段从对端设备上收到的路由前缀的数目(接收到的路由的数量)
<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命令引入的路由
拓扑
需求
实现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 //可以通
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发现下一跳不可达,所以认为这条路由是无效的
解决方案:
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报文
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通告原则之二 : 通过EBGP获得的最优路由发布给所有BGP邻居
????????????????????????????????说人话:从外部邻居学来的路由,会传递给自己所有的邻居
BGP通告原则之三 : 通过IBGP获得的最优路由不会发布给其他的IBGP邻居
????????????????????????????????说人话:BGP路由器从内部邻居学来的路由不会再传递自己的内部邻居
????????????????????????????????????????这叫内内不相传: 也就是传说中的IBGP水平分割
????????????????????????????????????????为什么IBGP要这么搞,防止路由环路
BGP通告原则之四:IGP和BGP不同步(华为默认不同步)
拓扑
需求
实现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获得的最优路由不会发布给其他的IBGP邻居
????????说人话:BGP路由器从内部邻居学来的路由不会再传递自己的内部邻居
????????这叫内内不相传: 也就是传说中的IBGP水平分割
????????为什么IBGP要这么搞,防止路由环路
????????作用:解决IBGP内部路由环路问题
1) IBGP全互联
2) 路由反射器
3)BGP联盟
4)静态路由···· 在OSPF中引入BGP···· MPLS·····
使用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
-但是全互联太麻烦了
1)全互联的不足
????????-邻居关系数量太多,增加设备资源的消耗
反射器角色
????????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 //指定客户端
1)什么是BGP联盟呢?
????????-将一个大的AS系统,划分成多个小的AS系统
????????-联盟AS: 和外部建立邻居时使用的公有AS号,对外,联盟AS是一个独立的AS号
????????-子AS: 一个联盟AS内,可以包含多个子AS , 子AS之间是EBGP的邻居关系
每个子AS内部都是全互联IBGP邻居关系
2)联盟示意图
3)联盟的特点:
????????—简化了AS内部的IBGP邻居关系
????????—降低了AS内部网络设备的CPU的负担
????????—适用于大型的网络规模
路由反射器 | 联盟 |
不需要更改现有的网络拓扑,兼容性好。 | 需要改变逻辑拓扑。 |
配置方便,只需要对作为反射器的设备进行配置,客户机并不需要知道自己是客户机。 | 所有设备需要重新进行配置。 |
集群与集群之间仍然需要全连接。 | 联盟的子AS之间是特殊的EBGP连接,不需要全连接。 |
适用于中、大规模网络。 | 适用于大规模网络。 |
拓扑
需求
????????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
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
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属性。
1)公认必遵:
????????--所有BGP设备都可以识别此类属性,
????????--而且这类属性必须存在于Update报文中
????????--如果缺少这类属性,路由信息会出现错误
列举属性:
????????--Origin属性:定义路径信息的来源
????????--AS_path属性:按顺序记录一条路由从源地址到目的地址所经过的AS编号
????????--Next_Hop:定义路由的下一跳信息
2)公认任意
????????--所有BGP设备都可以识别此类属性
????????--这类属性不要求必须存在于Update报文中(可以在,也可以不在)
????????--如果缺少这类属性,路由信息不会出现错误
列举属性:
????????Local_Pref属性
3)可选过渡
????????--所有BGP设备都可以不识别此类属性(可以识别,也可以不识别)
????????--如果不识别,但仍然会接收此类属性,并且会通告给邻居
列举属性:
????????Community:团体属性
4)可选非过渡
????????--所有BGP设备都可以不识别此类属性(可以识别,也可以不识别)
????????--如果不识别,会忽略此类属性,而且不会通告邻居
列举属性:
MED属性
????????--所有BGP设备都可以识别此类属性,
????????--而且这类属性必须存在于Update报文中
????????--如果缺少这类属性,路由信息会出现错误
?该属性是一个公认必遵属性,用于指定到达目标网络的下一跳地址。
?当路由器学习到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编号
解析:
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 :无序类型
?该属性为公认必遵属性,它标识了BGP路由的起源。如上表所示,根据路由被引入BGP的方式不同,存在三种类型的Origin。
?当去往同一个目的地存在多条不同Origin属性的路由时,在其他条件都相同的情况下,BGP将按如Origin的下顺序优选路由:IGP > EGP > Incomplete。
????????-即本地优先级属性,是公认任意属性,可以用于告诉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
团体属性为可选过渡属性,是一种路由标记,用于简化路由策略的执行
?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值在传递过程中不发生改变也不会丢失。
?RR将一条BGP路由进行反射时会在反射出去的路由中增加Originator_ID,其值为本地AS中通告该路由的BGP路由器Router ID。
?若AS内存在多个RR,则Originator_ID属性由第一个RR创建,并且不被后续的RR所更改。
当BGP路由器收到一条携带Originator_ID属性的IBGP路由,并且Originator_ID属性值与自身的Router ID相同,则它不会学习该路由
?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,判断存在环路,从而不学习该路由
丢弃下一跳不可达的路由
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地址的大小”,越小越好
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?
在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?
-通过工具:过滤我们需要修改的路由条目
????????-有哪些工具:
????????????????&:ACL:访问控制列表:不精准
????????????????&:prefix-list : 地址前缀列表,比较精准,可以匹配路由的掩码,比ACL好
????????-这两个工具只能过滤路由信息,不能修改路由信息
-通过工具:修改路由条目的属性,从而影响BGP的选路,实现路由控制
????????-route-policy :路由策略,根据前缀列表抓到的路由,修改路由的属性
????????-route-policy 作为一个策略,是可以包含很多条目,不同的条目通过“序号”区分,这个序号我们称为:node
????????-当一个route-policy中包含多个条目的时候,会按照node 序号,从小到大,逐个检查
????????-router-policy 也是匹配即停止,一旦匹配到一个条目,就不在向下进行检查,如果所有的条目都没有被匹配,则执行拒绝所有的默认行为
????????-route-policy 包含两个语句
????????????????&:if-match :匹配 : 后面跟的是匹配条件, 我要匹配那个路由
????????????????&:apply : 修改:后面跟的是路由属性,我要修改路由的那个参数
-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?
-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?
第一步:恢复默认状态 在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?
第一步:在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 备注:验证:手动聚合优于自动聚合
-在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?
-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?
-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?
(备注:前提:路由前面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
第一步:在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开销值-越小越好”
如果前面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?
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通告的路由,抓包分析
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
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地址越小越优先