CISCO设备——BGP动态路由协议

协议划分

能看到这里的我相信你们都知道我们路由协议的分类
距离矢量动态路由
链路状态动态路由协议

IGP动态路由:同一个自治系统(AS)内的动态路由协议
EGP动态路由 :运行在不同自治系统(AS)之间的动态路由协议

为什么使用BGP
首先我们要说清楚不同协议的优先
IGP: 在同一个AS之内
优点 周期性的更新来确保路由信息正确
快速收敛
采用了共同的度量值进行计算
提供有限的策略控制能力
缺点 可靠性不高容易出现路由环路
频繁的路由抖动
有限的邻居数量和路由数量
优先的路由条目策略控制(过滤 管理地址 Metric)

AS(Autonomous Systems)自治系统

AS: Autonomous System 自治系统 一组设备或一块区域设备的集合,使用一个数字来表示
早期自治系统使用16bit来标识 <1-65535> 私有<64512-65535>
现在的AS使用32bits来表示 <1-4294967295>

在思科系统当中我们可以这样写

R5(config)#router bgp ?
  <1-4294967295>  Autonomous system number
  <1.0-XX.YY>     Autonomous system number

我们可以使用点分写法(16位bits为一组数字)就不需要计很长的,但是个人还是倾向写全

BGP的特点:

BGP不再使用组播建立邻居,而是只能够使用单播(TCP)建立邻居,建立在TCP之上的BGP邻居
通过TCP三次握手建立端到端连接在发送BGP邻居
使用TCP179建立邻居管理

可以跟踪指定的路由根据他的震荡历史对路由条目进行衰减惩罚

对等题邻居数量数百个会话

路由数量可以达到70-80w条路由

丰富的路由属性

多种策略的管理出入方向两种管理基于路由的管理

BGP三张表

BGP邻居表
show ip bgp neighbor
show ip bgp summary

BGP数据库表(BGP表)
show ip bgp

BGP的数据包类型

Hello: 用于发现建立维护邻居关系
数据包中包含本设备的动态路由协议信息
hello包周期性发送
超过hold时间收不到hello包就认为邻居故障

Open: 建立邻居关系的时候发送的数据包,包含本路由器的BGP协议信息

Keepalive: 一旦建立好邻居关系
开始每隔60s向邻居发送一次保活包对方通过TCP ACK消息进行确认,Hold时间180s

Update: 通告BGP的路由条目更新(包含属性)

notification:当邻居关系故障或者有异常的时候将会自动发送通告消息

BGP的邻居关系

BGP的邻居关系称之为“BGP peer”(BGP对等体)

EBGP(External BGP):

两个不同AS建立的BGP邻居就称他为EBGP邻居关系

IBGP(Internal BGP):

相同AS之间建立的BGP邻居关系就是IBGP邻居关系

BGP的运行方式

通过直连建立BGP邻居关系

直连建立EBGP邻居关系

#R1
R1(config)#router bgp 100
R1(config-router)#neighbor 1.1.12.2 remote-as 200      //与AS200的邻居1.1.12.2建立BGP邻居关系

#R2
R2(config)#router bgp 200
R2(config-router)#neighbor 1.1.12.1 remote-as 100      //与AS100的邻居1.1.12.1建立BGP邻居关系

激活进程的时候会激活设备的TCP179端口指定邻居之后会向指定IP的179发送 TTL=1 的TCP数据包

我们现在来show ip bgp summary看看

R2(config-router)#do show ip bgp su
BGP router identifier 10.10.2.2, local AS number 200
BGP table version is 1, main routing table version 1

Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
1.1.12.1        4          100      10      10        1    0    0 00:05:50        0

注意最后的这里只有是数字的时候BGP数字才是正常的(为0因为我们现在没有传递任何条目)当显示为单词时候才会是有问题的

直连建立IBGP邻居关系

很简单的!

#R1
R1(config)#router bgp 100
R1(config-router)#neighbor 1.1.12.2 remote-as 100      //与AS200的邻居1.1.12.2建立BGP邻居关系

#R2
R2(config)#router bgp 100
R2(config-router)#neighbor 1.1.12.1 remote-as 100      //与AS100的邻居1.1.12.1建立BGP邻居关系

激活进程的时候会激活设备的TCP179端口指定邻居之后会向指定IP的179发送 TTL=255 的TCP数据包

通过非直连建立BGP邻居关系

在Cisco IOS当中
建立过程中 默认路由 会被认为是可以发送TCP的条目
必须存在明细路由才可以主动建立BGP邻居关系,只能被动回复TCP连接消息
在HUAWEI VRP当中
相反,可以使用默认发送TCP消息建立邻居关系

非直连建立IBGP邻居

很简单就是在同AS范围内使用loopback或者其他直连地址建立BGP邻居,但需要注意需要保持线路联通状态(有IGP路由指向目的)

需要注意的是 BGP 采用TCP源认证 ,所以配置的时候需要加上
neighbor 1.2.3.4 update-source <interface>
并且这里只需要有一方认证成功就可以通过认证

非直连建立EBGP邻居

如果我们按当初一样建立EBGP邻居,你会发现一个问题,问题就是你查看邻居信息会变成IDLE

注意我们前面的一句话
激活进程的时候会激活设备的TCP179端口指定邻居之后会向指定IP的179发送 TTL=1 的TCP数据包

建立IBGP邻居关系的时候默认的关系为TTL=255
建立EBGP邻居关系建立时候的TTL=1

但是99%的情况都是直连建立EBGP邻居

当非直连EBGP关系的是很好,neighbor指定的地址如果不是路由器的直连地址,路由器会认为TTL=1不一定可以访问到neighbor指定的目标地址。直接不发送我们的TCP连接请求

我们有两种解决方法

1.关闭EBGP直连检测

neighbor 1.2.3.4 disable-connected-check

2.更改EBGP的TTL值

neighbor 1.2.3.4 ebgp-multihop <1-255>
如果后面空着将会默认最大值255

BGP router-id的选举方法

BGP router-id 的选举和OSPF相同:

有loopback选最大的loopback
没有的话选最大的物理接口地址

NetworkCLI

在bgp当中network命令行

network Specify a network to announce via BGP
网络:指定要通过 BGP 通告的网络

其他路由协议

network Enable routing on an IP network
网络 启用 IP 网络路由

这里是不同的,其他协议是激活运行bgp是只通告,这点需要分清楚

BGP邻居关系建立的过程

IDLE:一旦BGP在进程当中指定了BGP的IPv4地址邻居,就会开始向对方发起TCP连接请求,如果BGP连接过程当中任意一个步骤出现错误则都会回到IDLE状态
Connect:
路由器在发送TCP连接,希望建立起端到端的连接如果TCP连接建立建立成功就会进入Active
Active:
路由器是主动发起BGP连接请求的设备,如果TCP连接建立失败则卡在Active之后重试
OpenSent:
双方开始互相发送Open消息 包含AS hold时间 Router-id以及BGP所支持的功能有哪些
OpenConfirm:
相互之间确认对方的Open信息 如果确认无误就进入这个状态 然后开始发送第一个KeppAlive
Established:
当互相都受到了对方的KeppAlive,开始通过Update交换BGP条目交换之后进入Establish状态邻居关系建立成功

一旦确认本设备是主动建立邻居的一方,则Active建立BGP邻居关系 直接转入Active状态 并进行三次握手,如果连接成功则从Active转入Opensent
如果失败则从Active回到IDLE重新尝试主动建立BGP关系还是被动连接BGP关系重头开始建立邻居

本设备是被动的一方 收到了别的路由器向自己发送的TCP连接则静茹Connect状态一旦三次握手成功则直接转入Opensent握手失败则回到IDLE重头开始

Active timer(Active倒计时)

哪个设备先结束延时哪个设备主动发出TCP连接请求

Open active delayed 8192ms (35000ms max ,60% jitter)
//一旦指定了neighbor邻居关系进入IDLE马上开启Active Delay

show tcp brief //查看本机TCP连接状态

这个数值我们一般不手动更改

BGP的路由条目宣告

BGP可以将路由表中存在的路由通过network命令宣告进入数据库

关闭自动汇总

通过network命令行宣告匹配的路由条目,如果想要进入BGP数据库,宣告的需要和路由表中的明细路由网络号和子网掩码完全一致

开启自动汇总

通过network命令行宣告匹配的路由条目,如果想要进入BGP数据库,宣告的需要和路由表中的明细路由网络号和子网掩码完全一致

同时有一点不同的,我们可以宣告我们明细路由的主类路由进入我们的BGP数据库

BGP针对于最优路由的行为

1.BGP仅会向邻居通告最优路由(默认情况)

2.BGP仅会提交数据库中最优路由进入路由表(默认情况)

BGP满足最优路由的条件

1.路由器的入方向策略允许的路由

2.下一跳可达的BGP路由

3.满足BGP选路十三条的

4.满足BGP同步条件的BGP路由

BGP传递路由条目时下一跳是否改变

EBGP之间传递路由,默认下一跳改变

EBGP之间传递路由,默认下一跳不变

所以我们在边界机器上会设置
R2(config-router)#neighbor <x.x.x.x> next-hop-self

EBGP管理距离20
IBGP管理距离200

BGP路由黑洞

控制层面上没有运行某协议导致的条目确实,但是转发数据层面上,无法到达

然后解决路由黑洞

1.边界设备之间拉物理链路

2.tunnel

3.Full Mesh(IBGP)

4.重分布

5.联邦

6.路由反射器

7.MPLS

BGP的路由防环

EBGP的路由防环

AS-Path属性:记录了BGP路由从哪个路由器起源,经过了哪些AS传递

BGP的路由条目在AS离开的时候会加上所经过的as号


     Network          Next Hop            Metric LocPrf Weight Path
 *>   1.1.1.0/24       192.168.45.4                           0 243 100 i
 *>   5.5.5.0/24       0.0.0.0                  0         32768 i

当收到了带有自己as的条目路由器会将其丢弃

IBGP的路由防环

IBGP水平分割:路由器从一个IBGP邻居学习到的条目不会通告给另一个IBGP邻居

已经通告IGP内部的IBGP逐级建立BGP邻居关系,解决了路由黑洞但是由于IBGP的水平分割导致BGP路由条目无法在IBGP之间传递

联邦:

第一个方法 绕

联邦 = 在大的AS中创建小的AS 在各个小的AS之间建立小的AS之间的EBGP邻居


R2(config-router)#bgp confederation identifier 243 //指定自己属于的联邦
bgp confederation peers 64544 //指定联邦的邻居as

联邦中的路由器建立EBGP邻居关系的时候将会使用大的AS号
联邦中的路由器建立IBGP邻居关系的时候将会使用小的AS号

路由反射器:

从路由反射器(RR)的一个客户端传递过来的一条路由

RR会传递给我的另一个反射簇的客户端

RR会传递给我的另一个EBGP邻居

RR不会传递给我的另外一个非客户端

如果路由器成为了路由反射器则关闭了IBGP的水平分割从IBGP邻居收到的路由可以通告给IBGP邻居(配置路由器成为路由反射器必须至少指定一个IBGP邻居作为客户端)从非客户端传递的IBGP条目不会传递给非客户端

neighbor 10.10.2.2 route-reflector-client //指定邻居为路由反射器的客户端,自己就会变为路由反射器

关闭水平分割后的防环措施

Originator ID : 反射之前的路由条目来源router-id
Client list : 记录下该路由已经经过了哪些路由反射器反射过了

BGP的路由属性

BGP路由属性的分类:

公认强制属性
传递路由条目的时候100%会携带的属性
AS-path,Next-hop…

公认自觉属性
在EBGP之间传递不包含该路由条目属性,在IBGP之间传递包含该路由条目的属性
Local Preference(本地优先级)

可选可传递属性

可选非传递属性

BGP的团体属性

可以限制BGP的路由条目传递范围
团体属性默认向邻居通告的时候不带属性 如果需要携带需要
neighbor x.x.x.x send-community

公有团体属性

Internet 该条目可以被任意的传递
no-advertise 该路由条目不会传递给任何的邻居传递
no-export 该条目不会传递出本AS(不会传递出联邦大的)
local-as 该条目不会传递出本AS(仅限当前AS号的范围)
gshut Graceful Shutdown 告知对方路由器自己要挂了

私有团体属性

BGP当中没有类似OSPF的Tag值,所有我们用私有的团体属性

set community {<1-4294967295>/<aa:nn>}  

如果需要用community做策略 你可以用community list 列表

AS-Path

EBGP路由防环

经过自身的路由条目被重新丢到自己身上会被直接丢弃

通过AS-Path EBGP可以选出最优的路由

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇