边界网管路由协议BGP
AS
自治系统 一组被统一管理的路由器集合。
a,使用相同的度量值
b 使用相同的IGP
AS号
系统之间通过AS号区分,由IANA 地址授权委员会统一分配。
-公有AS号 2byte 范围 0-64511 0为保留的AS号
-私有AS号 64512-65535 不能在公网出现
-如今AS被拓展为4byte
IGP特点
- 运行在同一个as内部
- 周期性更新确保路由正确
- 收敛速度快,抖动比较频繁
- 采用相同标准结束度量值
- 提供有限的路由策略,调整路由路径只能通过metric(BGP 13条选路原则)
- ospf 最多支持10000条 isis做多支持20000 条路由条目
BGP特点
- 属于外部网关路由协议(EGP),高级路径矢量路由协议
- BGP基于TCP,端口号 179
- 第一次做完整更新,后面只做增量更新,触发更新
- 使用keeplive维持BGP邻居关系
- 丰富的度量值
- BGP只用于internet,是互联网协议
- BGP在AS间传递路由信息
BGP优点
1非常可靠
- 通过TCP建立可靠连接
- BGP放环机制 IBGP 防环 EBGP防环
2稳定性
路由条目稳定 cisco IOS,外部bgp路由30s放进BGP转发表
可以追踪指定的路由,根据他的震荡历史,对其进行路由的惩罚---damping
3可拓展性
BGP三张表
- 邻居表 可以不用直连,底层可达即可 需要显示配置
show ip bgp summary----------查看bgp路由表
- BGP转发表 从邻居收掉的所有BGP路由属性
show ip bgp ----------查看bgp路由表
- 路由表 最优的BGP路由提交给路由表
BGP对等体关系
- IBGP邻居
1.1位于一个AS内部
1.2通常建IBGP邻居使用环回口
1.3TTL=255
1.4 构造IBGP对等体
R2:
no auto-summary -----关闭自动汇总
no synchronization -----关闭同步检测机制
bgp router-id 2.2.2.2-----配置BGP的router-id,BGP的标识符
BGP router-id选举原则和OSPF一样,建议手工配置
neighbor 1.1.1.1 remote-as 12
Neighbor 1.1.1.1 update-source loopback 0
R1:
router bgp 12
bgp router-id 1.1.1.1
bgp log-neighbor-changes
neighbor 2.2.2.2 remote-as 12
neighbor 2.2.2.2 update-source Loopback0
- EBGP
2.1 位于不同AS
2.2 使用直连接口
2.3 EBGP对等体(基于直连接口)
R2
Router bgp 2
BGP ROUTER-ID 2.2.2.2
NEIGHBOR 12.1.1.1 REMOT 1
R1
Router bgp 1
BGP ROUTER-ID 1.1.1.1
NEIGHBOR 12.1.1.1 REMOT 2
2.4
R2
router bgp 2
bgp router-id 2.2.2.2
bgp log-neighbor-changes
neighbor 1.1.1.1 remote-as 1
neighbor 1.1.1.1 disable-connected-check----关闭直连检测
neighbor 1.1.1.1 update-source Loopback0
R1
router bgp 1
bgp router-id 1.1.1.1
bgp log-neighbor-changes
neighbor 2.2.2.2 remote-as 2
neighbor 2.2.2.2 disable-connected-check
neighbor 2.2.2.2 update-source Loopback0
BGP的状态机
- idle状态原因
1.1 没有去往邻居路由
1.2 指错neighbor后面地址
!路由器无法通过默认路由主动发起tcp,需要一条明细的静态 - connect
- active
- opensent
- openconfirm
- establish-------------BGP邻居建立
!更新源地址:路由器用来和路由器建立BGP邻居的地址
show ip bgp neighbor
neighbor的含义
- 向neighbor后的地址发起TCP连接,源端口为随机高端口,目的端口为179
- 允许neighbor后的地址向本路由器发起tcp连接
BGP数据包
- open 用于建立BGP邻居关系
- keeplive 维持邻居关系,60s发一次 保持时间 180s
- update 携带路由更新和利用属性
- notification 当bgp邻居发生错误时产生
路由通告进BGP
network x.x.x.x mask 掩码
只会通告路由进BGP,而不会激活一个接口
特点:
- 路由表除了非BGP路由,都可以通告进BGP C S IGP
- network通告的时候,必须精确(网络号和掩码必须要和路由表相同)
- 可以通告从IGP学习到的路由,会将下一跳地址和metric带入bgp转发表
!BGP转发表看到吓一跳地址为0.0.0.0,表示的是路由是自己产生的
!在bgp转发表看到 r 表示压入路由表失败
!* 有效
==!> 最优==
对等体传递路由
- IBGP对等体传路由时,不会更改下一跳地址
- EBGP对等体传路由时,更改下一跳地址
==最优的条件==
- 同步检测
- ==下一跳可达==
如何下一跳可达
将直连接口宣告进IGP
or
neighbour 3.3.3.3 next-hop-self//需要在IBGP和EBGP边界敲该命令
- 从Ibgp学来的路由,ad为200
- 从EBGP学来的路由,ad为20
路由黑洞
IBGP的水平分割(用于防环)
从一个IBGP对等体学习到的路由不会传递给另外一个IBGP对等体
show ip bgp neighbour 3.3.3.3 advertised-routes//查看已经向邻居3.3.3.3通告的路由条目
解决:
- 建立全互联对等体
- 路由反射器(打破水平分割)
配置了路由反射器,会给bgp路由添加两个新的属性(用于防环)
1 orignator 路由器起源(从哪个IBGP对等体收到
2 cluster list 路由反射器的router-id
neighbour 3.3.3.3 router-reflect-cliebt---------R1是路由的反射器,3.3.3.3是反射器的客户端
2.1 从客户端收到的路由可以反射给非客户端
2.2 从非客户端收到的路由可以反射给客户端
2.3 客户端收到的路由可以反射给客户端
2.4 从非客户端收到的路由==不==可以反射给非客户端
- 联邦:将大的AS划分为若干个小的AS,在AS之间建立的是EBGP(联邦内部使用私有AS号64512-65535)
3.1:联邦内部所有路由器需要配置
bgp configration identifier 123 //对外宣称AS号为123
3.2: 联邦内部建EBGP对等体的路由器配置
bgp confideration peers <内部AS号>
联邦缺点:
配置复杂 两个路由器放在一个联邦的内部,AS号需要规划好
- BGP重分布进IGP(一般不用,BGP路由条目太多,重分布进IGP会搞瘫)
在EBGP如果不小心将环回口宣告进BGP,路由表会每3分钟翻动一次
解决方案
- 修改EBGP对等体发过来的路由AD值
access-list 1 permit 2.2.2.0
router bgp 1
distance 150 2.2.2.0 0.0.0.1
distance EBGP路由AD值 IBGP路由AD 本地产生路由AD
- 后门链路
network 2.2.2.0 mask 255.255.255.0 backdoor --------------针对2.2.2.0/24路由开后门,相当于将2.2.2.0/24路由AD改为200
BGP下发默认路由
ip route 0.0.0.0 0.0.0.0 出接口
router bgp xx
net 0.0.0.0
- 以上两种方法向所有对等体发
ip route 0.0.0.0 0.0.0.0 出接口
router bgp xx
redistribute static
defaule-information originate
- 向特定的对等体下发默认路由
neighbour 2.2.2.2 default-orignate
BGP和IGP重分布
- ospf->bgp
router bgp 1
redistribute ospf 110 match internal external(默认只有internal)
BGP AS-BY-AS的路由协议
- 在AS之间传递路由信息
- BGP路由每经过一个AS会记录下AS号
path属性,最右边为起源AS
EBGP通过AS号来防环:如果发来的路由信息的AS号与本地AS号相同,则拒绝收取该路由信息
如果想要接受含有本地AS号的路由则敲以下命令:
neighbour 35.1.1.1 allowas-in //本命令后面还可跟上
参数1-10,表示本地AS号在as-path出现的次数,默认为3,次数超过该数字则不收取该路由
peer-group 对等体组
配置:
neighbour a peer-group
neighbour a remote-as 123
neighbour a update-source loopback 0
neighbour a route-reflactor-client
neighbour 123.2.2.2 peer-group a
neighbour 123.3.3.3 peer-group a
BGP聚合-----BGP的汇总
方法
ip route 10.1.0.0 255.255.252.0 null0---配置一条汇总路由的静态,指向null0防环
router bgp 4
net 10.1.0.0 mask 255.255.252.0 ------------必须精确宣告
先将明细宣告进BGP
aggregate-address 10.1.0.0 255.255.252.0------------聚合10.1.0.0/22,该命令会将明细和汇总一起发送,
其实际是后面跟着suppress-map为空,没有路由被匹配,所以都会被放行。反之,被suppress-map匹配的路由都被抑制
aggregate-address 10.1.0.0 255.255.252.0 summary-only-----------------抑制明细,只发汇总
特点:
本地产生指向null0的汇总,防环 AD=200(所以BGP有三个管理距离)
聚合路由不会携带明细路由属性
聚合的命令 as-set 让聚合路由携带明细路由属性
建对等体时过滤路由条目
access-list 1 deny 55.55.55.0
access-list 1 permit any
router bgp 5
neighbour 35.1.1.3 distribute-list 1 out
BGP触发更新
BGP的团体属性
分两大类
- 熟知团体属性:限制BGP路由传递范
1.1 no-advertise 不会通知给任意的对等体
1.2 local-as 只能在as内部进行传递,不能出as(有联邦的情况不能出小as)
1.3 no-export 只能在as内部传递,不能出本as(联邦之间也可以传递,不能出大as)
1.4 internet 全网传递
1.5 none 没有团体属性
show ip bgp community-----------哪些bgp路由有团体属性
团体属性默认情况下不会发送给对等体
neighbor x.x.x.x send-community-------------这样才会发送团体属性
- 私有团体属性:给BGP路由打上标记
标记的两种格式:
1-4294967295 数字
默认显示老的格式
AA:NN AA-------bgp路由as号 NN分配数值
ip bgp-community new-format----显示AA:NN这种格式
ip community-list ------------------团体属性列表 ,匹配带有团体属性路由,然后去做某些策略
BGP的第三方下一跳
EBGP传路由默认修改下一跳,但有特例
==默认行为:EBGP传路由会修改下一跳==
特例:
- Neighbor 后面的地址和BGP路由的下一跳在通一网段,不修改下一跳直接发出
- bgp路由最终的下一跳(递归后的路由)和neighbour后的地址在同一网段,不改变下一跳地址
在指EBGP对等体,不修改BGP路由的下一跳
neighbour 1.1.1.1 next-hop unchanged
路由属性----------衡量BGP路由优劣
- 公有必尊,所有厂家都必须要有的BGP路由属性,每条BGP路由都携带该属性
a. next-hop
b. as-path
c. 起源代码(network进 i EGP重分布进BGP路由 e IGP重分布进BGP ?) - 公认可选,共有的,但不是每条BGP都要携带
a. local-preference 本地优先级
b. 原子聚合属性 (BGP汇总属性有关) - 任选可透明 可有可无,从一个AS去往另外AS不会丢失
a. 聚合者(BGP汇总)
b. 团体属性
4.任选非传递,可有可无,从一个AS去往另外AS会丢失
a. Originator 路由器起源 (从哪个IBGP对等体收到的) b. Cluster list-------路由反射器的router-id
c. MED (多鉴别出口路由属性)
选路的原因
从多个对等体学到相同的路由,需要进行选路
13条选路原则
见截图: