HCIP-ICT实战进阶06-BGP基础
HCIP-ICT实战进阶06-BGP基础
0 前言
运营商内部网络通过RIP、OSPF、ISIS实现网络互联, 但运营商之间要怎么办?
-
能不能互相引入路由?
理论上可行, 但考虑到网络机密问题和内部路由协议的一些缺陷(如OSPF会产生大量五类LSA).
-
考虑其他协议
BGP: 实现全世界所有运营商之间的网络互联.
基于以上概念, 路由协议分为两个类别:
- IGP协议, 内部网关协议: 在同一个局域网内部通信使用;
- EGP协议, 外部网关协议, 实现不同局域网之间的协议, 典型的EGP协议: BGP、EGP(这个EGP是外部网关协议类别里面的一个EGP路由协议, 现在基本被淘汰)
使用XShell查看全球BGP:
telnet route-views.routeviews.org
Username: rveiws
show ip route
show bgp all summary
1 了解BGP
1.1 BGP自治系统AS
在IPv4网络中, 通过判断IP地址信息可以区分不同路由位置.
BGP中用于全世界互联, 所以需要一种标识用于告诉网络工程师, 当前路由信息从那个区域传递过来, 这个区分方式就是AS自治系统.
AS: 一个企业/机构统一管理的设备集合, 比如中国电信, 会有自己专属的AS号码(向国际标准化组织买来的),
AS如何划分: 是IANA(互联网数字分配机构管理和分配组织), BGP网络中每一个AS都会有一个唯一的AS号码.
AS号码分为两种: 2字节(old)(公有: 1-64511, 私有: 64512-65535)、4字节(new)(1-2^32)
2字节不太够用了, 所以开放4字节. 新旧两种AS号码都是采用TVL结构, 所以能互相兼容.
1.2 BGP发展史
最早是EGP路由协议实现AS直接网络互联, 后面因为EGP协议问题比较多, 所以需要更新迭代, 在更新了三个版本BGP协议(-1 -2 -3)之后, 从有类路由协议迭代到如今无类路由协议BGP-4(RFC 4271).
1.3 使用BGP传递路由
为此AS之间专门使用BGP, 相较于传统的IGP协议:
- BGP基于TCP, 只要能够建立TCP连接即可建立BGP(可以跨越设备传递);
- 只传递路由信息, 不会暴露AS内的拓扑信息;
- 触发式更新, 而不是进行周期性更新.
1.4 BGP在企业中的应用
2 BGP的基本概念
2.1 BGP概述
BGP(Border Gateway Protocol, 边界网关协议)是一种实现自治系统AS之间的路由可达性, 属于外部网关协议, 着重于路由传递和最佳路由选择, 不在乎网络拓扑自动发现, 不需要进行路由计算, 只需要选择最优路由传递即可.
MP-BGP(多协议BGP): 在BGP-4版本之上进行了TLV扩展, 可以支持IPv6网络, 这个版本也称为BGP-4+.
BGP特性
-
BGP是距离(路径)矢量路由协议之一;
- BGP目前版本是无类路由协议;
-
BGP工作在应用层, 采用TCP连接(TCP能保证网络传输的可靠性), 端口号为179.
-
BGP最佳路由选择依靠大量路径属性, BGP不需要任何算法进行选择路径;
-
TVL结构, 易于扩展;
-
BGP是世界性互联协议, 提供了一种防路由震荡机制: 路由衰减和路由聚合;
-
BGP可以扩展支持MPLS VPN网络.
MPLS VPN网络是目前互联网上最好用的VPN, 需要向运营商购买;
-
运行BGP的设备称为BGP Speaker(BGP路由器);
BGP更新方式
BGP有增量更新和触发更新
-
增量更新就是发生变动之后, 可以在同一个报文里面携带不同信息用于更新.
-
触发更新就是发生变动, 立刻发送更新变化.
BGP没有任何周期性更新概念, 原因是其路由体量过于庞大, 周期更新会触发网络卡顿. 所以如果没有特殊情况, 一般发生更新的时候, 只会发送发生变化的内容.
BGP对等体关系
两个建立BGP会话的路由器互为对等体(Peer), BGP对等体之间不一定需要直连(TCP), BGP对等体之间交换BGP路由表.
如果两台BGP对等体在同一个AS里面, 该对等体关系称为IBGP(Internal BGP), 在不同AS间称为EBGP(External BGP).
2.2 BGP报文
BGP存在5种类型的报文, 不同类型的报文拥有相同的报文头部(header).
BGP报文头部格式
- Marker: 16字节, 用于检查BGP对等体的同步信息是否完整, 以及用于BGP验证的计算, 如果不使用验证, 则该字段全为1;
- Length: 2字节, BGP消息的总长度;
- Type: 1字节, 具体BGP消息种类:
- type=1, OPEN消息;
- type=2, UPdate消息;
- type=3, Notification消息;
- type=4, Keepalive消息;
- type=5, Route-refresh消息.
Open报文
作用: 用于BGP建立对等体之前, 进行参数协商, 在BGP TCP连接建立成功后发送.
-
version: 1字节, BGP版本, 目前为4, 版本号码是需要协商的, 理论上能向下兼容, 但现实中3和4无法通信,
-
My AS: 2字节, 表示发送该报文的BGP设备的AS号码, 用于判断关系为IBGP/EBGP;
-
hold time: 2字节, 发送该报文BGP设备对等体关系老化时间(默认180s), 该字段会决定最后发送keepalive的周期(默认60s), 如果两边不一致会协商为间隔时间较小的一边, 为0表示不需要发送keepalive, 不为0则需要大于3s.
-
BGP ID: 4字节, 表示发送该报文的Router ID;
-
Option length: 可变长度, 表示可选项option有多少字节, 没有则显示0或空.
-
Option: TLV格式的可选项.
-
type: 可选参数类型, 目前数值为2才有意义;
-
length: value长度;
-
value: 也是一个TVL:
-
type: 参数
type=1: 地址族能力;
- AFI
- AFI=1: IPv4地址族;
- AFI=2: IPv6地址族;
- AFI=196: 二层地址.
- Res: 预留;
- SAFI: 子地址族标识:
- SAFI=1: 单播地址;
- SAFI=2: 组播地址;
- SAFI=128: VPN地址.
type=2: refresh能力;
type=65, 4字节AS.
- AFI
-
length;
-
value...
-
-
Update报文
作用: BGP的路由更新和路由撤销, 在对等体关系建立后需要发送路由变化时发送
-
Unfeasible route length (撤销路由的长度), 表示需要撤销多少字节, 为0表示没有路由需要撤销.
-
Withdrawn Routes(撤销的路由): 表示具体撤销的路由, 有两部分组成:
- length: 待撤销路由的掩码, 为0时表示匹配所有路由;
- prefix: 传送的IP地址前缀必须用整字节表示.
-
Total Path Attribute Length(全部路径属性长度): 表示后续新增需要更新的路由, 路径属性有多少内容;
-
Path Attribute(路径属性): 根据教育厅的路径属性, 字这一部分进行填写, 路径属性通过TLV形式呈现:
-
type: 2字节, 分成两个部分:
-
flag:
-
O(Optional bit): 属性可选性, 公认(well-known)为0, 可选(optional)为1.
-
T(Transitive bit): 属性可传递性, 公认必须为1, 可选为1, 非可选为0.
-
P(Partial bit): 属性的局部性;
-
E(Extend Length bit): 决定该属性长度的字段, 需要扩展为1, 不需要扩展为0.
-
U: 未使用
-
-
type;
-
-
length;
-
vlaue;
-
-
Network Layer Reachability Information(NLRI, 地址前缀信息): 跟上述撤销路由一样, 有两个部分:
- length;
- prefix;
注意: 同一个Update消息, 只能携带路径属性相同的路由, 换句话说: BGP路径属性一致的路由信息可以放在一个Update报文内传递.
flag里面为了标识路径属性时哪一类别, 使用O和T来那个比特位来表示:
O T 含义 0 1 公认必遵和公认任意 1 1 可选过渡 1 0 可选非过渡
路径属性会在我的下一篇博客展开细说
Notification报文
作用: 报错提示, 将当前BGP出现的问题通过报错消息告知设备和用户, 可以用来终止对等体关系.
Error Code、Error subcode: 差错码、差错子码, 用于告知对端具体的错误信息;
Data: 用于辅助描述详细的错误内容, 长度不固定.
Keepalive报文
作用: 用于保持BGP对等体之间的活性, 在建立对等体关系后会定期发送来保持连接.
没有报文格式, 只有BGP报文的报头, 是一个纯粹的告知, 只要对方收到就能知道对等体没有断开.
Route-Refresh报文
作用: 该报文用于告知其他设备, 现在需要进行部分路由的更新, 在路由策略发生变化时会触发请求对等体重新告知路由.
- 如果是出方向发生策略变化, 想要立刻更新路由, 基本只能重置BGP, 否则只能等待其他条件更新;
- 如果是入方向发生策略变化, 可以依靠route-refresh.
- AFI(Address Family Identifier): 地址族标识, 比如ipv4;
- Res: 预留, 全置为0;
- SAFI(Subsequent Address Family Identifier): 子地址族标识;
通过以上三个内容, 就是告知其他设备, 本机当前需要更新哪一种路由.
2.3 BGP状态机
状态 | 含义 | 备注 |
---|---|---|
idle | 开始准备TCP连接并监视远程对等体, 启用BGP时需要足够的资源 | 当前BGP进程空闲, 没有在建立对等体. |
connect | 正在进行TCP连接, 等待完成中, 如果TCP建立失败则进入active状态, 尝试反复连接 | 认证都是在TCP建立期间完成的 |
active | TCP建立失败, 反复尝试TCP连接 | |
opensent | TCP建立完成了 | 发送Open消息, Open报文携带参数协商对等体的建立 |
openconfirm | 收到对方的Open消息并确认完成 | 发送了keepalive, 在等待对方的keepalive |
establish | BGP对等体建立完成 | 收到了对方的keepalive包, 双方协商一致后开始使用Update通告路由信息 |
BGP建立过程
-
idle: 是BGP初始状态, 拒绝邻居发送的连接请求, 只有当本设备产生一个start事件, 才会开始尝试和其他BGP设备建立TCP连接, 然后设备会进入connect状态.
strat事件: 是操作者配置一个BGP的过程, 或者是重置BGP进程.
注意: 任何状态下, 如果收到Notification消息(主要是open消息错误), 或者是TCP拆链消息, BGP都会回到idle状态.
-
connect: 设备会启动重传定时器(默认32s), 等待TCP建立完成, 有下面三种情况:
- TCP建立成功, BGP会发送open报文并进入opensent状态;
- TCP连接失败, BGP会进入active状态;
- TCP重传定时器超时, BGP停留在connect状态并继续尝试TCP连接.
-
active: BGP会一直尝试TCP连接
同样是三种情况:
- TCP建立成功, BGP会发送open报文并进入opensent状态;
- TCP连接失败, BGP会停留在active状态;
- TCP重传定时器超时, BGP退回connect状态.
以上过程都是为了TCP连接的建立, TCP建立完成之后才继续下面的对等体协商.
-
opensent: BGP会等待对等体的open消息, 如果收到open消息, 则需要检查version、holdtime、ID、AS、认证.
-
检查通过则发送keepalive消息并进入openconfirm状态, 等待对方回复keepalive;
-
检查不通过则发送notification消息并回到idle状态.
-
-
openconfirm: 等待对等体发送keepalive/notification报文:
-
收到keepalive则进入establish;
-
收到notification回到idle.
-
-
establish: 此时BGP对等体之间交互Update、keepalive、refresh、notification报文.
- 如果收到正确Update/keepalive, 则保持BGP关系;
- 如果收到错误Update/keepalive, 则判断是否出现问题:
- 出现问题, 进入idle状态;
- 没有问题, 保持establish状态.
一些小知识点
-
refresh不会改变BGP的状态.
-
active和connect状态保持很久时间之后, 理论上会重新进入idle, 然后重新进入connect和active, 但实际上TCP建立失败可能会导致BGP停留在connect或active状态.
-
BGP除了establish和idle之外,其他状态机大部分都不是稳定停留, 比如TCP连接有问题,则idle、connect、active之间会切换, 只是查看的时候看到的是停留.
2.4 BGP的表
2.4.1 BGP对等体表
也叫BGP的邻居表, 就是对等体邻居列表.
- Peer: 对等体地址;
- V: version, 版本号;
- AS: 对等体AS号;
- Up/Down: 该对等体已经Up或Down的时间;
- State: 对等体状态, 这里显示的为BGP状态机的状态;
- PrefRcv: prefix received, 从对等体收到的路由前缀数目.
查看对等体表的命令:
display bgp peer
2.4.2 BGP路由表
BGP的路由信息数据库, 该数据库中, 有一些路由需要加入路由表, 有一些路由信息发送给其他设备做路由更新.
-
BGP Local Router ID: BGP本地Router ID;
-
在每条路由前面, 会出现: *、>、d、h、i、s、S, 含义如下:
符号 描述 备注 * 该路由时有效路由(可用的路由) BGP协议只是为了传递路由, 所以BGP学到的路由不一定都是可用的 > 该路由是当前设备的BGP进程选择出来的最优路由 BGP有非常多的选路属性(路由属性) d 该路由时衰减路由 为了防止频繁震荡引起的世界性路由不稳定, BGP针对一台频繁发生震荡的路由, 会设置惩罚值 h 这条路由最后一次收到的update中时一个需要撤销的路由 i 该路由时AS内部传递来的 IBGP之间的路由传递 s 该路由被抑制 BGP配置路由聚合的时候, 可能会出现s来抑制路由发送. S 该路由正在被删除 惩罚值: 为了让一些频繁震荡的路由不能更新, 被标识了d的BGP路由, 说明该路由不稳定, 且惩罚值超出了设定的阈值, 所以该路由不能进行路由更新, 也不会参加路由计算.
-
network: 路由的目的网络地址和网络掩码;
-
Nexthop: 下一跳地址;
-
MED: 路由度量值;
-
LocPrf: 本地优先级;
-
PrefVal: 协议首选值;
-
Path/Ogn: 显示传递路由信息的设备的AS路径号和Origin属性.
这些属性值的用处会在下一篇博客展开.
查看BGP路由表情况的命令:
display bgp routing-table [ipv4-address {mask|mask-length}]
全局查看或详细查看.
2.4.3 Adj-RIB-IN
对等体发送给本机的BGP路由, 但是目前没有进行处理过, 接收BGP更新的接口是否配置策略:
- 如果有配置策略, 则需要将BGP路由表加入该表项, 然后进行策略处理, 处理完之后再进入路由表.
- 如果没有策略, 则直接进入BGP路由表.
2.4.4 Adj-RIB-OUT
本机发送出去的BGP路由更新, 已经被BGP的策略处理过了的路由会加入该表项, 用于告知设备, 这些路由信息是需要发送的.
2.5 BGP路由的生成
如果BGP想要通告路由, 使用的方式只有network和import-route.
BGP不管是network、import-route都称为引入路由, 是把路由引入并传递出去, 不会自动生成路由, 需要手动通告出去, 不同于OSPF中的network(通告, 把接口加入OSPF协议, 路由会自动生成并传递); import-route没啥特殊差别, 只是BGP会标出来而已.
2.5.1 Network
-
生成BGP路由: BGP可以将路由表中存在的任意一条路由通过network转换成BGP路由.
比如路由表中存在这些路由:
目的地址 来源 192.168.1.0/24 ospf 192.168.2.0/24 isis 192.168.3.0/24 rip BGP如果想传递192.168.3.0/24, 则直接在BGP进程中输入命令:
network 192.168.3.0 24
精确匹配, 路由前缀和掩码必须一致, 要引入多少条就写多少条.
该命令会让BGP进程生成相关的BGP路由.
-
生成该路由之后, 本地设备会先将该路由放到BGP路由表中;
-
之后在BGP Update消息中传递该路由会更新给其他设备;
-
其他设备在收到路由之后, 直接将路由加入到BGP路由表中, 之后再进行路由有效性判断, 并选择最优路径.
例子:
- AS 200内的BGP路由器已经通过IGP协议OSPF学习到了两条路由: 10.1.0.0/24和10.2.0.0/24, 在BGP进程内通过network命令注入这两条路由, 这两条路由将会出现在本地BGP路由表中;
- AS 200内的BGP路由器通过Update报文将路由传递给AS 300内的BGP路由器;
- AS 300内的BGP路由器收到路由后, 将这两条路由加入到本地BGP路由表中.
2.5.2 Import-route
import-route本身就是引入某一个其他协议的路由引入到BGP, 使用方法和其他协议一致.
例子:
Network方式注入路由虽然是精确注入, 但是只能一条条配置逐条注入IP路由表中的路由, 如果注入的路由条目很多配置命令将会非常复杂, 为此可以使用import-route方式, 能将直连路由、静态路由、ospf路由、ISIS路由等路由注入到BGP路由表中.
2.6 BGP聚合路由
回顾OSPF路由聚合和ISIS路由聚合: 路由聚合会将明细路由聚合成一条汇总过后的路由, 然后向外发送路由更新的时候, 也是只发送一条汇总路由, 明细路由则不再发送.
BGP路由聚合的效果: 首先明细路由会汇总成一条汇总路由, 路由更新的时候, 会发送汇总路由+明细路由.
举例:
路由信息 |
---|
192.168.1.0/24 |
192.168.2.0/24 |
192.168.3.0/24 |
如果是OSPF或者ISIS进行路由汇总, 最后传递的路由只存在192.168.0.0/22;
如果是BGP, 最后传递的路由会存在192.168.0.0/22、192.168.1.0/24、192.168.2.0/24、192.168.3.0/24四条路由.
配置命令
bgp 200
aggregate 192.168.0.0 22
以上命令会导致汇总之后反而路由变多, 使用所以需要加上参数, 抑制明晰路由:
bgp 200
aggregate 192.168.0.0 22 detail-suppressed
配置了明晰路由抑制, 在BGP路由表中这些路由条目前会出现"s"标识.
2.7 BGP通告原则
BGP路由能否传递出去给其他设备, 是需要考虑BGP路由传递原则
只发布最优且有效的路由
只有BGP路由表中, 显示为"*"(有效)并且">"(最优)的路由才可以被BGP传递出去;
从EBGP对等体获取的路由, 会发布给所有对等体
如果两台BGP设备之间是EBGP关系, 则从EBGP关系学到的BGP路由, 可以传递任何任何邻居;
IBGP水平分割(防环)
从IBGP对等体获取的路由, 不会发送给IBGP对等体. 即如果两台BGP设备之间是IBGP关系, 则从IBGP关系学到的BGP路由, 只可以传递给EBGP邻居, 不会传递给IBGP.
BGP同步原则
当一台设备从自己的IBGP对等体学习到一条BGP路由时, 他将不能使用该路由或者将该路由通告给自己的EBGP对等体, 除非它又从其他IGP协议中学习到这条路由.
说人话就是这条IBGP路由需要同时从BGP和IGP中学习到才能向EBGP使用/传递.
举例
假设A有一个192.168.1.0/24的BGP路由需要传递, B C E F都能学到, D无法学到.
解决办法:
-
在C设备上通过network重新引入一遍.
理论上可行, c设备network相当于就是重新生成BGP路由信息, 这样会导致网络中路由关系混乱(D无法判断该路由信息是A还是C产生的).
-
通过TCP跨设备建立对等体(BGP全互联网络结构):
将B和D之间建立IBGP关系, 这样B收到的EBGP信息就能发送给自己的IBGP邻居.
所以一般在现实网络中, 同一个AS内的BGP设备都会建立IBGP关系, 实现IBGP全互联.
-
RR反射器(这个会在我的, 不知道是哪一篇博客中展开);
-
BGP联盟.
BGP同步和BGP路由黑洞
BGP路由黑洞: BGP能跨设备传递路由, 但数据转发需要逐台设备, 一旦网络路径上有设备未开启BGP, 就会导致需要该设备转发的数据被丢弃.
BGP同步: 当一台设备从IBGP邻居学到一个路由, 然后该路由需要发送给EBGP邻居的时候, 需要判断是否在IGP协议里也学习到该路由, 该路由需要同时被BGP和其他IGP协议同时学习到才能传递. BGP同步机制一般是为了防止BGP路由黑洞影响范围扩大.
BGP在任何厂商的说明里面, 都是不建议打开的, 华为默认关闭BGP同步机制.
从一个案例了解BGP同步和BGP黑洞
C设备未开启BGP, B和D通过TCP建立了IBGP关系.
BGP路由可以从A传给B、B传给D、D传给E, 但是C不会学到BGP路由(C没有开启BGP), 这样导致了一个问题: E虽然学到了通告的192.168.1.0/24, 但是无法ping通.
BGP路由可以跨设备传递的, 中介设备不要学会路由信息, 但是数据转发一定是需要逐台设备转发的.
D设备的下一跳是C, C收到ICMP报文, 查询路由表, 发现没有192.168.1.0/24路由, 于是C设备丢弃ping数据.
此时就形成了BGP黑洞.
解决方法:
-
开启同步之后, D设备不会把路由发送给E, 因为BCD(OSPF)的B向D交互的是BGP路由, 所以OSPF根本不会学习到BGP路由, 最后D也不能将路由信息传递到E;
注意: 这里的路由黑洞是存在的, 只是不会影响其他区域.
-
将BGP引入IGP(如OSPF), 但会导致OSPF内出现巨量五类LSA, 隐患很大.
3 BGP的基本配置
- BGP进程和之前学习的一些IGP协议的进程(一台设备可以有多个进程号, 每个进程相当于独立的协议)不大一样, BGP协议中只能有一个进程, 且进程号就是该BGP设备所处AS的AS号码.
- BGP没有自动发现邻居的机制, BGP需要手动指定邻居信息.
配置命令
-
启动BGP进程:
[Huawei]bgp {as-number-plain|as-number-dot} [Huawei-bgp]router-id ipv4-address
启动BGP, 指定本地AS编号, 并进入BGP视图, 使用router-id命令配置BGP的Router ID, 建议将BGP的RID配置为环回口地址.
-
配置BGP对等体:
[Huawei-bgp]peer {ipv4-address|ipv6-address} as-number {as-number-plain|as-number-dot}
创建BGP对等体, 指定对等体的地址和AS号.
-
配置建立对等体使用的源地址, EBGP对等体最大跳数, IBGP修改下一跳属性:
[Huawei-bgp]peer ip-address connect-interface interface-type interface-number [ipv4-source-address] [Huawei-bgp]peer ipv4-address ebgp-max-hop hop-count [Huawei-bgp]peer ipv4-address next-hop-local
指定发送BGP报文的源接口, 并可指定发起连接时使用的源地址.
指定建立EBGP连接允许的最大跳数, 缺省情况下, EBGP连接允许的最大跳数为1, 即只能在物理直连链路上建立EBGP连接;
设备B在收到EBGP A的路由再传递给IBGP C时, C下一跳默认为A, 但是可以通过命令修改这个配置.
配置案例
举例1:
-
创建BGP:
bgp 100 router-id 1.1.1.1
创建AS 100内设备的BGP进程, 设备RID为1.1.1.1;
两边对等体都要配置.
-
指定对等体信息:
bgp 100 peer 10.1.1.2 as-number 100
邻居的IP地址为10.1.1.2, 且对方的AS号码是100;
这里如果Open报文在交互报文时, My as字段不是100, 就会导致对等体关系失败, 这里如果对对等体建立过程遗忘的可以倒回去看.
默认情况下BGP指定了peer命令之后, 设备会根据对等体信息查找路由表, 找到通往该对等体的路由, 该接口的IP地址用于作为TCP源地址和对方通过TCP连接建立对等体关系.
但如果当前设备想要用的TCP源地址和对等体指定的源地址不一致, 那就需要采用其他方法配置.
-
指定TCP源地址配置对等体:
peer route-id connect-interface interface-type interface-number
比如:
peer 1.1.1.1 connect-interface loopback0
-
建立EBPG对等体
peer 1.1.1.1 ebgp-max-hop 5
将建立EBGP时的open报文的TTL置为5.
不同于建立IBGP关系(TTL=255), 建立EBGP的open报文中TTL=1. 所以指定环回口建立EBGP对等体的时候, TTL需要改大一点(ebgp-max-hop).
所以EBGP关系建立的时候一般采用物理接口, IBGP关系建立的时候一般使用环回口(优势: 冗余、稳定)作为TCP源地址.
-
将EBGP学来的路由下一跳属性置为自己, 然后再传递给其他IBGP对等体.
peer 4.4.4.4 next-hop-local
所以IBGP之间通常会加上这条命令:将下一跳指定为自己, 但这条命令只能在对等体刚开始建立时才能生效, 否则需要重置BGP进程.
从EBGP学来的路由, 传递给IBGP时不会修改下一跳属性, 比如A--EBGP-->B--IBGP-->C, C学习到这条路由的下一跳是A, 但C不一定用通往A的路由, 所以这条路由可能会无法使用.
-
重置bgp进程:
reset bgp 200
一般情况下, 为设备配置bgp属性时, as-number、connect-interface、next-hop-local这三条命令是必须的.
举例2:
BGP对等体关系、AS号、设备互联地址如图所示, 所有设备的Loopback1接口地址为10.0.x.x/32, 其中x为设备编号, 所有设备都使用Loopback1地址作为Router ID. R1、R3之间使用Loopback1地址作为更新源地址建立IBGP对等体关系, R3、R4之间使用互联接口地址作为更新源地址建立EBGP对等体关系. ospf已经预配完成.
R1:
bgp 100
router-id 10.0.1.1
peer 10.0.3.3 as-number 100
peer 10.0.3.3 connect-interface loopback1
R3:
bgp 100
router-id 10.0.3.3
peer 10.0.1.1 as-number 100
peer 10.0.1.1 connect-interface loopback1
peer 10.0.34.4 as-number 200
R4:
bgp 200
router-id 10.0.4.4
peer 10.0.34.3 as-number 100
问题
-
在BGP路由选择规则中, 为什么EBGP > IBGP ?
如果BGP设备通过IBGP设备学习到的路由, 表示该路由可能是在自己的AS里传递了有些时间了, 相较于从EBGP学习到的相同的路由会更劣质.
就算这条路由是由IBGP产生的, 通过EBGP再通过EBGP传递给与产生这条路由相同的IBGP设备, 也会因为BGP的防环机制(水平分割, 设备会将AS_Path中有自己AS号的路由信息拒收)被相同AS的设备拒收.
-
抓包观察BGP认证是封装在传输层还是封装在应用层.
还没抓, 有时间再搞.
本文来自博客园,作者:Qurare,严禁转载至CSDN平台, 其他转载请注明原文链接:https://www.cnblogs.com/konjac-wjh/p/16920209.html