第6章 IP路由 RIP----路由信息协议(Routing Information Protocol) 路由又称为路由选择,是为数据寻找一条从源到目的地的最优路径的过程。 当前在用的3个主流路由协议: RIP----路由信息协议(Routing Information Protocol) OSPF----开放最短路径优先(Open Shortest Path First) BGP----边界路由协议(Border Gateway Protocol)
第6章 IP路由 学 习 要 点 IP数据报交付 IP路由表 路由选择 路由协议(重点) RIP协议(重点) OSPF协议(重点) BGP协议(重点)
6.1 IP数据包交付(P112) 交付(Delivery):指将IP数据包交给底层网络处理的方式。 转发(Foward):指交付到下一站的方式,由路由器收到的数据包转给下一站。 直接交付(Direct Delivery):指直接将数据报传送到最终目的地,找出目的物理地址,封装成数据链路帧交付数据链路层。通常是最后1个路由器与目的主机之间。 间接交付(Indirect Delivery):指在源主机和目的主机位于不同网络时,数据报所经过的一些中间传送过程。
6.2 IP路由(P113) 路由是数据从一个节点传输到另一个节点的过程。 在TCP/IP网络中,IP数据包沿着指定的路由被传送到目的地。
6.2.1 IP路由器(P113) 不同网络区段中的计算机要相互通信,则必须借助于路由器。 路由器是在互联网络中实现路由功能的主要节点设备。 路由器将网络划分为不同的子网(也有人将其称为网段) 每个子网内部的数据包传送不会经过路由器,只有在子网之间传输数据包才经过路由器,这样提高了网络带宽的利用率。 路由器还能用于连接不同拓扑结构的网络。 支持TCP/IP协议的路由器称为IP路由器,IP路由器在网段之间转发IP数据包,又叫IP网关。 当IP首部的目的地址不在同一网段,就将数据包转发给网关。
路由表由一系列路由表项组成,路由器收到数据包后就要查找路由表,根据路由表来转发数据包。 6.2.2 IP路由表(P113) 路由表由一系列路由表项组成,路由器收到数据包后就要查找路由表,根据路由表来转发数据包。 1. 优化路由表 在路由表中将目的地址设置为网络地址而非主机地址,同一网络上的所有主机作为一表项,以节约路由表的存储空间,提高查表效率。使路由表大小只与网络个数有关,而与网络中的主机数量无关。 在路由表中只保留到达目的地的下一跳路由,而非全部路径,以简化路由表,让每个路由器独立选择路径。只有最后一个路由器才知道目的主机是否存在。
IP路由表 2. IP路由表结构 目的地址----一般为目的网络的IP地址 网络掩码----用于提取数据包目的IP地址所对应的网络地址 下一跳地址 转发接口 路由度量 目的地址----一般为目的网络的IP地址 网络掩码----用于提取数据包目的IP地址所对应的网络地址 下一跳地址(网关地址)----转发数据包的IP地址,一般是下一个路由器的IP地址。 转发接口----要把数据包转发出去的那个网络接口。 路由度量----数据包到达目的地址所经过的路由器数目,又称跳数。
IP路由表 主机路由表示例
6.2.3 特定主机路由与默认路由(P114) 特定主机路由 可将路由目的地设置为某主机地址,为某台主机单独指定一条路由,这就是特定主机路由(Host-specific route) 特定主机路由的目的地址为该主机的IP地址,子网掩码为255.255.255.255。 默认路由 如果在路由表中没有找到其他路由,则使用默认路由(Default route) 默认路由简化了主机的配置。默认路由的目的地址和网络掩码均为0.0.0.0。默认路由又称为默认网关,默认路由使路由表变得很小。
6.2.4 路由解析(P115) (1)从数据报中提取目的IP地址,将路由表中的子网掩码与该IP地址进行按位“与”操作,将得到的结果与路由表中对应的目的IP地址进行匹配。 (2)如果是特定主机路由,则将数据报送往对应的下一跳路由器或直接相连的目的主机。如果是网络地址,则将数据报送往该网络对应的下一跳路由器或直接相连的目的机。 (3)如果没有相匹配的主机地址或网络地址,则查看路由表中是否有默认路由项,默认路由项的掩码为全0,只要默认路由项存在,逻辑与操作的结果就必然与默认地址(0.0.0.0)相匹配,则将数据报送往默认路由器。 (4)如果路由表中没有默认路由项,则丢弃数据报,然后产生网络不可达的ICMP出错报文。
6.2.5 路由选择过程(P115) 源主机A1到目的主机C1有两条路径:
源主机A1向目的主机C1发送数据包的路由选择过程 (1)源主机A1经过掩码运算,确定自己的网络ID为192.168.1.0 (2)源主机A1对目的主机C1做掩码运算,确定对方的网络ID是192.168.3.0 (3)源主机A1在自己的路由表中没找到192.168.3.0的路由表项,则启用默认路由,将数据包发送到默认网关192.168.1.1。数据包到达到路由器1的IP地址为192.168.1.1的网卡。 (4)路由器1收到来自原主机A1的数据包,并在自己路由表中查询目的主机的网络地址。
源主机A1向目的主机C1发送数据包的路由选择过程 路由表中有2条通往192.168.3.0的路由条目,其中192.168.2.2(路由器2)的跃点数小,优先采用。将数据包通过接口192.168.2.1转发到路由器2。 -如果192.168.2.2出故障,再尝试跃点数大的路由条目,可通过接口192.168.4.1转发到192.168.4.2(路由器3 (5)路由器2收到来自路由器1的数据包,也会在自己的路由表中查找目的主机的网络地址192.168.3.0,将数据包通过192.168.3.1发出。 路由器2经过掩码运算,与目的主机192.168.3.10属于同一个子网,则将数据包直接通过192.168.3.1发往目的主机192.168.3.10。
路由器1的主要路由表项 P116 目的地址 网络掩码 网关 接口 路由度量 192.168.1.0 255.255.255.0 192.168.1.1 1 192.168.2.0 192.168.2.1 192.168.3.0 192.168.2.2 2 192.168.4.2 192.168.4.1 3 192.168.4.0 192.168.5.0
6.3 路由协议(P116) 配置路由协议的两种方式: 手动指定(静态路由) 自动生成(动态路由) 动态路由通过路由协议来实现。 路由协议能跟踪网络环境的所有网络结构,动态维护网络中与其它路由器相关的信息,并预测可能的最优路径。
6.3.1 静态路由与动态路由(P116) 1. 静态路由 管理员手工修改路由表中相关的静态路由信息,主要优点: 完全由管理员精确配置,网络之间的传输路径预先设计好; 路由器之间不需进行路由信息的交换,网络开销较小; 网络中不必交换路由表信息,安全保密性高。 不足之处很明显: 对于因网络变化而发生的路由器增加、删除、移动等情况,无法自适应 要实现静态路由,必须为每台路由器计算出指向每个网段的下一个跃点,如果规模较大,管理员将不堪重负,而且还容易出错。 静态路由的网络环境设计和维护相对简单,并且非常适用于那些路由拓扑结构很少有变化的小型网络环境。有时出于安全方面的考虑也可以采用静态路由。
静态路由与动态路由 2. 动态路由 动态路由通过路由协议在路由器之间相互交换路由信息,自动生成路由表,并根据实际情况动态调整和维护路由表。网络拓扑调整,网络中的路由器都会自动适应。 主要优点是伸缩性和适应性,具有较强的容错能力。 不足之处在于:复杂程度高,频繁交换的路由信息增加了额外开销,这对低速连接来说无疑难以承受。 动态路由适用于复杂的中型或大型网络,也适用于经常变动的互联网络环境。 动态路由是通过路由协议来实现的。路由协议在路由器之间不断的转发路由信息,用来建立和维护路由表。
6.3.2 内部网关协议和外部网关协议(P117) 大型网络都被分解成多个自治系统(Autonomous System),每个自治系统是一个自我管理的独立的网络实体,只负责管理自己内部的路由。 自治系统之间不能共享彼此的内部路由信息。 全世界整个Internet就是由许多自治系统通过边界路由协议互相连接起来的互连网络。 按作用范围,路由协议可分为内部网关协议和外部网关协议。
内部网关协议和外部网关协议 1. 内部网关协议(Interior Gateway protocol ,IGP)用于自治系统内部。 开放最短路径优先(Open Shortest Path First,OSPF) 路由信息协议(Routing Information Protocol,RIP) 内部网关路由协议(Interior Gateway Routing protocol,IGRP) 增强的内部网关路由协议(Enhanced Interior Gateway Routing Protocol,EIGRP) IS-IS路由协议(Intermediate System-to-Intermediate System,中间系统到中间系统)
内部网关协议和外部网关协议 2. 外部网关协议(Exterior Gateway Protocol,EGP)工作在自治系统之间。 边界路由协议(Border Gateway Protocol ,BGP) 域间路由协议(Inter-Domain Routing Protocol)
6.3.3 距离向量路由协议和链路状态路由协议(P118) 1. 距离向量(Distance-Vector)路由协议 只与直接连接到网络中的路由器交换路由信息,各个路由器都将信息转发到直接邻接的路由器。 交换的路由信息网络链路的距离向量,主要就是在路由表中包括到达目的网络所经过的距离和到达目的网络的下一跳地址。 运行距离向量协议的路由器会根据相邻路由器发送过来的信息,更改自己的路由表。 RIP是典型的距离向量协议,适合中小型网络。 BGP是改进的距离向量路由协议,使用路径向量。
距离向量路由协议和链路状态路由协议 2. 链路状态(Link State)路由协议 目的是得到整个网络的拓扑结构 每个运行链路状态路由协议的路由器都要提供链路状态的拓扑结构信息,并配合网络拓扑结构的变化及时修改路由配置,以适应新的路由选择,非常适合中大型网络 OSPF是典型的链路状态路由选择协议。
6.4 RIP协议(P118) RIP是一种较为简单的内部网关协议,主要用于规模比较小的网络。
6.4.1 RIP概述(P118) RIP的特点 最大优点是配置和部署相当简单 最大缺点是不能将网络扩大到大型或特大型互联网络。 需要较高的恢复时间。
RIP概述 2. RIP的版本 RIP-1 RIP-2 有类别路由协议(Classful Routing Protocol) 无类别路由协议(Classless Routing Protocol) 广播方式发布、更新协议报文 广播方式或多播方式发布、更新协议报文 无法携带掩码信息,只能识别 A、B、C类网段的路由,不支持不连续子网 携带掩码信息,支持路由聚合和 CIDR(无类域间路由) 仅允许定时更新 支持定式更新和触发器更新 不支持认证 支持认证 所有路由器自动进行相互通信 支持不同的路由域
6.4.2 RIP工作原理(P119) RIP通过UDP进行路由信息交换,使用的端口号是520。 1. RIP实现机制 为防止产生路由环路,RIP支持水平分割(Split Horizon)和毒性逆转(Poison Reverse)功能
RIP工作原理 2. RIP路由表交换过程 (1)开始,每个RIP路由器的路由表只有直接连接的路由。 (3)最后,所有路由器都获知到达任一网络的路由。
RIP工作原理 RIP路由器的触发更新 当网络拓扑更改,会及时发送更新的路由信息,以反映那些新的更改。 立即发送更新的路由信息,而不是等待下一个周期的通告。 每个收到触发更新的路由器修改自己的路由表,并向相邻路由器通告更改过的路由。
6.4.3 RIP报文格式(P120) RIP报文封装在UDP用户数据报中传输。RIP报文分为请求报文和响应报文两种。 命令(Command):指示报文类型,1表示请求报文,2表示响应报文。 版本(Version):RIP的版本号,对于RIP-1来说其值为0x01 地址族标示符(Address Family Identifier,AFI):使用RIP的网络协议,2表示IP协议使用RIP。 IP地址:被通告的目的IP地址 路由度量(Matric):抵达被通告网络的距离,以跳数为单位。
RIP报文格式 2. RIP-2报文格式 版本:RIP的版本号,对于RIP-2来说其值为0x02 路由标记(Route Tag):指明后跟的路由信息是内部路由还是外部路由 子网掩码(Subnet Master):被通告的目的地址的子网掩码 下一跳(Next Hop):将另一个路由与记录项关联
RIP报文格式 3. RIP-2认证报文 认证类型:值为2时表示明文认证,值为1时表示MD5认证。
6.5 OSPF协议(P122) OSPF(Open Shortest Path First,开放最短路径优先)设计用于在大型或特大型网络中交换路由信息,最多可支持几百台路由器。 OSPF的最大优点是效率高,很小的网络开销,适应范围广,是目前应用最广、性能最好的路由协议。 OSPF是典型的链路状态路由协议。OSPF路由器与每台路由器通信,从而获知整个网络的拓扑结构。 OSPF有3个版本,OSPFv1、OSPFv2、OSPFv3,其中OSPFv3用于IPv6。 针对IPv4使用的最新版本是OSPFv2,对应的最新RFC文档是RFC2328“OSPF Version 2”(April 1998)。
6.5.1 OSPF区域划分与路由聚合(P122) 1. 区域划分 OSPF是典型的层次体系结构。全球互联网由许多互联网络组成,将每一个互联网络作为一个独立的自治系统(Autonomous System,AS),AS内部对其进行分区,以区域为单位来管理路由器。 每个区域位于同一个AS中的一组,由网络、主机和路由器构成。 每个路由器属于一个特定的区域,各区域只要管理自己的路由器组。 每个区域有区域号,是AS中的唯一的32位编号。 通常有一个主干区域,其它为分支区域,所有分支区域与主干区域连通。
OSPF的层次结构图 P123 区域边界路由器(Area Border Router, ABR)汇总该区域的信息,并将信息送往主干区域,
OSPF路由器类型 P123 2. OSPF路由器的4种类型 区域内路由器(Internal Router) 区域边界路由器(Area Border Router,ABR) 主干路由器(Backbone Router) 自治系统边界路由器(Autonomous System Border Router,ASBR)
路由分级 3. 路由分级----OSPF将路由分为4种级别,按优先级从高到低 区域内路由(Intra Area) 区域间路由(Inter Area) 第一类外部路由(Type1 External) 第二类外部路由(Type2 External) 区域内路由和区域间路由是自治系统内部的网络结构,外部路由用于选择到自治系统以外目的地址的路由。 第一类外部路由可信度较高,第二类外部路由可信度较低。
路由聚合 4. 路由聚合 路由聚合是指边界路由器(ABR或ASBR)将具有相同前缀的路由信息聚合,只发布一条路由到其他区域 自治系统划分成不同的区域后,区域间可以通过路由聚合来减少路由信息,减小路由表的规模,提高路由器的处理速度。
6.5.2 OSPF路由计算(P124) 1. 链路状态通告(LSA)与链路状态数据库(LSDB) 链路状态通告(Link State Advertisement,LSA)又叫链路状态数据包(Link State Advertisement Packet,LSP),是链接状态协议使用的一个数据包,它包括有关邻居和路径成本的信息 链路状态数据库(Link State Database,LSDB)是根据LSA信息来建立的专用数据库,包含区域中每个路由器连接到的所有网络的表项,用来同步OSPF路由器和计算路由表中的路由信息。
OSPF路由计算 2. OSPF路由的计算过程 (1)每台OSPF路由器根据自己周围的网络拓扑结构生成LSA,并通过更新报文将LSA发送给网络中其他OSPF路由器。 (2)每台OSPF路由器都会收集其他路由器通告的LSA,所有的LSA放在一起便组成了LSDB。 (3)OSPF路由器将LSDB转换成带权有向图,该图是对整个网络拓扑结构的真实反映。各个路由器得到的有向图相同。 (4)每台路由器根据有向图,使用最短路径优先(Shortest Path First,SPF)算法计算出一棵以自己为根的最短路径树,这棵树给出了到自治系统中各节点的路由。每台路由器有了自己的SPF树,就可以构建路由表。 网络拓扑的更改总能有效的通知各路由器,保证路由器的LSDB数据库同步更新,及时的重新计算路由表。
6.5.3 OSPF网络类型与指定路由器(P124) OSPF网络4种类型 OSPF根据下层不同的链路层协议,采用不同的数据包发送方式。 广播(Broadcast),针对以太网或FDDI,所用的多播地址是224.0.0.5和224.0.0.6。 非广播多路访问(Non-Broadcast Multi-Access,NBMA),针对帧中继、ATM、X.25,单播方式发送。 点到点(Point-to-Point,P2P),针对PPP或HDLC,多播地址是224.0.0.5。 点到多点(Point-to-MultiPoint,P2MP),由其它OSPF强制更改的一种类型。多播地址是224.0.0.5。
OSPF网络类型与指定路由器 2. 指定路由器(DR) 在广播网络中,任意一台路由器的路由变化都会导致多次传递,造成浪费。 指定路由器(Designated Router,DR)让所有路由器都只将信息发送给指定路由器,由指定路由器将网络链路状态信息发送出去。 如果指定路由器出现问题,则网络中的路由器必须重新推选指定路由器,并让链路状态信息与新的指定路由器同步。 重新推选需要较长时间,为缩短这个过程,OSPF又定义了备份指定路由器(Backup Designated Router,BDR),一旦指定路由器失效,备份路由器立即切换。
6.5.4 OSPF数据包(P125) 1. OSPF数据包类型 问候(Hello)数据包:周期性发送,用来发现和维持OSPF邻居关系以及指定路由器或备份路由器的选举。 数据库描述(Database Description,DD)数据包:描述了本地LSDB中每一条LSA的摘要信息,用于两台路由器进行数据库同步。 链路状态请求(Link State Request,LSR)数据包:向对方请求所需的LSA,内容包括所需要的LSA的摘要。 链路状态更新(Link State Update,LSU)数据包:向对方发送其所需要的LSA。 链路状态确认(Link State Acknowledgment,LSAck)数据包:用来对收到的LSA进行确认。
OSPF数据包 2. OSPF数据包结构 OSPF数据包直接封装成IP数据报,其协议号为89。OSPF数据包包括首部和数据两个部分,数据部分可能包括LSA数量、LSA首部或LSA数据。 3. OSPF首部 5种类型的OSPF数据包具有相同的数据包首部。
OSPF数据包 4. 问候(Hello)数据包格式
OSPF数据包 6. 链路状态请求(LSR)数据包
OSPF数据包 7. 链路状态更新(LSU)数据包
OSPF数据包 8. 链路状态确认(LSAck)数据包
OSPF数据包 9. OSPF选项字段 OSPF选项字段出现在问候数据包、数据库描述包和所有的LSA中,用于使OSPF路由器支持可选择的功能,并向其他OSPF路由器通告其能力,不同能力的路由器可以混合在一个OSPF路由域中 OSPF选项字段长8位,其中定义了5个标志位
6.5.5 链路状态通告(LSA)(P129) 1. LSA类型 类型 类型代码 说明 路由器LSA 1 网络LSA为区域中接入两个或多个路由器的广播和NBMA网络而生成。它由网络中的指定路由器生成,用于描述接入网络的所有路由器,包括指定路由器自身 网络汇总LSA 3 由区域边界路由器生成,描述区域内某个网段的路由,并通告给其他区域。当目标为IP网络时使用这种类型的汇总LSA ASBR汇总LSA 4 由区域边界路由器生成,描述到ASBR的路由,通告给相关区域。当目标为ASBR时使用这种类型的汇总LSA AS外部LSA 5 由ASBR产生,描述到自治系统外部的路由,通告到所有的区域(除存根区域和NSSA区域之外)
链路状态通告(LSA) 2. LSA格式 LSA包含首部和数据两个部分 所有类型的LSA都具有相同的首部 LSA首部格式
链路状态通告(LSA) 不同类型的LSA,LSA数据部分不尽相同 路由器LSA格式
链路状态通告(LSA) 链路类型对应的链路ID和链路数据 链路类型 说明 链路ID 链路数据 类型1:点对点 直接连接两个路由器,中间没有任何节点 相邻路由器地址 接口数 类型2:传输 连接有若干个路由器的网络 指定路由器地址 路由器地址 类型3:存根 只连接到某个路由器的网络,数据包通过这个单一路由器进出该网络 网络地址 网络掩码 类型4:虚拟 当两个路由器之间的链路断开时,在它们之间创建一条使用更长路径的虚拟链路,可能要经过好几个路由器
6.6 BGP协议(P131) 边界网关协议( Border Gateway Protocol ,BGP)是用于自治系统之间的外部网关协议,当前广泛使用的是BGP-4,由RFC4271“A Border Gateway Protocol 4 (BGP-4)”规定。 BGP的着眼点在于控制路由的传播和选择最佳路由。 BGP运行在同一自治系统内部称为IBGP,运行在不同自治系统之间称为EBGP。 BGP是主干网的重要组成部分,正是BGP让多个自治并协作的系统组成了当今的Internet。
BGP协议 运行BGP协议的互联网络
6.6.1 BGP工作原理(P132) 1. 路径向量 BGP采用的是与距离向量算法类似的路径向量算法,在该算法的路由表中包括目的网络、下一跳路由器和去往目的网络的路径,路径由一系列顺序的自治系统号构成。每一个自治系统可能有多条路径到达目的自治系统。 自治系统的边界路由器利用RIP或OSPF等路由协议收集自治系统内部的各个网络的信息,不同自治系统的边界路由器交换各自所在的自治系统中网络的可达信息,这些信息包括数据到达这些网络所必须经过的自治系统的列表。
BGP工作原理 2. 路由计算过程 每一个自治系统中至少有1个节点可以代表这个自治系统,称其为发言者节点(Speaker Node)。BGP路由计算工程如下: (1)每一个发言者节点只知道所在自治系统中的节点的可达性,将自治系统中收集的路由信息形成初始路由表。 (2)一个自治系统的发言者节点将自己的路由表发送给相邻的自治系统的发言者节点,与它们共享路由信息。 (3)当一个发言者节点从相邻节点收到路由表时,就更新自己的路由表,将它自己的路由表中没有的节点加上,并加上自己的自治系统和发送此路由表的自治系统。经过一定时间后,每一个发言者就知道了如何到达其他自治系统中的每一个节点。
BGP工作原理 3. BGP会话 两个路由器之间通过一个会话交换路由选择信息。会话就是一个连接,它建立在两个BGP路由器之间,目的是为了交换路由选择信息。 为了产生可靠环境,BGP使用TCP。 BGP包括外部BGP(EBGP)会话和内部BGP(IBGP)会话两种类型。
6.6.2 路径属性(P133) GBP路径属性是一组参数,用来对特定的路径进行描述,每一个属性给出关于路径的一些信息。 1. 路径属性的分类 公认强制属性:是在路由的描述中必须出现的属性。 公认自选属性:是每一个路由器必须知道的属性。 可选传递属性:在自治系统之间具有可传递性的属性。 可选非传递属性:如果BGP路由器不支持此属性,该属性被忽略,且不会通告给其他对等体。
路径属性 2. 几种主要的路由属性 源(ORIGIN):用于定义路由选择信息的来源(RIP、OSPF等)。 自治系统路径(AS_PATH):用于定义自治系统列表(从本地到目的地址所要经过的所有AS号),离本地AS最近的相邻AS号排在前面,其他AS号按顺序依次排列。 下一跳(NEXT_HOP):用于定义应当作为到达更新报文中所列目的地的下一跳的路由器的IP地址。
6.6.3 BGP报文格式(P134) BGP有5种报文格式:打开(Open)、更新(Update)、通知(Notification)、保持活动(Keepalive)、路由器更新(Route-refresh)。 BGP报文封装成TCP数据报,并使用公认端口179传输。 BGP报文最大长度是4096字节,最小长度是19字节,仅包括BGP首部,不含任何数据。
BGP报文格式 1. 报文首部 所有类型的BGP报文具有相同的报文首部 首部长度固定为19字节
BGP报文格式 2. 打开(Open)报文 它是TCP连接建立后发送的第1个报文,用于建立BGP路由器之间的邻站关系。 BGP路由器打开与相邻的BGP路由器的TCP连接,并发送打开报文。如果对方同意,则响应1个保持活动报文,表示在这两个路由器之间已经建立了联系。
BGP报文格式 3. 更新(Update)报文 用于在BGP对等体之间交换路由信息。它既可以发布可达路由信息,也可以撤销不可达路由信息。
BGP报文格式 4. 通知(Notification)报文 当BGP检测到错误状态时,或者路由器要关闭与另一个路由的连接时,发送的报文就向对等体发出通告,之后BGP连接会立即中断
BGP报文格式 5. 保持活动(Keepalive)报文 BGP会周期性地向对等体发出保持活动报文,用来保持连接的有效性 其报文格式中只包含报文首部,没有附加其他任何字段。 6. 路由刷新(Route-refresh)报文 用来要求对等体重新发送指定地址族的路由信息