IP路由
通过IP路由协议可以指引IP数据报文在网络中的传递,而路由协议通过在路由器之间共享路由信息来支持IP路由协议。路由信息在相邻路由器之间传递,可确保所有路由器知道到其他路由器的路径。路由协议创建了路由表,描述了网络拓扑结构;IP路由协议与路由器协同工作,执行路由选择和数据包转发功能。路由协议主要运行于路由器上,路由协议是用来确定到达路径的,它包括RIP,IGRP(Cisco私有协议),EIGRP(Cisco私有协议),OSPF,IS-IS,BGP。路由过程相当于一个地图导航,负责为IP数据报文传递寻找路径的作用,路由协议工作在网络层。
路由分为静态路由和动态路由,其相应的路由表称为静态路由表和动态路由表。静态路由表由网络管理员在系统安装时根据网络的配置情况预先设定,网络结构发生变化后由网络管理员手工修改路由表。动态路由随网络运行情况的变化而变化,路由器根据路由协议提供的功能自动计算数据传输的最佳路径,由此得到动态路由表。
路由协议作为TCP/IP协议族中重要成员之一,其选路过程实现质量会影响整个网络的效率。
路由算法的设计考虑
路由算法是路由选择协议的核心。路由算法指明了计算机网络中的结点机(或路由器)在接收到一个分组之后,应选择哪条输出链路的策略。当采用虚电路通信时,路由是在建立呼叫连接时确立的,即一次性确定路由,后继的分组均沿着这条既定的路由传送。当采用数据报通信时,结点机要为每个分组做出路由选择。因此,通信子网采用不同的通信方式,路由算法的使用频度是不一样的。
一个实际的路由算法不可能做到尽善尽美,只能比较接近于理想的路由算法。而一个理想的路由算法应具有以下一些特点:
① 正确性。指路由算法指明的路由最终一定能够到达目的网络和目的主机。
② 简单性。简单的路由算法不仅可以缩短结点机(或路由器)进行路由选择的计算时间(即缩短分组的结点时延),还能减少为路由选择计算而增加的网络通信开销。
③ 适应性。指路由算法能够适应包括通信流量和软、硬件故障在内的网络状态变化,自适应地改变路由,确保网络仍能正常运行。
④ 稳定性。当网络通信量和拓扑结构发生变化时,稳定性将能使路由算法得到一个收敛的可接受的解,不至于发生振荡,这是一个十分重要却易被忽视的特性。
⑤ 公平性。算法对所有用户都平等对待,以达到网络内部流量的平衡分布。
⑥ 最佳性。指实现路由算法所花费的开销最低。衡量开销的因素可以是跳数、带宽、时延、负载、费用等。当然不存在绝对的最佳路由算法,所谓“最佳”只能是在某一特定条件下做出较为合理的选择。
在设计路由算法时,应综合考虑上述特点,但在不同的应用条件下,可以有所侧重。应当指出,路由选择是个非常复杂的问题,因为它涉及网络中的所有主机、路由器、通信线路。同时,网络环境也随时会发生变化,这种变化(如网络故障)又无法事先知道。如当网络发生拥塞时,路由选择算法就应具有缓解拥塞的能力,但此时却难以从网络中的各结点获取所需的路由选择信息。
根据路由选择策略是否自适应网络状态(如通信量、网络拓扑等)的变化,路由算法可分为两大类:非自适应的和自适应的。非自适应的路由算法是不会根据当前网络流量和拓扑结构的变化来调整路由策略,又称静态路由算法。静态路由算法常用的有:洪泛法、固定路由法和查表选择法等。自适应的路由算法则会根据当前网络流量和拓扑结构的变化自动调整路由策略,又称动态路由算法。当然,不同的自适应路由算法又因获取信息的来源、改变路径的策略、用于优化的度量的不同而有所不同。动态路由算法常用的有:孤立选择法、集中选择法和分布选择法等。
路由决策的类型
路由决策有三种基本类型:集中式路由决策、静态路由决策和动态路由决策。这三种路由决策类型在因特网中都得到了应用。
(1)集中式路由决策
集中式路由决策指所有路由决策均由网络中一台计算机(或路由器)做出。集中式路由决策的最大优点是比较简单。它通常用在基于主机的应用体系结构中。
(2)静态路由决策
静态路由决策指路由决策由单个计算机(或路由器)以一种固定的方式做出。此时,路由表由网络管理员开发,而且只有当网络的状态发生变化时(如计算机的入网和出网、网络线路的增删等),才会变更路由表。静态路由通常用于网络变化少、路由操作少的场合。
由于静态路由决策是非集中式的,它意味着网络中的所有计算机(或路由器)遵循路由选择协议做出自己的路由决策。多数静态路由算法具有自适应性。在城域网和广域网中,每台计算机的路由表是由其各自的网络管理员开发的。在局域网或骨干网中,网络上使用的路由表通常由网络管理员或网络管理员小组开发。
(3)动态路由决策
动态路由(又称自适应路由)决策指路由决策由计算机以一种非集中式的方式做出。当网络中存在多条路径时,动态路由决策有利于做出最佳路径的选择。动态路由决策试图通过远离运行繁忙的线路和计算机来提高网络的性能。当然,最初的路由表是由网络管理员开发的,但路由表会由计算机自身进行持续不断地更新,反映网络不断变化的实际情况。 动态路由决策存在两点不足:一是与集中式路由决策相比,它需要网络中每台计算机(或路由器)更多地用于处理路由表,从而降低了网络的性能;二是路由信息的传输“浪费”网络的带宽。
自治系统与路由选路
由于因特网的规模非常大,如果让所有的路由器知道分组是如何通过整个网络送达的,那么路由表的规模就会非常大,处理起来要花费太多的时间。而且,所有路由器之间为交换路由信息也将给因特网带来很大的通信量。另外,许多单位一般不愿意外界了解本单位网络的布局细节及选路技术,但却又希望将本单位的网络连接到因特网上。因此,因特网将整个互联网划分为若干个较小的自治系统AS(Autonomous System)。
自治系统(Autonomous System,AS):由同一个管理机构管理、使用统一路由策略的路由器的集合。自治系统的经典定义是:在单一的技术管理下的一组路由器,使用一种AS内部的路由选择协议和共同度量来确定分组在该AS内的路由,同时还使用一种AS之间的路由选择协议来确定分组在AS间的路由。
其实,现在一个自治系统内也采用多种内部选择协议和多种度量来进行路由选择。所以,现在对自治系统仅强调:一个自治系统对外表现出一个单一的和一致的路由选择策略。如果一个自治系统的规模较大,还可将其再进一步地划分。因此,一个自治系统最重要的特点是它有权自主地决定本系统内应采用何种路由选择协议。
因特网采用的路由选择协议是层次式的、自适应的分布式路由选择协议。因特网把路由选择协议划分为两大类,即:
① 内部网关协议IGP(Intrior Gateway Protocol)。指在一个自治系统内部使用的路由选择协议,与在互联网中的其他自治系统选用什么路由选择协议无关。目前这一类路由选择协议有多种,如RIP和OSPF等。
② 外部网关协议EGP(External Gateway Protocol)。当源主机和目的主机在不同的自治系统中(这两个自治系统可能使用不同的内部网关协议),数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传送到另一个自治系统中。这样的协议称为外部网关协议EGP。目前使用最多的外部网关协议是BGP的第4版。
内部网关协议(IGP)
因特网最初使用的内部网关协议是路由信息协议RIP(Routing Information Protocol),是从APRANET继承过来的,并在小系统中得到广泛使用。但是,随着自治系统AS的逐步扩大及协议存在的不足,后来它就被一个称为开放最短通路优先协议OSPF(Open Shortest Path First)的链路状态协议取代了。OSPF于1990年成为因特网标准,并且得到许多制造商的支持。
内部网关协议无论是RIP,还是OSPF都有一个的共同特点,即每一个路由都要与其他路由器不断地交换路由信息。因此,学习这些协议时必须注意以下三个要点:①路由器仅与相邻的路由器交换路由信息;②路由器交换的是当前本路由器所知道的全部路由信息,即自身路由表的全部内容;③路由器按照规定的时间间隔(如30秒),或者当网络拓扑发生变化时,才与相邻的路由器交换路由信息。
边界网关协议(BGP)
外部网关协议自1989年起称为边界网关协议BGP(Border Gateway Protocol),它的较新版本BGP4是1995年公布的。BGP是不同自治系统的路由器之间交换路由信息的协议。
在介绍BGP之前,我们首先要说明为什么不同自治系统之间的通信不能使用前面介绍的 RIP或OSFP呢?这是因为内部网关协议主要考虑在一个自治系统中如何把数据报有效地从源站传送到目的站,而BGP的使用环境不同,它需要考虑自治系统之间的通信可使用多种路由选择策略的情况。这些策略涉及的因素有:①因特网的规模太大,使得自治系统之间的路由选择颇为困难;②在自治系统之间寻找最佳路由是不现实的,因为不同自治系统对“代价”的度量不同;③出于其他政治、经济和安全等方面因素的考虑。因此,BGP只能试图寻找一条能够到达目的网络的比较好的路由,而并非是要寻找出一条最佳的路由。BGP采用的是路径向量路由选择协议,它与基于距离向量的RIP和采用的链路状态协议的OSFP是有区别的。
从BGP路由器的角度,因特网是由一些BGP路由器及其连接线路组成的。在配置BGP路由器时,网络管理员要为每一个自治系统至少选择一个路由器作为该系统的“BGP发言人(BGP speaker)”。一般来说,两个BGP发言人通过一个共享网络连接在一起。BGP发言人除了必须运行BGP协议之外,还必须运行它所在自治系统使用的内部网关协议(如RIP或 OSFP)。BGP发言人往往是边界路由器,但也可以不是边界路由器。BGP发言人与其他自治系统的BGP发言人交换路由信息时,需先建立TCP连接(端口号为179),然后通过发送BGP报文来交换路由信息。BGP发言人所交换的路由信息其实就是到达某个网络(用网络前缀表示)所要经过的一系列的自治系统。换句话说,也就是网络可达性的信息。当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就可根据所采用的策略从收到的路由信息中找出到达各自治系统的较好的路由。图6-25表示BGP发言人与自治系统的关系。
由于BGP协议支持CIDR,所以在BGP的路由表中应包含目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各自治系统序列。在BGP路由器刚刚投入运行时,它与邻站交换整个路由表,但以后只当网络状态发生变化时才更新有变化的部分。这样做有利于节省网络带宽和减少路由器的处理开销。
下图表示BGP报文的格式。报文有一个19字节的首部,其中有三个字段:
① 标记(16字节)。用于鉴别收到的BGP报文。当不使用鉴别时,该字段置为全1。
② 长度(2字节)。指出包括通用首部在内的整个BGP报文的长度(以字节为单位),最小值为19,最大值为4096。
③ 类型(1字节)。分别表示所使用的4种报文,其值为1~4。
BGPv4使用的4种报文是:
① OPEN报文,用于与相邻的另一个BGP发言人建立关系,使通信初始化。
② UPDATE报文,用于发送一条路由信息或列出多条被取消的路由。
③ KEEPALIVE报文,用于确认OPEN报文,且周期性地证实邻站的连通性。
④ NOTIFICATION报文,用于发送检测到的差错状态。
BGP涉及三个功能性的过程:邻站获取、邻站可达和网络可达。连接到同一个网络上的两个BGP发言人被认为是邻站或对等站。
如果两个邻站属于不同的自治系统,它们之间要交换路由选择信息,需由其中的一个邻站向另一个邻站发送OPEN报文,若后一个邻站接受这个请求,就发回一个KEEPALIVE报文予以响应,这一个过程称为邻站获取。一旦邻站关系确立,就可用邻站可达来维持这个关系。为了维持这种邻站关系,两个邻站需周期性地(一般是每隔30s)交换KEEPALIVE报文。最后一个过程是网络可达,每个BGP发言人都维持一个数据库,其中包含了它能够到达该网络的最佳路由信息。一旦这个数据库有所改变,该发言人就会向其他所有实现了BGP发言人广播一个UPDATE报文。通过此报文的广播,所有BGP发言人都能够建立和维持路由选择信息。当某一路由器或链路出现故障时,由于BGP发言人可以从不止一个邻站获得路由信息,因此很容易选择出新的路由,这样BGP协议较容易地解决了基于距离向量的RIP协议存在的“坏消息传播慢”的问题。