10.1.5 Internet路由协议
目前TCP/IP网络,全部是通过路由器互连起来的,Internet就是成千上万个IP子网通过路由器互连起来的国际性网络。这种网络称为以路由器为基础的网络(router based network),形成了以路由器为节点的“网间网”。在“网间网”中,路由器不仅负责对IP分组的转发,还要负责与别的路由器进行联络,共同确定“网间网”的路由选择和维护路由表。这是靠路由协议完成的。
典型的路由选择方式有两种:静态路由和动态路由。
静态路由是在路由器中设置的固定路由表。除非网络管理员干预,否则静态路由不会发生变化。由于静态路由不能对网络的改变做出反应,一般用于网络规模不大、拓扑结构固定的网络中。静态路由的优点是简单、高效和可靠。在所有的路由中,静态路由优先级最高。当动态路由与静态路由发生冲突时,以静态路由为准。
动态路由是网络中的路由器之间相互通信,传递路由信息,利用收到的路由信息更新路由表的过程。它能实时地适应网络结构的变化。如果路由更新信息表明发生了网络变化,路由选择软件就会重新计算路由,并发出新的路由更新信息。这些信息通过各个网络,引起各路由器重新启动其路由算法,并更新各自的路由表以动态地反映网络拓扑变化。动态路由适用于网络规模大、网络拓扑复杂的网络。当然,各种动态路由协议会不同程度地占用网络带宽和CPU资源。
静态路由和动态路由有各自的特点和适用范围,因此在网络中动态路由通常作为静态路由的补充。当一个分组在路由器中进行寻径时,路由器首先查找静态路由,如果查到则根据相应的静态路由转发分组;否则再査找动态路由。
根据是否在一个自治域内部使用,动态路由协议分为内部网关协议(Interior Gateway Protocol,IGP)和外部网关协议(Exterior gateway protocols,EGP)。这里的自治域是指一个具有统一管理机构、统一路由策略的网络。自治域内部采用的路由选择协议称为内部网关协议,常用的有RIP(Routing information Protocol,路由信息协议)、OSPF(Open Shortest Path First,开放式最短路径优先);外部网关协议主要用于多个自治域之间的路由选择,常用的是BGP和BGP-4。下面分别进行介绍。
1.RIP路由协议
RIP是应用较早、使用较普遍的内部网关协议,适用于小型同类网络的一个自治系统(AS)内的路由信息的传递。RIP协议是基于距离矢量算法(Distance Vector Algorithms,DVA)的。它使用“跳数”,即metric来衡量到达目标地址的路由距离。它是一个用于路由器和主机间交换路由信息的距离向量协议,目前最新的版本为v4,也就是RIPv4。
(1)RIP工作原理
RIP协议是基于Bellham-Ford(距离向量)算法,此算法1969年被用于计算机路由选择,正式协议首先是由Xerox于1970年开发的,当时是作为Xerox的“Networking Services(NXS)”协议族的一部分。由于RIP实现简单,迅速成为使用范围最广泛的路由协议。
在路由实现时,RIP作为一个系统长驻进程(daemon)而存在于路由器中,负责从网络系统的其他路由器接收路由信息,从而对本地IP层路由表作动态的维护,保证IP层发送报文时选择正确的路由。同时负责广播本路由器的路由信息,通知相邻路由器作相应的修改。RIP协议处于UDP协议的上层,RIP所接收的路由信息都封装在UDP协议的数据报中,RIP在520号UDP端口上接收来自远程路由器的路由修改信息,并对本地的路由表做相应的修改,同时通知其他路由器。通过这种方式,达到全局路由的有效。
RIP路由协议用“更新(UNPDATES)”和“请求(REQUESTS)”这两种分组来传输信息的。每个具有RIP协议功能的路由器每隔30秒用UDP520端口给与之直接相连的机器广播更新信息。更新信息反映了该路由器所有的路由选择信息数据库。路由选择信息数据库的每个条目由“局域网上能达到的IP地址”和“与该网络的距离”两部分组成。请求信息用于寻找网络上能发出RIP报文的其他设备。
RIP用“路程段数”(即“跳数”)作为网络距离的尺度。每个路由器在给相邻路由器发出路由信息时,都会给每个路径加上内部距离。在如图10-7中,路由器3直接和网络C相连。当它向路由器2通告网络142.10.0.0的路径时,它把跳数增加1。与之相似,路由器2把跳数增加到“2”,且通告路径给路由器1,则路由器2和路由器1与路由器3所在网络142.10.0.0的距离分别是1跳、2跳。
(2)路由器的收敛机制
任何距离向量路由选择协议(如RIP)都有一个问题,路由器不知道网络的全局情况,路由器必须依靠相邻路由器来获取网络的可达信息。由于路由选择更新信息在网络上传播慢,距离向量路由选择算法有一个慢收敛问题,这个问题将导致不一致性产生。RIP协议使用以下机制减少因网络上的不一致带来的路由选择环路的可能性。
1)计数到无穷大机制
RIP协议允许最大跳数为15。大于15的目的地被认为是不可达的。这个数字在限制了网络大小的同时也防止了一个叫做“计数到无穷大”的问题。
2)水平分割法
水平分割规则为路由器不向路径到来的方向回传此路径。当打开路由器接口后,路由器记录路径是从哪个接口来的,并且不向此接口回传此路径。
3)破坏逆转的水平分割法
水平分割是路由器用来防止把一个接口得来的路径又从此接口传回导致的问题的方案。水平分割方案忽略在更新过程中从一个路由器获取的路径又传回该路由器。有破坏逆转的水平分割方法是在更新信息中包括这些回传路径,但这种处理方法会把这些回传路径的跳数设为16(无穷)。通过把跳数设为无穷,并把这条路径告诉源路由器,有可能立刻解决路由选择环路。否则,不正确的路径将在路由表中驻留到超时为止。破坏逆转的缺点是它增加了路由更新的数据大小。
4)保持定时器法
保持定时器法可防止路由器在路径从路由表中删除后一定时间内(通常为180s)接收新的路由信息。它的思想是保证每个路由器都收到了路径不可达信息,而且没有路由器发出无效路径信息。
5)触发更新法
有破坏逆转的水平分割将任何两个路由器构成的环路打破,但三个或更多个路由器构成的环路仍会发生,直到无穷(16)时为止。触发式更新法可加速收敛时间,它的工作原理是当某个路径的跳数改变了,路由器立即发出更新信息,不管路由器是否到达常规信息更新时间都发出更新信息。
(3)RIP路由配置常用命令
RIP路由配置常用命令如表10-3所示。
表10-3 RIP路由配置常用命令
(4)RIP配置实例
4个位于不同地理位置的子网通过远程电缆连接在一起,现在要求使用RIP协议完成整个路由选择的配置,如图10-8和表10-4所示。
图10-7 RIP网络示意图
图10-8 RIP配置拓扑图
表10-4 RIP路由配置实例
其他三个路由器的配置与此类似,只是根据其邻接网络的不同,修改相应的network子句即可。例如,路由器R2邻接的网络则是192.168.2.0、192.168.10.0、192.168.13.0。
(5)读懂RIP协议路由信息
当完成了RIP路由选择协议的配置之后,可以使用show ip route命令来查看路由表的信息。根据前面的配置,当查看R1的路由表时,将看到以下信息。
第一部分即最前面的C或R代表路由项的类别,C代表是直连,R代表是RIP协议生成的。
第二部分是目的网段。“[120/1]”表示RIP协议的管理距离为120,1则是路由的度量值,即跳数。我们可以看到路由器R1到192.168.4.0需要经过-->R2-->R4或-->R3-->R4两站,因此其度量值为2,即两跳。
注:管理距离是用来表示路由协议的优先级的,RIP的值为120,OSPF为110、IGRP为100、EIGRP为90、静态设置为1、直接连接为0;因此我们可以看出在路由项中,EIGRP是首选的,然后才是IGRP、OSPF、RIP。
第三部分表示下一跳点的IP地址。
第四部分(xx:xx:xx)说明了路由产生的时间。
第五部分表示该条路由所使用的接口。
2.OSPF路由协议
OSPF是一种典型的链路状态路由协议。采用OSPF的路由器彼此交换并保存整个网络的链路信息,从而掌握全网的拓扑结构,独立计算路由。因为RIP路由协议不能服务于大型网络,所以,IETF的IGP工作组特别开发出链路状态协议——OSPF。目前广为使用的是OSPF第二版,最新标准为RFC2328。
(1)OSPF路由协议概述
OSPF作为一种内部网关协议,用于在同一个自治域(AS)中的路由器之间发布路由信息。区别于距离矢量协议(RIP),OSPF具有支持大型网络、路由收敛快、占用网络资源少等优点,在目前应用的路由协议中占有相当重要的地位。
1)链路状态
OSPF路由器收集其所在网络区域上各路由器的连接状态信息,即链路状态信息(Link-State),生成链路状态数据库(Link-State Database)。路由器掌握了该区域上所有路由器的链路状态信息,也就等于了解了整个网络的拓扑状况。OSPF路由器利用“最短路径优先算法(Shortest Path First,SPF)”,独立地计算出到达任意目的地的路由。
2)区域
OSPF协议引入“分层路由”的概念,将网络分割成一个“主干”连接的一组相互独立的部分,这些相互独立的部分被称为“区域”(Area),“主干”的部分称为“主干区域”。每个区域就如同一个独立的网络,该区域的OSPF路由器只保存该区域的链路状态。每个路由器的链路状态数据库都可以保持合理的大小,路由计算的时间、报文数量都不会过大。
3)OSPF网络类型
根据路由器所连接的物理网络不同,OSPF将网络划分为四种类型:广播多路访问型(Broadcast MultiAccess)、非广播多路访问型(None Broadcast MultiAccess,NBMA)、点到点型(Point-to-Point)、点到多点型(Point-to-MultiPoint)。
广播多路访问型网络如:Ethernet、TokenRing、FDDI。NBMA型网络如:FrameRelay、X.25、SMDS。Point-to-Point型网络如:PPP、HDLC。
4)指派路由器(DR)和备份指派路由器(BDR)
在多路访问网络上可能存在多个路由器,为了避免路由器之间建立完全相邻关系而引起的大量开销,OSPF要求在区域中选举一个DR。每个路由器都与之建立完全相邻关系。DR负责收集所有的链路状态信息,并发布给其他路由器。选举DR的同时也选举出一个BDR,在DR失效的时候,BDR担负起DR的职责。
当路由器开启一个端口的OSPF路由时,将会从这个端口发出一个Hello报文,以后它也将以一定的间隔周期性地发送Hello报文。OSPF路由器用Hello报文来初始化新的相邻关系以及确认相邻的路由器邻居之间的通信状态。
对广播型网络和非广播型多路访问网络,路由器使用Hello协议选举出一个DR。在广播型网络里,Hello报文使用多播地址224.0.0.5周期性广播,并通过这个过程自动发现路由器邻居。在NBMA网络中,DR负责向其他路由器逐一发送Hello报文。
OSPF协议操作总共经历了建立邻接关系、选举DR/BDR、发现路由器等步骤。
①建立路由器的邻接关系。
所谓“邻接关系”(Adjacency)是指OSPF路由器以交换路由信息为目的,在所选择的相邻路由器之间建立的一种关系。路由器首先发送拥有自身ID信息(Loopback端口或最大的IP地址)的Hello报文。与之相邻的路由器如果收到这个Hello报文,就将这个报文内的ID信息加入自己的Hello报文内。
如果路由器的某端口收到从其他路由器发送的含有自身ID信息的Hello报文,则它根据该端口所在网络类型确定是否可以建立邻接关系。
在点对点网络中,路由器将直接和对端路由器建立起邻接关系,并且该路由器将直接进入到第3步操作,即发现其他路由器。若为MultiAccess网络,该路由器将进入选举步骤。
②选举DR/BDR。
不同类型的网络选举DR和BDR的方式不同。
MultiAccess网络支持多个路由器,在这种状况下,OSPF需要建立起作为链路状态和LSA更新的中心节点。选举利用Hello报文内的ID和优先权(Priority)字段值来确定。优先权字段值大小从0到255,优先权值最高的路由器成为DR。如果优先权值大小一样,则ID值最高的路由器选举为DR,优先权值次高的路由器选举为BDR。优先权值和ID值都可以直接设置。
③发现路由器。
在这个步骤中,路由器与路由器之间首先利用Hello报文的ID信息确认主从关系,然后主从路由器相互交换部分链路状态信息。每个路由器对信息进行分析比较,如果收到的信息有新的内容,路由器将要求对方发送完整的链路状态信息。这个状态完成后,路由器之间建立完全相邻(Full Adjacency)关系,同时邻接路由器拥有自己独立、完整的链路状态数据库。
在MultiAccess网络内,DR与BDR互换信息,并同时与本子网内其他路由器交换链路状态信息。
在Point-to-Point或Point-to-MultiPoint网络中,相邻路由器之间互换链路状态信息。
④选择适当的路由器。
当一个路由器拥有完整独立的链路状态数据库后,它将采用SPF算法计算并创建路由表。OSPF路由器依据链路状态数据库的内容,独立地用SPF算法计算出到每一个目的网络的路径,并将路径存入路由表中。
OSPF利用量度(Cost)计算目的路径,Cost最小者即为最短路径。在配置OSPF路由器时可根据实际情况,如链路带宽、时延或经济上的费用设置链路Cost大小。Cost越小,则该链路被选为路由的可能性越大。
⑤维护路由信息。
当链路状态发生变化时,OSPF通过Flooding过程通告网络上其他路由器。OSPF路由器接收到包含有新信息的链路状态更新报文,将更新自己的链路状态数据库,然后用SPF算法重新计算路由表。在重新计算过程中,路由器继续使用旧路由表,直到SPF完成新的路由表计算。新的链路状态信息将发送给其他路由器。值得注意的是,即使链路状态没有发生改变,OSPF路由信息也会自动更新,默认时间为30分钟。
(2)OSPF路由协议的基本特征
前文已经说明OSPF路由协议是一种链路状态的路由协议,为了更好地说明OSPF路由协议的基本特征,将OSPF路由协议与距离矢量路由协议之一的RIP作比较如下:
RIP中用于表示目的网络远近的唯一参数为跳(hop),即到达目的网络所要经过的路由器个数。在RIP路由协议中,该参数被限制最大为15,即RIP路由信息最多能传递至第16个路由器;对于OSPF路由协议,路由表中表示目的网络的参数为Cost,该参数为一虚拟值,与网络中链路的带宽等相关,即OSPF路由信息不受物理跳数的限制,因此,OSPF比较适合于大型网络中。
RIPv1路由协议不支持变长子网屏蔽码(VLSM),这被认为是RIP路由协议不适用于大型网络的又一个重要原因。采用变长子网屏蔽码可以在最大限度上节约IP地址。OSPF路由协议对VLSM有良好的支持性。
RIP路由协议路由收敛较慢。RIP路由协议周期性地将整个路由表作为路由信息广播至网络中,该广播周期为30s。在一个较为大型的网络中,RIP会产生很大的广播信息,占用较多的网络带宽资源。而且由于R1P协议30s的广播周期,影响了RIP路由协议的收敛,甚至出现不收敛的现象。而OSPF是一种链路状态的路由协议,当网络比较稳定时,网络中的路由信息是比较少的,并且其广播也不是周期性的,因此OSPF路由协议即使是在大型网络中也能够较快地收敛。
在RIP中,网络是一个平面的概念,并无区域及边界等的定义。随着无级路由CIDR概念的出现,RIP协议就明显落伍了。在OSPF路由协议中,一个网络或者说是一个路由域可以划分为很多个区域(area),每一个区域通过OSPF边界路由器相连,区域间可以通过路由汇聚来减少路由信息,减小路由表,提高路由器的运算速度。
OSPF路由协议支持路由验证,只有互相通过路由验证的路由器之间才能交换路由信息。而且OSPF可以对不同的区域定义不同的验证方式,提高网络的安全性。
(3)建立OSPF邻接关系过程
OSPF路由协议通过建立交互关系来交换路由信息,但并不是所有相邻的路由器都会建立OSPF交互关系。下面简要介绍OSPF建立adjacency的过程。
OSPF协议是通过Hello协议数据包来建立及维护相邻关系的,同时也用其来保证相邻路由器之间的双向通信。OSPF路由器会周期性地发送Hello数据包,当这个路由器看到自身被列于其他路由器的Hello数据包里时,这两个路由器之间会建立起双向通信。在多接入的环境中,Hello数据包还用于发现指定路由器(DR),通过DR来控制与哪些路由器建立交互关系。
两个OSPF路由器建立双向通信之后的第二个步骤是进行数据库的同步,数据库同步是所有链路状态路由协议的最大的共性。在OSPF路由协议中,数据库同步关系仅仅在建立交互关系的路由器之间保持。
OSPF的数据库同步是通过OSPF数据库描述数据包(Database Description Packets)来进行的。OSPF路由器周期性地产生数据库描述数据包,该数据包是有序的,即附带有序列号,并将这些数据包对相邻路由器广播。相邻路由器可以根据数据库描述数据包的序列号与自身数据库的数据作比较,若发现接收到的数据比数据库内的数据序列号大,则相邻路由器会针对序列号较大的数据发出请求,并用请求得到的数据来更新其链路状态数据库。
将OSPF相邻路由器从发送Hello数据包,建立数据库同步至建立完全的OSPF交互关系的过程分成以下几个不同的状态。
·Down:这是OSPF建立交互关系的初始化状态,表示在一定时间之内没有接收到从某一相邻路由器发送来的信息。在非广播性的网络环境内,OSPF路由器还可能对处于Down状态的路由器发送Hello数据包。
·Attempt:该状态仅在NBMA环境,如帧中继、X.25或ATM环境中有效,表示在一定时间内没有接收到某一相邻路由器的信息,但是OSPF路由器仍必须通过以一个较低的频率向该相邻路由器发送Hello数据包来保持联系。
·Init:在该状态时,OSPF路由器已经接收到相邻路由器发送来的Hello数据包,但自身的IP地址并没有出现在该Hello数据包内。也就是说,双方的双向通信还没有建立起来。
·2-Way:这个状态可以说是建立交互方式真正的开始步骤。在这个状态,路由器看到自身已经处于相邻路由器的Hello数据包内,双向通信已经建立。指定路由器及备份指定路由器的选择正是在这个状态完成的。在这个状态,OSPF路由器还可以根据其中的一个路由器是否指定路由器或是根据链路是否点对点或虚拟链路来决定是否建立交互关系。
·Exstart:这个状态是建立交互状态的第一个步骤。在这个状态,路由器要决定用于数据交换的初始的数据库描述数据包的序列号,以保证路由器得到的永远是最新的链路状态信息。同时,在这个状态路由器还必须决定路由器之间的主备关系,处于主控地位的路由器会向处于备份地位的路由器请求链路状态信息。
·Exchange:在这个状态,路由器向相邻的OSPF路由器发送数据库描述数据包来交换链路状态信息,每一个数据包都有一个数据包序列号。在这个状态,路由器还有可能向相邻路由器发送链路状态请求数据包来请求其相应数据。从这个状态开始,可以说OSPF处于Flood状态。
·Loading:在Loading状态,OSPF路由器会就其发现的相邻路由器的新的链路状态数据及自身的已经过期的数据向相邻路由器提出请求,并等待相邻路由器的回答。
·Full:这是两个OSPF路由器建立交互关系的最后一个状态,在这时,建立起交互关系的路由器之间已经完成了数据库同步的工作,它们的链路状态数据库已经一致。
(4)OSPF的DR及BDR
在DR和BDR出现之前,每一台路由器和它的所有邻居成为完全网状的OSPF邻接关系,这样5台路由器之间将需要形成10个邻接关系,同时将产生25条LSA。而且多址网络中还存在自己发出的LSA从邻居的邻居发回来,导致网络上产生很多LSA的备份。所以基于这种考虑,产生了DR和BDR。
DR将完成如下工作。
·描述这个多址网络和该网络上剩下的其他相关路由器。
·管理这个多址网络上的flooding过程。
·同时为了冗余性,还会选取一个BDR,作为双备份之用。
1)DR、BDR选取规则
·路由器的每个多路访问(multi-access)接口都有个路由器优先级(Router Priority),8位长的一个整数,范围是0到255,Cisco路由器默认的优先级是1,优先级为0的话将不能选举为DR/BDR。优先级可以通过命令ipospfpriority进行修改。
·Hello包里包含了优先级的字段,还包括了可能成为DR/BDR的相关接口的IP地址。
·当接口在多路访问网络上初次启动的时候,它把DR/BDR地址设置为0.0.0.0,同时设置等待计时器(wait timer)的值等于路由器无效间隔(Router Dead Interval)。
2)DR、BDR的选取过程
①路由器X在和邻居建立双向(2-Way)通信之后,检查邻居的Hello包中Priority,DR和BDR字段,列出所有可以参与DR/BDR选举的邻居。
②如果有一台或多台这样的路由器宣告自己为BDR(也就是说,在其Hello包中将自己列为BDR,而不是DR),选择其中拥有最高路由器优先级的成为BDR;如果相同,选择拥有最大路由器标识的。如果没有路由器宣告自己为BDR,选择列表中路由器拥有最高优先级的成为BDR(同样排除宣告自己为DR的路由器),如果相同,再根据路由器标识。
③计算网络上的DR。如果有一台或多台路由器宣告自己为DR(也就是说,在其Hello包中将自己列为DR),选择其中拥有最高路由器优先级的成为DR;如果相同,选择拥有最大路由器标识的。如果没有路由器宣告自己为DR,将新选举出的BDR设定为DR。
④如果路由器X新近成为DR或BDR,或者不再成为DR或BDR,重复步骤2和3,然后结束选举。这样做是为了确保路由器不会同时宣告自己为DR和BDR。
⑤要注意的是,当网络中已经选举了DR/BDR后,又出现了1台新的优先级更高的路由器,DR/BDR是不会重新选举的。
⑥DR/BDR选举完成后,DRother只和DR/BDR形成邻接关系。所有的路由器将组播Hello包到AllSPFRouters地址224.0.0.5以便它们能跟踪其他邻居的信息,即DR将泛洪updatepacket到224.0.0.5;DRother只组播updatepacket到AllDRouter地址224.0.0.6,只有DR/BDR监听这个地址。
简洁地说,DR的筛选过程如下。
①优先级为0的不参与选举。
②优先级高的路由器为DR。
③优先级相同时,以routerID大为DR;routerID以回环接口中最大ip为准;若无回环接口,以真实接口最大Ip为准。
④默认条件下,优先级为1。
(5)OSPF路由器类型
OSPF路由器类型如10-9所示。
图10-9 OSPF路由器类型
1)区域内路由器
该类路由器的所有接口都属于同一个OSPF区域。
2)区域边界路由器ABR
该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域。ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。
3)骨干路由器
该类路由器至少有一个接口属于骨干区域。因此,所有的ABR和位于Area0的内部路由器都是骨干路由器。
4)自治系统边界路由器ASBR
与其他AS交换路由信息的路由器称为ASBR。ASBR并不一定位于AS的边界,它可能是区域内路由器,也可能是ABR。只要一台OSPF路由器引入了外部路由的信息,它就成为ASBR。
(6)OSPFLSA类型
随着OSPF路由器种类概念的引入,OSPF路由协议又对其链路状态广播数据包(LSA)做出了分类。OSPF将链路状态广播数据包主要分成6类,如表10-5所示:
表10-5 LSA类型
·1类LSA(路由器LSA):每台路由器都通告1类LSA,描述了与路由器直连的所有链路(接口)状态,只能在本区域内扩散;
·2类LSA(网络LSA):只有DR才有资格产生,只能在本区域内扩散,描述了多路访问网络的所有路由器(Router ID)和链路的子网掩码;
·3类LSA(汇总LSA):只有ABR可以产生,能在整个OSPF自治系统扩散,描述了目的网路的路由(还可能包含汇总路由);
·4类LSA(汇总LSA):仅当区域中有ASBR时,ABR才会产生,该LSA标识了ASBR,提供一条前往该ASBR的路由;
·5类LSA(外部LSA):只能由ASBR产生,描述了前往OSPF自治系统外的网络的路由,被扩散到整个AS(除各种末节区域外);
·7类LSA(用于NSSA的LSA):只能由NSSAASBR产生,只能出现在NSSA,而NSSA ABR将其转换为5类LSA并扩散到整个OSPF自治系统。
(7)OSPF区域类型
根据区域所接收的LSA类型不同,可将区域划分为以下几种类型。
·标准区域:默认的区域类型,它接收链路更新、汇总路由和外部路由,如图10-10所示。
图10-10 标准区域示例
·骨干区域:骨干区域为Area0,其他区域都与之相连以交换路由信息,该区域具有标准区域的所有特征。
·末节区域:它不接收4类汇总LSA和5类外部LSA,但接收3类汇总LSA,使用默认路由到AS外部网络(自动生成),该区域不包含ASBR(除非ABR也是ASBR)。
·绝对末节区域:这个是Cisco专用。它不接收3类、4类汇总LSA和5类外部LSA,使用默认路由到AS外部网络(自动生成),该区域不包含ASBR(除非ABR也是ASBR)。
·NSSA:它不接收4类汇总LSA和5类外部LSA,但接收3类汇总LSA且可以有ASBR,使用默认路由前往外部网络,默认路由是由与之相连的ABR生成的,但默认情况下不会生成,要让ABR生成默认路由,可使用命令are aarea-idnssadefault-information-originate。
·绝对末节 NSSA:这个是Cisco专用。它不接收3类、4类汇总LSA和5类外部LSA且可以有ASBR,使用默认路由到AS外部网络,默认路由是自动生成的。
每一种区域中允许泛洪的LSA总结如表10-6所示。
表10-6 区域允许LSA总结
注:*为ABR路由器使用一个类型3的LSA通告默认路由。
(8)虚链路
在OSPF路由协议中存在一个骨干区域(backbone),该区域包括属于这个区域的网络及相应的路由器,骨干区域必须是连续的,同时也要求其余区域必须与骨干区域直接相连。骨干区域一般为区域0,其主要工作是在其余区域间传递路由信息。所有的区域,包括骨干区域之间的网络结构情况是互不可见的,当一个区域的路由信息对外广播时,其路由信息是先传递至区域0(骨干区域),再由区域0将该路由信息向其余区域作广播。
在实际网络中,可能会存在骨干区域不连续或者某一个区域与骨干区域物理不相连的情况,在这两种情况下,系统管理员可以通过设置虚拟链路的方法来解决,如图10-11和图10-12所示。
虚拟链路设置在两个路由器之间,这两个路由器都有一个端口与同一个非骨干区域相连。虚拟链路被认为是属于骨干区域的,在OSPF路由协议看来,虚拟链路两端的两个路由器被一个点对点的链路连在一起。在OSPF路由协议中,通过虚拟链路的路由信息是作为域内路由来看待的。
(9)OSPF配置命令汇总
OSPF常用配置命令如表10-7所示。
图10-11 骨干区域不连续虚链路
图10-12 与骨干区域物理不相连虚链路
表10-7 OSPF配置命令汇总
3.BGP路由协议
BGP(Border Gateway Protocol,边界网关协议)是用来连接Internet上的独立系统的路由选择协议。它是Internet工程任务组制定的一个加强的、完善的、可伸缩的协议。BGP4支持CIDR寻址方案,该方案增加了Internet上的可用IP地址数量。BGP是为取代最初的外部网关协议EGP设计的。它也被认为是一个路径矢量协议。BGP是一种在自治系统之间动态交换路由信息的路由协议。
(1)BGP的特性
BGP特性可总结为以下几点。
·BGP将传输控制协议(TCP)用作其传输协议。是可靠传输,运行在TCP的179端口上(目的端口)。
·由于传输是可靠的,所以BGP使用增量更新,在可靠的链路上不需要使用定期更新,所以BGP使用触发更新。
·类似于OSPF和ISIS路由协议的Hello报文,BGP使用keepalive周期性地发送存活消息(60s)(维持邻居关系)。
·BGP在接收更新分组的时候,TCP使用滑动窗口。
·丰富的属性值。
·可以组建可扩展的巨大的网络。
(2)BGP的三张表
BGP的三张表如下所述。
·邻居关系表:包含所有BGP邻居。
·转发数据库:记录每个邻居的网络;包含多条路径去往同一目的地,通过不同属性判断最好路径;数据库包括BGP属性。
·路由表:最佳路径放入路由表中。EBGP路由(从外部AS获悉的BGP路由)的管理距离为2,IBGP路由(从AS系统获悉的路由)管理距离为200。
(3)BGP的消息类型
·open:用来建立最初的BGP连接,包含hold-time,router-id。
·Keepalive:对等体之间周期性的交换这些消息以保持会话有效,默认为60秒。
·Update:对等体之间使用这些消息来交换网络层可达性信息。
·Notification:这些消息用来通知出错信息。
(4)建立邻居的过程
在两个BGP发言人交换信息之前,BGP都要求建立邻居关系,BGP不是动态地发现所感兴趣的运行BGP的路由器,相反,BGP使用一个特殊的邻居IP地址来配置的。
BGP使用周期性的Keepalive分组来确认BGP邻居的可访问性。
Keepalive计时器是保持时间(Hold Time)的三分之一,如果发给某一特定BGP邻居三个连续的Keepalive分组都丢失,保持时间计时器超时,那个邻居被视为不可达,RFC1771对保持时间的建议是90秒,Keepalive计时器的建议值是30秒。
按照RFC1771,BGP建立邻居关系要经历以下几个阶段,如图10-13所示。
图10-13 BGP建立邻居关系状态
·Idle在此状态下不分配网络资源,不允许传入的BGP连接。当在持续性差错条件下,经常性的重启会导致波动。因此,在第一次进入到空闲状态后,路由器会设置连接重试定时器,在定时器到期时才会重新启动BGP,思科的初始连接重试时间为60s,以后每次连接重试时间都是之前的两倍,也就是说,连接等待时间呈指数关系递增。
·Connect已经建立完成了TCP三次握手BGP等待TCP连接完成,如果连接成功,BGP在发送了OPEN分组给对方之后,状态机变为OpenSent状态,如果连接失败,根据失败的原因,状态机可能演变到Active,或是保持Connect,或是返回Idle。
·Active:在这个状态下,初始化一个TCP连接来建立BGP间的邻居关系。如果连接成功,BGP在发送了OPEN分组给对方之后,状态机变为OpenSent状态,如果连接失败,可能仍处在Active状态或返回Idle状态。
·OpenSent:BGP发送OPEN分组给对方之后,BGP在这一状态下等待OPEN的回应分组,如果回应分组成功收到,BGP状态变为OpenConfirm,并给对方发送一条Keepalive分组,如果没有接到回应分组,BGP状态重新变为Idle或是Active。
·OpenConfirm:这时,距离最后的Established状态只差一步,BGP在这个状态下等待对方的Keepalive分组,如果成功接收,状态变为Established,否则因为出现错误,BGP状态将重新变为Idle。
·Established:这时BGP对等体之间可以交换信息的状态,可交换的信息包括UPDATE分组、KeepAlive分组和Notification分组。
(5)建立IBGP邻居
IBGP运行在AS内部,不需要直连。IBGP有水平分割,建议使用FullMesh,由于Full Mesh不具有扩展性,为了解决IBGP的FullMesh问题,使用路由反射器(RR)和联邦两种方法来解决。主要减少了backbone IGP中的路由。
可以使用下面两种方法来建立IBGP邻居。
·邻居之间可以通过各自的一个物理接口建立对等关系,该对等关系是通过属于它们共享的子网的IP地址来建立的。
·邻居之间也可以通过使用环回接口建立对等关系。
在IBGP中,由于假定了IBGP邻居在物理上直接相连的可能性不大,所以将IP分组头中的TTL域设置为255。
(6)建立EBGP邻居
EBGP运行在AS与AS之间的边界路由器上,默认情况下,需要直连或使用静态路由,如果不是直连,必须指EBGP多跳。
可以使用下面两种方法来建立EBGP邻居。
·邻居之间可以通过各自的一个物理接口建立对等关系。
·邻居之间也可以通过使用环回接口建立对等关系。