故事库-中国往事  > 所属分类  > 
[0] 评论[0] 编辑

边界网关协议

边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓朴图并由此清除了路由环路,同时在 AS 级别上可实施策略决策。
中文名
边界网关协议
外文名
Border Gateway Protocol
类    型
外部网关协议EGP
简    称
BGP

目录

(BGP/BGP4:Border Gateway Protocol,边界网关协议)

BGP-4 提供了一套新的机制以支持无类域间路由。这些机制包括支持网络前缀的通告、取消 BGP 网络中 “ 类 ” 的概念。 BGP-4 也引入机制支持路由聚合,包括 AS 路径的集合。这些改变为提议的超网方案提供了支持。BGP-4 采用了路由向量路由协议,在配置BGP时,每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人”。

1989年发布了主要的外部网关协议:边界路由协议(BGP),新版本BGP-4 是在1995年发布的。

BGP路由选择协议执行中使用4种分组:打开分组(open)、更新分组(update)、存活分组(keepalive)、通告分组(notification)。

结构和功能

BGP用于在不同的自治系统(AS)之间交换路由信息。当两个AS需要交换路由信息时,每个AS都必须指定一个运行BGP的节点,来代表AS与其他的AS交换路由信息。这个节点可以是一个主机。但通常是路由器来执行BGP。两个AS中利用BGP交换信息的路由器也被称为边界网关(Border Gateway)或边界路由器(Border Router)。

由于可能与不同的AS相连,在一个AS内部可能存在多个运行BGP的边界路由器。同一个自治系统(AS)中的两个或多个对等实体之间运行的BGP 被称为 IBGP(Internal/Interior BGP)。归属不同的AS的对等实体之间运行的BGP称为EBGP (External/Exterior BGP)。在AS边界上与其他AS交换信息的路由器被称作边界路由器(border/edge router)。在互联网操作系统(Cisco IOS)中,IBGP通告的路由的距离为200,优先级比EBGP和任何内部网关协议(IGP)通告的路由都低。其他的路由器实现中,优先级顺序也是EBGP高于IGP,而IGP又高于IBGP。

BGP属于外部网关路由协议,可以实现自治系统间无环路的域间路由。BGP是沟通Internet广域网的主用路由协议,例如不同省份、不同国家之间的路由大多要依靠BGP协议。BGP可分为IBGP(Internal BGP)和EBGP(External BGP)。BGP的邻居关系(或称通信对端/对等实体)是通过人工配置实现的,对等实体之间通过TCP(端口179)会话交互数据。BGP路由器会周期地发送19字节的保持存活keep-alive消息来维护连接(默认周期为30秒)。在路由协议中,只有BGP使用TCP作为传输层协议。

IETF先后为BGP制定了多个建议,分别为:

RFC 4271:当前正使用的BGP协议版本,称之为BGP4。

RFC 1654:BGP4协议的第一个规范。

RFC 1105、RFC 1163、RFC 1267、RFC1771:BGP4之前的BGP版本。

特点

BGP属于外部或域间路由协议。BGP的主要目标是为处于不同AS中的路由器之间进行路由信息通信提供保障。BGP既不是纯粹的矢量距离协议,也不是纯粹的链路状态协议,通常被称为通路向量路由协议。这是因为BGP在发布到一个目的网络的可达性的同时,包含了在IP分组到达目的网络过程中所必须经过的AS的列表。通路向量信息时十分有用的,因为只要简单地查找一下BGP路由更新的AS编号就能有效地避免环路的出现。BGP对网络拓扑结构没有限制,其特点包括:

(1)实现自治系统间通信,传播网络的可达信息。BGP 是一个外部网关协议,允许一个AS与另一个AS进行通信。BGP允许一个AS向其他AS通告其内部的网络的可达性信息,或者是通过该AS可达的其他网络的路由信息。同时,AS也能够从另一个AS中了解这些信息。与距离向量选路协议类似,BGP为每个目的网络提供的是下一跳(next-hop)结点的信息。

(2)多个BGP路由器之间的协调。如果在一个自治系统内部有多个路由器分别使用BGP与其他自治系统中对等路由器进行通信,BGP可以协调者一系列路由器,使这些路由器保持路由信息的一致性。

(3)BGP支持基于策略的选路(policy-base routing)。一般的距离向量选路协议确切通告本地选路中的路由。而BGP则可以实现由本地管理员选择的策略。BGP路由器可以为域内和域间的网络可达性配置不同的策略。

(4)可靠的传输。BGP路由信息的传输采用了可靠地TCP协议。

(5)路径信息。在BGP通告目的网络的可达性信息时,处理指定目的网络的下一跳信息之外,通告中还包括了通路向量(path vector),即去往该目的网络时需要经过的AS的列表,使接受者能够了解去往目的网络的通路信息。

(6)增量更新。BGP不需要再所有路由更新报文中传送完整的路由数据库信息,只需要在启动时交换一次完整信息。后续的路由更新报文只通告网络的变化信息。这种网络变化的信息称为增量(delta)。

(7)BGP支持无类型编制(CIDR)及VLSM方式。通告的所有网络都以网络前缀加子网掩码的方式表示。

(8)路由聚集。BGP允许发送方把路由信息聚集在一起,用一个条目来表示多个相关的目的网络,以节约网络带宽。

(9)BGP还允许接收方对报文进行鉴别和认证,以验证发送方的身份。

消息类型及状态转换

BGP使用如下四种消息类型:

Open消息:Open消息是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。

Keepalive消息:BGP会周期性地向对等体发出Keepalive消息,用来保持连接的有效性。

Update消息:Update消息用于在对等体之间交换路由信息。它既可以发布可达路由信息,也可以撤销不可达路由信息。

Notification消息:当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接会立即中断。

BGP邻居建立中的状态和过程如下:

空闲(Idle):为初始状态,当协议激活后开始初始化,复位计时器,并发起第一个TCP连接,并开始倾听远程对等体所发起的连接,同时转向Connect状态。。

连接(Connect):开始TCP连接并等待TCP连接成功的消息。如果TCP连接成功,则进入OpenSent状态;如果TCP连接失败,进入Active状态。

行动(Active):BGP总是试图建立TCP连接,若连接计时器超时,则退回到Connect状态,TCP连接成功就转为Open sent状态。

OPEN发送(Open sent):TCP连接已建立,自己已发送第一个OPEN报文,等待接收对方的Open报文,并对报文进行检查,若发现错误则发送Notification消息报文并退回到Idle状态。若检查无误则发送Keepalive消息报文,Keepalive计时器开始计时,并转为Open confirm状态。

OPEN证实(Open confirm):BGP等待Keepalive报文,同时复位保持计时器。如果收到了Keepalive报文,就转为Established状态,邻居关系协商完成。如果系统收到一条更新或Keepalive消息,它将重新启动保持计时器;如果收到Notification消息,BGP就退回到空闲状态。

已建立(Established):即建立了邻居(对等体)关系,路由器将和邻居交换Update报文,同时复位保持计时器。

路由通告原则

BGP在进行路由通告的时候,需要遵循以下原则:

多条路径时,BGP Speaker只选最优的给自己使用(负载均衡和FRR除外)。

BGP Speaker只把自己使用的路由(最优路由)通告给相邻体。

BGP Speaker从EBGP获得的路由会向自己所有BGP相邻体通告(包括EBGP和IBGP)。

BGP Speaker从IBGP获得的路由不向自己的IBGP相邻体通告(反射器除外)。

BGP Speaker从IBGP获得的路由是否通告给自己的EBGP相邻体要根据IGP和BGP同步的情况来决定。

当收到对端的refresh报文并且本端邻居支持refresh能力,BGP Speaker将把自己所 有BGP路由通告给对等体。

GR过程中,主备倒换方在GR结束时BGP Speaker会把自己所有BGP路由通告给对等体。

属性

路由器发送关于目标网络的BGP更新消息,更新的度量值被称为路径属性。属性可以是公认的或可选的、强制的或自由决定的、传递的或非传递的。属性也可以是部分的。并非组织的和有组合的都是合法的,路径属性分为4类:公认必遵、公认自决、可选过渡、可选非过渡。

公认属性

是公认所有BGP实现都必须识别的属性,这些属性被传递给BGP邻居。

公认强制属性必须出现在路由描述中,公认自由决定属性可以不出现在路由描述中。

可选属性

非公认属性被称为可选的,可选属性可以是传递的或非传递的。

可选属性不要求所有的BGP实现都支持。

对于不支持的可选传递属性,路由器将其原封不动的传递给其他BGP路由器,在这种情况下,属性被标记为部分的。

对于可选非传递属性,路由器必须将其删除,而不将其传递给其他BGP路由器。

(1)公认必遵(Well-Known Mandatory)

ORIGIN(起源):这个属性说明了源路由是怎样放到BGP表中的。有三个可能的源IGP,EGP,以及INCOMPLETE.路由器在多个路由选择的处理中使用这个信息。路由器选择具有最低ORIGIN类型的路径。

AS_PATH(AS路径):指出包含在UPDATE报文中的路由信息所经过的自治系统的序列。

Next_HOP(下一跳)声明路由器所获得的BGP路由的下一跳,对EBGP会话来说,下一跳就是通告该路由的邻居路由器的源地址。

(2)公认自决(Well-Known Discretionary)

LOCAL_PREF(本地优先级):本地优先级属性是用于告诉自治系统内的路由器在有多条路径的时候,怎样离开自治系统。本地优先级越高,路由优先级越高。

ATOMIC_AGGREGATE(原子聚合):原子聚合属性指出已被丢失了的信息。

(3)可选过渡(Optional Transitive)

AGGREGATOR(聚合者):此属性标明了实施路由聚合的BGP路由器ID和聚合路由的路由器的AS号。

COMMUNITY(团体):此属性指共享一个公共属性的一组路由器。

(4)可选非过渡(Optional Nontransitive)

MED(多出口区分):该属性通知AS以外的路由器采用哪一条路径到达AS,它也被认为是路由的外部度量,低MED值表示高的优先级。

ORIGINATOR_ID(起源ID):路由反射器会附加到这个属性上,它携带本AS路由器的路由器ID,用以防止环路。

CLUSTER_LIST(簇列表):此属性显示了采用的反射路径。

协议结构

Marker (16 bytes) Length (2 bytes) Type (1 byte)

Marker – 信息包含信息接收端可预测值。

Length – 包含协议头的信息长度。

Type –信息类型。信息可能是:Open、Update、Notification、Keepalive。

打开(Open)分组,用来与相邻的另一个BGP发言人建立联系

更新(Update)分组,用来发送某一路由的信息,以及列出多条要撤销的路由

保活(Keepalive)分组,用来确认打开分组和周期性地证实邻站关系

通知(Notification)分组,用来发送检测到的差错[2] 

在传输协议连接建立之后,各端发送的第一个信息是 OPEN 信息。如果 OPEN 信息可以接收,会返回发送确认 OPEN 信息的 KEEPALIVE 信息。一旦 OPEN 信息获得确认,UPDATE、KEEPALIVE 和 NOTIFICATION 信息进行相互交换。

附件列表


0

故事内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。

如果您认为本故事还有待完善,请 编辑

上一篇 陈雨菲    下一篇 刘志怀

同义词

暂无同义词
  • 友情链接:
  • 中原企业家
  • 华锐社区
  • 法学学习
  • 故事库
  • 舆情信息
  • 郑州商业观察
  • 美丽中国
  • 药食同源
  • Lovely China
  • 纯欲天花板
  • 留学生