边界网关协议
基础:
优先级255,高级路径适量协议,属于EGP,采用TCP179,只有一端是179
BGP是在AS之间实现路由可达,并且选择最优路径的矢量型协议
特点:
- 触发式更新,大量路由信息,灵活选路,vpn,路由聚合和路由衰减
- BGP发起的路由器被称为发言者,或者对等体
- 丰富的选路规则:携带多种路径属性,在选路上有很丰富的可操作性,可以在不同的场景下选择最合适的路径控制方式,不单单是通过cost值进行选路
AS
是指在统一给我组织管理下,使用统一选路策略的设备集合,自治系统。
16bit 共有1-64511 私有64512-65534,也有32bit的
与IGP对比
IGP需要AS之间直连,或者通过VPN进行邻居建立
AS之前相互不同,使用IGP传递存在安全风险
如果网络规模大,路由数量增多,就会导致资源浪费,路由收俩变慢,设备性能损耗大
而BGP
基于TCP的,只要TCP能建立,就能运行BGP
值传递路由,不传递其他内部信息
触发式更新,不是周期性更新
对等体的建立
由于BGP会话是基于TCP的,所以两台想要建立BGP对等体关系的路由器可以不要求直连,但是一要能通,ip和tcp
路由器会建立对等体关系,根据不同的AS号会建立不同的对等体关系,IBGP(内部)和EBGP(外部),
其中,EBGP必须满足两种条件,
- 两台路由器所属的AS不同,
- 配置EBGP时,要求IP路由可达,并且要TCP能正确建立
特殊情况:如果一台路由器收到了外部建立和内部建立的关系,会优先选择建立那种关系
优先建立外部关系,因为BGP主要面向的就是外部边界
对等体建立过程:
- 由一端发起TCP的连接,R1先启动BGP,向R2的179端口发送,经理三次握手
- 三次握手之后,会发送open报文,用来建立邻居
- open报文发送完成之后,会周期性发送keeplive报文来维持邻居关系
其中open报文中包含一些协商信息,包括自身AS号,Hold Time时间,自认的RouteID
其中HoldTime是指用于协商后续发送keeplive报文的时间
周期性发送open的时间是60s,发送keeplive报文是三倍,180s
如果在协商过程中发现两台路由器的发送时间不同,则取较小的时间作为Holdtime时间
- 对等体关系建立完成之后,BGP路由器发送BGP Update报文通告路由到对等体
TCP连接源地址
默认情况下,BGP使用的报文出接口作为TCP连接的本地接口
如果想改的话:
在部署IBGP的时候,建议使用环回口,因为环回口稳定,而且可以家住AS内部的IGP和冗余拓扑来保证可靠性
在部署EBGP的时候,一般是使用直连接口的IP地址作为源地址,如果想要使用环回扣建立对等体关系,需要注意EBGP多跳问题
BGP报文
OPen报文:时间值是可以改的,注意3倍关系
update报文:其中由一个NLRI字段,一个UPdate报文中可以通告具有相同属性的多条路由,这些路由信息就保存在NLRl中,
同时Update中也可以携带多条不可达信息,用于告知对反撤销路由,储存在Withdrawn routes字段中
Notification报文:发送错误原因
Keeplic报文中只包含报文头,没有其他信息
routerefresh:刷新
BGP状态
不是一定会按照顺序状态更迭的
如果缺乏去往BGP对等体的路由会倒是BGP路由器一直处于IDLE状态,也是常见原因
邻居表
可以通过在结尾加上单词查看详细i信息
*表示是可用的
>表示是最优的
路由生成
与IGP不同,BGP的路由不会主动生成,不会主动发现并计算路由,BGP是将IGP路由表中的路由注入到BGP中,并通过Update报文传递给对等体
两种注入方式:NEtwork IMport-route
BGP也是支持路由汇总,包括手动汇总和自动汇总、
NEtwork
首先,注入的路由必须是已经存在的路由,已经出现在IGP的路由表上的路由才行
想要通过Network注入,只需要BGP进程中,通过Network命令注入路由就行,路由器会使用UPdate将路由表传递给对等体
IMpoirt-route
由于network的注入方式虽然是精确注入,但是效率低,所以我们可以通过import-route的方式直接将直连,静态,ospf,isis的路由直接引入
方便快捷
BGP路由聚合
支持自动聚合:sumary automatic
使用(aggregate)关键字进行路由聚合,
但是需要注意的是,如果这只是aggregate ipv4地址这样的形式,就会导致BGP收到的除了汇总要汇总的路由外,还会有一给精确路由
所以我们需要加上竖线后面的参数
除了这个参数外,还有其他的很多的参数,用来处理不同的情况
通告原则
- 只发布最优且有效的路由条目,
- 从EBGP收到的路由会发送给所有的对等体
- IBGP水平分割:IBGP收到报文时不会发送给对等体的,也就是说IBGP之间是不会互相传递路由信息的,为解决该问题可以采用AS内IBGP全互联的港式,也就是让R2和R3成为非直连对等体,R2和R3都直接从R1获得路由
- BGP同步:默认是关闭掉了,这个规则要求必须同时从BGP和IGP中学到相同的路由之后,这条路由才会生效,也就是说如果开启这条规则的话,只从BGP学习到路由是没用的,ping不通的,这种在路由表上显示了路由却ping不通的情况叫做路由黑洞,所以为了避免路由黑洞的问题,我们一般情况下是将这台哦规则关闭的