配置
router bgp AS号
- 这个命令只是进入路由配置模式;必须配置子命令来激活BGP
默认自动集成IPv4的子集,所以IPV4不需额外配置;但是×××v4等就需要配置能力值。
- 同一时间,在路由器上,只能配置一个BGP实例
- AS号 确定了本地路由器属于的自治系统
- 邻居比较AS号,以判定邻居是否是一个内部或外部的邻居
配置命令:
开启BGP
router bgp 100
router-id 11.1.1.1
address-family ?
ipv4---- 默认不需要配置
ipv6
nsap
***v4
***v6
建立邻居 (open报文)
router(config-router)#
neighbor {ip-address | peer-group-name} remote-as AS号
- neighbor 命令 激活一个BGP邻居会话
- BGP 将这个邻居的数据包发给IP 地址指定的目标IP
- 该路由器必须有一个IP地址达到这个邻居,然后才可以建立BGP邻居关系
- remote-as 显示了邻居在什么AS 中,就是这个判定是内部还是外部
- 不管是内部还是外部邻居都是用这个命令操作
先建立TCP连接,之后再传递open报文
R1----------------------EBGP---------------------------R2
router bgp 100 router bgp 200
router-id 11.1.1.1 router-id 22.1.1.1
neighbor 12.1.1.2 remote-as 200 neighbor 12.1.1.1 remote-as 100
BGP neighbor shutdown 命令
router(config-router)#
neighbor {ip-address | peer-group-name} shutdown
设定一个BGP 邻居关系为管理关闭
用于维护和策略变化,以防止环路
router(config-router)#
no neighbor {ip-address | peer-group-name} shutdown
设定一个BGP 邻居关系为开启
例:
rourer bgp 200
关闭邻居 neighbor 12.1.1.1 remote-as 100 shutdown
开启邻居no neighbor 12.1.1.1 remote-as 100 shutdown
######### IBGP 对等体问题
如图 ,A B建立IBGP邻居关系,上下两个任何一个物理接口建立邻居都存在单点故障,所以使用 loopback口建立IBGP邻居最合适
BGP 更新源 IP
- 当A--B建立BGP邻居关系时,会声明由本地哪个IP与对方建立邻居关系,默认就是数据包出口地址
- 当B 收到一个BGP包时,将对比邻居声明的源IP,
匹配,就建立邻居关系
不匹配,就忽略,不建立
例如:A: nei 12.1.1.2 remo 200
B: nei 12.1.1.1 remo 100
此时B收到12.1.1.1的BGP包,更新源就是A的出接口12.1.1.1所以成功建立
A: nei 22.1.1.1 remo 200
B: nei 11.1.1.1 remo 100
此时B收到 11.1.1.1BGP包,的更新源IP是默认A的出接口12.1.1.1,不匹配就忽略
所以,要确保源IP 和 对应BGP邻居配置的一致,且当只有一边指定更新源就能建立邻居
因为,TCP连接是全双工,可以同时收发,所以只要有一条TCP连接建立就可以。
更新源配置命令:
neighbor {ip-address | peer-group-name} update-source interfac-type interface-number
- 更新源,通常用于 IBGP
- EBGP 默认必须之间相连,利用loopback口将不能直接建立EBGP邻居关系(因为neighbor之后ttl值是1,但是BGP中可以更改,所以也可以通过loopback口建立EBGP)
例:IBGP 使用loopback口建立邻居
R1: R2:
router bgp 100 router bgp 200
bgp router-id 11.1.1.1 bgp router-id 22.1.1.1
neigh 22.1.1.1 remo 200 nei 11.1.1.1 remo 100
neigh 22.1.1.1 update-so lo0 nei 11.1.1.1 upda lo0
以上前提,IP在IGP内可达
router eigrp 1 router ei 1
no auto no auto
net 12.0.0.0 net 0.0.0.0
net 11.0.0.0
例:EBGP 使用loopback口建立邻居(nei ip-add ebgp-multihop {ttl})
R5: R6:
router bpg 200 router bgp 200
bgp router-id 55.1.1.1 bgp rourter-66.1.1.1
nei 66.1.1.1 remot 300 nei 55.1.1.1 remo 200
nei 66.1.1.1 upda lo0 nei 55.1.1.1 update lo0
nei 66.1.1.1 ebgp-multihop nei 55.1.1.1 ebgp-multihop
ip router 66.1.1.1 255.255.255.255 56.1.1.5 ip route 55.1.1.1 255.255.255.255 56.1.1.6
sho ip bgp summary
state/pfxrcd 是active就是没建立;数字就是建立了。
IGP 协议使用hello包建立和维持邻居关系
BGP使用 keepalive维持,使用 open 建立
keepalive 60秒更新,180秒holdon
##########################################################################################
BGP 中 network 命令
router(config-router)#
network network-number [mask network-mast] [router-map map-tag]
作用相对于IGP(两个:通告一条路由;通告这条路由的接口)。BGP只有一个作用:
1,这个命令使BGP通告一个网络
2,这个命令并不能在一个接口上激活BGP 协议
3,当没有 mask 选项时,这个命令通告一个有类网络,如果这个有类地址存在于路由表中,将 被宣告
4,当有mask 选项时,BGP 将查看路由表,匹配才宣告
3 4两条就是network时的掩码与本地路由掩码要一致
network产生BGP路由,只要是本地路由表存在就可以,可以是任何形式学到的(直连,重分布 鞥)
例:
R1:int lo0
ip add 11.1.1.1 255.255.255.0
router bgp 100
bgp router-id 11.1.1.1
network 11.1.1.1 mask 255.255.255.0
sho ip bgp
R1的路由到达R5不是最优的因为关闭同步,吓一跳不可达(AS200内所有路由器到达AS100的路由下一跳都是12.1.1.1,而除了R2可达,其他路由都不可达)
解决办法一:
在R2 上的IGP协议宣告12.1.1.0网段
解决办法二:
R2:
router bgp 200
neighbor 55.1.1.1 next-hop-self(建议在所有IBGP邻居上都配置)
R5: sho ip bgp
next-hop 在多路访问网络中
如图,R1 R3建立IBGP;R1 R2建立EBGP
当把R3loopback0=33.1.1.1宣告进bgp时,R2看到的33.1.1.1的下一跳是R3出接口,而非R1的
使用对等体组
- 这些命令定义了一个模板,所有加入了这个模板的成员都有相同的策略
- 这个命令在有相同的出向 策略的邻居有效
- 组成员可以有不同的入向策略
- 更新只需要为组成员产生一次
- 简化了配置
router(config-router)#
neighbor peer-group-name peer-group
创建一个对等体组
router(config-router)#
neighbor peer-group-name 参数
定义模板参数
router(config-router)#
neighbor ip-address peer-group peer-group-name
定义了什么成员使用这个模板
清楚 BGP 会话
- 当策略(ACL或属性)的变化,这种变化不会立即生效。并在未来时间里,一个前缀或路由使用 的新策略,需要较长时间是对策略生效于网络
- 必须触发策略的更新,以确保策略立即生效所有受影响的前缀和路由
- 如何触发 策略更新:
硬清除--造成断网
clear ip bgp *
路由器清除所有BGP连接
整个BGP转发表被清除
BGP会话将进入空闲状态,所有信息重新学习
clear ip bgp [neighbor-address]
只清除相应的邻居,
软清除---
clear ip bgp {* | neighbor-address} [soft out]
从这个邻居学来的路由不会丢失
路由器重新发布所有BGP信息给邻居,并没有清除连接
仍然保持建立状态
建议改变出策略时,使用这个
若只是改变入策略,soft out 不生效
入方向软清
clear ip bgp {* | neighbor-address} soft in
使用存储的信息覆盖旧的信息
R1-------R2
如果在R2 上做 in 方向 软清,R2就会向R1发送type 5报文=refresh。R1收到R2的refresh后,就会发送本地路由表发送update报文给R2,此时会触发R2接口入方向的策略
BGP 邻居认证
router(config-router)#
neighbor {ip-address | peer-group-name} passwork string
- BGP 只使用MD5
- 配置一个秘钥(密码),根据这个秘钥路由产生一个消息摘要,或散列函数
- 只发送消息摘要,不发送秘钥
- 在建立TCP 连接时,路由器产生以及校验MD5 摘要,路由器发送每个路由更新时也要进 行校验
BGP的状态
当建立一个BGP会话,BGP将经历以下几种状态
1, ide(空闲):等待配置,路由器是搜索路由表,看是否存在一个路由到邻居。
2, connect(连接)路由器发现了邻居和准备和完成TCP 三次握手,否则,将变为active(激 活),等待重新建立TCP连接
3,active(激活) 等待重新建立TCP连接
4,open sent(发送)发送open消息以及等待一个open的到来,检查BGP会话参数(协商保持时 间),参数不匹配,发送通告消息变为active,等待重新建立TCP连接
5,open confirm(确认)路由器收到一个保活消息,一旦收到就转到建立状态。出现问题,发送通 告消息,变为active
6,establish(建立) 对等体建立;准备交换路由
出现问题,发送通告消息,变为active
报错:
1:卡在idle状态,原因:没有路由,
show ip ro 查看本地是否有bgp 所指的路由
2:卡在active状态
原因:
- 对方没有到本地源IP地址的路由
- 邻居没有生命邻居,或邻居指错
- AS 号不匹配
转载于:https://blog.51cto.com/angelfire1986/1723355