网络层概述
网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输。
要实现网络层任务,需要解决以下主要问题:
-
网络层向运输层提供怎样的服务(“可靠传输”还是“不可靠传输”)
-
网络层寻址问题
-
路由选择问题
因特网(Internet)是目前全世界用户数量最多的互联网,它使用TCP/IP协议栈。
由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为网际层。
综上所述,我们通过学习TCP/IP协议栈的网际层来学习网络层的理论知识和实践技术。
路由选择协议概述
静态路由选择
-
由人工配置的网络路由、默认路由、特定主机路由、黑洞路由等都属于静态路由。
-
这种人工配置方式简单、开销小。
-
但不能及时适应网络状态(流量、拓扑等)的变化。
-
一般只在小规模网络中采用。
动态路由选择
-
路由器通过路由选择协议自动获取路由信息。
-
比较复杂、开销比较大。
-
能较好地适应网络状态的变化。
-
适用于大规模网络。
因特网所采用的路由选择协议的主要特点
-
自适应:动态路由选择,能较好地适应网络状态的变化
-
分布式:路由器之间交换路由信息
-
分层次:将整个因特网划分为许多较小的自治系统AS(Autonomous System)
因特网采用分层次的路由选择协议
域间路由选择采用外部网关协议EGP
域内路由选择采用内部网关协议IGP
只是路由选择协议的分类名称,不是具体的路由选择协议。网关一词是因为在早期
常见的路由选择协议
路由选择协议
内部网关协议IGP
-
路由信息协议RIP 基于距离向量,RIP在因特网上最早使用
-
内部网关路由协议IGRP 基于距离向量,是思科早期私有的协议,现在已被EIGRP取代
-
增强型内部网关路由协议EIGRP 思科私有的,用来取代IGRP的混合型路由协议(结合距离向量和链路状态)
-
开放式最短路径优先OSPF 基于链路状态,在各种网络中广泛使用
-
中间系统到中间系统IS-IS 基于链路状态,是ISP骨干网上最长常用的IGP协议
外部网关协议EGP
- 边界网关协议BGP
路由器的基本结构
路由表一般仅包含从目的网络到下一跳的映射
路由表需要对网络拓扑变化的计算最优化
转发表是从路由表得出的 转发表的结构应当使查找过程最优化
为方便理解,不严格区分路由表和转发表。
路由信息协议RIP的基本工作原理
路由信息协议RIP(Routing Information Protocol)是内部网关协议IGP中最先得到广泛使用的协议之一,其相关标准文档为RFC 1058。
RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为“距离向量D-V(Distance-Vector)”。
RIP使用跳数(Hop Count)作为度量(Metric)来衡量到达目的网络的距离。
-
路由器到直连网络的距离定义为1。
-
路由器到非直连网络的距离定义为所经过的路由器数加1。
-
允许一条路径最多只能包含15个路由器。“距离”等于16时相当于不可达。因此,RIP只适用于小型互联网。
RIP认为好的路由就是“距离短”的路由,也就是所通过路由器数量最少的路由。当到达同一目的网络有多条“距离相等”的路由时,可以进行等价负载均衡。
RIP包含以下三个要点:
-
和谁交换信息 仅和相邻路由器交换信息
-
交换什么信息 自己的路由表
-
何时交换信息 周期性交换(例如每30秒)
RIP基本工作过程
路由器刚开始工作时,只知道自己到直连网络的距离为1。
每个路由器仅和相邻路由器周期性地交换并更新路由信息。
若干次交换和更新后,每个路由器都知道到达本AS内各网络的最短距离和下一跳地址,称为收敛。
RIP的路由条目的更新规则
C将其路由表发给D,结果D改造,对D原有路由表进行更新。
例题:某自治系统内采用RIP协议,若该自治系统内的路由器R1收到其邻居路由器R2的距离矢量,距离矢量中包含信息< net1,16 >,则能得出的结论是
A.R2可以经过R1到达net1,跳数为17 B.R2可以到达net1,跳数为16
C.R1可以经过R2到达net1,跳数为17 D.R1不能经过R2到达net1
解析:在RIP协议中,距离16表明目的网络不可达。因此,R2无法到达net1,R1也无法通过R2到达net1。选D
RIP存在“坏消息传播得慢”的问题
R1与N1连接出现故障。将N1改成16跳,并发送路由信息给R2,而此时R2也发路由信息给R1.若R2发送的路由信息先到,R1更新路由表N1为3跳,发送回R2,R2收到后,更新自身路由表N1为4跳,再发回R1…直到R1R2路由表关于N1的均为16跳才停止,这叫做收敛。
“坏消息传播得慢”又称为路由环路或距离无穷计数问题,这是距离向量算法的一个固有问题。可以采取多种措施减少出现该问题的概率或减小该问题带来的危害。
-
限制最大路径距离为15(16表示不可达)
-
当路由表发生变化时就立即发送更新报文(即“触发更新”),而不仅是周期性发送
-
让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送(即“水平分割”)
例题:假设R1、R2、R3采用RIP协议交换路由信息,且均已收敛。若R3检测到网络201.1.2.0/25不可达,并向R2通告一次新的距离向量,则R2更新后,其到达该网络的距离是
A.2 B.3 C.16 D.17
解析:
由题知,R3与201.1.2.0/25连接之间出现故障,R3将其改为201.1.2.0/25为16跳,并向R2通告一次新的距离向量。则R2也将201.1.2.0/25改为为16跳。
由知,R2更新后,则是R1给R2发送了RIP更新报文,R2又将201.1.2.0/25改为3跳。
选B
开放最短路径优先OSPF的基本工作原理
开放最短路径优先OSPF(Open Shortest Path First),是为克服RIP的缺点在1989年开发出来
-
“开放”表明OSPF协议不是受某一家厂商控制,而是公开发表的。
-
“最短路径优先”是因为使用了Dijkstra提出的最短路径算法SPF。
OSPF是基于链路状态的,而不像RIP那样是基于距离向量的。
OSPF采用SPF算法计算路由,从算法上保证了不会产生路由环路。
OSPF不限制网络规模,更新效率高,收敛速度快。
链路状态是指本路由器都和哪些路由器相邻,以及相应链路的“代价”(cost)。
- “代价”用来表示费用、距离、时延、带宽,等等。这些都由网络管理人员来决定。
举例:思科路由器中OSPF计算代价的方法: 100Mbps/链路带宽
计算结果小于1的值仍记为1;大于1且有小数的,舍去小数。
OSPF相邻路由器之间通过交互问候(Hello)分组,建立和维护邻居关系。
-
Hello分组封装在lP数据报中,发往组播地址224.0.0.5;
-
发送周期为10秒
-
40秒未收到来自邻居路由器的Hello分组,则认为该邻居路由器不可达。
使用OSPF的每个路由器都会产生链路状态通告LSA(Link State Advertisement)。LSA中包含以下内容:
-
直连网络的链路状态信息
-
邻居路由器的链路状态信息
LSA被封装在链路状态更新分组LSU中,采用洪泛法发送。
使用OSPF的每个路由器都有一个链路状态数据库LSDB,用于存储LSA。
通过各路由器洪泛发送封装有自己LSA的LSU分组,各路由器的LSDB最终将达到一致。
使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各自到达其他各路由器的最短路径,即构建各自的路由表。
OSPF有以下五种分组类型
-
类型1,问候(Hello)分组 用来发现和维护邻居路由器的可达性。
-
类型2,数据库描述(Database Description)分组 向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息
-
类型3,链路状态请求(Link State Request)分组 向邻居路由器请求发送某些链路状态项目的详细信息。
-
类型4,链路状态更新(Link State Update)分组 路由器使用这种分组将其链路状态进行洪泛发送,即用洪泛法对全网更新链路状态。
-
类型5,链路状态确认(Link State Acknowledgment)分组 这是对链路状态更新分组的确认分组。
OSPF的基本工作过程
OSPF在多点接入网络中路由器邻居关系的建立
-
选举指定路由器DR(designated router)和备用的指定路由器BDR(backup designated router)
-
所有的非DR/BDR只与DR/BDR建立邻居关系
-
非DR/BDR之间通过DR/BDR交换信息
-
DR出了故障就用BDR
为了使OSPF能够用于规模很大的网络,OSPF把一个自治系统再划分为若干个更小的范围,叫做区域(Area)
区域内路由器IR(internal router): R1,R2,R8,49
区域边界路由器ABR(area border router): R3,R4,R7
主干路由器BBR(backbone router): R3,R4,R5,R6,R7
自治系统边界路由器ASBR(AS border router): R6
边界网关协议BGP的基本工作原理
因特网采用分层次的路由选择协议
内部网关协议IGP(例如路由信息协议RIP或开放最短路径优先OSPF)
-
设法使分组在一个自治系统内尽可能有效地从源网络传输到目的网络
-
无需考虑自治系统外部其他方面的策略
外部网关协议EGP(例如边界网关协议BGP)
- 在不同自治系统内,度量路由的“代价”(距离,带宽,费用等)可能不同。因此,对于自治系统之间的路由选择,使用“代价”作为度量来寻找最佳路由是不行的。
外部网关协议EGP(例如边界网关协议BGP)
-
在不同自治系统内,度量路由的“代价”(距离,带宽,费用等)可能不同。因此,对于自治系统之间的路由选择,使用“代价”作为度量来寻找最佳路由是不行的。
-
自治系统之间的路由选择必须考虑相关策略(政治,经济,安全等)
-
BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由
在配置BGP时,每个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人“不同自治系统的BGP发言人要交换路由信息,首先必须建立TCP连接,端口号为179
-
在此TCP连接上交换BGP报文以建立BGP会话
-
利用BGP会话交换路由信息(例如,增加新的路由,或撤销过时的路由,以及报告出错的情况等)
-
使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的邻站(neighbor)或对等站(peer)BGP发言人除了运行BGP外,还必须运行自己所在自治系统所使用的内部网关协议IGP,例如OSPF或RIlP。
BGP发言人交换网络可达性的信息(要到达某个网络所要经过的一系列自治系统)
当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好的路由。也就是构造出树形结构、不存在回路的自治系统连通图。
BGP适用于多级结构的因特网
BGP-4有以下四种报文
-
OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,使通信初始化。
-
UPDATE(更新)报文:用来通告某一路由的信息,以及列出要撤销的多条路由。
-
KEEPALIVE(保活)报文:用来周期性地证实邻站的连通性。
-
NOTIFICATION(通知)报文:用来发送检测到的差错。
例题:R1与R2之间利用哪个路由协议交换路由信息?该路由协议的报文被封装到哪个协议的分组中进行传输?
解析:
R1和R2分别位于两个不同的自治系统AS1和AS2中;
自治系统之间需要使用外部网关协议EGP这一类协议,具体为边界网关协议BGP,目前使用最多的版本是BGP-4;
BGP-4报文被封装在TCP报文段中进行传输。
例题:直接封装RIP、OSPF、BGP报文的协议分别是
A.TCP、UDP、IP B.TCP、IP、UDP C.UDP、TCP、IP D.UDP、IP、TCP
解析: