本博客为观看湖科大的教书匠系列计算机网络视频的学习笔记。
静态路由选择 | 动态路由选择 |
---|---|
采用人工配置的方式给路由器添加网络路由、默认路由和特定主机路由等路由条目。 | 路由器通过路由选择协议自动获取路由信息。 |
静态路由选择简单、开销小,但不能及时适应网络状态(流量、拓扑等)的变化。 | 动态路由选择比较复杂、开销比较大,但能较好地适应网络状态的变化。 |
静态路由选择一般只在小规模网络中采用。 | 动态路由选择适用于大规模网络。 |
因特网所采取的路由选择协议具有以下三个主要特点:
自适应 : 因特网采用动态路由选择,能较好地适应网络状态的变化。
分布式 : 因特网中的各路由器通过相互间的信息交互,共同完成路由信息的获取和更新
分层次 : 将整个因特网划分为许多较小的自治系统(AutonomousSystem,AS)在自治系统内部和外部采用不同类别的路由选择协议,分别进行路由选择。
外部网关协议EGP和内部网关协议IGP只是路由选择协议的分类名称,而不是具体的路由选择协议。
RIP
RIP使用跳数(HopCount)作为度量(Metric)来衡量到达目的网络的距离。
- RIP将路由器到直连网络的距离定义为1。
- RIP将路由器到非直连网络的距离定义为所经过的路由器数加1。
- RIP允许一条路径最多只能包含15个路由器,距离等于16时相当于不可达。因此RIP只适用于小型互联网。
tips:
- RIP认为所通过路由器数量最少的路由就是好的路由。
- 当到达同一目的网络有多条RIP距离相等的路由时,可以进行等价负载均衡,也就是将通信量均衡地分布到多条等价的路径上。
RIP character | detail |
---|---|
和谁交换信息 | 仅和相邻路由器交换信息。 |
交换什么信息 | 路由器自己的路由表。即本路由器到所在自治系统AS中各网络的最短RIP距离,以及到各网络应经过的下一跳路由器。 |
何时交换信息 | 周期性交换(例如,每隔约30秒) 为了加快RIP的收敛速度,当网络拓扑发生变化,路由器要及时向所有相邻路由时器通告拓扑变化后的路由信息,这称为触发更新。 |
超时删除 | 若180秒(默认)没有收到某条路由条目的更新报文,则把该路由条目标记为无效(即把RIPI还没有收到该路由条目的更新报文,则将该置为16,表示不可达),若再过一段时间(如120秒)路由条目从路由表中删除。 |
D在接到路由器C的路由表后,会以路由器C到各个目的网络的距离+1的长度和自己到各个路由器的距离长度比较,如果有更短的路径选择,则会更新自己的路由表。(上图中“D修改路由器C的路由表”应为老师笔误应修改为“路由器D参考C的信息修改自己的路由表”)
RIP存在的问题:
坏消息传播得慢
“坏消息传播得慢”的问题又被称为路由环路或RIP距离无穷计数问题。这是距离向量算法的一个固有问题。可以采取以下多种措施减少出现该问题的概率或减小该问题带来的危害:
- 限制最大RIP距离为15(16表示不可达)
- 当路由表发生变化时就立即发送路由更新报文(即“触发更新”),而不仅是周期性发送。
- 让路由器记录收到某个特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送(即“水平分割”)。
使用上述措施仍无法彻底解决问题。因为在距离向量算法中,每个路由器都缺少到目的网络整个路径的完整信息,无法判断所选的路由是否出现了环路。
tip:
RIP相关报文使用运输层的UDP协议进行封装,使用的UDP端口号为520,RIP的核心功能是路由选择,属于TCP/IP体系结构的网际层。
RIP的优缺点:
优点 | 缺点 |
---|---|
实现简单,路由器开销小。 | RIP限制了最大RIP距离为15,这就限制了使用RIP的自治系统AS的规模。 |
如果一个路由器发现了RIP距离更短的路由,那么这种更新信息就传播得很快,即“好消息传播得快” | 相邻路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也随之增大。 |
“坏消息传播得慢”,使更新过程的收敛时间过长。因此,对于规模较大的自治系统AS,应当使用OSPF协议。 |
开放最短路径优先OSPF
链路状态(Link State,LS)是指本路由器都和哪些路由器相邻,以及相应链路的“代价(cost)
“代价”用来表示费用、距离、时延和带宽等,这些都由网络管理人员来决定。
OSPF相邻路由器之间通过交互问候(Hello)分组来建立和维护邻居关系。
- 问候(Helo)分组封装在IP数据报中,发往组播地址224.0.0.5。IP数据报首部中的协议号字段的取值为89,表明IP数据报的数据载荷为OSPF分组。
OSPF分组直接使用网际层的IP数据报进行封装,而不像RIP报文需要使用运输层用户数据报协议UDP封装。从数据包按网络体系结构逐层封装的角度看,0SPF属于网际层协议,而RIP属于应用层协议(但其核心功能是路由选择属于网际层)
- 问候(Hello)分组的发送周期为10秒,
- 若40秒未收到来自邻居路由器的问候(Hello)分组则认为邻居路由器不可达。
- 每个路由器都会建立一张邻居表。
链路状态通告LSA被封装在链路状态更新(Link State Update,LSU)分组中,采用可靠的洪泛法(Flooding)进行发送。
- 洪泛法的要点是路由器向自己所有的邻居路由器发送链路状态更新分组,收到该分组的各路由器又将该分组转发给自己所有的邻居路由器(但其上游路由器除外),以此类推。
- 可靠是指收到链路状态更新分组后要发送确认,收到重复的更新分组无需再次转发,但要发送一次确认。
链路状态通告LSA包含直连网络的链路状态信息和邻居路由器的链路状态信息。
使用0SPF的每一个路由器都有一个链路状态数据库(Link State Database,LSDB),用于存储链路状态通告LSA。
通过各路由器洪泛发送封装有各自链路状态通告LSA的链路状态更新分组LSU,各路由器的链路状态数据库LSDB最终将达到一致。
上图中
1.未给出各路由器收到LSU后发送确认的情况
2.未给出R2转发LSU的情况。
OSPF的五种分组类型 | 功能 |
---|---|
问候(Hello) | 用来发现和维护邻居路由器的可达性。 |
数据库描述(Database Description) | 用来向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息。 |
链路状态请求(Link State Request) | 用来向邻居路由器请求发送某些链路状态项目的详细信息。 |
链路状态更新(Link State Update) | 路由器使用链路状态更新分组将其链路状态信息进行洪泛发送,即用洪泛法对整个系统更新链路状态。 |
链路状态确认(Link State Acknowledgement) | 对链路状态更新分组的确认分组。 |
多点接入网路的OSPF路由器
为了减少所发送问候分组和链路状态更新分组的数量,OSPF采用以下措施:
- 选举指定路由器(Designated Router,DR)和备用的指定路由器(Backup DesignatedRouter, BDR)
- 所有的非DR/BDR只与DR/BDR建立邻居关系
为了使0SPF协议能够用于规模很大的网络,0SPF把一个自治系统AS再划分为若干个更小的范围,称为区域(area)。划分区域的好处就是把利用洪泛法交换链路状态信息的范围局限于每一个区域,而不是整个自治系统AS,这样就减少了整个网络上的通信量。
在上图中,主干路由器:R3,R4,R5,R6,R7
自治系统边界路由器:R6
区域内路由器:区域1内的R1和R2,区域2内的R8,区域3内的R9
采用划分区域的方法,虽然使交换信息的种类增多了,同时也使0SPF协议更加复杂了,但这样做能使每一个区域内部交换路由信息的通信量大大减小,因而使OSPF协议能够用于规模更大的自治系统AS。
例题:
OSPF是以代价最小为目的,RIP是以经过路由器的数量最小为目的。
边界网关协议BGP
- 边界网关协议(Border Gateway Protocol,BGP)属于外部网关协议EGP这个类别,用于自治系统AS之间的路由选择协议。
- 由于在不同AS内度量路由的“代价”(距离、带宽、费用等)可能不同,因此对于AS之间的路由选择使用统一的“代价”作为度量来寻找最佳路由是不行的。
AS之间的路由选择还必须考虑相关策略(政治、经济、安全等)
BGP策略中不一定能找到最好路径,只是尽量找到最优路径。
BGP的相关概念:
- 在配置BGP时,每个AS的管理员要选择至少一个路由器作为该AS的“BGP发言人”
- 一般来说,两个BGP发言人都是通过一个共享网络连接在一起的,而BGP发言人往往就是BGP边界路由器:
- 使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的邻站(neighbor)或对等站(peer)
- BGP发言人除了运行BGP协议外,还必须运行自己所在AS所使用的内部网关协议IGP,例如RIP或OSPF
- BGP发言人交换网络可达性的信息,也就是要到达某个网络所要经过的一系列自治系统。
- 当BGP发言人相互交换了网络可达性的信息后,各BGP发言人就根据所采用的策略,从收到的路由信息中找出到达各自治系统的较好的路由,也就是构造出树形结构且不存在环路的自治系统连通图。
BGP-4是目前使用得最多的版本,在[RFC4271]中规定了BGP-4的四种报文:
报文名称 | 作用 |
---|---|
打开 OPEN | 用来与相邻的另一个BGP发言人建立关系,使通信初始化。 |
保活 KEEPALIVE | 用来周期性地证实邻站的连通性。 |
更新 UPDATE | 用来通告某一条路由的信息,以及列出要撤销的多条路由。 |
通知 NOTIFICATION | 用来发送检测到的差错。 |
R1与R2之间是通过BGP路由协议交换路由信息的,该路由协议的报文被封装在传输层的TCP协议中,端口号为179,为建立连接的可靠传输。
网关协议 | 封装在哪个协议中进行传输 |
---|---|
RIP | UDP |
OSPF | IP |
BGP | TCP |
路由器的基本工作原理
路由器是一种具有多个输入端口和输出端口的专用计算机,其任务是转发分组。
路由器是一种具有多个输入端口和输出端口的专用计算机,其任务是路由选择和转发分组。
路由选择:是指路由器根据一定的算法从多条可能的路径中选择最佳路径的过程。路由器维护一个路由表,其中记录了到达不同目的网络的最佳路径及其相关信息(如下一跳地址、跳数等)。
路由选择算法,如RIP、OSPF、BGP等,负责更新路由表,确保路径的最优性和网络的稳定性。路由选择的目标是确保数据包沿着最佳路径高效、可靠地传输。
分组转发:是指路由器根据路由表中的信息,将接收到的数据包转发到正确的出口接口的过程。当数据包到达路由器时,路由器会检查数据包的目的IP地址,并在路由表中查找匹配的条目以确定下一跳地址。然后,路由器将数据包转发到相应的出口接口,沿着选择的路径继续传输。
交换结构的速率对于路由器的性能是至关重要的。因此,人们对交换结构进行了大量研究,以提高路由器的转发速率;
实现交换结构的三种基本方式是:通过存储器、通过总线以及通过互连网络。这三种交换结构可实现的路由器转发速率依次提高。
网际控制报文
- 为了更有效地转发IP数据报以及提高IP数据报交付成功的机会,TCP/IP体系结构的网际层使用了网际控制报文协议(Internet Control Message Protocol,ICMP)[RFC 792]。
- 主机或路由器使用ICMP来发送差错报告报文和询问报文。
- ICMP报文被封装在IP数据报中发送。
ICMP差错报告报文 | 作用 |
---|---|
终点不可达 | 当路由器找不到匹配的路由条目,无法转发该IP数据报时发送 |
源点抑制 | 当路由器或主机由于拥塞而丢奔IP数据报时发送,使源点知道应当把IP数据报的发送速率放慢。 |
时间超过(超时) | 当路由器收到一个目的IP地址不是自己的IP数据报时,会将其首部中生存时间TTL字段的值减1。若结果不为0,则路由器将该数据报转发出去;若结果为0,路由器丢弃该数据报,还要向发送该IP数据报的源点发送时间超时报文。另外,当终点在预先规定的时间内未能收到一个数据报的全部数据报分片时,就把已收到的数据报片都丢弃,也会向源点发送时间超时报文。 |
参数问题 | 当路由器或目的主机收到IP数据报后,根据其首部中的检验和字段的值发现首部在传送过程中出现了误码,就丢弃该数据报,并向发送该数据报的源点发送参数问题报文。 |
改变路由(重定向) | 路由器把改变路由报文发送给主机,让主机知道下次应将IP数据报发送给另外的路由器,这样可以通过更好的路由到达目的主机。 |
以下情况不应发送ICMP差错报告报文:
- 对ICMP差错报告报文不再发送ICMP差错报告报文.
- 对第一个分片的IP数据报片的所有后续数据报片都不发送ICMP差错报告报文。
- 对具有多播地址的IP数据报都不发送ICMP差错报告报文。
- 对具有特殊地址(例如127.0.0.0或0.0.0.0)的IP数据报不发送ICMP差错报告报文.
ICMP询问报文是网络故障排除和性能测试的重要工具。它们可以帮助网络管理员诊断网络问题,测量网络延迟,以及同步网络设备的时间。主要的ICMP询问报文包括:
-
回送请求和回答:
这是最常见的ICMP询问报文,通常由ping命令使用。这种报文的主要用途是检测两个网络设备之间的可达性和测量往返时间(RTT)。
-
时间戳请求和时间戳应答:
用于同步网络中不同设备的时间或测量网络延迟。
时间戳请求报文包含发送时间戳,接收方在回复时会附上接收时间戳和发送时间戳。这可以用于计算网络延迟和校准时钟偏差。 -
地址掩码请求和地址掩码应答:
用于获取网络上设备的子网掩码。地址掩码请求报文由设备发送,以请求网络上的其他设备提供其子网掩码。接收方收到请求后,会发送一个地址掩码应答报文,包含其子网掩码。 -
跟踪路由:
用于探测IP数据报从源主机到达目的主机要经过哪些路由器。
traceroute使用的ICMP报文类型有回送请求和回答报文以及差错报告报文。