一、基本特性
EGP(外部网关协议)是一种在不同自治系统之间交换路由信息的路由协议。BGP就是一种EGP,并且它是一项非常强健且具有可扩展性的路由协议;BGP是Internet中使用的路由协议。
使用BGP的主要目标是提供一个域间路由系统,保证在自治系统之间交换无环的路由信息。BGP路由器会交换有关目的网络的路径信息。
BGP提供的域间路由实现了自治系统之间的连接,
BGP的域间路由通常需要基于一系列策略,而不仅仅是底层基础设施的技术特征。BGP的这种性能使它与IGP区分开来,IGP只专注于找到两点之间最优的(通常是最快的)路由,而不考虑路由策略。
BGP并不使用带宽来选择最优路径。
BGP是基于策略的路由协议,使自治系统能够使用多种BGP属性来控制流量。运行BGP的路由器之间会交换
网络可达性信息,这些信息称为路径矢量或属性,其中包括为了到达某个目的地网络,数据包应该穿越的所有BGP自治系统号列表。在使用BGP时,工程师可以通过调整这些路径属性,完全地利用所有带宽。
AS自治系统:一组被统一管理的路由器。一个AS相当于一个ISP,一个ISP可看成一个大的路由器。
AS范围1~65535
公有:1~64511
私有:64512~65535
对等体peer分为:
IBGP peer (internal)
EBGP peer(external)
二、AS内部基本部署
R02(config)#router ospf 100
R02(config-router)#router-id 2.2.2.2
R02(config-router)#network 2.2.2.2 0.0.0.0 area 0
R02(config-router)#network 23.1.1.0 0.0.0.255 area 0
R02(config)#router bgp 23
R02(config-router)#no auto-summary
R02(config-router)#no synchronization
R02(config-router)#bgp router-id 2.2.2.2
R02(config-router)#network 2.2.2.2 mask 255.255.255.255
R02(config-router)#neighbor 3.3.3.3 remote-as 23
R02(config-router)#neighbor 3.3.3.3 update-source loopback 0
R03(config)#router ospf 100
R03(config-router)#router-id 3.3.3.3
R03(config-router)#network 3.3.3.3 0.0.0.0 area 0
R03(config-router)#network 23.1.1.0 0.0.0.255 area 0
R03(config)#router bgp 23
R03(config-router)#no auto-summary
R03(config-router)#no synchronization
R03(config-router)#bgp router-id 3.3.3.3
R03(config-router)#network 3.3.3.3 mask 255.255.255.255
R03(config-router)#neighbor 2.2.2.2 remote-as 23
R03(config-router)#neighbor 2.2.2.2 update-source loopback 0
router bgp 100
no auto-summary //关闭路由汇总
no synchronization //关闭路由同步
bgp router-id 2.2.2.2 //指定BGP RID
network 2.2.2.2 mask 255.255.255.255 //
只需要通告本机上loopback的路由,不需要通告接口路由信息;注意使用
正掩码
通过直连接口建立邻居:
neighbor 23.1.1.3
remote-as 23 //指定BGP邻居,链路对端ip地址和
对端AS号
通过LOOPBACK口建立邻居:
neighbor 3.3.3.3
remote-as 23 //指定BGP邻居,链路对端ip地址和
本地AS号
neighbor 3.3.3.3
update-source Loopback1 //使用指定
本地
loopback口做邻居,修改本地更新源。
AS部署BGP的基础是,
首先在路由器上部署IGP协议,例如OSPF。注意在ospf配置通告路由network时,AS内部时
不要通告AS间连接链路的路由。
neighbor
说明:由于BGP基于TCP协议,所以邻居建立必须单播指定;
network
说明:BGP里面的Network命令仅仅用于路由通告,没有邻居建立的功能,而IGP里面的network命令除了建立邻居,还通告了路由.
Show run | s r b 查看BGP配置
Show ip bgp summary/neighbor 查看BGP邻居表简要<详细>
Show ip bgp 查看BGP拓扑表/数据库
Show ip route bgp 查看BGP路由
三、路由分组
Clear ip bgp * //硬清除
Clear ip bgp * soft //软清除
① 源地址和目的地址ip都改为了loopback口的地址
② TCP上次握手建立邻居
③ BGP分组:
open message:只在第一次初始状态下邻居建立时出现
keeplive message:用户实现可靠确认邻居维持。60秒/次
update message:用户承载及传递路由条目及路径属性。
notification message:用户对BGP的错路进程进行纠错。
四、EBGP邻居建立
EBGP基于loopback口建立邻居:
① 通过静态路由指向给对方环回口;
R01(config)#ip route 2.2.2.2 255.255.255.255 12.1.1.2
R02(config)#ip route 1.1.1.1 255.255.255.255 12.1.1.1
② 基于静态路由的连通性,建立BGP邻居;
③
EBGP数据包头部的TTL值为1,但是邻居指向对方loopback口,需要两跳,所以需要修改TTL值使大于1。开启“EBGP多跳multi-hop”
R01(config)#router bgp 100
R01(config-router)#no auto-summary
R01(config-router)#no synchronization
R01(config-router)#bgp router-id 1.1.1.1
R01(config-router)#network 1.1.1.1 mask 255.255.255.255
R01(config-router)#neighbor 2.2.2.2 remote-as 23
R01(config-router)#neighbor 2.2.2.2 update-source loopback 0
02(config)#router bgp 23
R02(config-router)#neighbor 1.1.1.1 remote-as 100
R02(config-router)#neighbor 1.1.1.1 update-source loopback 0
此时:
发现R1和R2之间的邻居状态为“Idle”
所以需要
开启“EBGP多跳multi-hop”
R01(config-router)#
neighbor 2.2.2.2
ebgp-multihop 2 //将TTL值改为2
R02(config-router)#
neighbor 1.1.1.1
ebgp-multihop 2 //将TTL值改为2
此时BGP邻居建立:
邻居建立状态过程: