动态路由协议基础
互联网把路由选择协议划分为两大类,即:
(1)内部网关协议IGP(Interior Gateway Protocol):即在一个自治系统内部使用的路由选择协议,与在互联网中其他自治系统选用的什么路由选择协议无关,如RIP和OSPF协议。
(2)外部网关协议EGP(External Gateway Protocol):若源主机和目的主机处在不同的自治系统中(这两个自治系统可能使用不同的内部网关协议),当数据报传到一个自治系统的边界时,需要使用一种协议将路由选择信息传递到另一个自治系统中。如BGP协议。
RIP(Routing Information Protocol)
RIP是一种分布式的基于距离向量的路由选择协议,要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。RIP允许一条路径最多只能包含15个路由器。因此“距离”等于16时即相当于不可达,可见RIP只使用与小型互联网。
RIP协议的特点:
(1)仅和相邻路由器交换信息。
(2)路由器交换你的信息时当前本路由器所知道的全部信息,即自己现在的路由。
(3)按固定的时间间隔交换路由信息。然后路由器根据收到的路由信息更新路由表。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。
RIP协议使用运输层的用户数据报UDP进行传送(使用UDP的端口520)。
RIP报文结构:
RIP首部占4个字节,其中命令字段指出报文的意义。首部后面的“必为0”是为了4字节对齐。
路由部分由若干个路由信息组成。每个路由信息需要用20个字节。地址族标识符(又称为地址类别)字段用来标志所使用的地址协议。路由标记填入自治系统号ASN(Autonomous System Number)。后面指出网络地址、该网络的子网掩码、下一跳路由器地址、到此网络的距离。一个RIP报文最多可包括25个路由,因此RIP的最大长度为4+20*25=504字节。
OSPF(Open Shortest Path First)
开放最短路径优先协议,使用了Dijkstra提出的最短路径算法SPF。OSPF的最主要特征是使用分布式的链路状态协议(link state protocol),而不是像RIP那样的距离向量协议。
特点:
(1)向本自治系统中所有路由器发送信息,使用的方法是洪泛法(flooding)。
(2)发送的信息是与本路由器相邻的所有路由器的链路状态,所谓链路状态就是说明本路由器都和那些路由器相邻,以及该链路的度量。
(3)只有当链路状态发生变化时,路由器才向所有路由器用洪泛法发送此消息。
OSPF不用UDP而是直接使用IP数据报传送(其IP数据报首部的协议字段值为89)。
各字段意义:
(1)版本:当前版本号为2。
(2)类型:五种类型分组中的一种。
(3)分组长度:包括OSPF首部在内的分组长度,以字节为单位。
(4)路由器标识符:标志发送该分组的路由器的接口的IP地址。
(5)区域标识符:分组属于的区域的标识符。
(6)检验和:用来检测分组中的差错。
(7)鉴别类型:目前只有两种,0(不用)和1(口令)。
(8)鉴别:鉴别类型为0时填入0,鉴别类型为1则填入8个字符的口令。
OSPF的五种分组类型:
(1)问候(Hello)分组,用来发现和维持邻站的可达性。
(2)数据库描述(Database Description)分组,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
(3)链路状态请求(Link State Request)分组,向对方请求发送某些链路状态项目的详细信息。
(4)链路状态更新(Link State Update)分组,用洪泛法对全网更新链路状态。
(5)链路状态确认(Link State Acknowledgment)分组,对链路更新分组的确认。
BGP(Border Gateway Protocol)
边界网关协议BGP时力求寻找一条能够到达目的网络且比较好的路由,而并非要寻找一条最佳路由。BGP采用了路径向量(path vector)路由选择协议。
一个BGP发言人与其他AS的BGP发言人要交换路由信息,需要先建立TCP连接(端口号为179),然后再次连接上交换BGP报文以建立BGP会话(session),利用BGP会话交换路由信息。使用TCP连接交换路由信息的两个BGP发阉人,彼此成为对方的邻站(neighbor)或对等站(peer)。
特点:
(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使用如下四种消息类型:
(1)Open消息:Open消息是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。
(2)Keepalive消息:BGP会周期性地向对等体发出Keepalive消息,用来保持连接的有效性。
(3)Update消息:Update消息用于在对等体之间交换路由信息。它既可以发布可达路由信息,也可以撤销不可达路由信息。
(4)Notification消息:当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接会立即中断。
报文结构:
标记(marker):16字节长,用来鉴别收到的BGP报文。当不需要鉴别是,全置为1。
长度:包括首部在内的整个BGP报文的长度,以字节为单位,最小值为19,最大为4096。
类型:值为1到4,分别对应4种BGP报文中的一种。
OPEN报文:6个字段,版本(1字节)、本自治系统号(2字节)、保持时间(2字节)、BGP标识符(4字节,通常为该路由器的IP地址)。可选参数长度(1字节)和可选参数。
UPDATE报文:5个字段,不可行路由长度(2字节,指明下一个字段的长度)、撤销的路由(列出所有要撤销的路由)、路径属性总长度(2字节,指明下一个字段的长度)、路径属性(定义在这个报文中增加的路径的属性)、网络层可达性信息NLRI(Network Layer Reachability Information,定义发出此报文的网络,包括网络前缀的位数、IP地址前缀)。
KEEPALIVE报文:只有BGP的19字节的通用首部。
NOTIFICATION报文:3个字段,差错代码(1字节)、差错子代码(1字节)、差错数据(给出有关差错的诊断信息)。