一、概念
BGP:边界网关协议
应用范围:BGP,AS之间的协议
是否携带网络掩码:携带
协议算法:无算法,有大量的规则
协议封装:基于tcp,可靠,端口号179
二、特点
1,路径矢量协议,或者AS-BY-AS
2,触发更新,存在邻居机制
3,单播更新
4,存在大量属性进行选路
5,使用open报文建立邻居,使用keepalive报文维持邻居关系,间隔60s,hold时间为180s
6,支持路由认证
7,支持路由聚合(汇总)
8,消耗路由器资源,一台路由器只能运行一个BGP进程
9,可以在进项和出项对流量实施强大的策略–可控性
三、数据包
Open:存在hold time 和 route-id;用于邻居关系建立;默认仅收发一次即可;
Keeplive:用于保活TCP会话,周期1min,hold time 180s
Update:更新包,用于通告和撤销路由,路由条目: 目标网络号及掩码+ 属性
Notification:报错包,错误信息出现时发送
四、邻居关系,名词解释
公有AS号:1-64511 私有AS号:64512-65535
peers:对等体,就是邻居关系,因为BGP可以非直连建邻
EBGP:不同AS设备建立的BGP邻居关系,通过该关系学习到的路由条目管理距离为20
IBGP:同一个AS设备建立的BGP邻居关系 ,通过该关系学习到的路由条目管理距离为200
五、BGP的防环机制—水平分割
1、EBGP水平分割 –防止EBGP环路;
利用as-pash属性,该属性为路由条目在传递过程中将记录所有经过的AS编号;接收到的路由条目中,若存在本地的AS号,将拒绝;
2、IBGP水平分割—防止IBGP环路;
AS-BY-AS,条目在一个AS内部传递过程中,其属性不变化;
IBGP水平分割—从一个IBGP邻居处学习到的路由条目不得传递给本地的另一个IBGP邻居;
导致IBGP邻居关系的建立数量成指数增长,可以使用联邦和路由反射器来打破;
六、BGP的工作过程
工作过程
1,IP可达 –IGP让两个建立BGP邻居的IP地址可以互相访问
2,单播通过TCP的三次握手,建立TCP的会话;
3,会话建立后,BGP收发一次open报文,建立邻居关系,生成邻居表;
4,邻居关系建立后,使用update携带路由信息传递到邻居处;
5,收集所有的路由信息后,生成BGP表;—本地发出及接收到所有路由信息;
默认将BGP表中,最优路径加载于路由表中;收敛完成,仅keeplive周期保活即可;
结构突变:
1、 新增—出现新增网段时,BGP设备通过IGP协议获知,若新增网段不是被汇总路由中的一条,而是一条明细路由;BGP设备将使用更新包告知邻居;
2、 断开出现断开网段时,BGP设备通过IGP协议获知,若断开网段不是被汇总路由中的一条,而是一条明细路由;BGP设备将使用更新包告知邻居;
3、 无法沟通—hold time超时时,断开TCP会话,删除所有从给邻居学习到的路由条目;
能否重间邻居关系,关注TCP会话是否可以重建,OPEN报文是否能够正常收发;
邻居状态
Down | 关闭BGP状态 |
---|---|
idle | 开始建立TCP连接状态 |
Connect (active) | TCP会话建立完成 |
Opensent (openconfirm) | 发送open |
Established | BGP邻居建立 |
七、基本配置
R1所在AS 1,R2,R3,R4所在AS 234,R5所在AS5
一,建立IBGP邻居
1,同一个AS内保证IGP路由可达
即R2,R3,R4运行IGP协议,这里运行eigrp保证AS 234内全网可达
2,建立IBGP邻居
在AS 234内
R2(config)#router bgp 234 //定义AS号,没有多进程概念,只能运行一个bgp进程
R2(config-router)#bgp router-id 2.2.2.2 //router-id和ospf选举规则一样
R2(config-router)#neighbor 4.4.4.4 remote-as 234 //邻居的IP地址和AS号
R2(config-router)#neighbor 4.4.4.4 update-source lo0 //使用环回建立邻居时,修改更新源为环回接口
R4(config)#router bgp 234
R4(config-router)#bgp router-id 4.4.4.4
R4(config-router)#neighbor 2.2.2.2 remote-as 234
R4(config-router)#neighbor 2.2.2.2 update-source lo0
R2#sho ip bgp summary
BGP router identifier 2.2.2.2, local AS number 234
BGP table version is 1, main routing table version 1 //表更新了几次,version就是几
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
4.4.4.4 4 234 5 6 1 0 0 00:03:54
二,建立EBGP邻居
AS 1和AS 234,AS 234和AS 5
1,EBGP建立邻居时使用环回接口,必须保证两个环回接口互相可达
R1(config)#ip route 2.2.2.0 255.255.255.0 12.1.1.2
R2(config)#ip route 1.1.1.0 255.255.255.0 12.1.1.1
R4(config)#ip route 5.5.5.0 255.255.255.0 45.1.1.2
R5(config)#ip route 4.4.4.0 255.255.255.0 45.1.1.1
2,建立EBGP邻居
R1(config)#router bgp 1
R1(config-router)#bgp router-id 1.1.1.1
R1(config-router)#neighbor 2.2.2.2 remote-as 234
R1(config-router)#neighbor 2.2.2.2 update-source lo0
R1(config-router)#neighbor 2.2.2.2 ebgp-multihop 2 //默认IBGP邻居间数据包的TTL值为255,EBGP邻居间为1,则EBGP邻居间使用环回接口建立邻居,则要修改egbp多跳为2
R2(config)#router bgp 234
R2(config-router)#neighbor 1.1.1.1 remote-as 1
R2(config-router)#neighbor 1.1.1.1 update-source lo0
R2(config-router)#neighbor 1.1.1.1 ebgp-multihop 2
R1#sho ip bgp summary
BGP router identifier 1.1.1.1, local AS number 1
BGP table version is 1, main routing table version 1
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
2.2.2.2 4 234 3 2 1 0 0 00:00:07 0
R4和R5同理
八、BGP的三张表
1,简化邻居表
R2#sho ip bgp summary
BGP router identifier 2.2.2.2, local AS number 234
BGP table version is 1, main routing table version 1
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
1.1.1.1 4 1 1270 1271 1 0 0 21:17:29 0
4.4.4.4 4 234 5 6 1 0 0 00:03:54 0
table version | neighbor | V | AS | MsgRcvd | MsgSent | TblVer | InQ | OutQ | Up/Down | State/PfxRcd |
---|---|---|---|---|---|---|---|---|---|---|
这个表每更新一次,版本加1 | 邻居使用此接口建邻 | BGP版本 | 邻居所属AS号 | 接受的消息包数量 | 发送的消息包数量 | 表版本 | 出向队列统计 | 入向队列统计 | 建立邻居的时间 | 建邻状态,建邻之后显示学习对方的路由条目数量 |
2,BGP的路由表
BGP协议可以逐一宣告本地路由表中任意路由,无论条目的来源,宣告时,所宣告条目的内容必须和路由表中的记录完全一致。
在R1上宣告自己的环回
R1(config)#router bgp 1
R1(config-router)#network 1.1.1.0 mask 255.255.255.0
在R2上查看bgp路由表
R2#sho ip bgp
BGP table version is 3, local router ID is 2.2.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
r> 1.1.1.0/24 1.1.1.1 0 0 1 i
Status codes:状态码
s | d | h | * | > | i | r |
---|---|---|---|---|---|---|
被抑制 | 被惩罚 | 不能学习 | 可用 | 最优 | IBGP邻居学习到的 | 不能加表 |
这里R2路由器学习到的1.1.1.0/24路由最优,但是不能加表,是因为R2和R1使用环回接口建立邻居,若使用环回接口建立邻居,则两个环回接口必须可达,所以写了静态路由,静态路由AD值为1,EBGP邻居学的路由AD值为20,故bgp不能加表,但可以传递给下一个bgp邻居
Origin codes:起源码
i | ? | |
---|---|---|
通过ibgp邻居,ebgp邻居或自己network引入的路由 | 重发布引入的 |
属性
Network | Next Hop | Metric | LocPrf | Weight | Path |
---|---|---|---|---|---|
传递的路由的网络号 | 下一跳属性 | med属性 | 本地优先级属性 | 权重属性 | as path属性 |
3,IP路由表
R2#sho ip route bgp
由于1.1.1.0/24写的静态,故bgp的IP路由表暂时为空