4.1 网络层重要概念

4.1.1 网络层提供的两种服务

面向连接的可靠交付

无连接的、尽最大努力的数据报服务,不提供服务质量的承诺

可靠交付

计算机网络模仿电信网络,使用面向连接的通信方式

通信前先建立虚电路VC(连接),保证双方通信所需的一切网络资源

如果再使用可靠传输的网络协议,可使所发送的分组无差错按序到达终点、不丢失、不重复

虚电路服务:虚电路只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,并不是真正建立一条物理连接

属于同一条虚电路的分组均按照同一个路由进行转发

网络提供数据报服务

互联网采用的设计思路:网络层要设计的尽量简单,向其上层只提供简单灵活的、无连接的、尽最大努力交付的数据报服务

网络在发送分组时不需要先建立连接

每一个分组独立发送,与其前后的分组无关

网络层不提供服务质量的承诺,所传送的分组可能出错、丢失、重复和失序,也不保证分组传送的时限

由主机中的运输层负责可靠的通信

4.1.2 网络层的两个层面

不同网络中的两个主机之间的通信,要经过若干个路由器转发分组来完成

在路由器之间传送的信息有以下2大类:

数据:路由器根据本路由器生成的转发表,把收到的分组从查找到的对应接口转发出去,独立工作,采用硬件转发,快

路由信息:根据路由选择协议所用的路由算法计算路由,创建出本路由器的路由表,许多路由器协同动作,采用软件计算,慢

远程控制器:计算出最佳的路由,在每一个路由器中生成正确的转发表

4.2 网际协议IP

地址解析协议ARP

网际控制报文协议ICMP

网际组管理协议IGMP

4.2.1 虚拟互连网络

使用中间设备进行互连:

运输层及以上:网关

网络层:路由器

数据链路层:网桥或桥接器,交换机

物理层:转发器

使用转发器或网桥不称为网络互连

转发器、网桥或交换机仅仅是把一个网络扩大了,仍然是一个网络

网络互连使用路由器

使用IP协议的虚拟互联网络:IP网

IP网的意义:当互联网上的主机进行通信时,就好像在一个网络上通信一样,看不见互连的各具体的网络异构细节,如果在这种覆盖全网的IP网的上层使用TCP协议,那么就是互联网

互联网可以由多种异构网络互连组成

4.2.2 IP地址

IP地址及其表示方法

32位二进制代码,点分十进制

IP地址采用2级结构:两个字段网络号和主机号

分类的IP地址

A类地址:

最大可指派的网络数126,网络号0和127是保留地址,0表示本网络,127保留作为本地环回测试地址;

第一个可指派的网络号1,最后一个可指派的网络号126

每个网络中最大主机数16777214(

1
2^{24} - 2

),主机号全0表示本主机不可作目的地址,全1表示广播不可作源地址

B类地址:

最大可指派网络数16383(

1
2^{14} - 1

),网络号128.0是被IANA保留的不指派,采用无分类编址(CIDR)时可指派

第一个可指派的网络号1,最后一个可指派的网络号191.255

每个网络中最大主机数65534(

1
2^{16} - 2

)

C类地址:

最大可指派的网络数2097151(

1
2^{21} - 1

)网络号192.0.0被IANA保留,采用无分类编址时可指派

第一个可指派的网络号192.0.1,最后一个可指派的网络号223.255.255

每个网络中的最大主机数254(

1
2^{8} - 2

)

特殊ip地址:

优点:管理简单,使用方便,转发分组迅速,划分子网,灵活使用

缺点:大地址块浪费地址资源,采用划分子网方法也无法解决ip地址枯竭

无分类编址CIDR

无分类域间路由选择

消除了传统A、B、C地址以及划分子网的概念,可以更有效分配IPv4的地址空间,无法解决IP地址枯竭的问题

网络前缀

2个字段:网络前缀和主机号

CIDR记法:斜线记法a.b.c.d/n,表示前n位是网络前缀

地址块

CIDR把网络前缀都相同的所有连续的IP地址组成一个CIDR地址块

一个CIDR地址块包含的IP地址数目取决于网络前缀的位数

地址掩码

又称子网掩码,32位

让机器从ip地址迅速计算出网络地址

由一连串1和接着一连串0组成,1的个数就是网络前缀的长度

构造超网

每一个CIDR地址块中地址数一定是2的整数次幂

除最后几行外,CIDR地址块都包含了多个c类地址,因此有时称CIDR编址为构造超网

特殊的CIDR地址块

/32:一个ip地址,用于主机路由

/31:只有2个ip地址,用于点对点链路

/0:ip地址全0,用于默认路由

路由聚合

16 个 C 类地址,地址掩码=255.255.255.0,路由表中需要 16 个路由项目。不足一个B类

聚合为 1 个 地址,地址掩码=255.255.240.0,路由表中只需 1 个路由项目。

IP地址的特点

每个IP地址都由网络前缀和主机号两部分组成

ip地址是一种分等级的地址结构

方便了ip地址的分配和管理

实现路由聚合,减小了转发表所占的存储空间以及查找转发表的时间

IP地址是标志一台主机和一条链路的接口

当一台主机同时连到两个网络上时,该主机就必须同时具有两个相应的ip地址,其网络号必须不同,这种主机称为多归属主机

一个路由器至少应连接到两个网络,因此一个路由器至少应有两个不同ip

转发器或交换机连接起来的若干个局域网仍为一个网络

按照互联网,一个网络指具有相同网络前缀的主机的集合

转发器或交换机连接起来的若干个局域网都具有同样的网络号

具有不同网络号的局域网必须使用路由器互连

在IP地址中,所有分配到网络前缀的网络都是平等的

两个路由器直接相连的接口处,可指明也可不指明ip地址,如果指明则这一段连线就构成了一种只包含一段线路的特殊网络,这种网络仅需两个ip地址,可使用/31地址块

4.2.3 IP地址与MAC地址

ip地址:虚拟地址、软件地址、逻辑地址,网络层和以上各层使用,放在IP数据报的首部

MAC地址:固化在网卡上的ROM中,硬件地址,物理地址,数据链路层使用,放在MAC帧首部

互连在一起的网络的MAC地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些很复杂的细节

4.2.4 地址解析协议ARP

实时IP通信使用了两个地址:IP地址、MAC地址

ARP作用:从IP地址解析出MAC地址

ARP高速缓存

存放IP地址到MAC地址的映射表

映射表动态更新

超过生存时间的项目从高速缓存中删除,以适应网络适配器的变化

存放最近获得的IP地址到MAC地址的绑定

减少ARP广播的通信量

为进一步减少ARP通信量,主机A在发送其ARP请求分组时,就将自己的IP地址到MAC地址的映射写入ARP请求分组

主机B收到A的ARP请求分组时就将A的IP地址及其对应MAC地址映射写入主机B自己的ARP高速缓存中

ARP工作

当主机A向本局域网上某个主机B发送IP数据报时:

在其ARP高速缓存查找B的IP地址

找到则取出MAC地址,封装成帧,发送

未找到则运行ARP找出B的MAC地址

ARP查找IP地址对应MAC地址

本局域网上广播发送ARP请求(路由器不转发ARP请求)

有对应主机则单播发送响应分组

ARP请求分组:包含发送方硬件地址、发送方IP地址、目标方硬件地址(未知填0)、目标方IP地址

单播ARP响应分组:包含发送方硬件地址、发送方IP地址、目标方硬件地址、目标方IP地址

ARP分组封装在以太网帧中传输

若两台主机不在同一个局域网,主机A需要先知道路由器的IP地址然后解析出MAC地址,路由器再去请求B的MAC地址

使用ARP的四种情况

发送方是主机,把IP数据报发送到本网络上另一个主机,用ARP找到目的主机的硬件地址

发送方是主机,把IP数据报发送到另一个网络上的一个主机,用ARP找到本网络上的一个路由器硬件地址,剩下的由这个路由器完成

发送方是路由器,把IP数据报发送到本网络上一个主机,用ARP找到目的主机的硬件地址

发送方是路由器,把IP数据报发送到另一个网络上一个主机,用ARP找到本网络上另一个路由器硬件地址,剩下的由这个路由器完成

为什么要用两种地址IP MAC

使用不同的MAC地址,MAC地址之间的转换非常复杂

对以太网MAC地址进行寻址也是及其困难的

连接互联网的主机只需各自拥有一个唯一的IP地址,它们之间的通信就像在同一个网络上简单,即使必须多次调用ARP来找到MAC地址,但这个过程都是由计算机软件自动进行的

4.2.5 IP数据报的格式

首部的前一部分是固定长度,共20字节,是所有IP数据报必须有的

首部固定部分

版本:占4位,指IP协议的版本,4表示IPv4

首部长度:占4位,可表示的最大数字为15,一个单位为4字节,所以首部长最大为60字节

区分服务:占8位,用来获得更好的服务,只有在使用区分服务时这个字段才起作用,在一般情况下不使用

总长度:占16位,首部和数据部分长度之和,一个单位为1字节,因此数据报最大长度为65535字节,总长度不超过最大传送单元MTU

标识:占16位,计数器,用来产生IP数据报的标识

标志:占3位,目前只有前两位有意义,标志字段最低位是MF,MF=1表示后面还有分片,MF=0表示最后一个分片,标志字段中间一位是DF,当DF=0时才允许分片

片偏移:占13位,较长的分组在分片后某片在原分组中相对位置,一个单位为8个字节

生存时间:占8位。记为TTL,指示数据报在网络中可通过的路由数的最大值

协议:占8位,指出此数据报携带的数据使用何种协议

首部校验和:占16位,只检验数据报的首部,不检验数据部分,这里不采用CRC检验码而采用简单的计算方法(数据报每经过一个路由器,路由器就重新计算一下首部检验和)

先把校验和置为0,首部按16位划分之后各位相加再取反码,接收端划分后求和取反码若为0则保留

源地址和目的地址:占32位

首部的可变部分

用来支持排错、测量以及安全等措施

长度可变:1到40字节不等,取决于所选择的项目

增加了IP数据报的功能,但这同时也使得IP数据报长度可变,增加了每一个路由器处理数据报的开销

实际很少使用

4.3 IP层转发分组过程

4.3.1 基于终点转发

分组在互联网中是逐跳转发的

基于终点的转发:基于分组首部中的目的地址传送和转发

为了压缩转发表大小,转发表最主要的路由是(目的网络地址,下一跳地址)而不是目的地址,查找转发表过程就是逐行寻找前缀匹配

主机首先检查目的地址是否连接在本网络上,如果是直接交付,否则送交路由器,路由器收到分组后查找转发表转发

4.3.2 最长前缀匹配

使用CIDR时,在查找转发表时可能会得到不止一个匹配结果

最长前缀匹配:选择前缀最长的一个作为匹配的前缀

网络前缀越长,其地址块越小,路由越具体

可以把前缀最长的排在转发表第一行

转发表中两种特殊路由:

主机路由:

特定主机路由

对特定目的主机的IP地址专门指明的一个路由

网络前缀就是。。。/32

放在转发表最前面

默认路由:

不管分组的最终目的网络在哪,都由指定的路由器R来处理

用特殊前缀0.0.0.0/0表示

4.3.3 使用二叉线索查找转发表

二叉线索:一种特殊结构的树,可以快速在转发表中找到匹配的叶节点

从二叉线索的根节点自顶向下的深度最多有32层,每一层对应于IP地址中的一位

为简化二叉线索的结构,可以用唯一前缀来构造二叉线索

为了提高二叉线索的查找速度,广泛使用了各种压缩技术

查找:找到了一个叶节点,将目的IP地址和该叶节点的子网掩码进行按位与,看结果是否与叶节点的网络前缀相匹配,若匹配就按下一跳接口转发,否则丢弃

4.4 网际控制报文协议ICMP

ICMP:允许主机或路由器报告差错情况和提供有关异常情况的报告

ICMP是互联网的标准协议

ICMP不是高层协议,是IP层的协议

ICMP报文的格式:

4.4.1 ICMP报文的种类

2种:差错报告报文,询问报文

ICMP差错报告报文

终点不可达:路由器或主机不能交付数据报时向源点发送终点不可达;

时间超过:当路由器收到生存时间为零的数据报时,除丢弃该数据报外还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片丢弃,并向源点发送时间超过报文;

参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时就丢弃该数据报,并向源点发送参数问题报文;

改变路由:路由器把改变路由报文发给主机让主机直到下次应将数据报发送给另外的路由

ICMP差错报告报文的数据字段的内容

收到的IP数据报:提取首部和数据部的前8字节

添加ICMP前8字节组成ICMP差错报告报文,再添加IP报文首部组成IP数据报

不应发送ICMP差错报告报文的几种情况:

对ICMP差错报告报文不再发送ICMP差错报告报文

对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文

对具有多播地址的数据报都不发送ICMP差错报告报文

对具有特殊地址(127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文

ICMP询问报文

回送请求和回答:

由主机或路由器向一个特定的目的主机发出的询问

收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文

这种询问报文用来测试目的站是否可达,以及了解其有关状态;

时间戳请求和回答:

请某台主机或路由器回答当前的日期和时间

时间戳回答报文中有一个32位的字段,其中写入的整数代表从1900年1月1日起到当前时刻共多少秒

时间戳请求与回答可用于时钟同步和时间测量

4.4.2 ICMP的应用举例

PING

用来测试两个主机之间的连通性

使用了ICMP回送请求与回送回答报文

是应用层直接使用网络层ICMP的例子,没有通过运输层的TCP或UDP

Traceroute

这是UNIX中名字,Windows下是tracert

用来跟踪一个分组从源点到终点的路径

利用IP数据报中的TTL字段、ICMP时间超过差错报告报文和ICMP终点不可达差错报告报文实现对源点到终点的路径跟踪

4.5 IPv6

4.5.1 IPv6的基本首部

IPv6仍支持无连接的传送

将协议数据单元PDU称为分组

主要变化:

更大的地址空间,将地址从IPv4的32位增大到了128位

扩展的地址层次结构,可以划分为更多的层次

灵活的首部格式,定义了许多可选的扩展首部

改进的选项,允许数据报包含有选项的控制信息,其选项放在有效载荷中

允许协议继续扩充,更好适应新的应用

支持即插即用(自动配置),不需要使用DHCP

支持资源的预分配,支持实时视像等要求保证一定的带宽和时延的应用

IPv6首部改为8字节对齐,首部必须是8字节的整数倍

IPv6数据报的一般形式

基本首部

有效载荷,有效载荷也称为净负荷,允许有零个或多个扩展首部,再后面是数据部分

基本首部

基本首部长度:固定40字节

首部字段:8个

取消了首部长度字段;

取消了服务类型字段;

取消了总长度字段,改用有效载荷长度字段

把TTL字段改为跳数限制字段

取消了协议字段,改用下一个首部字段

取消了检验和字段

取消了选项字段,使用扩展首部来实现选项功能

版本:4位,为6表示是ipv6

通信量类:8位,为了区分不同的ipv6数据报的类别或优先级,目前正在进行不同的通信量类性能的实验

流标号:20位,流是从特定源点到特定终点的一系列数据报,流所经过的路径上的路由器都保证指明的服务质量,所有属于同一个流的数据报都有相同的流标号

有效载荷长度:16位,指明ipv6数据报除基本首部以外的字节数,最大为64KB

下一个首部:8位,相当于ipv4的协议字段或可选字段

跳数限制:8位,源站在数据报发出时即设定跳数限制,路由器在转发数据报时将跳数限制字段中值减一,当为零时丢弃此数据报

源地址:128位

目的地址:128位

拓展首部

逐跳选项、路由选择、分片、鉴别、封装安全有效载荷、目的站选项

4.5.2 IPv6的地址

三种基本类型:

单播:传统点对点通信

多播:一对多点的通信

任播:IPv6增加的一种类型,任播的终点是一组计算机,但数据报在交付时只交付其中的一个,通常按照路由算法得出的距离最近的一个

节点与接口:

IPv6将实现IPv6的主机和路由器均称为节点,一个节点可能有多个与链路相连的接口

IPv6地址是分配给节点上接口的

一个具有多个接口的节点可以有多个单播地址

其中任何一个地址都可以当作到达该节点的目的地址

冒号十六进制记法:

每个地址128位,16位一个冒号,4位一个十六进制数

零压缩:一连串连续的零可用一对冒号取代1:0:0:0:0:0:0:1->1::1(任一地址中只能使用一次零压缩)

IPv6地址分类

地址类型 二进制前缀 IPv6记法
未指明地址 0……0(128位)仅此一个 ::/128
环回地址 0……1(128位)仅此一个 ::1/128
多播地址 11111111(8位),功能和IPv4的一样 FF00::/8
本地链路单播地址 1111111010(10位),未连接到互联网,不能和互联网上的其他主机通信 FE80::/10
全球单播地址 除上述四种外所有其他的二进制前缀

IPv6单播地址划分方法

4.5.3 从IPv4向IPv6过渡

方法:逐步演进,向后兼容

向后兼容:IPv6系统必须能接收和转发IPv4分组,并且能够成为IPv4分组选择的路由

两种过渡策略:

使用双协议栈

使用隧道技术

双协议栈

在完全过渡到IPv6前,使一部分主机或路由器装有双协议栈,根据通信主机的不同选择不同协议

IPv6首部中某些字段无法恢复,如流标号,最后恢复的IPv6数据报只能空缺此部分

隧道技术

IPv6数据报进入ipv4网路时,把ipv6数据报封装成为ipv4数据报,整个ipv6数据报成为数据部分,离开隧道时再把数据部分交给主机的ipv6协议栈

4.5.4 ICMPv6

ICMPv6包含了ARP和IGMP协议的功能中

分类:

差错报文

信息报文

邻站发现报文

组成员关系报文

4.6 互连网的路由选择协议

4.6.1 有关路由选择协议的几个基本概念

路由选择协议属于网络层控制层面的内容

理想的路由算法

正确完整、计算简单、公平

不存在一种绝对最佳的路由算法

分类:

静态路由选择策略

非自适应路由选择

不能及时适应网络状态的变化

简单开销小

动态路由选择策略

自适应路由选择

能较好适应网络状态的变化

实现较为复杂,开销大

分层次的路由选择协议

互联网:

采用自适应、分布式路由选择协议

把整个互联网分为许多较小的自治系统AS,采用分层次的路由选择协议

2个层次:

自治系统间路由选择(域间路由选择)

自治系统内路由选择(域内路由选择)

自治系统AS:在单一技术管理下的许多网络、IP地址以及路由器,而这些路由器使用一种自治系统内部的路由选择协议和共同的度量。每一个AS对其他AS表现出的是一个单一的和一致的路由选择策略

二大类路由选择协议

内部网关协议IGP:

在一个自治系统内部使用的路由选择协议

RIP、OSPF

外部网关协议EGP:

在不同自治系统间使用的路由选择协议

BGP-4

4.6.2 内部网关协议RIP

协议RIP工作原理

路由信息协议RIP是一种分布式的、基于距离向量的路由选择协议

互联网的标准协议

最大优点:简单

要求网络中的每个路由器都要维护从它自己到其他每一个目的网络的距离记录

距离定义

路由器到直接连接的网络的距离=1

非直接连接的网络的距离=所经过路由器数+1

RIP协议中距离也称为跳数

一条路径最多只能包含15个路由器,距离为16相当于不可达

RIP只选择距离最短的路由

特点

仅和相邻路由器交换信息

交换的信息是当前本路由器所知道的全部信息,即自己的路由表

按固定时间间隔交换路由信息:

每30s将自己完整路由表发送给直连邻居

网络拓扑变化时发送更新报文

刚启动时向邻居发送请求报文,邻居发送响应报文

建立

路由器刚开始工作时,路由表是空的

然后得到直接连接的网络的距离(为1)

之后,每个路由器也只和数目非常有限的相邻路由器交换并更新路由信息

若干次更新后,所有路由器最终都会知道到达本AS中任何一个网络的最短距离和下一跳路由器的地址

RIP协议的收敛过程较快

路由表主要信息和更新规则

使用距离向量算法找出到达每个目的网络的最短距离

距离向量算法

对每个相邻路由器x发送过来的RIP报文

修改RIP报文中的所有项目,把下一跳地址改为x,并把所有距离加一

对修改后的RIP报文中每一个项目:

若路由表中没有目的网络N,则把该项目添加到路由表

若有且下一跳为x,则用收到的项目替换原路由表项目

若有但下一跳不为x,则选择距离较小的更新路由表

若3分钟还未收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由

返回

RIP2报文

使用UDP传送

分为首部和路由两部分

路由部分:

若干路由信息,每个路由信息20字节

地址族标识符:标志所使用的地址协议

路由标记:填入自治系统的号码

具体路由指出某个网络地址、该网络的子网掩码、下一跳路由器地址以及到此网络的距离

一个RIP报文最多可包括25个路由,因此最大长为4+20*25=504字节

RIP2有简单的鉴别功能

坏消息传的慢

RIP协议的特点:好消息传的快,坏消息传的慢

出故障后r1到故障网络bad的距离为16,但是r2中到bad的距离未更新,r1在下一个周期前收到r2路由表后误以为可通过r2到达bad再次更新距离为r2+1,一直重复直到r2距离为15,r1更新为16,r2再更新为16

RIP协议优缺点

优点:实现简单、开销小

缺点:

网络规模有限,最大距离为15

交换的路由信息为完整路由表,开销大

坏消息传得慢,收敛时间过长

4.6.3 内部网关协议OSPF

原理简单,实现复杂

使用最短路径算法SPF

采用分布式链路状态协议

主要特点

采用洪泛法,向本AS中所有路由器发送信息

发送的信息是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息

当链路状态发生变化或每隔一段时间才发送

链路状态数据库

每个路由器最终都能建立

全网的拓扑结构图

在全网范围内是一致的

每个路由器使用的链路状态数据库中的数据构造自己的路由表

链路状态数据库能较快更新,使各个路由器能及时更新其路由表,OSPF更新过程收敛速度快

OSPF将AS划分

主干区域:标识符=0.0.0.0,用来连通其他下层区域

区域边界路由器ABR:连接不同区域

主干路由器BR:主干区域的路由器,可同时是区域边界路由器

自治系统边界路由器ASBR:一定在主干区域

优点:

减少了整个网络上的通信量

减少了需要维护的状态数量

缺点:

交换信息的种类增多了

使OSPF协议更复杂了

其他特点

对于不同类型的业务可计算出不同的路由

可实现多路径间的负载均衡

所有在OSPF路由器之间交换的分组都具有鉴别的功能

支持可变长度的子网划分和无分类编址CIDR

32位的序号,序号越大状态越新,全部序号空间在600年内不会重复

OSPF的五种分组类型

问候分组

数据库描述分组

链路状态请求分组

链路状态更新分组

链路状态确认分组

使用ip数据报传送

工作过程

确定邻站可达

相邻路由器每隔10秒交换一次问候分组

若40秒没有收到某个相邻路由器发来的问候分组,则可认为该相邻路由器是不可达的

同步链路状态数据库

同步:指不同路由器的链路状态数据库的内容是一样的

两个同步的路由器叫做完全邻接路由器

更新链路状态

只要链路状态发生变化,路由器就使用链路状态更新分组,采用可靠的洪泛法向全网更新链路状态

为确保链路状态数据库与全网状态保持一致,OSPF规定每一段时间刷新一次数据库中链路状态

OSPF链路状态只涉及相邻路由器,与整个互联网规模无直接关系(建立AS),当互联网规模很大时OSPF比RIP好得多

指定的路由器DR:

多点接入的局域网采用了指定的路由器DR的方法,使广播的信息量大大减少

指定的路由器代表该局域网上所有链路,向连接到该网络上的各路由器发送状态信息

4.6.4 外部网关协议BGP

主要特点

用于自治系统AS之间的路由选择

只能是力求选择出一条能够到达目的网络且比较好的路由,而非计算出一条最佳路由

互联网规模大,使AS间路由选择困难

AS间路由选择必须考虑有关策略

采用路径向量路由选择协议

BGP发言者

对等BGP发言者(边界路由器)在AS之间交换信息

在AS之间,BGP发言者在半永久性TCP连接上建立BGP会话,这种连接又称为eBGP连接

在AS内部,任何相互通信的两个路由器之间必须有一个逻辑连接(TCP),AS内部所有路由器之间的通信是全连通的,这种连接常称为iBGP连接

eBGP连接:运行eBGP协议,在不同AS之间交换路由信息

iBGP连接:运行iBGP协议,在AS内部的路由器之间交换BGP路由信息

eBGP与iBGP不同:

通报前缀时,eBGP连接的对等端得知的前缀信息,可通报给一个iBGP连接的对等端,反过来也可以

从iBGP连接的对等端得知的前缀信息,不能通报给另一个iBGP连接的对等端

BGP路由信息

BGP路由=前缀,BGP属性=前缀,AS-PATH,NEXT-HOP

前缀:指明到哪一个子网(CIDR)

BGP属性:最重要的两个属性是,自治系统路径,下一跳

属性AS-PATH中不允许出现相同的AS号——避免兜圈子

三种不同的自治系统AS

末梢AS:不会把来自其他AS的分组再转发到另一个AS。必须向所连接的AS付费

多归属AS:同时连接到两个或两个以上的AS,增加连接的可靠性

穿越AS:为其他AS有偿转发分组

对等AS:经过事先协商的两个AS,彼此之间的发送或接收分组都不收费

BGP的路由选择

本地偏好值最高的路由(LOCAL-PREF)

AS跳数最小的路由

使用热土豆路由选择算法(分组在AS内转发次数最少,选择距离最近的出口)

路由器BGP ID数值最小的路由,具有多个接口的路由器有多个IP地址,BGP ID就使用该路由器的IP地址中数值最大的一个

BGP-4的四种报文

open:用来与相邻的另一个BGP发言者建立关系,使通信初始化

update:用来通告某一路由的信息,以及列出要撤销的多条路由

keepalive:用来周期性地证实邻站的连通性

notification:用来发送检测到的差错

通用首部

4.6.5 路由器的构成

路由器工作在网络层,用于互连网络

是互联网中的关键设备

路由器的主要工作:转发分组

把从某个输入端口收到的分组,按照分组要去的目的地,把该分组从路由器的某个合适的输出端口转发给下一跳路由器

路由器的结构

转发:

根据转发表将用户IP数据报从合适的端口转发出去

仅涉及到一个路由器

转发表从路由表得出的

转发表必须包含完成转发功能所必须的信息,每一行必须包含从要到达目的网络到输出端口和某些MAC地址信息的映射

路由选择:

按照路由选择算法,根据网络拓扑的变化情况,动态改变所选择的路由,并由此构造整个路由表

涉及很多路由器

路由表一般仅包含从目的网络到下一跳的映射

输入端口对线路上收到的分组处理

物理层:从输入端口接收比特

数据链路层:剥去帧的首部和尾部

网络层:若收到分组是交换路由信息的分组,送交路由选择处理机;若收到数据分组,按目的地址查找转发表,根据结果经交换结构到达合适的输出端口,若某分组正在查找转发表,该分组排队等待

输出端口将交换结构传送来的分组发送到线路

网络层:从交换结构接收分组。当交换结构传送的分组速率超过输出链路的发送速率时,来不及发送的分组缓存在队列中。若分组处理的速率赶不上分组进入队列的速率,队列满时丢弃后面进入的分组

数据链路层:加上首部尾部

物理层:发送到输出线路上

交换结构

常用交换方法:通过存储器,通过总线,通过纵横交换结构

通过存储器

当路由器的某个输入端口收到一个分组时,就用中断方式通知路由选择处理机。然后分组就从输入端口复制到存储器中

路由器处理机从分组首部提取目的地址,查找路由表,再将分组复制到合适的输出端口的缓存中

若存储器的带宽为每秒M个分组,那么路由器的交换速率一定小于M/2

通过总线

数据报从输入端口通过共享的总线直接传送到合适的输出端口,而不需要路由选择处理机的干预

当分组到达输入端口时若发现总线忙,则被阻塞而不能通过交换结构,并在输入端口排队等待

因为每一个要转发的分组都要通过这一条总线,因此路由器的转发带宽就受总线速率的限制

通过纵横交换结构

常被称为互连网络

他有2N条总线,控制交叉节点可使N个输入端口和N个输出端口相连接

当输入端口收到一个分组时,就将他发送到水平总线上

若通向输出端口的垂直总线空闲,则将垂直总线与水平总线接通,把该分组转发到。若输出端口已被占用,分组在输入端口排队等待

是一种无阻塞的交换结构,分组可以转发到任何一个输出端口,只要这个输出端口没有别的分组占用

4.7 IP多播

4.7.1 IP多播的基本概念

目的:更好的支持一对多通信

在互联网进行多播就叫做IP多播

互联网范围的多播要靠路由器来实现

能运行多播协议的路由器称为多播路由器

多播路由器也可转发普通的单播IP数据报

多播IP地址

在IP多播数据报的目的地址需要写入多播组的标识符

多播组的标识符就是IP地址中的D类地址

224.0.0.0~239.255.255.255

每一个D类地址标志一个多播组

多播地址只能用于目的地址,不能用于源地址

多播数据报

多播数据报与一般IP数据报区别:

目的地址使用D类IP地址

协议字段=2,表明使用网际组管理协议IGMP

尽最大努力交付,不保证一定能够交付多播组内的所有成员

对多播数据报不产生ICMP差错报文,在PING命令后面键入多播地址永远不会收到响应

4.7.2 在局域网上进行硬件多播

IANA拥有的以太网地址块高24位:00-00-5E

TCP/IP协议使用的以太网地址块范围是00-00-5E到00-00-5E-FF-FF-FF

IANA只拿出01-00-5E到01-00-5E-7F-FF-FF(

1
2^{23}

)作为以太网多播地址

D类IP地址与以太网多播地址映射:

4.7.3 网际组管理协议IGMP和多播路由选择协议

IP多播两种协议

网际组管理协议IGMP:使多播路由器知道多播组成员信息

多播路由选择协议:使多播路由器协同工作,把多播数据报用最小代价传送给多播组的所有成员

多播转发必须动态地适应多播组成员的变化

多播路由器在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,还要考虑这个多播数据报从什么地方来到什么地方去

多播数据报可以由没有加入多播组的主机发出,也可以通过没有组成员的接入网络

网际组管理协议IGMP

IGMP使用IP数据报传递其报文

但IGMP也向IP提供服务,不把IGMP看成一个单独的协议,而是整个网际协议IP的组成部分

加入多播组

当某个主机加入多播组时,该主机向多播组的多播地址发送IGMP报文,声明自己要成为该组的成员

本地的多播路由器收到IGMP报文后,将组成员关系转发给互联网上的其他多播路由器

探询组成员的变化情况

本地多播路由器周期性的探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员

只要对某个组有一个主机响应,那么多播路由器就认为这个组是活跃的

若一个组在几次探询后仍然没有一个主机响应,则不再将该组成员关系转发给其他多播路由器

IGMP避免增大开销的措施:

所有通信都使用IP多播,只要有可能都用硬件多播来传送

对所有的组只发送一个请求信息的询问报文,默认询问速率125s发送一次

当同一个网络上连接有多个多播路由器时,能迅速和有效地选择其中的一个来探询主机的成员关系

分散响应,在IGMP的询问报文中有一个数值N,它指明一个最长响应时间,当收到询问时主机0到N之间随机选择发送响应所需经过的时延,若一台主机同时参加了几个多播组,则主机对每一个多播组选择不同的随机数,对应于最小时延的响应最先发送

采用抑制机制,同一个组内的每个主机都要监听响应,只要本组其他主机先发送了响应,自己就不再发送了

多播路由的选择

找出以源主机为根节点的多播转发树

不同多播组对应不同多播转发树

同一个多播组,不同源点也有不同多播转发树

M个源,N个多播组需要

1
M \times N

棵以源为根的多播转发树

转发多播数据报时三种方法:

洪泛与剪除

隧道技术

基于核心的发现技术

洪泛与剪除

适合较小的多播组,所有组成员接入的局域网也是相邻接的

开始时,路由器转发多播数据报使用洪泛的方法(广播)

为避免兜圈子,采用反向路径广播RPB策略:

检查数据报是否经最短路径传送来的

存在几条同样长度的最短路由,选择IP地址最小的

最后得出以源为根节点的、用来转发多播数据报的多播转发树

剪枝:如果在多播转发树上某个路由器发现它的下游树枝已没有该多播组的成员,则把它和下游树枝一起剪除

嫁接:当某个树枝有新增加的成员时,可再接入多播转发树上

隧道技术

适用于多播组的位置在地理上很分散的情况

多播数据报封装成单播IP数据报

基于核心的发现技术

对于多播组大小在较大范围内变化时都适合

对每一个多播组G指定一个核心路由器,并给出它的IP单播地址

核心路由器按照前面2种方法创建出对应于多播组G的转发树

为一个多播组构建一棵转发树,而不是每个(源,组)构建一棵

构建转发树开销小,扩展性好

Step 1: 确立核心

管理员在网络中指定一台路由器作为该多播组的 Core(核心)。网络中所有其他路由器都知道这个 Core 的 IP 地址。

Step 2: 接收者加入

当某个子网里的主机想加入多播组时:

该子网的边缘路由器向 Core 发送一个 “加入请求” 。

这个请求沿着去往 Core 的最短路径通过中间路由器。

沿途的路由器记录下这个请求,并在自己身上把“下游接口”指向请求发来的方向,从而建立起树的枝干。

一旦请求到达 Core(或者到达了已经是树成员的路由器),路径就打通了。

Step 3: 数据分发

源发送数据:源主机先把数据单播发给 Core。

Core 转发:Core 收到数据后,沿着刚刚建立好的共享树,把数据分发给所有注册过的下游分支。

4.8 虚拟专用网VPN和网络地址转换NAT

4.8.1 虚拟专用网VPN

由于IP地址紧缺,一个机构能申请到的IP地址数远小于本机构所拥有主机数

考虑到互联网并不很安全,一个机构内也不需要把所有主机接入到外部互联网

如果一个机构内部的计算机通信也是采用TCP/IP协议,那么这些仅在机构内部使用的计算机就可以由本机构自行分配其IP地址

本地地址与全球地址

本地地址:仅在机构内部使用的IP地址,可由本机构自行分配而不需要向互联网管理机构申请

全球地址:全球唯一IP地址,必须向互联网管理机构申请

专用地址:只能用作本地地址,互联网中所有路由器对目的地址是专用地址的数据报一律不进行转发

三个专用IP地址块:

10.0.0.0/8:A类,1个

172.16.0.0/12:B类,连续16个

192.168.0.0/16:C类,连续256个

专用网

采用专用IP地址的互连网称为专用互联网或本地互联网,或专用网

专用IP地址也叫做可重用地址

虚拟专用网VPN

利用共用互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网VPN

虚拟:实际上没有使用通信专线,只是在效果上和真正的专用网一样

VPN的构建:

如果专用网不同网点之间的通信必须经过共用的互联网,但又有保密的要求,那么所有通过互联网传送的数据都必须加密

必须为每一个场所购买专门的硬件和软件,并进行配置,使每一个场所的VPN系统都知道其他场所的地址

VPN类型:

内联网:同一个机构的内部网络所构成的VPN

外联网:一个机构和某些外部机构共同建立的

远程接入VPN:允许外部流动员工通过接入VPN建立VPN隧道访问公司内部网络,好像就是使用公司内部的本地网络访问一样

4.8.2 网络地址转换NAT

在专用网上使用专用地址的主机与互联网上的主机通信(不加密)

装有NAT软件的路由器叫NAT路由器,至少有一个有效的外部全球IP地址,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将本地地址转换成全球IP地址

地址转换过程

内部主机与外部主机通信时,在NAT路由器上发生了两次地址转换

离开专用网时:替换源地址,将内部地址替换为全球地址

进入专用网时:替换目的地址,将全球地址替换为内部地址

当NAT路由器有n个全球IP地址时,专用网内最多可以同时有n台主机接入到互联网

可以使专用网内较多数量的主机轮流使用NAT路由器有限数量的全球IP地址

通过NAT路由器的通信必须由专用网内的主机发起,因此专用网内部的主机不能充当服务器使用

网络地址与端口号转换NAPT

NAT不能节省IP地址,NAPT可以使多台拥有本地地址的主机共用一个全球IP地址,同时和互联网上的不同主机通信

使用运输层端口号的NAT叫做网络地址与端口号转换NAPT

NAPT把专用网内不同的源IP地址转换为相同的全球IP地址,将TCP源端口号转换为新的TCP端口号

收到从互联网发来的应答时,从IP数据报的数据部分找出运输层端口号,从NAPT转换表中找到正确的目的主机

4.9 多协议标签交换MPLS

MPLS:互联网建议标准

多协议:在MPLS的上层可以采用的多种协议

标签:MPLS利用面向连接技术,使每个分组携带一个叫做标签的小整数。标签交换路由器用标签值检索转发表,实现分组的快速转发

特点:

MPLS没有取代IP,而是作为一种IP增强技术

支持面向连接的服务质量

支持流量工程,平衡网络负载

有效地支持虚拟专用网VPN

4.9.1 MPLS的工作原理

基本工作原理

MPLS域的入口处,给每一个IP数据报打上固定长度标签

对打上标签的IP数据报在第二层用硬件转发

采用硬件技术对打上标签的IP数据报进行转发就称为标签交换

可以使用多种数据链路层协议如PPP、以太网、ATM以及帧中继等

MPLS域

指该域中有许多彼此相邻的路由器,并且所有的路由器都是支持MPLS技术的标记交换路由器LSR

LSR同时具有标记交换和路由选择这两种功能,标记交换功能是为了快速转发,路由选择功能是为了构造转发表

工作过程

找出标签交换路径LSP:各LSR使用标签分配协议LDP交换报文,找出和标签相对应的标签交换路径LSP整个标签交换路径就像一条虚连接

打标签,然后转发:

入口节点给进入MPLS域的IP数据报打上标签(插入MPLS首部),按照转发表转发给下一个LSR,以后所有LSR都按照标签进行转发

给IP数据报打标签的过程叫分类

标签对换:

一个标签仅在两个LSR之间才有意义

LSR做两件事:转发,更新标签

更新标签:把入标签更换为出标签,称为标签对换

去除标签:

当分组离开MPLS域时,MPLS出口节点把分组的标签去除

把IP数据报交付给非MPLS的主机或路由器

这种由入口LSR确定进入MPLS域以后的转发路径称为显示路由选择

转发等价类FEC

给IP数据报打标签的过程叫做分类

第三层分类:只使用IP首部中的源和目的IP地址等

大多数运营商实现了第四层(运输层)分类:除了要检查IP首部外,运输层还要检查TCP或UDP端口号

有些运营商则实现了第五层分类:进一步检查数据报的内容并考虑其有效载荷

转发等价类FEC:路由器按照同样方式对待的分组的集合;

按照同样方式对待含义:从相同接口转发到相同下一跳地址,并具有同样服务类别和同样丢弃优先级等

例如:

目的IP地址与某一个特定IP地址前缀匹配的IP数据报

所有源地址与目的地址都相同的IP数据报

具有某种服务质量需求的IP数据报

划分FEC方法不受限制,由网络管理员控制

入口节点将属于同样FEC的IP数据报指派同样的标签,FEC与标签一一对应

4.9.2 MPLS首部的位置与格式

MPLS不要求下层网络都使用面向连接的技术

MPLS采用封装技术:把IP数据报封装成帧之前,先插入一个MPLS首部

(2.5层)

MPLS首部:4字节

标签值:20位,可同时容纳

1
2^{20}

个流

试验:3位,保留用作试验

栈S:1位,在有标签栈时使用

生存时间TTL:8位,放置MPLS分组在MPLS域中兜圈子

4.9.3 新一代MPLS

问题:

控制协议(LDP)比较复杂,扩展性差,运行维护比较困难

协议LDP无法做到基于时延或带宽等要求的流量调度

为灵活选择流量转发路径,需再使用资源预留协议RSVP

RSVP的信令复杂,每个节点要维护很大的链路信息数据库

RSVP只会选择一条最优路径,不支持等价多路径路由选择ECMP

新一代MPLS:段路由选择协议SR

段:标签,是转发指令的一种标识符

工作原理:

基于标签交换,不使用LDP

源节点为发送的报文指定路径,并将路径转换成有序的段列表,即MPLS标签栈

网络中其他节点就执行首部中的指令进行转发

SDN控制器:

收集并掌握全网拓扑信息和链路状态信息,计算出分组应传送的整个路径

给分组分配SR标签,指明分组从源点到终点的路径

4.10 软件定义网络SDN简介

提高网络带宽利用率;

网络运行更加稳定;

管理更加高效简化;

运行费用明显降低。