1. 概述
因特网,在20世纪60年代末,作为一个实验,开始于DARPA(美国国防部的高级研究项目管理局)。随着研究机构、学院和政府加入,形成了最早的ARPANET。后来,美国国家科学基金会又开发了NSFNET(1995年4月停用)。发展到现在,因特网成为了由商业提供者运营的的更分散的体系。而下一代因特网(NGI)的计划已于1997年10月启动,目前已推出的主要方案有Internet2,Abilene等。
出于管理和扩展的目的,因特网可以被分割成许多不同的自治系统(Autonomous System)。换句话说,因特网是由自治系统汇集而成的。
BGPv4(Border gateway protocol Version 4)——边缘网关协议(定义于RFC1771),是现行因特网的实施标准,就是用来连接自治系统,实现自治系统间的路由选择功能的。
2. IGP与EGP
所有的路由选择协议可以被分成IGP和EGP两种。要了解IGP和EGP的概念,应该首先了解自治系统(AS)的概念。传统的AS定义(RFC1771):AS是同一个技术管理下的一组路由器,它们使用一种内部网关协议和一致的度量尺度来对数据包进行AS内部的路由,而使用外部网关协议来对发向其它AS的数据包进行路由选择。发展到现在,已经允许并且时常采用在一个自治系统AS中使用多个内部网关协议,甚至多个路由选择的度量标准。所以,现在的自治系统被扩展的定义为:共享同一路由选择策略的一组路由器。
IGP(Interior gateway protocols)——内部网关协议,定义为在一个自治系统内部使用的路由协议(包括动态路由协议和静态路由)。IGP的功能是完成数据包在AS内部的路由选择,或者说,是讲述数据包如何穿过本地AS的。RIPv1&v2,IGRP,EIGRP,OSPF,ISIS都是典型的IGP。
EGP(Exterior gateway protocols)——外部网关协议,定义为在多个自治系统之间使用的路由协议。它主要完成数据包在AS间的路由选择,或者说,讲述数据包为了到达目的IP,需要通过哪些AS。BGP4就是一种EGP。
IGP只作用于本地AS内部,而对其他AS一无所知。它负责将数据包发到主机所在的网段(segment)。EGP作用于各AS之间,它只了解AS的整体结构,而不了解各个AS内部的拓扑结构。它只负责将数据包发到相应的AS中,余下的工作便交给IGP来做。
每个自治系统AS都有唯一的标识,称为AS号(AS number),由IANA(Internet Assigned Numbers Authority)来授权分配。这是一个16位的二进制数,范围为1~65535,其中65412~65535为AS专用组(RFC2270)。
3.BGP-4的基本概念
BGP-4是典型的外部网关协议,是现行的因特网实施标准。它完成了在自治系统AS间的路由选择。可以说,BGP协议是现代整个网络的支架。
BGP-4在RFC1771中作出了规定,并且还涉及其他很多的RFC文档。在这一新版本中,BGP开始支持CIDR(Classless interdomains routing)和AS路径聚合(Aggregation),这种新属性的加入,可以减缓BGP表中条目的增长速度。
图一
BGP协议是一种距离矢量(Distance vector)的路由协议,但是比起RIP等典型的距离矢量协议,又有很多增强的性能。BGP使用TCP作为传输协议,使用端口号179。在通信时,要先建立TCP会话,这样数据传输的可靠性就由TCP协议来保证,而在BGP的协议中就不用再使用差错控制和重传的机制,从而简化了复杂的程度。另外,BGP使用增量的、触发性的路由更新,而不是一般的距离矢量协议的整个路由表的、周期性的更新,这样节省了更新所占用的带宽。BGP还使用“保留”信号(Keepalive)来监视TCP会话的连接。而且,BGP还有多种衡量路由路径的度量标准(称为路由属性),可以更加准确的判断出最优的路径。
与传统的内部路由协议相比,BGP还有一个有趣的特性,就是使用BGP的路由器之间,可以被未使用BGP的路由器隔开。这是因为BGP在独立的内部路由协议之上工作,所以通过BGP会话连接的路由器能被多个运行内部路由协议的路由器分开。
建立了BGP会话连接的路由器被称作对等体(peers or neighbors),对等体的连接有两种模式:IBGP(Internal BGP)和EBGP(External BGP)。IBGP是指单个AS内部的路由器之间的BGP连接,而EBGP则是指AS之间的路由器建立BGP会话。
图二
前面已经提到,BGP是用来完成AS之间的路由选择的,所以对于BGP来说,每一个AS都是一个原子的跳度。那么,IBGP又起什么样的作用呢?IBGP是用来在AS内部完成BGP更新信息的交换。虽然这种功能也可以由“再分布” (Redistribution)技术来完成——将EBGP传送来的其他AS的路由“再分布”到IGP中,然后将其“再分布”到EBGP传送到其他AS。但是相比之下,IBGP提供了更高的扩展性、灵活性和管理的有效性。比如,IBGP提供了选择本地AS外出点的方式。
IBGP的功能是维护AS内部连通性。BGP规定,一个IBGP的路由器不能将来自另一IBGP路由器的路由发送给第三方IBGP路由器。这也可以理解为通常所说的Split-horizon规则。当路由器通过EBGP接收到更新信息时,它会对这个更新信息进行处理,并发送到所有的IBGP及余下的EBGP对等体;而当路由器从IBGP接收到更新信息时,它会对其进行处理并仅通过EBGP传送,而不会向IBGP传送。所以,在AS中,BGP路由器必须要通过IBGP会话建立完全连接的网状连接,以此来保持BGP的连通性。如果没有在物理上实现全网状(full meshed)的连接,就会出现连通性上的问题。
AS在BGP看来是一个整体,AS内部的BGP路由器都必须将相同的路由信息发送给边界的EBGP路由器。路由信息在通过IBGP链路时不会发生改变,只有通过EBGP链路时,路由信息才会发生变化。在AS内部,通过IBGP连接的路由器都有相同的BGP路由表(BGP路由表(BGP Routing Table)用于存放BGP路由信息,不同于IGP路由表,两个表之间的信息可以通过“再分布”(Redistribution)技术进行交换)。
……