BGP的定义
特点:
1、能承受大批量的路由信息,支持大规模网络
!2、使用TCP作为传输层协议(监听端口时179,),提高了协议的可靠性。
3、是外部路由协议(EGP)。在AS间传递数据,对稳定性要求非常高,因此使用TCP协议来保证BGP的稳定可靠性
4、BGP的对等体之间必须逻辑上连通,并进行TCP连接。目的端口号为179,本地端口号任意
(只要双方建立TCP连接的关系,就能被称为对等体)
!5、BGP对等体与IGP不同。 BGP对等体是指用TCP协议建立连接的两端。而非与IGP同概念的直连邻居,只需要TCP能建立连接的不一定需要直连(就是对等体关系)
!6、BGP自身只负责控制路由,数据转发依然靠IGP路由或者静态路由
7、BGP支持无类别域间路由CIDR(支持子网划分)
!8、路由更新的时候BGP只发送更新的路由(不会整表发送)。大大减小了BGP传播路由所占用的带宽,适用internet上传播大量的路由协议
9、BGp是一种增强的距离矢量路由协议,从设计上避免了环路的发生(BGp中也有避免环路存在的措施)
!10、AS之间BGP通过携带AS-pass协议信息标记途径的as,带有本地AS号的路由将被丢弃,从而避免域间防环
!11、as内部,BGP在AS内学到的路由不会再通告给AS内的BGP邻居,避免了AS内部产生环路(路由只在AS内部只跳一次,来防环)
12、BGP提供了丰富的路由由策略,(支持12种选路属性)能对路由进行灵活的过滤和选择
13、提供了防止路由震荡的机制(防止衰减),有效提高了网络稳定性
14、易于扩展,能适应ipv4的组播与单播,主要通过VLT进行扩展
BGP分类
1、运行方式分类:
EBGP(运行在不同AS之间的BGP)——AS之间BGP通过携带AS-pass协议信息标记途径的as,带有本地AS号的路由将被丢弃,从而避免域间防环
IBGP(运行于同一AS内部的BGP)——as内部,BGP在AS内学到的路由不会再通告给AS内的IBGP对等体,避免了AS内部产生环路,并与所有IBGP对等体建立全连接
BGP的路由器号
1、是一个用于标识BGP设备的32位值,通常是ipv4的地址形式。在BGP会话建立时发送的open报文中携带。对等体之间建立BGP会话时,每个BGP设备都必须携带一个唯一的router id,否则对等体之间不建立BGP连接
BGP的工作原理:
(5种报文,6个状态机、9个原则)
BGP的报文,keepalive报文是周期性发送,其余报文为触发式发送
1、open报文:协商对等体的各项参数(建立TCP连接后发送的第一个报文)
2、update报文:用于在对等体之间交换路由信息用的
3、notification报文:用于中断BGP连接的
!4、keepalive报文:用于保持BGP连接用的(周期性发送),以及响应收到正确的open报文
5、router-refresh报文:用于改变路由策略后软复位BGP路由表请求对等体重新发送路由器信息(只有支持router-refresh的BGP路由才会发送和响应该报文) {软复位刷新路由使用}
BGP的状态机
空闲(Idle)、连接(connect)、活跃(active) 、open报文已发送(opensent)、open报文已确认(openconfirm)、连接已经建立(established)
1、Idle:BGP初始状态,BGP拒绝邻居发送连接请求,只有在收到本设备的start后,BGP才尝试和其他BGP对等体进行TCP连接,并转至连接状态
2、在connect状态下,BGP启动连接重传定时器,并等待TCP完成连接
如果TCP连接成功,BGP向对等体 发送open报文并转至opensent状态
如果失败就转入active状态重连
如果超时的话会尝试和其他BGP进行tcp连接,本BGP返回连接状态
3、opensent状态下等待接受对等体的open报文
如果收到正确的open报文则发送keepalive报文确认,随后转入openconfirm
如果收到open报文错误或者其他报文,则会发送notification报文,随后返回Idle状态
4、openconfirm状态等待对等体的keepalive报文或者notfifcation报文
收到keepalive报文后进入established
如果收到notfifcation报文,则进入Idle
5、established下可以和对等体交换update报文、keepalive报文、router-refresh报文、notification报文
收到正确的keepalive报文、update报文,认为对等体处于正常的工作状态,保持BGP连接
收到错误的keepalive报文、update报文,那么发送notification报文通知对等体,本bgp转至Idle
如果收到notification报文,那么本BGP转至Idle状态
如果收到TCP拆链通知,那么BGP断开连接,转至Idle状态
router-refresh报文不会改变BGP的状态
BGP对等体间的交互原则
BGP设备将最优路由加入到路由表当中,形成BGP路由表,BGP设备与对等体之间建立邻居关系后,采取以下交互原则
1、从IBGP对等体获得的BGP路由,只会发布给它的 EBGP对等体
2、EBGP对等体获得的BGP路由,BGP设备发布给它所有EBGP和IBGP对等体
3、当存在多条到达同一目的的有效路由时,BGP只会选择最佳路线发送给对等体
4、路由更新时,BGP只会发送更新的路由设备
5、所有对等体发送的路由,BGP都会接受
6、所有EBGP对等体在传递中下一跳改变(TTL默认值为1,指令的时候记得改数值)
7、所有IBGP在传递过程中下一跳不变(TTL默认值为255)
建立对等体注意点
1、直连建议对等体需要注意的点
建立IBGP的时候记得让下一跳可达,处于边界的IBGP对等体需要将下一跳对准自己。这样才能建立IBGP对等体
2、用环回口建立邻居关系的时候需要注意的点
需要修改更新源,默认更新源是物理口改成环回接口。建立IBGP对等体时候记得让下一跳可达。处于边界的IBGP对等体需要将下一跳对准自己。这样才能建立IBGP对等体
建立EBGP对等体的时候因为默认ttl只有1.因此在建立EBGP对等体时候需要将跳数修改至2或者以上
3、为什么要用环回接口建立邻居关系。
环回接口稳定,只要路由器启动着。环回接口就不会关闭。而物理接口会因为多种因素影响导致对等体1的关系有问题。所以一般BGP对等体都是用环回口来建立对等关系
指令:华为
配置建立邻居关系
R1为AS 100的ASBR路由,绑定了loopback 1.1.1.1
R3为AS 100的路由,绑定了loopback 3.3.3.3
R2是AS 200的ASBR路由,绑定了loopback 2.2.2.2
bgp 100 ;创建BGP编号100(就是AS100)此外以下都在BGP-100环境下配置
配置本AS100
router-id 1.1.1.1 ;R1的环回loopback的ip
peer 3.3.3.3 as-number 100;指定对等体环回与AS(本AS的)
peer 3.3.3.3 connect-interface loopback 0;指定对等体环回与AS(本AS的)
peer 3.3.3.3 next-hop-local;让AS100内的对等体下一跳对准R1(ASBR)
配置AS200
peer 2.2.2.2 as-number 200;指定对等体环回与AS(对面as200的)
peer 2.2.2.2 connect-interface loopback 0;指定对等体环回与AS(对面as200的)
peer 2.2.2.2 ebgp-max-hop 2 ;建立EBGP对等体,将跳数修改至2或者以上
宣誓环回/ip地址(宣告本AS所有的环回/IP,以及EbGP对等体的环回/ip地址
net 1.1.1.1
net 2.2.2.2
net 3.3.3.3
ps:(对面R2,as200也是如此配置。之后可行程BGP全网互通)
综上配置步骤:
1、配置IP和as内的IGP
2、配置BGP对等体
3、EBGP最大跳数大于等于2
4、在边界IBGP给IBGP对等体配置下一跳的时候指向自己
5、EBGP之间的配置静态路由,目标ip指向回环网卡ip
6、在EBGP之间宣告自己AS的回环ip\ip地址(网段、ip)以及EBGP对等体的回环ip\ip地址(网段、ip)