标题：路由协议
原理
路由协议通过在路由器之间共享路由信息来支持可路由协议。路由信息在相邻路由器之间传递，确保所有路由器知道到其它路由器的路径。总之，路由协议创建了路由表，描述了网络拓扑结构；路由协议与路由器协同工作，执行路由选择和数据包转发功能。
作用
路由协议主要运行于路由器上，路由协议是用来确定到达路径的，它包括RIP,IGRP,EIGRP,OSPF。起到一个地图导航，负责找路的作用。它工作在网络层。
路由选择协议主要是运行在路由器上的协议，主要用来进行路径选择。
路由协议作为TCP/IP协议族中重要成员之一，其选路过程实现的好坏会影响整个Internet网络的效率。按应用范围的不同，路由协议可分为两类：在一个AS（Autonomous System，自治系统，指一个互连网络，就是把整个Internet划分为许多较小的网络单位，这些小的网络有权自主地决定在本系统中应采用何种路由协议）内的路由协议称为内部网关协议（interior gateway protocol），AS之间的路由协议称为外部网关协议（exterior gateway protocol）。这里网关是路由器的旧称。现在正在使用的内部网关路由协议有以下几种：RIP-1，RIP-2，IGRP，EIGRP，IS-IS和OSPF。其中前4种路由协议采用的是距离向量算法，IS-IS和OSPF采用的是链路状态算法。对于小型网络，采用基于距离向量算法的路由协议易于配置和管理，且应用较为广泛，但在面对大型网络时，不但其固有的环路问题变得更难解决，所占用的带宽也迅速增长，以至于网络无法承受。因此对于大型网络，采用链路状态算法的IS-IS和OSPF较为有效，并且得到了广泛的应用。IS-IS与OSPF在质量和性能上的差别并不大，但OSPF更适用于IP，较IS-IS更具有活力。IETF始终在致力于OSPF的改进工作，其修改节奏要比IS-IS快得多。这使得OSPF正在成为应用广泛的一种路由协议。现在，不论是传统的路由器设计，还是即将成为标准的MPLS（多协议标记交换），均将OSPF视为必不可少的路由协议。
外部网关协议最初采用的是EGP。EGP是为一个简单的树形拓扑结构设计的，随着越来越多的用户和网络加入Internet，给EGP带来了很多的局限性。为了摆脱EGP的局限性，IETF边界网关协议工作组制定了标准的边界网关协议--BGP。
常用路由协议分析
简介路由分为静态路由和动态路由，其相应的路由表称为静态路由表和动态路由表。静态路由表由网络管理员在系统安装时根据网络的配置情况预先设定，网络结构 发生变化后由网络管理员手工修改路由表。动态路由随网络运行情况的变化而变化，路由器根据路由协议提供的功能自动计算数据传输的最佳路径，由此得到动态路由表。
根据路由算法，动态路由协议可分为距离向量路由协议（Distance Vector Routing Protocol）和链路状态路由协议（Link State Routing Protocol）。距离向量路由协议基于Bellman-Ford算法，主要有RIP、IGRP（IGRP为 Cisco公司的私有协议）；链路状态路由协议基于图论中非常著名的Dijkstra算法，即最短优先路径（Shortest Path First， SPF）算法，如OSPF。在距离向量路由协议中，路由器将部分或全部的路由表传递给与其相邻的路由器；而在链路状态路由协议中，路由器将链路状态信息传 递给在同一区域内的所有路由器。 根据路由器在自治系统（AS）中的位置，可将路由协议分为内部网关协议 （Interior Gateway Protocol，IGP）和外部网关协议（External Gateway Protocol，EGP，也叫域 间路由协议）。域间路由协议有两种：外部网关协议（EGP）和边界网关协议（BGP）。EGP是为一个简单的树型拓扑结构而设计的，在处理选路循环和设置 选路策略时，具有明显的缺点，目前已被BGP代替。
EIGRP是Cisco公司的私有协议，是一种混合协议，它既有距离向量路由协议的特点，同时又继承了链路状态路由协议的优点。各种路由协议各有特点，适合不同类型的网络。下面分别加以阐述。静态路由静态路由表在开始选择路由之前就被网络管理员建立，并且只能由网络管理员更改，所以只适于网络传输状态比较简单的环境。静态路由具有以下特点：
· 静态路由无需进行路由交换，因此节省网络的带宽、CPU的利用率和路由器的内存。
· 静态路由具有更高的安全性。在使用静态路由的网络中，所有要连到网络上的路由器都需在邻接路由器上设置其相应的路由。因此，在某种程度上提高了网络的安全性。
· 有的情况下必须使用静态路由，如DDR、使用NAT技术的网络环境。
静态路由具有以下缺点：
· 管理者必须真正理解网络的拓扑并正确配置路由。
· 网络的扩展性能差。如果要在网络上增加一个网络，管理者必须在所有路由器上加一条路由。
· 配置烦琐，特别是当需要跨越几台路由器通信时，其路由配置更为复杂。动态路由动态路由协议内部网关协议IGP和外部网关协议EGP。而内部网关协议IGP可以分为距离矢量路由协议和链路状态路由协议，两种协议各有特点，分述如下：
  路由协议分类图1. 距离矢量（DV）协议
距离向量指协议使用跳数或向量来确定从一个设备到另一个设备的距离。不考虑每跳链路的速率。
距离向量路由协议不使用正常的邻居关系，用两种方法获知拓扑的改变和路由的超时：
· 当路由器不能直接从连接的路由器收到路由更新时；
· 当路由器从邻居收到一个更新，通知它网络的某个地方拓扑发生了变化。
在小型网络中（少于100个路由器，或需要更少的路由更新和计算环境），距离向量路由协议运行得相当好。当小型网络扩展到大型网络时，该算法计算新路 由的收敛速度极慢，而且在它计算的过程中，网络处于一种过渡状态，极可能发生循环并造成暂时的拥塞。再者，当网络底层链路技术多种多样，带宽各不相同时， 距离向量算法对此视而不见。
距离向量路由协议的这种特性不仅造成了网络收敛的延时，而且消耗了带宽。随着路由表的增大，需要消耗更多的CPU资源，并消耗了内存。
2. 链路状态（LS）路由协议
链路状态路由协议没有跳数的限制，使用“图形理论”算法或最短路径优先算法。
链路状态路由协议有更短的收敛时间、支持VLSM（可变长子网掩码）和CIDR。
链路状态路由协议在直接相连的路由之间维护正常的邻居关系。这允许路由更快收敛。链路状态路由协议在会话期间通过交换Hello包（也叫链路状态信息）创建对等关系，这种关系加速了路由的收敛。
不像距离向量路由协议那样，更新时发送整个路由表。链路状态路由协议只广播更新的或改变的网络拓扑，这使得更新信息更小，节省了带宽和CPU利用率。另外，如果网络不发生变化，更新包只在特定的时间内发出（通常为30min到2h）。
3. 链路状态路由协议和距离向量路由协议的比较
4 常用动态路由协议的分析
4.1 RIP（国际公有，最古老的路由协议，不过有很多缺陷）
RIP（路由信息协议）是路由器生产商之间使用的第一个开放标准，是最广泛的路由协议，在所有IP路由平台上都可以得到。当使用RIP时，一台 Cisco路由器可以与其他厂商的路由器连接。RIP有两个版本：RIPv1和RIPv2，它们均基于经典的距离向量路由算法，最大跳数为15跳。
RIPv1是族类路由（Classful Routing）协议，因路由上不包括掩码信息，所以网络上的所有设备必须使用相同的子网掩码，不支持VLSM。RIPv2可发送子网掩码信息，是非族类路由（Classless Routing）协议，支持VLSM。
RIP使用UDP数据包更新路由信息。路由器每隔30s更新一次路由信息，如果在180s内没有收到相邻路由器的回应，则认为去往该路由器的路由不可用，该路由器不可到达。如果在240s后仍未收到该路由器的应答，则把有关该路由器的路由信息从路由表中删除。
RIP具有以下特点：
· 不同厂商的路由器可以通过RIP互联；
· 配置简单； · 适用于小型网络（小于15跳）；
· RIPv1不支持VLSM；
· 需消耗广域网带宽；
· 需消耗CPU、内存资源。
RIP的算法简单，但在路径较多时收敛速度慢，广播路由信息时占用的带宽资源较多，它适用于网络拓扑结构相对简单且数据链路故障率极低的小型网络中，在大型网络中，一般不使用RIP。
4.2 IGRP（现在已经退出历史的舞台）
内部网关路由协议（Interior Gateway Routing Protocol，IGRP）是Cisco公司20世纪80年代开发的，是一 种动态的、长跨度（最大可支持255跳）的路由协议，使用度量（向量）来确定到达一个网络的最佳路由，由延时、带宽、可靠性和负载等来计算最优路由，它在 同个自治系统内具有高跨度，适合复杂的网络。Cisco IOS允许路由器管理员对IGRP的网络带宽、延时、可靠性和负载进行权重设置，以影响度量的计 算。
像RIP一样，IGRP使用UDP发送路由表项。每个路由器每隔90s更新一次路由信息，如果270s内没有收到某路由器的回应，则认为该路由器不可到达；如果630s内仍未收到应答，则IGRP进程将从路由表中删除该路由。
与RIP相比，IGRP的收敛时间更长，但传输路由信息所需的带宽减少，此外，IGRP的分组格式中无空白字节，从而提高了IGRP的报文效率。但IGRP为Cisco公司专有，仅限于Cisco产品。
4.3 EIGRP（思科私有）
随着网络规模的扩大和用户需求的增长，原来的IGRP已显得力不从心，于是，Cisco公司又开发了增强的IGRP，即EIGRP。EIGRP使用与IGRP相同的路由算法，但它集成了链路状态路由协议和距离向量路由协议的长处，同时加入散播更新算法（DUAL）。
EIGRP具有如下特点：
· 快速收敛。快速收敛是因为使用了散播更新算法，通过在路由表中备份路由而实现，也就是到达目的网络的最小开销和次最小开销（也叫适宜后继， feasible successor）路由都被保存在路由表中，当最小开销的路由不可用时，快速切换到次最小开销路由上，从而达到快速收敛的目的。
· 减少了带宽的消耗。EIGRP不像RIP和IGRP那样，每隔一段时间就交换一次路由信息，它仅当某个目的网络的路由状态改变或路由的度量发生变 化时，才向邻接的EIGRP路由器发送路由更新，因此，其更新路由所需的带宽比RIP和EIGRP小得多——这种方式叫触发式（triggered）。
· 增大网络规模。对于RIP，其网络最大只能是15跳（hop），而EIGRP最大可支持255跳（hop）。
· 减少路由器CPU的利用。路由更新仅被发送到需要知道状态改变的邻接路由器，由于使用了增量更新，EIGRP比IGRP使用更少的CPU。
· 支持可变长子网掩码。
· IGRP和EIGRP可自动移植。IGRP路由可自动重新分发到EIGRP中，EIGRP也可将路由自动重新分发到IGRP中。如果愿意，也可以关掉路由的重分发。
· EIGRP支持三种可路由的协议（IP、IPX、AppleTalk）。
· 支持非等值路径的负载均衡。
· 因EIGIP是Cisco公司开发的专用协议，因此，当Cisco设备和其他厂商的设备互联时，不能使用EIGRP
4.4 OSPF（国际公有）
开放式最短路径优先（Open Shortest Path First，OSPF）协议是一种为IP网络开发的内部网关路由选择协议，由IETF开 发并推荐使用。OSPF协议由三个子协议组成：Hello协议、交换协议和扩散协议。其中Hello协议负责检查链路是否可用，并完成指定路由器及备份指 定路由器；交换协议完成“主”、“从”路由器的指定并交换各自的路由数据库信息；扩散协议完成各路由器中路由数据库的同步维护。
OSPF协议具有以下优点：
· OSPF能够在自己的链路状态数据库内表示整个网络，这极大地减少了收敛时间，并且支持大型异构网络的互联，提供了一个异构网络间通过同一种协议交换网络信息的途径，并且不容易出现错误的路由信息。 · OSPF支持通往相同目的的多重路径。
· OSPF使用路由标签区分不同的外部路由。
· OSPF支持路由验证，只有互相通过路由验证的路由器之间才能交换路由信息；并且可以对不同的区域定义不同的验证方式，从而提高了网络的安全性。
· OSPF支持费用相同的多条链路上的负载均衡。
· OSPF是一个非族类路由协议，路由信息不受跳数的限制，减少了因分级路由带来的子网分离问题。
· OSPF支持VLSM和非族类路由查表，有利于网络地址的有效管理。
· OSPF使用AREA对网络进行分层，减少了协议对CPU处理时间和内存的需求。
4.5 BGP
BGP用于连接Internet。BGPv4是一种外部的路由协议。可认为是一种高级的距离向量路由协议。
在BGP网络中，可以将一个网络分成多个自治系统。自治系统间使用eBGP广播路由，自治系统内使用iBGP在自己的网络内广播路由。
Internet由多个互相连接的商业网络组成。每个企业网络或ISP必须定义一个自治系统号（ASN）。这些自治系统号由IANA （Internet Assigned Numbers Authority）分配。共有65535个可用的自治系统号，其中65512~65535为私 用保留。当共享路由信息时，这个号码也允许以层的方式进行维护。
BGP使用可靠的会话管理，TCP中的179端口用于触发Update和Keepalive信息到它的邻居，以传播和更新BGP路由表。
在BGP网络中，自治系统有： 1. Stub AS
只有一个入口和一个出口的网络。
2. 转接AS（Transit AS）
当数据从一个AS到另一个AS时，必须经过Transit AS。
如果企业网络有多个AS，则在企业网络中可设置Transit AS。
IGP和BGP最大的不同之处在于运行协议的设备之间通过的附加信息的总数不同。IGP使用的路由更新包比BGP使用的路由更新包更小（因此BGP承载更多的路由属性）。BGP可在给定的路由上附上很多属性。
当运行BGP的两个路由器开始通信以交换动态路由信息时，使用TCP端口179，他们依赖于面向连接的通信（会话）。
BGP必须依靠面向连接的TCP会话以提供连接状态。因为BGP不能使用Keepalive信息（但在普通头上存放有Keepalive信息，以允许 路由器校验会话是否Active）。标准的Keepalive是在电路上从一个路由器送往另一个路由器的信息，而不使用TCP会话。路由器使用电路上的这 些信号来校验电路没有错误或没有发现电路。 某些情况下，需要使用BGP：
· 当你需要从一个AS发送流量到另一个AS时；
· 当流出网络的数据流必须手工维护时；
· 当你连接两个或多个ISP、NAP（网络访问点）和交换点时。
以下三种情况不能使用BGP：
· 如果你的路由器不支持BGP所需的大型路由表时；
· 当Internet只有一个连接时，使用默认路由；
· 当你的网络没有足够的带宽来传送所需的数据时（包括BGP路由表）。