BGP:边界网关路由协议
无类别路径矢量EGP协议;
工作于AS之间;
AS—自治系统 标准AS编号 16位二进制 0-65535
扩展AS编号 32位二进制
路径矢量(一个AS为一跳)
距离矢量(一个路由器为一跳)
BGP协议本身不产生路由,而是转发本地路由表中来自其他协议生成的路由条目;
AS之间正常存在大量的BGP邻居关系,且BGP协议不会计算最佳路径;因此在BGP协议中管理员需要进行策略来干涉选路;
IGP协议追求:1、无环(选路佳) 2、收敛快 3、占用资源少
EGP协议的追求:1、可控性强(管理员可以方便进行策略干涉选路)
2、可靠性(BGP协议设备间需要交互大量的路由条目,但又不能选择周期更新来占用链路资源,故只能进行触发更新;且BGP协议工作环境中为节约成本,必然出现非直连需要建立邻居关系—单播邻居)— 基于TCP工作 -三次握手四次断开 4种可靠传输机制 – TCP只能基于单播工作,单播—需要IP可达—依赖IGP BGP承载于IGP之上
3、AS-BY-AS 以一个AS为一跳(BGP将一个AS看作一个整体),BGP协议不支持负载均衡
运行BGP协议之间的设备传递路由信息,原因在于若传递拓扑信息,会导致路由器负载过高,并且会让
对端AS看到本端的拓扑信息,引发安全问题。
BGP需要传递所有的通过BGP学习到的路由信息,并且运行了BGP协议的路由器,所维护的路由表是包
含了整个互联网的所有路由信息的。
BGP的对等体关系
BGP因为传输层使用的是TCP协议,所以只要在TCP协议可以正常建立会话的基础上就可以完成BGP的
建邻工作。
BGP支持非直连建邻(网络可达)-----BGP的非直连建邻是建立在IGP(静态)之上的。
BGP存在两种对等体关系类型:EBGP,IBGP
BGP的特点
1.无类别路径矢量协议(AS-BY-AS)
2.使用单播更新来发送信息,基于TCP179端口号工作
3.增量更新机制,仅触发更新,无周期更新
4.具有丰富的路径属性来取代IGP中的度量值进行选路,可以由多个属性共同控制协议
5.可以在流量的进出口实行路由策略(可控性)
6.默认不被用于负载均衡,会通过各种选路规则仅仅产生一条最佳路径
7.BGP支持认证和聚合
BGP的数据包
BGP报文头部
Hold Time,保活时间
BGP Identifier,BGP的标识符(RID),与OSPF中的RID用法相同,全网唯一,获取方式(手工配置>最大环回接口>最大物理接口)
BGP的状态机
BGP的角色
Speaker
发送BGP报文的设备被称为BGP Speaker(发言者)
它接收或产生新的报文信息,并发布给其他BGP Speaker。Speaker角色是针对具体报文发送
过程而言的,网络中每台BGP路由器均可称为自己发送BGP报文的Speaker。
Peer
相互交换报文的Speaker之间互相称为peer(对等体)
BGP的工作过程
1、配置完成后,邻居间单播TCP三次握手,目标端口179,建立TCP的会话;之后所有的BGP协议数据包基于该会话进行传输;
会话建立后,邻居间正常收发一次open报文建立BGP的邻居关系,生成邻居表;
BGP协议的open报文中将携带本地的RID—生成方式和OSPF一致;仅需要本地及本地所有邻居唯一即可;
邻居关系建立后,默认每1min,使用keeplive周期保活邻居关系(周期保活TCP会话)
2、邻居关系建立后,管理员选择性将本地路由表中通过任意来源获取的路由条目,向BGP协议中进行宣告;使用updata数据包进行邻居间路由共享;之后生成BGP表(装载本地发出及接收到的所有路由条目)默认将最优路径加载于路由表中(最优-仅仅基于BGP的选路规则,不一定为最佳路径;BGP默认不支持负载均衡)
3、收敛完成,仅keeplive周期保活即可,默认保活时间为180S,周期发送时间默认为保活时间的1/3,即60S
4、若出现错误信息,邻居间将使用Notification报文进行报错操作
5、结构突变
1)新增 — 本地使用updata向本地所有邻居告知,前提该路由不被已经发出的聚合路由包含
2)断开 — 本地使用updata向本地所有邻居告知,前提该路由不被已经发出的聚合路由包含
只有到聚合条目中包含的所有明细路由均在本地失效,才告知邻居删除聚合条目
3)无法沟通 — hold time为3min,连续3次未收到邻居的keeplive;断开邻居关系、TCP会话,删除从该邻居处学习到的所有路由;
BGP的路由黑洞
BGP的基本配置
使用直连接口IP地址建立EBGP对等体关系
1、启动BGP协议
[r1]bgp 100 -----启动BGP进程,且标准本设备所在的AS号
2、设置Rid
[r1-bgp]router-id 1.1.1.1
3、配置BGP对等体,并指定对等体所在的AS号
[r1-bgp]peer 12.0.0.2 as-number 200
[r1]display bgp peer ----查看BGP的邻居表
IBGP对等体的建立
由于直连接口建立对等体时,若链路终端,则会中断BGP会话。故在实际工程中,一个AS内部正常具
有较为复杂的网络拓扑结构,设备到设备之间存在大量的备份和负载均衡路径,因此建立IBGP邻居关系
时,建议使用双方的环回接口来作为源/目IP地址。
[r2]bgp 200
[r2-bgp]peer 3.3.3.3 as-number 200
[r3]bgp 200
[r3-bgp]router-id 3.3.3.3
[r3-bgp]peer 2.2.2.2 as-number 200
手工建立邻居关系时,所指定的建邻的IP地址必须和收到的数据包中的源IP地址相同才能正常建立邻
居关系。否则,邻居关系建立失败。
[r2-bgp]peer 3.3.3.3 connect-interface LoopBack 0 -----将R2发送的数据包的源IP地址修改为
loopback 0接口的IP地址
抓包后会发现一个问题,就是BGP此时仅建立了一次TCP连接,就完成了BGP会话的建立。这也就意
味着,BGP会话的建立仅仅是依靠TCP会话,而并没有对这个TCP会话建立的方式有要求,该TCP会话是
由谁发起的,谁是客户端,谁是服务端并不影响BGP对等体的建立。-------在BGP协议中,TCP会话建立
两次完全是多余的,而建立两次的原因也是因为双方路由器均会指定对等体(均将自己看做是客户
端),从而发起建立连接请求。
而在当下场景中,R3作为TCP会话的服务端,已经认知到了自己本地已经有接口3.3.3.3,与自己本地
配置的对等体建立了连接,所以本地也不会在发送所谓的TCP连接建立请求。
一般情况下,双方均要修改本地数据包的源IP地址。
使用环回接口IP地址建立EBGP对等体关系
若EBGP对等体之间存在多条直连链路时,才可使用环回接口建立对等体关系。
1、实现路由可达
ip route-static 5.5.5.5 255.255.255.255 45.0.0.5
ip route-static 4.4.4.4 255.255.255.255 45.0.0.4
2、对等体配置
[r4]bgp 200
[r4-bgp]peer 5.5.5.5 as-number 300
[r4-bgp]peer 5.5.5.5 connect-interface LoopBack 0
[r5]bgp 300
[r5-bgp]router-id 5.5.5.5
[r5-bgp]peer 4.4.4.4 as-number 200
[r5-bgp]peer 4.4.4.4 connect-interface LoopBack 0
因为EBGP之间的数据包的TTL值为1,故此时虽然可以建立TCP连接和BGP会话,但是路由器会认为该
连接和会话存在异常,在BGP对等体建立完成后,发送notification报文断开连接,从而会产生一个现象-
—状态机震荡。
解决方法:修改TTL值
[r4-bgp]peer 5.5.5.5 ebgp-max-hop 2
如果未标明参数值,则代表将TTL值修改为最大值255
[r5-bgp]peer 4.4.4.4 ebgp-max-hop 2
两边均要修改,不然无法建立对等体关系,还存在状态机震荡。
BGP的路由发布
通过network命令发布路由
路由发布----对于BGP而言,只要是路由表中存在的路由信息,都可以通过network命令发布。
[r1-bgp]network 1.1.1.1 32 目标网络号 路由表中的掩码信息
注意:BGP使用network命令宣告时,该路由信息必须与全局路由表中存在的路由项一致。
[r1-bgp]display bgp routing-table —查看BGP表
network-----目标网络号及掩码
nexthop-----下一跳,谁发送的路由信息,则下一跳就写谁;如果是本地发布的路由,则下一跳写0.0.0.0
状态码----
*
代表可用
所有设备收到路由条目后,首先会根据下一跳属性中的参数来查询本地路由表,查看该地址的
可达性。如果本地路由表中可达,则代表该路由信息可用;若本地不可达,则代表该路由信息
不可用。
如果该路由条目不可用,则将不会参与到路由信息的优选过程。
“>”
代表优选
当收到多条到达相同网段的路由信息时,并且都可用,则将依据属性在其中选择最优的路由信
息进行加表及传递。
i
代表该路由信息是通过IBGP对等体学习到的
对于R3而言,R2传递来的路由信息是不可用且不优的,原因在于下一跳属性未修改,无法递归。
解决思路:
[r2-bgp]peer 3.3.3.3 next-hop-local
将路由传递给自己的3.3.3.3邻居时,将路由中的下一跳属性该为本地
使用import命令引入路由
[r2-bgp]import-route ospf 1
ONG----起源码属性----标识一条路由信息的起源类型
i----代表这条路由信息起源于AS内部使用network命令通告出来
不限于IGP、静态、直连
e-----代表这条路有信息起源于EGP协议----现在几乎看不到该标识
?-----除了以上两种方式,其他方式获取的路由信息都是该标识