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;vpnv4/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
BGP更新源
IBGP 建议用loopback口建邻居
nei x.x.x.x update-source lo0 //手工指定更新源
EBGP 通常使用物理口建邻居,但是如果使用了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 //加载失败
原因 AD值太高
sho ip bgp rib-failure 通常发生在IBGP之间 同时从IGP和IBGP学到的路由,IBGP的AD=200
待续。。。
原文:http://angelfire1986.blog.51cto.com/4061979/1737452