Border Gateway Protocol(当前使用的版本是 BGP-4)
动态路由协议可以按照工作范围分为IGP以及EGP。IGP工作在同一个AS内,主要用来发现和计算路由,为AS内提供路由信息的交换;而EGP工作在AS与AS之间,在AS间提供无环路的路由信息交换,BGP则是EGP的一种。
BGP是一种增强的路径矢量路由协议,同时BGP是拥有丰富的策略控制技术的外部网关协议。多运行于AS与AS之间。
目录:
BGP 其着眼点不在于自动发现网络拓扑,而在于在AS之间选择最佳路由和控制路由的传播。
Ⅰ。BGP使用TCP作为其传输层协议(监听端口号为179),提高了协议的可靠性,且不需要专门的机制来确保连接的可控性。
Ⅱ。路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息。
Ⅲ。BGP从设计上避免了环路的发生。
Ⅳ。支持CIDR 无类域间路由
Ⅵ。BGP提供了丰富的路由策略;提供了防止路由振荡的机制;BGP也易于扩展
Ⅰ。自治系统AS(Autonomous System )
AS是指在一个实体管辖下的拥有相同选路策略的IP网络。
Ⅱ。EBGP和IBGP(External BGP /Internal BGP)
Ⅲ。BGP报文交互中的角色
Ⅰ。BGP报文
BGP报文有5种消息类型
这5种消息的应用:
通过TCP建立BGP连接时,发送OPEN消息
连接建立后,如果有路由需要发送或路由变化时,发送UPDATE消息通告对端
稳定后要定时发送KEEPALIVE消息以保持BGP连接的有效性
当本地BGP在运行中发现错误时,要发送NOTIFICATION消息通告BGP对等体
ROUTE-REFRESH消息用来通知对等体自己支持路由刷新
然后看一下报文格式
Ⅱ。状态机
BGP有限状态机共有六种状态,分别是Idle、Connect、Active、OpenSent、OpenConfirm和Established。
①Idle状态是BGP初始状态。在Idle状态下,BGP拒绝邻居发送的连接请求。只有在收到本设备的Start事件后,BGP才开始尝试和其它BGP对等体进行TCP连接,并转至Connect状态。
②在Connect状态下,BGP启动连接重传定时器(Connect Retry,缺省为32秒),等待TCP完成连接。
如果TCP连接成功,那么BGP向对等体发送Open报文,并转至OpenSent状态;
如果TCP连接失败,那么BGP转至Active状态;
如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP继续尝试和其它BGP对等体进行TCP连接,停留在Connect状态。
如果发生其他事件(由系统或者操作人员启动的),则退回到Idle状态。
③在Active状态下,BGP总是在试图建立TCP连接。
④在OpenSent状态下,BGP等待对等体的Open报文,并对收到的Open报文中的AS号、版本号、认证码等进行检查。
⑤在OpenConfirm状态下,BGP等待Keepalive或Notification报文。如果收到Keepalive报文,则转至Established状态,如果收到Notification报文,则转至Idle状态。
⑥在Established状态下,BGP可以和对等体交换Update、Keepalive、Route-refresh报文和Notification报文。
Ⅲ。BGP对等体之间交互原则
Ⅳ。BGP与IGP同步
事实上,上面第一条从IBGP对等体学到的BGP路由,不是一定会发送给它的EBGP对等体的,前提条件是需要BGP与IGP同步
看了下图和解释就明白了
BGP的主要任务之一就是向其它自治系统发布该自治系统的网络可达信息。如图所示,RTB会把去往10.1.1.0/24 的路由信息封装在BGP报文中,通过由RTB、RTE建立的TCP连接通告给RTE,如果RTE不考虑同步问题,直接接受了这条路由信息并通告给RTF。那么,如果RTF或RTE有去往10.1.1.0/24 的数据报文要发送,这个数据报文要想到达目的地必须经过RTD和RTC。但是,由于先前没有考虑同步问题,RTD和RTC的路由表中没有去往10.1.1.0/24的路由信息,数据报文到了RTD就会被丢弃。因此,BGP必须与IGP(如RIP、OSPF等)同步。也就是说,当一个路由器从IBGP对等体收到一条路由更新信息,在把它通告给它的EBGP对等体之前,要试图验证该目的地能否通过自治系统内部到达(即验证该目的地是否存在于IGP发现的路由表内,非BGP路由器是否可以传递报文到该目的地)。若能通过IGP知道这个目的地,才会把这样一条路由信息通告给EBGP对等体,否则认为BGP与IGP不同步,不进行通告。
上面刚刚介绍了从IBGP对等体学到的BGP路由发送给它的EBGP对等体的前提条件是BGP同步,而同步是通过BGP路由表与IGP路由表的相互引入
BGP引入IGP路由:
BGP的主要工作是在自治系统之间传递路由信息,而不是去发现和计算路由信息。所以,路由信息需要通过配置命令的方式注入到BGP中。
Ⅰ。network命令
逐条引入
通过Network命令注入到BGP路由表里的路由信息必须存在于IP路由表中。
Ⅱ。import命令
按协议类型引入,也可以引入静态或直连路由
BGP路由属性分为4类:
列出几种常见属性(下文会重点介绍和后面要说的BGP选路规则有关的属性):
Origin:起点属性。定义路由信息的来源,标记一条路由是怎样成为BGP路由的。(属于公认必遵)
有3种类型:
①IGP(标识为 i):具有最高的优先级。通过路由始发AS的IGP得到的路由信息,比如通过network命令注入到BGP路由表的路由,其Origin属性为IGP。
②EGP(标识为 e):优先级次之。通过EGP得到的路由信息,其Origin属性为EGP。
③Incomplete(标识为 ?):优先级最低。通过其他方式学习到的路由信息。比如BGP通过import-route命令引入的路由,其Origin属性为Incomplete。
As_PATH:AS路径属性。是路由经过的AS的序列,即列出此路由在传递过程中经过了哪些AS。它可以防止路由循环,并用于路由的过滤和选择。(公认必遵)
上图中:当R4将网段10.0.0.0/24通告给AS400和AS100时,会在AS_PATH中添加自己的AS号。当R5将网段10.0.0.0/24通告给AS100使,也会添加添加自己的AS号。当AS100内的R1和R3再将网段10.0.0.0/24通告给本AS域内的R2时,AS_PATH属性不会改变,且R2在其他BGP选路条件相同的前提下选择AS_PATH路径最短的,即选择通过R3到达网段10.0.0.0/24。
Next hop:下一跳属性。包含到达更新消息所列网络的下一跳边界路由器的IP地址。(公认必遵)
Local-Preference:本地优先级属性。用于在AS内优选到达某一目的地的路由。反映了BGP Speaker对每条BGP路由的偏好程度。属性值越大越优。(公认任意)
上图中:R1从本AS内的R2学到网络10.0.0.0/24的Local_Pref为300,从本AS内的R3学到网络10.0.0.0/24的Local_Pref为200时,R1会选择经由R2到达目的网络10.0.0.0/24。
MED属性:当某个AS有多个入口时,可以用MED属性来帮助其外部的AS选择一个较好的入口路径。一条路由的MED值越小,其优先级越高。(可选非过渡)
上图中:R1和R2将网段10.0.0.0/24传递给各自的EBGP邻居R3和R4,R3和R4在其他条件相同的情况下,优先选择MED值较低的路径,即均选择经由R1访问网络10.0.0.0/24。
Community:团体属性。团体属性标识了一组具有相同特征的路由信息,与它所在的IP子网或自治系统无关。(可选过渡)
当到达同一目的地存在多条路由时,BGP采取如下策略进行路由选择:
当以上全部相同,则为“等价路由”,可以负载分担
注:AS_PATH必须一致;当负载分担时,以下3条原则无效
优选Cluster_List最短的路由
优选Originator_ID 或者Router ID最小的路由器发布的路由
比较对等体的IP Address,优选从具有较小IP Address的对等体学来的路由
根据BGP的选路原则以及BGP常用的路径属性,我们可以总结出9个影响BGP选路的重要参数,分别为:
以上参数都能直接地影响BGP的路径选择,其中我们常用的参数分别为LOCAL_PREF, AS_PATH和MED属性。
Ⅰ。BGP安全特性:
Ⅱ。路由衰减(EBGP)
路由衰减(Route Dampening)用来解决路由不稳定的问题,即路由表中的某条路由反复消失和重现,也就是路由振荡。多数情况下,BGP协议都应用于复杂的网络环境中,路由变化十分频繁。为了防止持续的路由振荡带来的不利影响,BGP使用路由衰减来抑制不稳定的路由。
BGP衰减使用惩罚值来衡量一条路由的稳定性,惩罚值越高则说明路由越不稳定。路由每发生一次振荡(路由从激活状态变为未激活状态,称为一次路由振荡),BGP便会给此路由增加一定的惩罚值(1000)。当惩罚值超过抑制阈值时,此路由被抑制,不加入到路由表中,也不再向其他BGP对等体发布更新报文。
被抑制的路由每经过一段时间(900S),惩罚值便会减少一半,这个时间称为半衰期(Half-life)。当惩罚值降到再使用阈值时,此路由变为可用并被加入到路由表中,同时向其他BGP对等体发布更新报文
路由衰减只适用于EBGP路由。对于从IBGP收来的路由不能进行衰减,因为IBGP路由经常含有本AS的路由,内部网络路由要求转发表尽可能一致,IGP快速收敛就是为了达到信息同步,转发一致。如果衰减对IBGP路由起作用,不同设备的衰减参数不一致时,会导致转发表不一致。
参考资料:华为HCIE理论基础中的BGP讲解