目录
BGP
BGP概述
BGP(Border Gateway Protocol,边界网关协议)是一种用于AS(Autonomous System,自治系统)之间的动态路由协议。AS是拥有同一选路策略,在同一技术管理部门下运行的一组路由器。
早期发布的三个版本分别是BGP-1(RFC 1105)、BGP-2(RFC 1163)和BGP-3(RFC 1267),当前使用的版本是BGP-4(RFC 1771,已更新至RFC 4271)。BGP-4作为事实上的Internet外部路由协议标准,被广泛应用于ISP(Internet Service Provider,因特网服务提供商)之间。
& 说明:
下文中若不做特殊说明,所指的BGP均为BGP-4。
BGP特性描述如下:
BGP是一种外部网关协议(Exterior Gateway Protocol,EGP),与OSPF、RIP等内部网关协议(Interior Gateway Protocol,IGP)不同,其着眼点不在于发现和计算路由,而在于控制路由的传播和选择最佳路由。
BGP使用TCP作为其传输层协议(端口号179),提高了协议的可靠性。
BGP支持CIDR(Classless Inter-Domain Routing,无类别域间路由)。
路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息。
BGP路由通过携带AS路径信息彻底解决路由环路问题。
BGP提供了丰富的路由策略,能够对路由实现灵活的过滤和选择。
BGP易于扩展,能够适应网络新的发展。
发送BGP消息的路由器称为BGP发言者(BGP Speaker),它接收或产生新的路由信息,并发布(Advertise)给其它BGP发言者。当BGP发言者收到来自其它自治系统的新路由时,如果该路由比当前已知路由更优、或者当前还没有该路由,它就把这条路由发布给自治系统内所有其它BGP发言者。
相互交换消息的BGP发言者之间互称对等体(Peer),若干相关的对等体可以构成对等体组(Peer group)。
BGP在路由器上以下列两种方式运行:
IBGP(Internal BGP):当BGP运行于同一自治系统内部时,被称为IBGP;
EBGP(External BGP):当BGP运行于不同自治系统之间时,称为EBGP。
BGP的消息类型
1. 消息头格式
BGP有5种消息类型:Open、Update、Notification、Keepalive和Route-refresh。这些消息有相同的报文头,其格式如图1所示。
图1 BGP消息的报文头格式
主要字段的解释如下:
Marker:16字节,用于标明BGP报文边界,所有比特均为“1”。
Length:2字节,BGP消息总长度(包括报文头在内),以字节为单位。
Type:1字节,BGP消息的类型。其取值从1到5,分别表示Open、Update、Notification、Keepalive和Route-refresh消息。其中,前四种消息是在RFC 1771中定义,而Type为5的消息则是在RFC 2918中定义的。
2. Open
Open消息是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。其消息格式如图2所示。
图2 BGP Open消息格式
主要字段的解释如下:
Version:BGP的版本号。对于BGP-4来说,其值为4。
My autonomous system:本地AS号。通过比较两端的AS号可以确定是EBGP连接还是IBGP连接。
Hold time:保持时间。在建立对等体关系时两端要协商Hold Time,并保持一致。如果在这个时间内未收到对端发来的Keepalive消息或Update消息,则认为BGP连接中断。
BGP identifier:BGP标识符。以IP地址的形式表示,用来识别BGP路由器。
Opt Parm Len(Optional Parameters Length):可选参数的长度。如果为0则没有可选参数。
Optional parameters:可选参数。用于多协议扩展(Multiprotocol Extensions)等功能。
3. Update
Update消息用于在对等体之间交换路由信息。它既可以发布可达路由信息,也可以撤销不可达路由信息。其消息格式如图3所示。
图3 BGP Update消息格式
一条Update报文可以通告一类具有相同路径属性的可达路由,这些路由放在NLRI(Network Layer Reachable Information,网络层可达信息)字段中,Path Attributes字段携带了这些路由的属性,BGP根据这些属性进行路由的选择;同时Update报文还可以携带多条不可达路由,被撤销的路由放在Withdrawn Routes字段中。
主要字段的解释如下:
Unfeasible routes length:不可达路由字段的长度,以字节为单位。如果为0则说明没有Withdrawn Routes字段。
Withdrawn routes:不可达路由的列表。
Total path attribute length:路径属性字段的长度,以字节为单位。如果为0则说明没有Path Attributes字段。
Path atributes:与NLRI相关的所有路径属性列表,每个路径属性由一个TLV(Type-Length-Value)三元组构成。BGP正是根据这些属性值来避免环路,进行选路,协议扩展等。
NL