内容简介:
概述
邻居建立
配置,水平分割,更新源
路由黑洞
RR
联邦
认证,刷新
路由汇总
#################################################################################
BGP的自制系统
RFC对AS的定义:一组被统一管理的路由器,他们使用相同的内部网关协议和统一的度量值在AS内部路由分组,使用外部路由网关协议将分组路由器到其他AS。
IGP 运行在自治系统内,优化最佳路由
BGP 运作与自治系统之间,利用路由策略选路和提供安全控制
必须交换物环路的路由信息。
自治系统之间运行BGP原因:
AS之间的路由条目庞大
选路机制需求
BGP
分类 EGP,距离(路径)矢量,无类
封装 TCP 179
更新目标(3层) 单播
更新方式 增量更新,触发更新
AD iBGP:200 eBGP:20
度量方法 无
路径矢量协议
记录沿途的AS号
放环机制:丢掉带自己AS号的路由
特性 增强的距离矢量协议
可靠的路由更新:使用TCP179
增量更新,触发更新
利用keepalive来提供保活和验证连接
丰富的度量方法(路径矢量或是属性)
支持超大规模的网络
最适合使用与下列情况
一个AS允许数据包通过他透传到其他自治系统(ISP)
有多个连接到其他自治系统,在流量进入或离开AS时必须实施路由策略以及路由选择
BGP数据库
邻居表:bgp永远要手工建立
BGP表:列出了从每一个邻居学习到的网络
到一个目的网络可以包含多个路径
每个路径包含BGP属性
IP表 :列出到 达目的最好的路径
####################### 以上对 BGP 的概述 ###############################################
BGP邻居的建立
BGP消息类型:(5种)
open :建立邻居用
包含 hold time 180s;BGP routerID
协商的信息包含:
版本 (ipv4)
AS号(AS号一致才能建立邻居)
hold time
router ID
能力值(ipv4/6;***v4/6等)
keepalive:保持邻居 60s 因连接建立时协商大量的属性,所以保持时不需要一一保持,所以用 keepalive包来保持邻居
update:发送如何到达目的网络的路由更新
包含路径属性以及网络
notification:检测到错误关闭连接用
因为BGP是在TCP上的,所以会先建立TCP连接,然后在open协商,当协商不通过,就使 用notification断开BGP连接
router-refresh message:
BGP建立邻居状态
1,idle(空闲):路由器搜索路由表,看是否有路由到达邻居
2,connect(连接):路由器发现了去往邻居的路由并准备TCP的3次握手
建立成功就进入open sent,否则变为active等待重新建TCP连接
3,open sent(发送):发送open消息,然后等待一个open的到来
4,open confirm(确认):路由器收到一个open,检查BGP回话参数,匹配后发送keepalive确认, 然后进入到openconfirm,开始等待自己的open报文被确认
注意confirm状态是在在收到对方的open后就进入了,不是收到keepalive才进入confirm状态的。
5,established(建立):收到了对自己open报文的keepalive确认,对等体建立;准备交换路由
如果收到一个notification消息,则说明自己的open不被认可,则断开TCP连 接,迁移到idle状态
6,active:该状态正常不会出现,只有当参数不匹配,TCP建立不成功等。BGP进程会初始化与邻居的TCP连接尝试重新建立时才会进入的状态。
卡在idle:情况:
1,没有路由表
2,EBGP邻居,用loopback建立,没有敲ttl的多跳
卡在active 情况
思路:1,TCP建立不成功
2,参数不匹配
TCP建立不成功:数据包有去无回,可以用带源ping测试
邻居之间指邻居配置错误
参数不匹配:可以sho run 查看
#########################################################################################
配置部分
router bgp AS号
这个命令只是进入路由配置模式;必须配置子命令激活BGP(默认激活ipv4)
一个路由器只能配置一个BGP实例
自治系统号确定了本地路由器属于的自治系统
nei x.x.x.x mask remote AS
no bgp default ipv4-unicast 关闭IPV4
router-id x.x.x.x
address-family ipv4 unicast 开启ipv4
nei x.x.x.x remote-as 100
nei x.x.x.x active
sho ip bgp summary
sho bgp ipv4 unicast summary
sho bgp ipv4 unicast neighbors
BGP更新源
IBGP 建议用loopback口建邻居
nei x.x.x.x update-source lo0 //手工指定更新源
EBGP 通常使用物理口建邻居,'mt6但是如果使用了loopback口建立。要注意:
1,静态路由
2,EBGP邻居的TTL值默认是 1。所以要修改ttl>=2
3,设置更新源
例子:
router bgp 200
nei 6.1.1.1 remot 300
nei 6.1.1.1 up lo0
nei 6.1.1.1 ebgp-multihop 2 (不打数字默认255)
注意:如果两端都是用默认路由的话,默认是不主动发起建立TCP连接的。所以也就不能建立BGP邻居
宣告网络
network:但不能激活,激活需要neighbor
任何路由表的路由都能network,不一定要直连。
当一条路由不优的结果:
1,自己不用
2,不传给其他邻居
不优原因: 1,下一跳不可达
2,同步被开启,同时IGP没有学到这个路由
◆ next-hop行为
从eBGP学到的路由的下一跳,在AS内传递时,下一跳也是eBGP邻居。只有在离开本AS时,下一跳才变。
下一跳指我
nei x.x.x.x next-hop-self
sho ip bgp summ 显示 r //加载失败
sho ip bgp rip-failure
原因 AD值太高
sho ip bgp rib-failure 通常发生在IBGP之间 同时从IGP和IBGP学到的路由,IBGP的AD=200
sho ip bgp
s suppressed 汇总时被抑制
d damped 此路由总是up/down 被惩罚
h history 路由曾经存在
> best 优化路由
i interna
BGP建邻居
EBGP之间用物理口建立,一条命令 neighbor xxxx remote xxx
EBGP之间用loopback口建邻居,3条命令 neighbor xxx remote xxx
neighbor xxx update-source lox
neighbor xxx ebgp-multihop 2
IBGP之间用物理口建邻居,1条命令 neighbor xxx remote xxx
IBGP之间用loopback口建邻居,3条命令 neighbor xxx remote xxx
neighbor xxx update-source lox
neighbor xxx next-hop-self
###########################################################################
路由黑洞
如图,R1 R2建立eBGP。AS200运行ospf,R2 R5运行iBGP。R5 R6运行eBGP
R1 network 1.1.1.1 mask 255.255.255.255
R6 network 6.1.1.1 mask 255.255.255.255
R2 R5 nei xxx next-hop-self
R1 R6 sho ip ro bgp 可以看到1.1.1.1 6.1.1.1
但是,R1 R6是ping不通的。ping 6.1.1.1 source 1.1.1.1 路由黑洞现象。
IGP中是hop-by-hop的,所以不会出现路由黑洞现象。BGP中,是AS-BY-AS的。上图,R4没有R1 R6的路由。
控制层面,路由R1 R6是通过eBGP和iBGG以及IGP使得iBGP的IP可达,使得路由可达;但在数据层面上,数据包回包时,源、目IP是R1 R6 而R4不知道R1 R6的ip的路由,所以丢包。
路由黑洞解决办法 (3种)
路由反射器 RR:
可以打破iBGP的水平分割
联邦:
BGP联邦会修改AS-PATH属性值
MPLS
◆ RR重点:
RR的防环 ----- clusterD(默认routerID)
Ooignator-ID(默认routerID)
只有通过RR被反射的路由才会携带clusterID和origintID
RR如何反射路由
从client过来的路由器会传给所有IBGP邻居
从非client过来的路由,只传给client
◆ 如何部署RR
client路由器只与他的RR建立IBGP邻居关系
RR要与同一个簇的client建立IBGP邻居关系,同时也要与不同簇的RR和普通路由器建立IBGP邻居关系(RR要全互联)
show ip bgp neighbor 显示client邻居关系
show ip bgp 11.0.0.0 显示 “received from a RR-client”
被反射的路由会显示 originator:x.x.x.x ,cluster list :x.x.x.x
总结:起源ID由RR打的,打的是client的routerID。
RR把路由传给client,client遵循IBGP只传一次,EBGP随便传,所以client不会再把路由传回RR,不管谁传给client路由,client都遵循IBGP只传一次,EBGP随便传
#########################################################################################
联邦
小的AS号在内部传,出了大AS号后还是标记的最外大的AS号
IBGP------- AS-PATH不被改变
内部EBGP--- 内部联邦的AS号被放到AS-PATH中
EBGP------- 内部联邦AS号被移出AS-PATH
外部AS号被放到AS-path中
小的AS号在内部传,出了大AS号后还是标记的最外大的AS号
内部小AS之间建立邻居注意,如果用loopback口建立,类似与EBGP,要配置ebgp多跳
路由更新类似于IBGP:BGP属性不变
整个联邦跑一个IGP,保证下一跳最佳路径可达
在联邦内部的IBGP 邻居关系必须是full mesh。可以在一个联邦内部启用RR以再减少TCP连接
联邦内部的EBGP连接不受物理拓扑的限制
注意:在现网中配置联邦,需要所有配置都必须重配,因为联邦内部使用小AS号启进程
现网中 要先no掉原有BGP
no router bgp as-num ----- 去掉原有bgp
router bgp member-as-number -配置小AS号
bgp confederation identifier external-as-number ---配置属于哪个大AS
bgp confederation peers list-of-intra-confederation-as --打上联邦的其他小AS 例子:
联邦内ebgp查看:
confed-internal--联邦内部
confed-external--联邦外部
external---------真正ebgp
#########################################################################################
认证
一条命令---配置密码
router(config-router)#
neighbor {ip-address | peer-group-name} password string
例:router bgp 100
neighbor 12.1.1.2 password cisco
利用TCP扩展包头完成的认证
###########################################################################################
刷新BGP路由
清除BGP会话
当策略,入ACL或属性的变化,这种变化并不立即生效。并在未来的时间里,一个前缀或路由使 用新的策略,这可能要较长时间使得策略生效于所有网络。
必须触发策略的更新,以确保策略是立即生效于所有英雄的前缀和路由。
如何触发策略的更新:
硬清除 (把所有BGP邻居down-up不要使用,会导致整个网络down)
clear ip bgp *
软清除 相对硬清 比较安全的 不会导致down邻居,也不会影响bgp邻居
clear ip bgp * soft out
clear ip bgp {*| 邻居IP} soft in (利用type5报文 refresh 触发对方update)
路由刷新
◆ BGP排错,当BGP路由显示不完整,查看邻居是否起来,如果没起来时,使用如下命令
sho ip bgp neighbor 56.1.1.5 advertised-routes---显示给邻居传了哪些路由
如果要查看本地收到邻居的哪些路由使用命令(一般不用)
show ip bgp neighbors 56.1.1.6 received-routes 此命令需要在配置inbound时才生效
neighbor 56.1.1.6 soft-reconfiguration inbound
##########################################################################################
BGP路由聚合(汇总)
自动汇总:只会汇总本地重分布的,不会汇总本地network的。通常不用自动汇总
手动汇总(重点)
思路:
1,将要被汇总的路由,写成静态指向null0
2,把静态宣告进BGP
router(config)#router bgp 123
router(config-router)# network 192.168.0.0 mask 255.255.0.0
router(router)#exit
router(config)# ip route 192.168.0.0 255.255.0.0 null 0
例: 上图中R6:
int lo0 6.1.1.1 255.255.255.255
int lo1 6.1.1.2 255.255.255.255 secondary
int lo2 6.1.1.3 255.255.255.255 sec
int lo3 6.1.1.4 255.255.255.255 sec
int lo4 6.1.1.5 255.255.255.255 sec
int lo5 6.1.1.6 255.255.255.255 sec
◆ ip route 6.1.1.0 255.255.255.248 null 0
◆ router bgp 300
network 6.1.1.0 mask 255.255.255.248
方法二,在任意节点汇总
R6:
router bgp 300
network 6.1.1.1 mask 255.255.255.255
network 6.1.1.2 mask 255.255.255.255
network 6.1.1.3 mask 255.255.255.255
network 6.1.1.4 mask 255.255.255.255
network 6.1.1.5 mask 255.255.255.255
network 6.1.1.6 mask 255.255.255.255
R5:(汇总R6路由)
router bgp 200
◆ aggregate-address 6.1.1.0 mask 255.255.255.248
sho ip bgp 产生汇总的同时,明细也依然存在
使用参数 summary-only 顾虑明细,只传汇总
◆ aggregate-address 6.1.1.0 mask 255.255.255.248 summary-only
◆ 选择抑制(只汇总部分路由)suppress-map
以上都是把所有路由全部汇总,实际中可能会只汇总一部分。例如只汇总.1.2.3
利用route-map匹配要抑制的路由(即要汇总的路由)
route-map test permit 10
match ip address 4
access-list 4 permit 6.1.1.4 0.0.0.3(匹配了4-7)
router bgp 200
aggregate-address 6.1.1.0 mask 255.255.255.248 suppress-map test
◆ 条件通告advertise-map(只有满足某些条件时,才会产生汇总)
例如,R5只有存在6.1.1.1这条路由时,才会产生汇总(使用route-map)
router bgp 200
aggregate-address 6.1.1.0 mask 255.255.255.248 suppress-map test advertise-map test2
route-map test2 permit 10
match ip address 1
access-list 1 permit 6.1.1.1
◆ as-set
在其他节点产生汇总时,也会把汇总传回给产生这条路由的源节点,因为汇总产生时没 有携带AS号
R6:sho ip bgp 也会看到R5对R6产生的汇总
R5:
aggregate-address 6.1.1.0 mask 255.255.255.248 suppress-map test advertise-map test2 as-set
sho ip bgp 看到汇总带上AS号了 300
R6:sho ip bgp 就看到没有那条汇总了
◆ attribute-map
通过route-map修改其他属性值
route-map test3 permit 10 //通过route-map设置weigh值
set weight 100
router bgp 200
aggregate-address 6.1.1.0 mask 255.255.255.248 suppress-map test advertise-map test2 as-set attribut-map test3
sho ip bgp //汇总路由的weight由默认32768变为100