计算机网络——网络层

计算机网络系列博客
开篇 https://blog.csdn.net/hieheihei/article/details/94127674

概述

网络中,每台主机,路由器都有网络层部分;
网络层提供主机到主机的通信服务;

因特网网络层组件

  1. IP协议
  2. 路由选择
  3. 因特网控制报文协议

转发 涉及分组在单一路由器中从一条入链路到一条出链路的传输
当一个分组到达路由器的一条输入链路时,路由器必须将该分组移动到适当的输出链路;

路由选择 涉及一个网络的所有路由器如何经路由选择协议共同交互以决定分组从源到目的地的路径
当分组从发送方流向接收方时,网络层必须决定这些分组所采用的路由(路径)

转发表 每台路由器都具有一张转发表。路由器检查到达分组首部特定字段的值,在转发表中索引查询该值以确定将该分组移动到哪一输出链路。

路由选择算法 决定路由器中转发表的配置,转发表的配置决定了转发和路由选择间的关系。
路由选择算法可以是集中式的或分布式的;
路由器接受路由选择协议报文,该报文信息被用于配置路由器转发表;

分组交换机 通用分组交换设备,根据分组首部字段中的值,从输入链路接口到输出链路接口转移分组。

  • 链路层交换机 基于链路层字段中的值做转发决定的分组交换机
  • 路由器(router) 基于网络层字段中的值做转发决定的分组交换机

连接建立 在某些网络体系结构中,网络层具有连接建立的功能。即在网络层数据分组开始传输前,沿所选择的链路彼此握手,建立状态。

网络服务模型
定义分组在发送与接受端系统间的端到端运输特性
网络层可能提供的服务:

  • 确保交付 确保分组最终将到达其目的地
  • 具有延时上界的确保交付 在特定的端到端时延内确保交付
  • 有序分组交付 确保分组以它们发送的顺序到达目的地
  • 确保最小带宽 模拟发送端和接受端间有一条特定带宽的专用物理传输链路时分组传输的行为。即只要发送主机以特定比特率传输比特,则分组不会丢失且每个分组会在预定的端到端时延内到达。
  • 确保最大时延抖动 确保发送方两相继分组间的时间间隔与接收方接受对应两分组间的时间间隔之差的绝对值小于特定值
  • 安全性服务 提供数据机密性,完整性,数据源鉴别等服务。发送端网络层将运输层交付的数据加密,而后传输,接受端网络层将收到的数据解码,而后交付运输层。

因特网网络层服务模型
尽力而为服务(best-effort service) 不做任何保证,“根本无服务”满足“尽力而为服务”的定义。

其它网络体系结构服务模型
ATM网络体系结构 提供恒定比特率ATM网络服务,CBR;可用比特率ATM网络服务,ABR;等

虚电路和数据报网络

类似于运输层为进程提供无连接服务或面向连接服务,网络层为两台主机提供无连接服务或面向连接服务。
目前,各主要计算机网络体系结构中,网络层提供且只提供面向连接服务或无连接服务二者之一。
网络层的连接服务与运输层的连接服务存在根本性差别,运输层的连接服务在位于网络边缘的端系统中实现,网络层的连接服务由网络边缘的端系统,网络核心的路由器共同实现。

虚电路网络

仅在网络层提供连接服务的计算机网络
如ATM,帧中继等网络体系结构
虚电路概念源于电话界

虚电路

网络层连接
组成

  • 源和目的主机间的路径,即一系列链路和路由器
  • VC号,即沿着路径的每段链路的一个号码
  • 沿着路径的每台路由器中的转发表表项

路由器
路由器转发表项类似于: 入接口|入VC号|出接口|出VC号
路由器必须为每条进行中的连接维护状态信息
创建新虚电路时,对路径上的路由器,增加相应表项
拆除虚电路时,对路径上的路由器,删除相应表项

虚电路阶段

  1. 虚电路建立
    发送方运输层与网络层联系,指定接收方地址,等待网络层建立虚电路;
    网络层决定发送方与接收方间的路径,并为路径上的每条链路决定一个VC号;
    网络层在路径上的每台路由器中增添一个转发表项;
    网络层可预留路径上的资源,如带宽;
  2. 数据传输
    虚电路上的分组在其首部携带一个vc号;
    分组vc号与其当前所在链路的vc号对应;
    路径上的每台中间路由器在某入接口上收到一个到达分组后,根据该分组的vc号,查询转发表,以确定该分组的出接口和出vc号,将该分组的vc号更新并移动到相应出接口。
  3. 虚电路拆除
    发送方或接收方通知网络层它希望终止该虚电路,拆除阶段启动;
    网络层通知另一侧的端系统会话结束;
    网络层更新路径上每台路由器的转发表以拆除虚电路;

相较于TCP三次握手,路径上每台路由器都参与且了解虚电路的建立,而TCP连接的建立只在端系统中进行

信令报文 端系统向网络发送的指示虚电路启动/终止的报文,路由器间传递的用于建立/拆除虚电路的 报文
信令协议 定义如何交换信令报文的协议

数据报网络

仅在网络层提供无连接服务的计算机网络
如因特网等网络体系结构

端系统发送分组时,为分组加上指示目的地端系统地址的首部行并将该分组推入网络;

路由器使用分组的目的地址转发分组;
路由器的转发表将目的地址映射到输出链路接口;
具体地,转发表维护ip地址前缀到输出链路接口的映射;
对到达分组的ip地址,路由器在转发表中进行前缀匹配,若有多个匹配项,则依据最长前缀匹配规则确定匹配;

路由器不维护连接信息,但维护转发状态信息;
转发状态信息变化的时间尺度相对慢于连接信息变化的时间尺度;
转发表通过路由选择算法更新,通常每1~5分钟更新一次转发表;

基于数据报网络体系的因特网服务模型使得服务保证最少(即没有保证),这对网络层施加了最小限度的需求;
这一体系使得因特网使用各种不同链路层技术较为容易;
新服务可通过端系统上的应用层协议快速部署实现;

路由器原理

路由器转发平面

实现转发功能的逻辑结构;
由一台路由器的输入端口,输出端口,交换结构共同实现;
路由器转发平面总由专用硬件实现;
转发平面以纳米时间尺度运行;

路由器控制平面

实现路由器控制功能的逻辑结构;
执行路由选择协议,响应上线或下线的连接链路,执行网络管理功能;
路由器控制平面通常用软件实现,运行在路由选择处理器上(常为传统CPU);
控制平面以毫秒或秒时间尺度运行;
网络范围的路由控制平面常常是分布式的,其不同部分执行在不同路由器上并通过彼此发送控制报文进行交互;

组成

  • 输入端口
    将一条输入物理链路与路由器相连接的物理层功能;
    执行与位于入链路远端的数据链路层交换的链路层功能;
    查询转发表以确定到达分组输出端口的查询功能;
  • 交换结构
    将路由器的输入端口与输出端口相连,是路由器内部的网络;
  • 输出端口
    存储从交换结构接收的分组;
    执行必要的链路层,物理层功能以在输出链路上传输分组;
  • 路由选择处理器
    执行路由选择协议;
    维护路由选择表;
    维护连接的状态信息;
    为路由器计算转发表;
    执行网络管理功能;

对双向链路,链路的输入端口,输出端口通常在同一线路卡(与交换结构相连的一块印刷电路卡)上成对出现。

输入端口
线路端接
数据链路处理
查找,转发,排队
交换结构

输入端口对分组的处理动作

  • 物理层,链路层处理
  • 检查分组版本号,校验和,寿命字段
  • 更新分组校验和,寿命字段
  • 更新用于网络管理的计数器
  • 查找分组对应的输出端口

查找
查找分组对应的输出端口。
在每个输入端口,通常有转发表的一个影子副本;
对达到分组中的目的地地址编码(ip),查找转发表中的一个最长前缀匹配;

分组通过查找确定其输出端口后,可进入交换结构;
交换结构可能被来自其它输入端口的分组占用,故分组回被交换结构阻塞,在输入端口处排队;

交换结构

将分组实际地从一个输入端口转发(交换)到一个输出端口

交换方式

  1. 经内存交换
    a)早期简单路由器可由传统计算机实现。输入输出端口间的交换在CPU(路由选择处理器)的直接控制下完成。分组到达输入端口后,中断CPU以通知之,CPU将分组复制到内存,解析分组首部字段,决定将其复制到某个输出端口的缓存中。
    b)许多现代路由器通过内存交换。与早期简单路由器的差别在于,目的地址的查找和将分组存储进适当内存位置是由输入线路卡处理的。
  2. 经总线交换
    输入端口经一根共享总线将分组直接传送到输出端口,无需路由选择处理器的干预。
    输入端将分组送上交换结构时,为其加上一个内部标签,所有输出端口都会收到该分组,但只有标签与之对应的输出端口才会接受该分组。
  3. 经互联网络交换
    即使用纵横式的棋盘网络而非单一总线来交换分组。
    对N个输入端,N个输出端的路由器,有2N条线路,N^2个线路交点,交点可动态开关;
    对从输入端口A到输出端口B的分组,交换结构控制器通过闭合适当的线路交点以实现正确传送;
    纵横式网络能并行交换多个分组;
  4. 复杂互联网络
    使用多级交换元素
输出端口

取出存放在输出端口内存中的分组并将其发送到输出链路。

交换结构
排队,缓存
数据链路处理
线路端接

分组排队

在路由器输入端,输出端都有可能形成分组队列。
队列的位置和长度取决于流量负载,交换结构相对速率,线路速率;

丢包
队列满时不得不丢弃分组
弃尾 策略丢弃新到达的分组
此外还有一些更复杂的策略

缓存长度
路由器缓存可吸收流量负载的波动;
确定缓存大小的经验方法是,缓存大小B = 平均往返时延RTT * 链路容量C
对大量TCP流N通过的链路,缓存大小B = 平均往返时延RTT * 链路容量C / TCP数的平方根N^0.5

输出端分组调度
对输出端队列,分组调度程序需在队列中选出一个分组来发送;
通常可用先来先服务原则;
更复杂的调度规则可用实现公平性,服务质量保证等目标;

网际协议 IP

数据报格式

数据报:网络层分组

IPv4数据报关键字段

  • 版本号
    4bit;
    声明数据报的IP协议版本;

  • 首部长度
    4bit;
    IPv4数据报包含可变数量的选项,故须指定首部的实际长度;
    典型的,数据报不含可变选项,长度为20byte

  • 服务类型
    区分不同类型数据报;

  • 数据报长度
    16bit;
    以byte记的数据报总长度

  • 标识,标志,片偏移
    与IP分片相关;
    新版本即IPv6不允许在路由器上对分组分片;

  • 寿命(Time-To-Live,TTL)
    确保数据报不会永远在网络中循环;
    数据报每经过一台路由器,TTL减一,TTL为0时,数据报被丢弃;

  • 协议
    指示IP数据报的有效载荷应当交付哪个特定的运输层协议;
    协议号绑定了网络层与运输层;

  • 首部检验和
    用于路由器对IP数据报中比特错误的检验;
    路由器通常丢弃检测出错误的数据报;
    数据报上有一些可变字段,如TTL,故路由器必须更新数据报的检验和字段;

  • 源和目的地的IP地址

  • 选项
    选项字段允许扩展IP首部;
    选项字段是可选的,它使得IP首部长度不定;
    IPv6中已去掉了选项字段;

  • 有效载荷
    有效载荷可以是运输层报文段的数据,也可以是其它类型的数据,如ICMP报文;

IP数据报分片

链路层协议所能承载的网络层分组长度不同。

最大传送单元(Maximun Transmission Unit,MTU)
一个链路层帧能承载的最大数据量

链路层协议的MTU严格地限制了IP数据报的长度。
问题在于发送方到接收方的路径上,每段链路可能使用不同的链路层协议,不同的链路层协议有不同的MTU。

分片
对路由器的一个到达分组,其大小大于相应输出链路的MTU时,路由器对其分片,即将之拆解成多个较小的IP数据报,用单独的链路层帧封装这些小IP数据报,称其为

片组装
运输层希望收到完整的未分片的报文;
网络内核应当保持简单,片组装工作不应由路由器进行;
片的重组工作在端系统中进行;

标识,标志,片偏移字段用于分片组织;
同一ip数据报有相同而唯一的标识号,即同一数据报的多个片标识相同;
对分片的数据报,最后一个片的标志位置0,其它片的标志位置1;
偏移字段指示片在原ip数据报中的偏移;

在目的地主机,数据报的有效载荷仅当IP层已完全重构为初始IP数据报时,才会传递给目的地运输层;
若一个或多个片一直没有到达目的地,该不完整的数据报将被丢弃;

IPv6废止了分片机制

IPv4编址

主机通常只有一个网络接口;
路由器必须有多个网络接口;

一个IP地址技术上是与一个接口关联的,而非与该接口所在的主机或路由器关联;

IP地址4byte,即32bit,故有约40亿个可能的IP地址;

点分十进制 地址中的每个字节用它的十进制形式书写,字节间用句点(.)分隔。

全球因特网中每台路由器和主机上的每个接口,都必须有一个全球唯一的IP地址(除非使用了NAT技术)

IP广播地址
255.255.255.255
以255.255.255.255为目的地的报文将被交付给同一个网络中的所有主机;
路由器也可以(但通常不)向邻近的子网转发该报文;

子网

在网络拓扑结构的图模型中,将路由器的对应顶点按接口拆分,所得到的新图中,每一个连通分支就是一个子网;
子网掩码 a.b.c.d/x;子网地址的记法,该记法表示接入子网的所有接口的ip地址前x位都应与a.b.c.d的前x位一致;

因特网地址分配策略
无类别域间路由选择(Classless Interdomain Routing,CIDR)

子网寻址
a.b.c.d/x
32bit的地址划分为两部分:

  1. a.b.c.d/x的前x位构成了IP地址的网络部分,称作该地址的前缀;一个组织通常被分配一块连续的地址,即地址前缀相同;
  2. a.b.c.d/x的后32-x位用于区分该组织的内部设备;
分类编址方案

CIDR被采用前的方案;
子网被分为A,B,C三类,其子网地址长度分别为8,16,24比特;
该方案由于子网大小与组织规模不能良匹配,造成大量地址浪费;

获取地址块

因特网名字和编号分配机构(Internet Corporation for Assigned Names and Numbers,ICANN)
非营利性组织,基于[RFC 2050]管理;
负责IP地址分配;
管理DNS根服务器;
分配域名与解决域名纷争;

ICANN地址支持组织
ICANN向区域性因特网注册机构分配地址,区域性因特网注册机构和ICANN一起组成了ICANN地址支持组织,处理本地域内的地址分配与管理;

ISP获取地址块
ISP向ICANN地址支持组织申请地址块;

组织获取地址块
为获得用于某组织的子网,其网络管理员与其ISP联系;
ISP会从其所拥有的大地址块中,提供一个小地址块;

获取主机与路由器地址

一个组织获取了一个地址块后,需要为组织内的主机与路由器接口逐个分配IP地址;

路由器IP

系统管理员常通过远程网络管理工具手工配置路由器中各接口的IP地址

主机IP

主机地址可手动配置;
但目前,通常通过DHCP动态配置

动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)

IP地址分配
DHCP允许主机自动获取(被分配)一个IP地址;
网络管理员能配置DHCP,以使某给定主机每次与网络连接时能得到一个相同IP地址;
某主机也可能被分配一个临时IP地址,该地址在主机每次与网络连接时不同;

网络信息查询
DHCP允许主机得知其它网络信息,如:

  • 子网掩码
  • 默认网关,即第一跳路由器地址
  • 本地DNS服务器地址

即插即用协议
DHCP具有能将主机连进一个网络的网络相关方面的自动能力;
DHCP广泛用于住宅因特网接入网,无线局域网,这些网络中的主机频繁地加入或离开网络;

工作原理
DHCP是一个客户-服务器协议;
客户通常是新到达的主机,它希望被分配一个ip地址并获得相关网络信息;

每个子网或有一台DHCP服务器;或有一台DHCP中继代理(通常是一台路由器),该代理知晓用于该网络的DHCP服务器的地址。

对于一台新到达网络的主机,DHCP协议分四步:

  1. DHCP服务器发现
    一台新到达的主机的首要任务是发现一个要与其交互的DHCP服务器;
    发现步骤通过一个 DHCP发现报文 实现;
    客户机在UDP分组中发送DHCP发现报文,目的地址使用广播地址255.255.255.255,源地址使用0.0.0.0,端口号67;
    该DHCP发现数据报将被交付链路层,链路层将该帧广播到所有与该子网连接的子网;

  2. DHCP服务器提供
    DHCP服务器收到一个DHCP发现报文后,用一个DHCP提供报文向客户做出响应;
    目的地址为IP广播地址255.255.255.255
    子网中可能有多个DHCP服务器,客户可在几个提供者之间选择;
    响应报文项包括:
    a)DHCP发现报文的事务ID
    b)向客户推荐的IP地址
    c)子网掩码
    d) IP地址租用期,即IP地址有效的时间量,通常为数小时或数天;

  3. DHCP请求
    新到达的客户从一个或多个服务器提供中选择一个,并向选中的服务器提供用一个DHCP请求报文进行响应,回显配置参数;

  4. DHCP ACK
    服务器用DHCP ACK报文对DHCP请求报文进行响应,证实所要求的参数;

一旦客户收到DHCP ACK后,交互即完成,客户可在租用期内使用DHCP分配的IP地址;
若客户希望在租用期超时后仍使用该地址,DHCP提供了更新客户对地址租用时间的机制;

移动IP
DHCP在移动性上存在不足,当一个移动节点在子网之间移动时,每个子网都要给他分配新IP,故该节点无法维持与远程应用之间的TCP连接;
移动IP是一种对IP基础设施的扩展,允许移动节点在网络间移动时能使用单一永久地址;

网络地址转换(Network Address Translation,NAT)

对某子网(如家庭,小型办公室),ISP已为其分配一组连续的IP地址。NAT技术使得该子网可以在有限的IP地址下扩展因特网设备。

NAT使能路由器在逻辑上有公网接口和子网接口,公网接口连接因特网,子网接口是小型网络的一部分;
[RFC 1918] (https://tools.ietf.org/html/rfc1918) 保留了三块特殊的地址空间:

  • 10.0.0.0/8 - 10.255.255.255 (10/8 prefix)
  • 172.16.0.0/12 - 172.31.255.255 (172.16/12 prefix)
  • 192.168.0.0/16 - 192.168.255.255 (192.168/16 prefix)
    这些地址空间用于专用网络,如家庭网络;
    在小型网络,即上述子网中,使用特殊地址空间编码,在公网,使用一般地址编码;
    在小型网络内部,可以通过特殊地址空间内的地址区分各个网络设备;
    在因特网范围内,以特殊地址空间地址编制的设备,其IP是不唯一的;
    在小型网络内部,可之间通过内部IP区分设备,但在因特网上通讯,须使用NAT使能路由器的公网IP。

在外部视角下,NAT使能路由器类似一个具有单一IP地址的单一设备;
NAT使能路由器对外界隐藏了家庭网络的细;
NAT使能路由器的公网地址通常是通过DHCP获得的;
NAT使能路由器从ISP的DHCP获得公网地址,而后路由器运行一个DHCP服务器,为该路由器控制的小型网络中的端系统提供地址;

NAT转换表
对外界,NAT路由器控制下的网络有如一个设备,当数据到达NAT路由器时,路由器需将之分发到正确的设备;
NAT通过转换表实现地址转换;
NAT转换表是 端口号 到 内部IP x 实际端口号 的映射;

NAT工作原理
假定NAT内部网络上有设备在 (ip A,port a) 上对 公网端系统 (ip B,port b)发送报文,其中ip A 是内网地址,ip B是公网地址;
假定NAT路由器的公网地址是 ip N;
则,NAT路由器截获内网发往外围的报文,分配一个port nA,用(ip N,port nA)替换原报文中的源地址部分,同时,添加相应NAT转换表项;

缺陷

NAT是解决IP地址短缺的权宜之计,有诸多问题;

  1. 端口号用于进程编址,而不应用于主机编址;NAT给运行在内网上的服务器造成了问题,因为客户无法知晓服务器的实际端口;
  2. 路由器仅应当出来网络层及以下的分组;
  3. 根据端到端原则,主机彼此应直接相互对话,节点介入修改IP地址与端口号违背了这一原则;
  4. 应使用IPv6解决IP地址短缺问题,而非使用NAT做权宜;

NAT穿越
NAT妨碍P2P应用,因为NAT下的对等方无法作为服务器与其它对等方建立TCP连接,P2P需要通过中继等技术实现NAT穿越;

无论如何,NAT已是因特网的一个重要组件。

通用即插即用(UPnP)

可用于实现NAT穿越的技术;
允许主机发现并配置邻近NAT的协议;
UPnP要求主机和NAT都是UPnP兼容的;

在UPnP协议下,主机上的进程可以在一定程度上自定义NAT映射,即进程可以定义并了解套接字被映射到了哪个(ip,port)序对;

因特网控制报文协议(ICMP)

用于主机和路由器间沟通网络层信息;

ICMP位于IP之上,ICMP分组由IP分组承载,主机收到一个指明上层协议为ICMP的IP数据报时,它分解出数据报的有效载荷并交付给ICMP;

常用于差错报告,如报告目的网络不可达;

ICMP报文
  • 类型字段
  • 编码字段
  • 源字段 引起该ICMP报文首次生成的IP数据报的首部和前8字节;
Ping

ping程序发送一个类型8,编码0的ICMP报文到指定主机;
目的主机发回一个类型0,编码0的ICMP回显回答;

源抑制报文

最初用于执行拥塞控制的ICMP报文;
实践中很少使用;
拥塞路由器向主机发送一个源抑制报文以强制该主机减小发送速率;

IPv6

开发IPv6的主要动机在于:32bit的IPv4地址空间即将用尽;事实上,顶层的IANA地址池已在2011分配完毕。
IPv6同时还加强了IPv4的其它方面;
最初预想被作为IPv5的ST-2协议被废弃了

IPv6数据报格式

重要变化

  • 地址空间扩大 地址长度扩展到128bit;
    除单播地址,多播地址,IPv6引入了任播地址,即可被交付给一组主机中的任意一个的地址;
  • 简化的首部 40字节的定长首部;
    许多IPv4字段被舍弃或作为可选项,选项通过新机制编码;
  • 流标签与优先级
    流标签给属于特殊流的分组打上标签,这些特殊流是发送方要求进行特殊处理的流,如一种非默认服务质量或需要实时服务的流。

IPv6字段

  • 版本
    4bit,IPv6版本字段值为6;
  • 流量类型
    8bit,
  • 流标签
    20bit,
  • 有效载荷长度
    16bit,
  • 下一个首部
    标识有效载荷应当交付给哪个上层协议;
  • 跳限制
    转发数据报的每台路由器对该字段内容减一,跳限制计数达到0时,该数据报将被丢弃;
  • 源地址
  • 目的地地址
  • 有效载荷

遗弃的特性

  • 分片机制
    IPv6不允许在中间路由器上进行分片与重新组装;
    若路由器收到的IPv6数据报过大而不能转发到出链路,路由器只需丢弃该数据报并向发送方返回一个指示分组过大的ICMP差错报文即可。
  • 首部检验和
    因特网运输层和链路层已经执行了检验功能,网络层的该功能可去除;
  • 选项
    选项字段不再是标准IP首部,但它可以通过IP首部中,下一个首部字段实现;
    具体地,TCP,UDP协议的首部可以是“下一个首部”,而选项字段也可以是“下一个首部”;

ICMP也对IPv6做了相应更新,添加了分组过大,未识别的IPv6选项等类型与编码

IPv4到IPv6的迁移

标志日

在指定的时间点,关闭因特网所有机器并升级IPv4到IPv6;
该方法不可行;

双栈
Pv6/IPv4节点

使用IPv6/IPv4节点,该节点具有收发IPv4,IPv6两种数据报的能力;
双栈节点必须具有IPv6,IPv4两种地址;
双栈节点应具有确定另一个节点是否是IPv6使能节点的能力,该问题可通过DNS解决,当且仅当发出DNS请求的节点和目标节点都IPv6使能时,DNS才返回IPv6地址;

隧道(tunneling)

隧道 假定两IPv6节点要使用IPv6数据报交互,但两者经由IPv4节点互联,则称这两个IPv6节点间的IPv4节点之集为一个隧道。

借助于隧道,发送端的IPv6节点将整个IPv6数据报作为有效载荷装入IPv4数据报,隧道接收端的IPv6节点收到该IPv4数据报并能发现该数据报含有一个完整的IPv6数据报,故接受节点可提取IPv6数据报;

网络层的技术迁移是困难的,但应用层中新协议的快速部署是容易的;

IP安全性

IPv4的设计是在因特网主要用于互相信任的联网研究人员之间的时代,没有提供任何安全服务;

提供安全性服务的新型网络层协议

IPsec
流行的安全网络层协议,在虚拟专用网(VPN)中广泛部署;
IPsec被设计为与IPv4和IPv6向后兼容,故使用IPsec时无需替换因特网中所有的主机和路由器中的协议栈;

路由选择算法

路由 确定发送方到接收方通过路由器网络的好路径;

源路由器 源主机的第一跳路由器
目的路由器 目的主机的第一跳路由器

路由选择算法
给定一组路由器及连接路由器的链路组成的图,寻找从源路由器到目的路由器的好路径;
好路径通常指具有最低费用的路径;
路径费用反映路径的物理长度,链路速度,金融费用等因素;
实际路由选择算法还考虑策略问题,即存在组织A的路由器可能拒绝转发组织B的路由器等情况;

抽象的路由选择算法在一个带权有向图中,寻找给定节点对间的带权最短路径;

路由选择算法分类

分类一

  • 全局式路由选择算法
    用完整的全局性网络信息计算源到目的地的带权最短路径;
    全局式算法要求在真正开始计算前,获取全局的网络信息;
    实践中,全局式算法常被称作链路状态算法
  • 分布式路由选择算法
    以分布式算法迭代地计算出源到目的地的带权最短路径;
    没有节点拥有全局的完整网络信息;
    每个节点仅有其邻接节点,链路信息即可工作;
    每个节点迭代计算并与其邻接节点交换信息,逐渐计算出到达某目的节点或一组目的节点的带权最短路径;
    分布式路由选择算法的实例是距离向量算法

分类二

  • 静态路由选择算法
    路由随时间缓慢变化,通常是通过人工干预更新的;
  • 动态路由选择算法
    能够在网络流量负载或拓扑结构变化时自动地改变路径;

分类三

  • 负载敏感算法
    链路权重动态变化一反映出底层链路的当前拥塞水平;
    早期路由选择算法是负载敏感的,故而遇到了很多难题;
  • 负载迟钝算法
    链路费用不明显反映其当前或近期的拥塞水平;
    当今因特网路由选择算法是负载迟钝的;

路径震荡问题
路径震荡问题存在于所有根据拥塞测度链路权重的路由选择算法中;
即状态t0下算法选择了路径1,使得该路径拥塞;这导致状态t1下算法选择路径2,使得路径2拥塞;这又使得算法在t2下选择路径1,最终导致反复震荡;
解决方案是确保路由器运行路由选择算法的时机不同步;

链路状态(Link State,LS)路由选择算法

全局式的路由选择算法;

链路状态广播算法
为获取全局网络信息,实践中要求每个节点向网络中所有其它节点广播链路状态分组;
节点广播的结果是,所有节点都具有了该网络等同的完整的视图;

具体的链路状态路由选择算法可选用Dijkstra算法等单源最短路径算法
每个节点都在其上运行单源最短路径算法,以获取到达每个目的地的下一跳路由节点,从而构造转发表;

距离向量(Distance-Vector,DV)路由选择算法

迭代,异步,分布式路由选择算法;

分布式
每个节点都从其邻居处接收信息,执行计算,而后将计算结果分发给邻居;

迭代式
计算过程一直持续到邻居间无更多信息交换为止;
此算法是自我终止的,没有算法应当停止的信号;

异步
不要求所有节点间同步操作;

Bellman-Ford方程
x到y的带权最短路径长度 = min(x的邻居v){x到v的权重+v到y的带权最短路径长度}

距离向量
节点x的距离向量维护节点x到其它所有节点的估计距离;

DV路由选择算法原理
每个节点维护一个距离向量;
距离向量中,到邻居节点的距离是准确值;
节点在每次迭代中向所有邻居发送自身的距离向量;
节点每次收到邻居发送的距离向量,就根据Bellman-Ford方程校正自身的距离向量;
校正过程即是最短路径问题中的松弛操作;

只要所有节点以异步方式交换距离向量,每个节点的距离向量值都会收敛到精确最短路径值;
距离向量收敛后,只要链路没有更新,节点就不会向邻居发出新距离向量报文,也不会收到邻居的报文,算法进入静止状态;

路由选择环路问题
某链路w权重增加后,非相邻节点a可能要在多次迭代后才获知这一事实(因为链路w在节点a预期的某条最短路径上),而该链路的邻接节点b可以立刻获知这一事实;
在路由表多次迭代直至稳定之前,会导致路由选择环路问题:
b将把分组发往a,期望a能以较低代价转发分组,而a会把分组发往b,因为a预期的最短路径通过链路w,而此时a的距离向量还未完全反映w权重大量上升这一事实;

毒性逆转——路由选择环路问题的解决方案
对涉及两个节点的路由选择环路问题可通过毒性逆转技术解决;
若节点a通过节点b到达节点c,则节点a将虚假但善意地告诉b:a到c的距离是无穷大,从而避免环路问题;
毒性逆转技术对涉及到三个或更多节点的选择环路问题无能为力;

LS与DV路由选择算法对比

LS算法中,每个节点a经广播通告所有节点:a与a邻居的链路权重;
DV算法中,每个节点a仅与a的邻居节点交流,通告邻居:a到所有其它节点的最低费用估计;

LS要求发送大量报文以通告整个网络的情况;
DV收敛速度较慢,且有路由选择环路问题;
LS每个路由器的计算是隔离的,相对健壮;
DV中,一个损坏的路由器会将错误信息扩散至全网;

DV,LS各有所长,都在因特网中得到应用,并且,LS和DV基本上是因特网实践中仅有的两种算法。

层次路由选择

简单模型
在简单模型中,将所有互联网路由器都视为等价的,整个网络拓扑视为一个图结构;
简单模型的缺陷在于:

  • 规模,随规模膨胀,图迅速扩大,在整个因特网上运行路由选择算法不可行;
  • 自治,某些组织希望按自己的意愿管理组织内部的路由器和网络结构;

自洽系统(Autonomous System,AS)
将相关联的路由器组织进自洽系统AS,每个AS通常属于同一组织(公司,ISP),统一管理AS内的路由器,使用相同路由选择算法;

网关
每个AS内的一组路由器作为网关,与其它AS互联;

自洽系统内部路由选择协议

一个AS内的路由选择算法;

自洽系统间路由选择协议

从相邻AS获得可达的AS信息并将该信息传播给该AS内的所有路由器;
因特网中所有AS都运行相同的自洽系统间路由选择协议,即BGP4协议;

热土豆路由选择

AS尽可能快(经济)地丢掉(转发)分组;
考虑AS A内的路由器L,试图将一个分组转发到AS C内的情况:
AS A通过自洽系统间路由选择协议得知可以通过AS A的邻居AS B1,AS B2到达AS C,
并将该信息告知A内每一台路由器,如L;
现在,L必须在经过B1到达C和经过B2到达C的两条路径中做选择;
根据热土豆路由选择策略,L会(通过自洽系统内部路由选择协议)考察L到A-B1网关的费用和L到A-B2网关的费用,选择费用(时间,金融费用)较低的那条,并将分组发往相应网关;
亦即,热土豆路由选择策略会使得分组尽快地离开当前AS;

因特网服务运营商ISP与自洽系统AS

一般的,一个ISP中的路由器和互联路由器的链路组成了单个AS;
但同时,许多ISP将它们管理的网络划分为多个AS;

因特网中的路由选择

因特网自洽系统内路由选择

AS内部路由选择协议
又称内部网关协议;
AS内部路由选择协议用于确定在一个AS内执行路由选择的方式;
历史上有两个被广泛用于因特网自洽系统内部的路由选择协议:RIP和OSPF

路由选择信息协议(Routing Information Protocol,RIP)

被广泛用于因特网AS内部路由选择;
常被设置于下层ISP和企业网中;
RIP协议使用距离向量算法,并使用跳数作为费用测度,即每条链路的费用视为1;

沿着源路由器到目的子网的最短路径所经过的子网数量(包括目的子网);

一条路径的最大费用被限制为15,故RIP的使用限制在网络直径不超过15跳的自洽系统内;

RIP响应报文
又称RIP通告;
在邻接路由器间交换路由选择信息(距离向量)的报文;
约30秒互相交换一次;
报文包括该AS内多达25个目的子网的列表和发送方到其中每个子网的距离(估计费用);

路由选择表
RIP表;
每台路由器维护自身的路由选择表;
包括该路由器的距离向量和该路由器的转发表;
表中每一项有三个字段,分别是目的子网,沿最短路径的下一跳路由器标识,沿最短路径到目的子网的跳数;
原则上,AS内的每个子网都在该转发表中有一个表项,事实上,可以用路由聚合技术聚会表项(例如,a.b.c.x和a.b.b.y可以聚和为a.b.c前缀)

RIP实现细节
RIP路由器约每30秒交换一次报文,若某路由器超过180秒没有从某邻居收到报文,则会认为该邻居不再可达(死机,链路中断),路由器会相应更新本地路由选择表并通过其它邻居该信息;

路由器可通过RIP请求报文,请求其邻居到指定地点的费用;

路由器在端口520通过UDP发送RIP请求与响应报文,即RIP使用位于网络层协议IP之上的运输层协议UDP来实现网络层功能;

开放最短路优先(Open Shortest Path First,OSPF)

被广泛用于因特网AS内部路由选择;
常被设置于上层ISP中;
OSPF和协议IS-IS密切相关;

Open 意指该协议规范公众可用;

OSPF的核心是一个使用洪泛链路状态信息的链路状态协议和一个Dijkstra最低费用路径算法;
每台路由器构建一幅关于整个自洽系统的完整拓扑图;
路由器在本地运行Dijkstra算法,确定一个以自身为根节点的到达所有子网的最短路径树;
各条链路的费用由网络管理员配置;

路由器向自洽系统内的所有其它路由器广播路由选择信息;
每当链路状态变化时,路由器广播链路状态信息;
每隔一定时间(如30分钟),路由器广播链路状态信息;

OSPF报文直接由IP报文承载,其IP报文的上层协议字段置为89,OSPF必须自己实现可靠传输,状态广播等功能;

OSPF优点

  1. 安全 可鉴别OSPF路由器间的交换;鉴别技术使得仅有受信任的路由器能参与一个AS内的OSPF协议,故而可防止入侵者将恶意信息注入路由器转发表内;
  2. 多条可用路径 当到达目的地的多条路径费用相同时,OSPF允许使用多条路径;
  3. 对单播与多播路由选择的综合支持 多播OSPF提供对OSPF的简单扩展以便提供多播路由选择;
  4. 支持在单个路由选择域内的层次结构 OSPF具有按层次结构构造一个自洽系统的能力;

链路权重设置的实践原则
权值可以全部置为1以实现最少跳数路由选择;
权值可按链路容量的反比设置;

OSPF层次路由选择实现
一个OSPF自洽系统可配置为多个区域,每个区域运行自己的OSPF链路状态路由选择算法,一个区域内的每台路由器向该区域内的所有其它路由器广播其链路状态;
一个区域内,一台或多台区域边界路由器为流向该区域以外的分组提供路由选择;
一个AS内仅有一个OSPF区域被配置为主干区域,主干区域为AS内其它区域间的流量提供路由选择;
主干区域总包含AS内所有的区域边界路由器;
AS内的区域间路由选择,首先路由分组到一个区域边界路由器,再通过主干路由到位于目的区域的区域边界路由器,而后再利用到最终目的地;

因特网自洽系统间路由选择

自洽系统间路由选择关注跨越多个AS的源和目的地对间确定路径的方法;

边界网关协议(Broder Gateway Protocol,BGP)

BGP4是当前因特网中域间路由选择的事实标准;

BGP为每个AS提供以下服务:

  1. 从相邻AS处获得子网可达性信息;
  2. 向本AS内部的所有路由器传播可达性信息;
  3. 基于可达性信息和AS策略,确定到达子网的优路由;

BGP使得每个子网向因特网的其它部分通过自身的存在 ,即确保因特网中的所有AS了解该子网的存在即如何到达该子网;

BGP基础

BGP会话
用于BGP的TCP连接,路由器对使用179端口的半永久TCP连接以交换路由选择信息;
BGP会话是TCP连接,未必与实际的物理链路对应;

BGP对等方 位于一个BGP会话两端的两台路由器;
外部BGP会话(eBGP) 跨越两个AS的BGP会话;
内部BGP会话(iBGP) 同一AS内两路由器间的BGP会话;

BGP使得每个AS了解经过其相邻AS可达的目的地;
目的地不上主机IP,而是CDIR(无类别域间路由选择)化的前缀;
每个前缀代表一个子网或一个子网的集合;
BGP通过IP地址聚合,最长前缀匹配等技术生成,解析前缀;

路径属性及BGP路由

自洽系统号(Autonomous System Number,ASN)
BGP中,自洽系统由全局唯一的自洽系统号标识(桩AS无ASN);
AS号由ICANN地区注册机构分配;

桩AS
仅承载源地址或目的地址为本AS的流量,通常无ASN;

路由
路由是带有BGP属性的IP前缀;
BGP对等方通过BGP会话彼此通告路由;

路由属性

  • AS-PATH
    该属性包含前缀的通告已经通过的AS;
    当前缀传送到一个AS时,该AS将它的ASN添加到AS-PATH属性中;
    AS-PATH属性可以检测和防止循环通告;
    一台路由器若发现他的AS被包括在AS-PATH中,则它会拒绝该通告;
  • NEXT-HOP
    一个开始某AS-PATH的路由器接口;
    路由器使用该属性配置转发表;

输入策略
当网关路由器收到一条路由时,根据输入策略决定接收或过滤该路由;

BGP路由选择
BGP使用eBGP和iBGP发布路由;
某台路由器可能知道到达某一前缀的多条路由,路由器必须在可能的路由中选择一条;
消除规则
输入:到同一前缀的多条路由
输出:一条路由

  1. 本地偏好值,该值由AS的网络管理员设置;被配置了本地偏好的路由器,会选择本地偏好值最大的路由;若有多个最大值,进入下一步;
  2. 选择具有最短AS-PATH的路由;若有多个最短AS-PATH路由,进入下一步;
  3. 选择具有最靠近NEXT-HOP路由器的路由;最靠近指最低费用;若有多个最靠近路由器,进入下一步;
  4. 使用BGP标识符选择路由;
待续

路由选择策略,广播和多播;

获得因特网连通性

假定某新创建的机构,拥有一台向公众提供服务的web服务器,一台内部员工使用的电子邮件服务器,一台DNS服务器;
为使公众能访问该机构的web站点,员工能向全球的客户收发电子邮件,机构网络需获得因特网连通性;
与本地ISP签约
与一个本地ISP签订合同并与之连接,包括建立物理链接和获取IP地址;
该机构的一台网关路由器将于本地ISP相连;
本地ISP将为该机构提供一个IP地址范围;
该机构将在该IP地址范围内为web服务器,邮件服务器,DNS服务器,网关路由器等设备分配地址;

与因特网注册机构签约
与一个因特网注册机构签约以获取域名;
向注册机构注册DNS服务器的IP地址;
注册机构会把域名和DNS服务器IP地址放入顶级域名服务器的一个表项中,以便客户通过域名获得该机构DNS服务器的IP地址;
本机构将在DNS服务器中放入将web服务器名称映射为IP地址的表项,电子邮件服务器映射为IP地址的表项等;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值