| RIP | OSPF | BGP-4 | |
|---|---|---|---|
| who | 相邻路由器 | 所有路由器 | 相邻 AS 的 BGP 发言人 |
| what | 整个路由表 | 相邻路由器的链路状态 | 可达信息(启动:完整信息;之后增量更新) |
| when | 固定时间间隔/变化 | 固定时间间隔/变化 | 变化 |
| 支持协议 | UDP/520 | IP | TCP/179 |
数据层面
1 网络层的几个重要概念
1.1 网络层提供的两种服务
面向连接还是无连接?可靠交付由谁来负责?网络还是端系统?
- 选择 1:面向连接的可靠交付
- 选择 2:无连接的,尽最大努力交付的数据报服务,不提供服务质量的承诺
观点 1:虚电路服务——让网络负责可靠交付
- 计算机网络模仿电信网络,使用面向连接的通信方式
- 通信之前先建立虚电路 VC,以保证双方通信所需的一切网络资源
- 如果再使用可靠传输的网络协议,可使所发送的分组无差错按需到达终点,不丢失、不重复
- 虚电路只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,并不是真正建立了一条物理连接。
观点 2:数据包服务
- 网络层要设计得尽量简单,向其上层只提供简单灵活的、无连接的、尽最大努力交付的数据报服务
- 网络在发送分组时不需要先建立连接。
- 每一个分组(即IP 数据报)独立发送,与其前后的分组无关(不进行编号)
- 网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失重复和失序(不按序到达终点),也不保证分组传送的时限。
- 由主机中的运输层负责可靠的通信。
对比
1.2 网络层的两个层面
- 不同网络中的两个主机之间的通信,要经过若干个路由器转发分组来完成
- 在路由器之间传送的信息有以下 2 大类
- 数据
- 路由信息(微数据传送服务)
- 网络层的 2 个层面:数据层面和控制层面
数据层面和控制层面
- 数据层面
- 路由器根据本路由器生成的转发表,把收到的分组从查找到的对应接口转发出去。
- 独立工作。
- 采用硬件进行转发,快。
- 控制层面
- 根据路由选择协议所用的路由算法计算路由,创建出本路由器的路由表。
- 许多路由器协同动作。
- 采用软件计算,慢。
2 网际协议 IP
与网际协议 IPv4 配套的 3 个协议:
- 地址解析协议 ARP
- 网际控制报文协议 ICMP
- 网际组管理协议 IGMP
2.1 虚拟互连网络
实现网络互连互通需要解决许多“不同”,IP 就是用来将异构的网络互相连接起来。
实现异构网络通常来讲有两种方式
- 都使用相同的网络
- 不能满足不同用户需要。没有一种单一的网络能够适应所有用户的需求
- 不适应技术发展
- 使用中间设备
- 可以满足不同需求
- 实用
使用中间设备进行互连
- 使用转发器或网桥不称为网络互连
转发器(只有放大作用)、网桥或交换机仅把一个网络扩大了,仍然是一个网络
- 网络互连需要使用路由器或三层交换机
- 互联网络和虚拟互联网络
IP 网的意义
- 当互联网上的主机进行通信时,就好像在一个网络上通信一样,看不见互连的各具体的网络异构细节。
- 如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就是现在的互联网 (Internet)。
分组传输路径
2.2 !!!IP 地址
- 没有IP地址,就无法和网上的其他设备进行通信。
- 本部分重点:
- IP 地址及其表示方法
- 分类的 IP 地址
- 无分类编址 CIDR
- IP 地址的特点
2.2.1 !!!IP 地址及其表示方式——点分十进制记法
- 互联网上的每台主机(或路由器)的每个接口分配一个在全世界唯一的 IP 地址。
- 由互联网名字和数字分配机构 ICANN (Internet Corporation for Assigned Names and Numbers) 进行分配。
IP 地址采用 2 级结构
- IP 地址 ::= { <网络号>, <主机号>}
- IP 地址在整个互联网范围内是唯一的
- IP 地址指明了连接到某个网络上的一个主机
2.2.2 分类的 IP 地址
各类 IP 地址的网络号字段和主机号字段
各类 IP 地址的指派范围
注意:
- A 类网络地址中,网络号 0 和 127 是保留地址,不指派。0 表示“本网络”,127 保留作为本地环回测试地址。
- B 类网络地址中,网络号 128.0 是被 IANA 保留的,不指派。采用无分类编址(CIDR)时可以指派。
- C 类网络地址中,网络号 192.0.0 是被 IANA 保留的,不指派。采用无分类编址(CIDR)时可以指派。
- 指派主机号时,要扣除全 0 和全 1 。全 0 和全 1 有特殊含义和用途。
特殊的几个地址
-
127.0.0.1 本地环回地址
-
169.254.0.0 没有获得正确地址前,OS 自动分配的地址
-
保留的私网地址
- 10.0.0.0
- 172.16.0.0-172.32.0.0
- 192.168.0.0-192.168.255.0
-
一般不使用的特殊 IP 地址
分类的 IP 地址的优点和缺点
- 优点
- 管理简单
- 使用方便
- 转发分组迅速
- 划分子网,灵活地使用
- 缺点
- 设计上不合理
- 大地址块,浪费地址资源
- 即使采用划分子网的方法,也无法解决 IP 地址枯竭的问题
2.2.3 无分类编制 ICDR
- CIDR(ClasslessInter-Domain Routing):无分类域间路由选择。
- 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,可以更加有效地分配 IPv4 的地址空间,但无法解决IP地址枯竭的问题。
- 要点:
- 网络前缀
- 地址块
- 地址掩码
1 网络前缀
- 前缀的位数 n 不固定,可以在 0 ~ 32 之间选取任意值。
- CIDR 记法:斜线记法
a.b.c.d / n:二进制 IP 地址的前 n 位是网络前缀。
例如:128.14.35.7/20:前 20 位是网络前缀。
2 地址块
- CIDR 把网络前缀都相同的所有连续的 IP 地址组成一个 CIDR 地址块
- 一个 CIDR 地址块包含的 IP 地址数目,取决于网络前缀的位数
3 地址掩码
- 又称为子网掩码 (subnet mask)。
- 位数:32 位。
- 目的:让机器从 IP 地址迅速算出网络地址。
- 由一连串 1 和接着的一连串 0 组成,而 1 的个数就是网络前缀的长度。
- 默认地址掩码
- 网络地址 = (二进制的 IP 地址) & (地址掩码)
例子
IP 地址:A: 192.169.80.123, B: 192.169.80.1, C: 192.168.90.123
- 地址掩码 255.255.255.0,A 和 B 能 pin 通,A 和 C 不能,因为 AB 在一个网段,AC 不在
- 地址掩码 255.255.0.0,ABC 都能 pin 通,因为他们仨在一个网段
子网划分
- 分成 2 个网段:每个子网是原来的二分之一,子网掩码往右移动一位
- 分成 4 个网段:每个子网是原来的四分之一,子网掩码往右移动两位
- A 子网:192.168.0.00000000
- B 子网:192.168.0.01000000
- C 子网:192.168.0.10000000
- D 子网:192.168.0.11000000
- 子网掩码:11111111.11111111.11111111.11000000 255.255.255.192
常用的 CIDR 地址块
构造超网
- 每一个 CIDR 地址块中的地址数一定是 2 的整数次幂。
- 除最后几行外,CIDR 地址块都包含了多个 C 类地址(是一个 C 类地址的 2n 倍,n 是整数)。
- 因此在文献中有时称 CIDR 编址为“构造超网”。
三个特殊的 CIDR 地址块
路由聚合(route aggregation)
- 路由聚合:将多个连续的、有共同路径的IP地址前缀合并成一个更短的、更概括的路由前缀的技术
-
例子:CIDR 地址块划分
4 IP 地址的特点
- 每个 IP 地址都由网络前缀和主机号两部分组成。
IP 地址是一种分等级的地址结构。- 方便了 IP 地址的分配和管理。
- 实现路由聚合,减小了转发表所占的存储空间,以及查找转发表的时间。
- IP 地址是标志一台主机(或路由器)和一条链路的接口。
- 当一台主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP地址,其网络号必须是不同的。这种主机称为多归属主机 (multihomed host)。
- 一个路由器至少应当连接到两个网络,因此一个路由器至少应当有两个不同的 IP 地址。
- 转发器或交换机连接起来的若干个局域网仍为一个网络。
- 按照互联网的观点,一个网络(或子网)是指具有相同网络前缀的主机的集合。
- 转发器或交换机连接起来的若干个局域网都具有同样的网络号,它们仍为一个网络。
- 具有不同网络号的局域网必须使用路由器进行互连。
- 在 IP 地址中,所有分配到网络前缀的网络都是平等的。
互联网同等对待每一个 IP 地址,不管是范围很小的局域网,还是可能覆盖很大地理范围的广域网
2.3 IP 地址与 MAC 地址
-
IP 地址
- 虚拟地址、软件地址、逻辑地址。
- 网络层和以上各层使用。
- 放在 IP 数据报的首部。
-
MAC 地址
- 固化在网卡上的 ROM 中。
- 硬件地址、物理地址。
- 数据链路层使用。
- 放在 MAC 帧的首部。
-
不同层次、不同区域使用的源地址和目的地址
- 尽管互连在一起的网络的 MAC 地址体系各不相同,但 IP 层抽象的互联网却屏蔽了下层这些很复杂的细节。
- 只要我们在网络层上讨论问题,就能够使用统一的、抽象的 IP 地址研究主机和主机或路由器之间的通信。
- 主机或路由器怎样知道应当在 MAC 帧的首部填入什么样的 MAC 地址?靠地址解析协议 ARP
2.4 地址解析协议 ARP
- 实现 IP 通信时使用了两个地址:
- IP 地址(网络层地址)
- MAC 地址(数据链路层地址)
- ARP 的作用:从 IP 地址解析出 MAC 地址(通过 ARP 请求或回答分组)
2.4.1 ARP 高速缓存
-
ARP 高速缓存(ARP cache)
- 存放 IP 地址到 MAC 地址的映射表。
- 映射表动态更新(新增或超时删除)
- 超过生存时间的项目都从高速缓存中删除,以适应网络适配器变化。
-
ARP 高速缓存的作用
- 存放最近获得的 IP 地址到 MAC 地址的绑定。
- 减少 ARP 广播的通信量。
- 为进一步减少 ARP 通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到 MAC 地址的映射写入 ARP 请求分组。(提问题的时候会说自己是谁)
- 当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的 IP 地址及其对应的 MAC 地址映射写入主机 B 自己的 ARP 高速缓存中。不必再发送 ARP 请求。
2.4.2 ARP 工作
- 当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时:
2.4.3 ARP 查找 IP 地址对应的 MAC 地址
- 本局域网上广播发送 ARP 请求(路由器不转发 ARP 请求)。
- 广播 ARP 请求分组:包含发送方硬件地址 / 发送方 IP 地址 / 目标方硬件地址(未知时填 0) / 目标方 IP 地址。
- 单播 ARP 响应分组:包含发送方硬件地址 / 发送方 IP地址 / 目标方硬件地址 / 目标方 IP 地址。
- ARP 分组封装在以太网帧中传输
2.4.4 2 台主机不在同一个局域网上怎么办?
- ARP 用于解决同一个局域网上的主机或路由器的 IP 地址和 MAC 地址的映射问题。
- 如果 2 台主机不在同一个局域网上,则需要路由器转发
通信的路径:A → 经过 R1 转发 → B。
因此主机 A 必须知道路由器 R1 的 IP 地址,解析出其 MAC 地址。
然后把 IP 数据报传送到路由器 R1。
ARP 广播引起的安全问题
- ARP 本身没有安全机制,告诉他 mac 地址是多少,不做验证,就会直接记录
- P2P 终结者:把自己伪装成网管,路由器先回复主机 MAC 地址,P 2 P 终结者再发送一条网管 MAC 地址回复,覆盖路由器的 MAC 地址(ARP 欺骗),把自己伪装成网关,这样所有的上网流量都会经过它,就能捕获局域网内所有主机的上网数据报、控制上网流量
2.4.5 使用 ARP 的四种典型情况
- 发送方是主机,要把 IP 数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
- 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
- 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
- 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成。
2.4.6 为什么要使用两种地址:IP 地址和 MAC 地址
- 不同使用不同的 MAC 地址。MAC 地址之间的转换非常复杂。
- 对以太网 MAC 地址进行寻址也是极其困难的。
- IP 编址把这个复杂问题解决了。
连接到互联网的主机只需各自拥有一个唯一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,即使必须多次调用 ARP 来找到 MAC 地址,但这个过程都是由计算机软件自动进行的,对用户来说是看不见的。 - 因此,在虚拟的 IP 网络上用 IP 地址进行通信非常方便。
2.5 IP 数据报的格式
- 首部
- 固定部分:共 20 字节,是所有 IP 数据包必须具有的
- 版本:4 位,至 IP 协议的版本,目前的 IP 协议版本号为 4(即 IPv4)
- 首部长度:4 位,可表示的最大数值是 15 各单位(一个单位 4 字节),因此 IP 的首部长度的最大值是 60 字节
- 区分服务:8 位,用来获得更好地服务,针对不同应用提供不同服务。只有在使用区分服务(DiffServ)时,这个字段才起作用,在一般的情况下都不使用这个字段。
- 总长度:16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节,总长度必须不超过最大传送单元 MTU(越长效率越高,但路由器负担越低)
- 标识:16 位,是一个计数器,用来产生唯一的 IP 数据包的标识
- 标志:3 位,只有前两位有意义
- 最低位 MF(More Fragment):=1 表示后面还有分表,=0 表示最后一个分片
- 中间为 DF(Don't Fragment):=0 允许分片。常用=1 来探测传输的数据有多长
- 片偏移:13 位,指出较长的分组在分片后某片在原分组中的相对位置,片偏移以 8 个字节为偏移单位
例:IP 数据报分片
- 生存时间 TTL:8 位,指出数据报在网络中可通过的路由器数的最大值
- 协议:8 位,指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给那个处理过程。IP 协议支持多种协议,IP 数据包可以封装多种协议 PDU
- 首部校验和:16 位,只检验数据报的首部,不检验数据部分,不采用 CRC 检验码而采用简单的计算方式。数据包每经过一个路由器,路由器都要重新计算一下首部检验和
- 源地址、目的地址:32 位
- 可选字段:长度可变
- IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富
- 长度可变:从 1 个字节到 40 个字节不等,取决于所选择的项目
- 增加了 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的,增加了每一个路由器处理数据报的开销
- 实际上这些选项很少被使用
- 固定部分:共 20 字节,是所有 IP 数据包必须具有的
- 数据
3 IP 层转发分组的过程
3.1 基于终点的转发
-
分组在互联网中是逐跳转发的
-
基于终点的转发:基于分组首部中的目的地址传送和转发
-
为了压缩转发表的大小,转发表中最主要的路由是(目的网络地址,下一跳地址),而不是(目的地址,下一跳地址)。查找转发表的过程就是逐行寻找前缀匹配
-
路由表没有给分组指明某个网络的完整路径。路由表指出:
- 到某个网络应先到某个路由器(即下一跳的路由器)
- 到达下一跳路由器后,继续查找其路由表,再下一步应当到哪个路由器
- 这样一步一步地查找下去,直到最后到达目的网络
- H1 首先检查 128.1.1.132 是否连接在本网络上。如果是,则直接交付;否则,就送交路由器 R1。
- 路由器 R1 收到分组后查找转发表,逐行检查
- 第一行:128.1.2.132 AND 255.255.255.192 = 128.1.2.128 不匹配
- 第二行:128.1.2.132 AND 255.255.255.128 = 128.1.2.128 匹配。进行分组的直接交付(通过路由器 R1 的接口 1)
- 第一行:128.1.2.132 AND 255.255.255.192 = 128.1.2.128 不匹配
3.2 最长前缀匹配原则
- 使用 CIDR 时,在查找转发表时可能会得到不止一个匹配结果
- 最长前缀匹配原则:选择前缀最长的一个作为匹配的前缀
- 网络前缀越长,其地址块就越小,因而路由就越具体
- 可以把前缀最长的排在转发表的第 1 行
- 路由器 R 1 收到分组后查找转发表,逐行检查
- 第一行:128.1.2.132 AND 255.255.255.192 = 128.1.2.128 不匹配
- 第二行:128.1.2.132 AND 255.255.255.128 = 128.1.2.128 匹配。
- 第三行:128.1.2.196 AND 255.255.255.192 = 182.1.2.192 匹配。第三行的接口 0 比第二行的接口 1 匹配的前缀更长,故从接口 0 向外转发分组
- 第一行:128.1.2.132 AND 255.255.255.192 = 128.1.2.128 不匹配
- 网络前缀越长,其地址块就越小,路由就越具体
- 可以把前缀最长的排在转发表的第 1 行,以加快查表
转发表中的 2 种特殊路由
- 主机路由(host route)
- 又叫特定主机路由
- 是对特定目的主机的 IP 地址专门指明的一个路由
- 网络前缀就是 a.b.c.d/32
- 放在转发表的最前面
- 默认路由(default route)
- 不管分组的最终目的网络在哪里,都由指定的路由器 R 来处理
- 用特殊前缀 0.0.0.0/0 表示
路由器分组转发算法
3.3 使用二叉线索查找转发表
- 二叉线索(binary trie):一种特殊结构的树,可以快速在转发表中找到匹配的叶结点。
- 从二叉线索的根结点自顶向下的深度最多有 32 层,每一层对应于 IP 地址中的一位
- 魏建华二叉线索的结构,可以用唯一前缀(unique prefix)来构造二叉线索。
- 为了提高二叉线索的查找速度,广泛使用了各种压缩技术
4 网际控制报文协议 ICMP
// 报告差错里头这些都是指啥
- ICMP 允许主机或路由器
- 差错报告 => 差错报告报文 (找不到目的地的时候 IP 直接把分组扔了,由 ICMP 处理)情况
- 目标不可达
- 源站抑制(发的太快承受不住)
- 超时(TTL=0)
- 参数问题(ICMP 需要对 IP 首部校验,如果出错则为参数问题)
- 重定向(有更好的路由选择时本次还走这条路,但报告可以走更好的路)
- 查询 => 询问报文
- 回溯请求/应答
- 地址掩码请求应答(现在几乎不用)
- 时间戳,请求/回答
- 提供有关异常情况的报告
- 差错报告 => 差错报告报文 (找不到目的地的时候 IP 直接把分组扔了,由 ICMP 处理)情况
- ICMP 是互联网的标准协议
- 但 ICMP 不是高层协议,而是 IP 层的协议
4.1 ICMP 报文的格式
- 类型+代码:决定是什么样的差错报文/什么样的询问应答报文
- 检验和:不止检查首部,还检查数据部分。作用域是整个数据包
4.2 ICMP 报文的种类
- 两种:差错报告报文、询问报文
4.2.1 ICMP 差错报告报文
- ICMP 差错报告报文的数据字段的内容
多的 8 个字节有端口号等内容,能标识是对应主机的哪个进程发的报文 - 不应发送 ICMP 差错报告报文的几种情况
- 对 ICMP 差错报告报文不在发送 ICMP 差错报告报文
因为可能之后发的 ICMP 差错报告报文也有错 - 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文
因为发一次就够了 - 对具有多播地址的数据报都不发送 ICMP 差错报告报文
因为不知道发给谁 - 对具有特殊地质(如 127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文
因为不知道发给谁
- 对 ICMP 差错报告报文不在发送 ICMP 差错报告报文
4.2.2 ICMP 询问报文
- 回送请求和回答:ping
- 有主机或路由器向一个特定的目的主机发出的询问
- 收到此报文的的主机必须给源主机或路由器发送 ICMP 会送回答报文
- 这种询问报文用来测试目的站是否可达,以及了解其有关状态
- 时间戳
- 请某台主机或路由器回答当前的日期和时间
- 时间戳回答报文中有一个 32 位的字段,其中写入的整数代表从 1900 年 1 月 1 日起到当前时刻一共有多少秒
- 时间戳请求与回答可用于时钟同步和时间测量
- 用于上层协议的一系列可靠和效应服务(?)
4.3 ICMP 的应用举例
ping(Packet InterNet Groper)
- 用来测试两个主机之间的连通性
- 使用了 ICMP 回送请求与会送回答报文
- 是应用层直接使用网络层 ICMP 的例子,没有通过运输层的 TCP 或 UDP,所以快
Traceroute
- UNIX 中叫 Traceroute,windows 中叫 tracert
- 用来跟踪一个分组从源点到终点的路径
- 它利用 IP 数据包中的 TTL 字段、ICMP 时间超过差错报告报文和 ICMP 终点不可达差错报告报文实现对从源点到终点的路径的跟踪
5 IPv6
IPv4 用完了 => 用 IPv6
5.1 IPv6 的基本首部
- 仍支持无连接的传送
- 将协议数据单元 PDU 称为分组
- 主要变化
- 更大的地址空间。将地址从 IPv4 的 32 位增大到了 128 位。
- 扩展的地址层次结构。可以划分为更多的层次。
- 灵活的首部格式。定义了许多可选的扩展首部。
- 改进的选项。允许数据报包含有选项的控制信息,其选项放在有效载荷中。
- 允许协议继续扩充。刚好地适应新的应用
- 支持即插即用(即自动配置),不需要使用 DHCP
- 支持资源的预分配,支持实时视像等要求保证有一定的带宽和时延的应用。
- IPv6 首部改为 8 字节对齐,首部长度必须是 8 字节的整数倍
IPv6 数据报的一般形式
- 两大部分组成
- 基本首部(base header)
- 有效载荷(payload)。有效载荷也称为净负荷。有效载荷允许有 0 个或多个扩展首部(extension header),再后面是数据部分。
IPv6 数据包的基本首部
- 首部长度:固定的 40 字节,称为基本首部
- 首部字段数:只有 8 个
- 版本(version) - 4 位。
它指明了协议的版本,对IPv6 该字段总是 6. - 通信量类(traffic class) - 8 位。
这是为了区分不同的 IPv6 数据报的类别或优先级。目前正在进行不同的通信量类性能的实验。 - 流标号(flow label) - 20 位。
“流”是互联网络上从特定源点到特定终点的一系列数据报,“流”所经过的路径上的路由器都保证指明的服务质量。所有属于同一个流的数据报都具有同样的流标号。 - 有效载荷长度(payload length) - 16 位。
它指明 IPv6 数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内),其最大值是 64 KB. - 下一个首部(next header) - 8 位。
相当于 IPv4 的协议字段或可选字段 - 跳数限制(hop limit) - 8 位。
源站在数据报发出时即设定跳数限制。路由器在转发数据报时将跳数限制字段中的值减 1。当跳数限制的值为零时就要将此数据报丢弃。 - 源地址 - 128 位。
是数据报的发送站的 IP 地址。 - 目的地址 - 128 位。
是数据报的接收站的 IP 地址。
IPv 6 的 6 种扩展首部
- 逐跳选项
- 路由选择
- 分片
- 鉴别
- 封装安全有效载荷
- 目的站选项
5.2 IPv6 的地址
- 三种基本类型
- 单播(unicast):传统的点对点通信
- 多播(multicast):一点对多点的通信
- 任播(anycast):IPv6 增加的一种类型。任播的终点是一组计算机,但数据报在交付时只交付其中的一个,通常是按照路由算法得出的距离最近的一个。
5.2.1 节点与接口
- IPv 6 将实现 IPv 6 的主机和路由器均称为节点
- 一个节点可能有多个与链路相连的接口。
- IPv6 地址是分配给节点上接口的。
- 一个具有多个接口的节点可以有多个单播地址。
- 其中的任何一个地址都可以当作到达该节点的目的地址
5.2.2 冒号十六进制记法
- 在 IPv6 中,每个地址占 128 位,地址空间大于3.4x1038
- 使用冒号十六进制记法(colon hexadecimal notation,简写为colon hex):16 位的值用十六进制值表示,各值之间用冒号分隔。
1 零压缩
- 零压缩:一串连续的零可以用一对冒号取代
- 注意:在任意地址中,只能使用一次零压缩
2 点分十进制法的后缀
5.2.3 IPv6 地址分类
5.2.4 IPv6 单播地址的划分方法
5.3 从 IPv4 向 IPv6 过渡
- 方法:逐步演进,向后兼容。
- 向后兼容:IPv 6 系统必须能够接收和转发 IPv 4 分组,并且能够为 IPv 4 分组选择路由。
- 两种过渡策略:
- 使用双协议栈
- 使用隧道技术
5.3.1 双协议栈
如何知道目的地址用什么地址?
dns 返回 IPv4 就用 IPv4,否则用 IPv6
5.3.2 隧道技术
5.4 ICMPv6
- IPv 6 也需要使用 ICMP 来反馈一些差错信息,新的版本称为 ICMPv6
ICMPv 6 报文的分类
控制层面
6 互联网的路由选择协议
6.1 有关路由选择协议的几个基本概念
1. 理想的路由算法
-
正确完整
-
计算简单
-
自适应性:稳健性、负载均衡。一个路由坏了之后怎么分配他的任务给其它
-
稳定性
-
公平
-
关于最佳路由
- 不存在一种绝对的最佳路由算法
- 所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已
-
路由选择非常复杂
- 需要所有节点共同协调工作的
- 环境不断变化,而这种变化有时无法事先知道
- 当网络发送拥塞时,很难获得所需的路由选择信息
路由算法分类(自适应)
2. 分层次的路由选择协议
- 互联网:
- 采用自适应的(即动态的)、分布式路由选择协议。
- 把整个互联网划分为许多较小的自治系统 AS,采用分层次的路由选择协议。
- 分为 2 个层次
- 自治系统之间的路由选择或域间路由选择(interdomainrouting);
- 自治系统内部的路由选择或域内路由选择(intradomainrouting);
- 为什么分层
一方面,如果都知道就会太多会爆炸,另一方面不希望所有人都知道
自治系统 AS
自治系统内部的路由选择策略是一致的
2 大类
理论最常考 RIP
实验 OSPF
自治系统和内部网关协议、外部网关协议
- 自治系统内部运行的网关协议:自己选自己的,用 RIP 或 OSPF
- 自治系统内部运行的网关协议:基本用 BGP-4
6.2 !!!内部网关协议 RIP
6.2.1 协议 RIP 的工作原理
- 路由信息协议 RIP(RoutingInformation Protocol)是一种分布式的、基于距离向量的路由选择协议。
- 分布式:有很多路由器一起完成路由表
- 距离:跳数
- 向量:有方向
- 互联网的标准协议。
- 最大优点:简单。
- 要求网络中的每个路由器都要维护从它自己到其他每一个目的网络的距离记录。
1 RIP 距离的定义
- 路由器到直接连接的网络的距离 = 1
- 路由器到非直接连接的网络的距离 = 所经过的路由器数 + 1。
- RIP 协议中的“距离”也称为“跳数”(hop count),每经过一个路由器,跳数就加 1
RIP 的距离只存好路由
2 RIP 协议的三个特点(www)
- who:和谁交换信息
仅和相邻路由器交换信息。 - what:交换什么信息
交换的信息是当前本路由器所知道的全部信息,即自己的路由表。 - when:何时交换信息
按固定时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息.
3 路由表的建立
- 路由器在刚刚开始工作时,路由表是空的。
- 然后,得到直接连接的网络的距离(此距离定义为1)。
- 之后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。
- 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。
- RIP 协议的收敛(convergence)过程较快。“收敛”就是在自治系统中所有的结点都得到正确的路由选择信息的过程。
4 路由表主要信息和更新规则
- 路由表主要信息:目的网络、距离、下一跳地址
- 路由表更新规则:使用距离向量算法找出到达每个目的网络的最短距离
6.2.2 !!!距离向量算法
对每个相邻路由器(假设其地址为 X)发送过来的 RIP 报文,路由器:
- 修改 RIP 报文中的所有项目(即路由):把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。
- 对修改后的 RIP 报文中的每一个项目,重复以下步骤:
- 若路由表中没有目的网络 N,则把该项目添加到路由表中。
- 否则若路由表中网络 N 的下一跳路由器为 X,则用收到的项目替换原路由表中的项目。
- 否则若收到项目中的距离小于路由表中的距离,则用收到项目更新原路由表中的项目。
- 否则什么也不做。
- 若 3 分钟还未收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为 16(表示不可达)
- 返回。
- 发送端+1 并
- 更新下一跳地址,然后再发出去
- 接收端收到路由表
- 没有的目的网络,存
- 下一跳是路由器是发送端,存
- 距离更短,存
6.2.3 RIP 2 报文
- 组成:首部和路由 2 个部分。
- 路由部分:由若干个路由信息组成。每个路由信息共 20个字节
- 地址族标识符(又称为地址类别)字段用来标志所使用的地址协议。
- 路由标记填入自治系统的号码。
- 后面为具体路由,指出某个网络地址、该网络的子网掩码、下一跳路由器地址以及到此网络的距离。
- 一个 RIP 报文最多可包括 25 个路由,因而 RIP 报文的最大长度是4+20 x25=504 字节。如超过,必须再用一个 RIP 报文来传送。
- RIP2 具有简单的鉴别功能。
- 是应用层协议
RIP 协议的优缺点
- 优点:实现简单,开销较小
- 缺点
- 网络规模有限,最大距离为 15
- 交换的路由信息为完整路由表,开销较大
- 坏消息传播得慢,收敛时间过长
6.2.4 坏消息传播得慢
- RIP 协议特点:好消息传播得快,坏消息传播得慢。
- 问题:坏消息传播得慢(慢收敛)
当网络出现故障时,要经过比较长的时间才能将此信息(坏消息)传送到所有的路由器。
6.3 内部网关协议 OSPF
- 开放最短路径优先 OSPF(Open Shortest Path First)是为克服 RIP 的缺点在 1989 年开发出来的。
- 原理很简单,但实现很复杂。
- 使用了 Dijkstra 提出的最短路径算法 SPF.
- 采用分布式的链路状态协议(link state protocol)。
- 现在使用 OSPFv2。
1 OSPF 协议的三个特点(www)
- who:采用洪泛法(flooding),向本自治系统中所有路由器发送信息。
- what:发送的信息是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
链路状态:说明本路由器都和哪些路由器相邻,以及该链路的度量(metric)(包括费用、时延、距离、带宽、政治因素等)。 - when:当链路状态发生变化或每隔一段时间(如 30 分钟),路由器才用洪泛法向所有路由器发送此信息。
2 链路状态数据库(link-state database)
- 每个路由器最终都能建立全网的拓扑结构图。
- 在全网范围内是一致的(这称为链路状态数据库的同步)
- 每个路由器使用链路状态数据库中的数据构造自己的路由表(例如使用 Diikstra 的最短路径路由算法)
- 链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表重要优点:OSPF 更新过程收敛速度快。
3 OSPF 将自治系统划分为两种不同的区域(area)
洪泛法交换路由器的状态信息的范围规定在每个区域内,减少网络上的通信量。只知道本区域内的网络拓扑,不知道其他区域的网络拓扑。紫色不用 OSPF,用类似于 RIP 的协议。
- 自治系统边界路由器 ASBR:R6,保证本自治系统内所有的主机的分组都能穿透整个自治系统去访问别的自治系统的某一个主机
- 主干路由器 BR:R3 R4 R5 R6 R7
- 区域边界路由器 ABR:R3 R4 R7
4 划分区域优点和缺点
- 优点:
- 减少了整个网络上的通信量。
- 减少了需要维护的状态数量。
- 缺点:
- 交换信息的种类增多了
- 使 OSPF 协议更加复杂了。
- 分层次划分区域的好处:使每一个区域内部交换路由信息的通信量大大减小,因而使 OSPF 协议能够用于规模很大的自治系统中。
5 OSPF 分组用 IP 数据报传送
6 OSPF 工作过程
OSPF 使用可靠的洪泛法发送更新分组
绿色箭头传递 ACK 报文(用于确认),是可靠的来源
指定的路由器 DR
如果每个路由器都能进行洪泛法广播,有 n 个路由器,则要向其他 n-1 个路由器都发一遍协议,要发的太多。所以我们希望指定一个路由器来进行洪泛法的路由信息发送
- 多点接入的局域网采用了指定的路由器 DR(designated router)的方法,使广播的信息量大大减少
- 指定的路由器代表该局域网上所有的链路向连接到该网络上的各路由器发送状态信息。
6.4 外部网关协议 BGP
- 是不同自治系统的路由器之间交换路由信息的协议
6.4.1 BGP 协议的主要特点
- 用于自治系统 AS 之间的路由选择。是不同自治系统的路由器之间交换路由信息的协议。
- 只能是力求选择出一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要计算出一条最佳路由。
- 自治系统间为什么不使用内部网关协议(RIP、OSPF)
- 互联网的规模太大,使得自治系统AS之间路由选择非常困难。不同自治系统所选用的度量不同:当一条路径通过几个不同AS时,计算出有意义的代价是不太可能的,比较合理的做法是在AS之间交换“可达性”信息
- 自治系统 AS 之间的路由选择必须考虑有关策略。
- 这些策略包括政治、安全或经济方面的考虑;
- BGP 寻找一条能够到达目标网络且比较好的路由(不能兜圈子),不是寻找一条最佳路由。
- BGP 采用了路径向量(path vector)路由选择协议。
- BGP 采用 TCP 协议,端口号(目的)为 179
域间路由,协议稳定性要求高。
1 BGP 发言者
(黑线是物理连线,红线是一个半永久的 TCP 连接(建立连接后不释放))
每个自治系统选至少一个路由器作为 BGP 发言者和相邻自治系统的 BGP 发言者交换路由信息
假设 AS3 要告诉别人一条通往 x 的网络。他在通报之前要在 AS2 和 AS3 之间建立一个半永久的 TCP 连接(建立连接后不释放),这种连接就叫 eBGP
2 BGP 协议的 www
- 两个 BGP 发言人都是通过一个共享网络连接在一起:
- 和谁交换信息 who:与邻居 AS 的 BGP 发言人交换信息。
- 交换什么信息 what:交换网络可达性的信息,即到达某个网络所要经过的一系列 AS(增量更新,只发送更新的路由)
- 什么时候交换 when:网络拓扑发生变化时,更新有变化的部分
6.4.2 eBGP 链接和 iBGP 链接
- 在 AS 之间, BGP 发言者在半永久性 TCP 连接(端口号为 179)上建立 BGP 会话(session)。这种连接又称为 eBGP 连接。
- 在 AS 内部,任何相互通信的两个路由器之间必须有一个逻辑连接(也使用 TCP 连接)。AS 内部所有的路由器之间的通信是全连通的。这种连接常称为 iBGP 连接。
- eBGP(external BGP)连接:运行 eBGP 协议,在不同 AS 之间交换路由信息。
- iBGP(internal BGP)连接:运行 iBGP 协议,在 AS 内部的路由器之间交换 BGP 路由信息。
1 IGP iBGP 和 eBGP 的关系
- 在 AS 内部运行:
- 内部网关协议 IGP(可以是协议 OSPF 或 RIP)。
- 协议 iBGP
- 在 AS 之间运行:
- 协议 еBGP.
2 eBGP 和 iBGP
- 同一个协议 BGP(使用的报文类型、使用的属性、使用的状态机等都完全一样)
- 但它们在通报前缀时采用的规则不同:
- 在 eBGP 连接的对等端得知的前缀信息,可以通报给一个 iBGP 连接的对等端。反过来也是可以的。
- 但从 iBGP 连接的对等端得知的前缀信息,则不能够通报给另一个 iBGP 连接的对等端。
3 BGP 路由信息
BGP 路由=[前缀,BGP 属性]=[前缀,AS-PATH, NEXT-HOP]
- 前缀:指明到哪一个子网(用 CIDR 记法表示)
- BGP 属性:最重要的两个属性是
- 自治系统路径 AS-PATH(要经过哪几个自治系统)
- 下一跳 NEXT-HOP(下一跳要到的路由器接口 IP)
4 三种不同的自治系统 AS
- 末梢 AS:不会把来自其他 AS 的分组再转发到另一个 AS,必须向所连接的 AS 付费。
- 多归属 AS(multihomed AS):同时连接到两个或两个以上的 AS,增加连接的可靠性。
- 穿越 AS:为其他 AS 有偿转发分组。
- 对等 AS:经过事先协商的两个 AS,彼此之间的发送或接收分组都不收费
5 BGP 路由如何避免兜圈子
- 在属性 AS-PATH 中,不允许出现相同的 AS 号
6 BGP 的路由选择
- 本地偏好(local preference)值最高的路由(默认值=100)
- AS 跳数最小的路由
- 使用热土豆路由选择算法(分组在 AS 内的转发次数最少)
- 路由器 BGP ID 数值最小的路由。具有多个接口的路由器有多个 IP 地址,BGP ID 就使用该路由器的 IP 地址中数值最大的一个,
(1)本地偏好值最高
(2)AS 跳数最小
(3)热土豆路由选择算法
(热土豆 = 烫手山芋 => 选择在本自治系统中跳数最少的)
7 BGP-4 的四种报文
- OPEN (打开)
用来与相邻的另一个 BGP 发言者建立关系使通信初始化。 - UPDATE(更新)
用来通告某一路由的信息,以及列出要撤销的多条路由。 - KEEPALIVE(保活)
用来周期性地证实邻站的连通性 - NOTIFICATION(通知)
用来发送检测到的差错
8 BGP 报文具有通用首部
通用首部:eBGP 和 iBGP 的首部都一样
- 标记:检查同步信息是否完整,以及用于验证计算
- 长度:整个 BGP 报文的长度
- 类型:1-4,对应四种不同的 BGP 报文
6.5 路由器的构成
- 路由器工作在网络层,用于互连网络(连通不同的网络)
- 是互联网中的关键设备。
- 路由器的主要工作:转发分组。
把从某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。
6.5.1 路由器的结构
- 路由选择部分 - 控制层面
核心功能:构建路由选择处理机,根据路由选择协议构建路由表 - 分组转发部分 - 数据层面
从输入端口收到数据报,找到合适的输出端口转发出去
转发和路由选择的区别
- 转发
- 根据转发表将用户的 IP 数据报从合适的端口转发出去。
- 仅涉及到一个路由器。
- 转发表是从路由表得出的
- 转发表必须包含完成转发功能所必需的信息,每一行必须包含从要到达的目的网络到输出端口和某些 MAC 地址信息(如下一跳的以太网地址)的映射。
- 路由选择
- 按照路由选择算法,根据网络拓扑的变化情况,动态地改变所选择的路由,并由此构造出整个的路由表。
- 涉及到很多路由器。
- 路由表一般仅包含从目的网络到下一跳(用 IP 地址表示)的映射
输入端口对线路上收到的分组的处理
输出端口将交换结构传送来的分组发送到线路
6.5.2 交换结构
通过存储器、通过总线、通过纵横交换结构
- 通过存储器
- 当路由器的某个输入端口收到一个分组时,就用中断方式通知路由选择处理机。然后分组就从输入端口复制到存储器中。
- 路由器处理机从分组首部提取目的地址查找路由表,再将分组复制到合适的输出端口的缓存中。
- 若存储器的带宽(读或写)为每秒 M个分组,那么路由器的交换速率(即分组从输入端口传送到输出端口的速率)一定小于 M/2.
- 通过总线
- 数据报从输入端口通过共享的总线直接传送到合适的输出端口,而不需要路由选择处理机的干预。
- 当分组到达输入端口时若发现总线忙,则被阻塞而不能通过交换结构,并在输入端口排队等待。
- 因为每一个要转发的分组都要通过这一条总线,因此路由器的转发带宽就受总线速率的限制。
- 通过纵横交换结构(常被称为互连网络)
- 它有 2N 条总线,控制交叉节点可以使 N 个输入端口和 N 个输出端口相连接。
- 当输入端口收到一个分组时,就将它发送到水平总线上。
- 若通向输出端口的垂直总线空闲,则将垂直总线与水平总线接通,把该分组转发到这个输出端口。若输出端口已被占用,分组在输入端口排队等待。
特点:是一种无阻塞的交换结构,分组可以转发到任何一个输出端口,只要这个输出端口没有被别的分组占用。
7 IP 多播
7.1 IP 多播的基本概念
7.1.1 多播
- 多播 (multicast):曾译为组播。
- 目的:更好地支持一对多通信。
- 一对多通信:一个源点发送到许多个终点。
- 多播能大大节约网络资源
7.1.2 IP 多播
- 在互联网上进行多播就叫做 IP 多播。
- 互联网范围的多播要靠路由器来实现。
- 能够运行多播协议的路由器称为多播路由器。
- 多播路由器也可以转发普通的单播 IP 数据报。
- 从 1992 年起,在互联网上开始试验虚拟的多播主干网 MBONE
多播 IP 地址
- 在 IP 多播数据报的目的地址需要写入多播组的标识符。
- 多播组的标识符就是 IP 地址中的 D 类地址(多播地址)。
地址范围:224.0.0.0 ~ 239.255.255.255 - 每一个 D 类地址标志一个多播组。
- 多播地址只能用于目的地址,不能用于源地址。
多播数据报
- 多播数据报和一般的 IP 数据报的区别
- 目的地址:使用 D 类 IP 地址。
- 协议字段 = 2,表明使用网际组管理协议 IGMP。
- 尽最大努力交付,不保证一定能够交付多播组内的所有成员。
- 对多播数据报不产生 ICMP 差错报文。在 PING 命令后面键入多播地址,将永远不会收到响应。
7.2 在局域网上进行硬件多播
-
IANA 拥有的以太网地址块的高 24 位为 00-00-5E。
-
TCP/IP 协议使用的以太网地址块的范围是从 00-00-5E-00-00-00 到 00-00-5E-FF-FF-FF
-
IANA 只拿出 01-00-5E-00-00-00 到 01-00-5E-7F-FF-FF (223个地址)作为以太网多播地址。或者说,在 48 位的多播地址中,前25 位都固定不变,只有后 23 位可用作多播。
-
D类 IP 地址与以太网多播地址的映射关系
7.3 网际组管理协议 IGMP 和多播路由选择协议
7.3.1 IP 多播需要两种协议
- 网际组管理协议 IGMP —— 成员管理
使多播路由器知道多播组成员信息(有无成员)。 - 多播路由选择协议 —— 传播管理
使多播路由器协同工作,把多播数据报用最小代价传送给多播组的所有成员。
1 IGMP 使多播路由器知道多播组成员信息
IGMP 协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机参加或退出了某个多播组。IGMP 不知道 IP 多播组包含的成员数,也不知道这些成员都分布在哪些网络上。
2 多播路由选择协议更为复杂
- 多播转发必须动态地适应多播组成员的变化(这时网络拓扑并未发生变化),因为每一台主机可以随时加入或离开一个多播组。
- 多播路由器在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,还要考虑这个多播数据报从什么地方来和要到什么地方去。
- 多播数据报可以由没有加入多播组的主机发出,也可以通过没有组成员的接入网络
7.3.2 网际组管理协议 IGMP
1 IGMP 使用 IP 数据报传递其报文
- 在 IGMP 报文加上 IP 首部构成 IP 数据报。
- 但 IGMP 也向 IP 提供服务。
- 因此,不把 IGMP 看成是一个单独的协议,而是整个网际协议 IP的一个组成部分
2 IGMP 工作可分为两个阶段
- 加入多播组。
- 当某个主机加入多播组时,该主机向多播组的多播地址发送 IGMP 报文,声明自己要成为该组的成员。
- 本地的多播路由器收到 IGMP 报文后,将组成员关系转发给互联网上的其他多播路由器。
- 探询组成员变化情况。
- 本地多播路由器周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员。
- 只要对某个组有一个主机响应,那么多播路由器就认为这个组是活跃的。
- 但一个组在经过几次的探询后仍然没有一个主机响应,则不再将该组的成员关系转发给其他的多播路由器。
3 IGMP 采用的一些具体措施,以避免增加大量开销
- 所有通信都使用 IP 多播。只要有可能,都用硬件多播来传送。
- 对所有的组只发送一个请求信息的询问报文。默认询问速率是每125 秒发送一次。
- 当同一个网络上连接有多个多播路由器时,能迅速和有效地选择其中的一个来探询主机的成员关系。
- 分散响应。在 IGMP 的询问报文中有一个数值 N,它指明一个最长响应时间(默认值为 10 秒)。当收到询问时,主机在 0 到 N 之间随机选择发送响应所需经过的时延。若一台主机同时参加了几个多播组,则主机对每一个多播组选择不同的随机数。对应于最小时延的响应最先发送。
- 采用抑制机制。同一个组内的每一个主机都要监听响应,只要有本组的其他主机先发送了响应,自己就不再发送响应了。
7.3.3 多播路由选择
- 实际上就是要找出以源主机为根节点的多播转发树。
- 不同的多播组对应于不同的多播转发树。
- 同一个多播组,对不同的源点也会有不同的多播转发树。
- M 个源,N 个多播组,需要 MⅹN 棵以源为根的多播转发树。
转发多播数据报时使用三种方法:
- 洪泛与剪除
- 隧道技术 (tunneling)
- 基于核心的发现技术
1 洪泛与剪除
- 适合于较小的多播组,所有组成员接入的局域网也是相邻接的。
- 开始时,路由器转发多播数据报使用洪泛的方法(这就是广播)。
- 为避免兜圈子,采用反向路径广播 RPB (Reverse Path Broadcasting) 的策略。
- RPB 的要点
- 检查,转发
- 形成以源为根节点的多播转发树
- 剪枝与嫁接
- 剪枝:如果在多播转发树上的某个路由器发现它的下游树枝(即叶节点方向)已没有该多播组的成员,就把它和下游的树枝一起剪除。
- 嫁接:当某个树枝有新增加的组成员时,可以再接入到多播转发树上。
- 检查,转发
2 隧道技术(tunneling)
3 基于核心的发现技术
-
对于多播组的大小在较大范围内变化时都适合。
-
对每一个多播组 G 指定一个核心 (core) 路由器,并给出它的 IP 单播地址。
-
核心路由器按照前面讲过的 2 种方法创建出对应于多播组 G 的转发树(核心路由器为根节点)。
-
为一个多播组构建一棵转发树,而不是为每个(源,组)组合构建一棵转发树。
-
构建转发树开销较小,扩展性较好。
-
如果有一个路由器 R1 向核心路由器发送数据报,那么它在途中经过的每一个路由器都要检查其内容。
-
当数据报到达参加了多播组 G 的路由器 R2 时,R2 就处理这个数据报。
- 如果 R1 发出的是一个多播数据报,其目的地址是 G 的组地址,R2 就向 G 的成员转发这个多播数据报。
- 如果 R1 发出的数据报是一个请求加入多播组 G 的数据报,R2 就把这个信息加到它的路由中,并用隧道技术向 R1 转发每一个多播数据报的副本。
4 几种多播路由选择协议
- 距离向量多播路由选择协议 DVMRP (Distance Vector Multicast Routing Protocol)。互联网上使用的第一个多播路由选择协议。
- 基于核心的转发树 CBT (Core Based Tree)
- 开放最短通路优先的多播扩展 MOSPF (Multicast Extensions to OSPF)
- 协议无关多播-稀疏方式 PIM-SM (Protocol Independent Multicast-Sparse Mode) 。唯一成为互联网标准的一个协议。
- 协议无关多播-密集方式 PIM-DM (Protocol Independent Multicast-Dense Mode)
8 虚拟专用网 VPN 和网络地址转换 NAT
8.1 虚拟专用网 VPN
- 由于 IP 地址的紧缺,一个机构能够申请到的IP地址数往往远小于本机构所拥有的主机数。
- 考虑到互联网并不很安全,一个机构内也并不需要把所有的主机接入到外部的互联网。
- 如果一个机构内部的计算机通信也是采用 TCP/IP 协议,那么这些仅在机构内部使用的计算机就可以由本机构自行分配其 IP 地址。
1 本地地址与全球地址
- 本地地址:仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向互联网的管理机构申请。
- 全球地址:全球唯一的 IP 地址,必须向互联网的管理机构申请。
- 问题:如何区分本地地址和全球地址?
解决:RFC 1918 指明了一些专用地址 (private address)。
专用地址只能用作本地地址,而不能用作全球地址。 - 互联网中的所有路由器对目的地址是专用地址的数据报一律不进行转发。
2 RFC1918 指明的专用 IP 地址
三个专用 IP 地址块:
- 10.0.0.0/8
A 类,从 10.0.0.0 到 10.255.255.255。1 个。 - 172.16.0.0/12
B 类,从 172.16.0.0 到 172.31.255.255。连续 16 个。 - 192.168.0.0/16
C 类,从 192.168.0.0 到 192.168.255.255。连续 256 个。
3 专用网
- 采用专用 IP 地址的互连网络称为专用互联网或本地互联网,或更简单些,就叫做专用网。
- 专用 IP 地址也叫做可重用地址 (reusable address)。
4 虚拟专用网 VPN
- 利用公用互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网 VPN (Virtual Private Network)。
- 专用网:指这种网络是为本机构的主机用于机构内部的通信,而不是用于和网络外非本机构的主机通信。
- 虚拟:表示实际上没有使用通信专线,只是在效果上和真正的专用网一样。
5 虚拟专用网 VPN 的构建
- 如果专用网不同网点之间的通信必须经过公用的互联网,但又有保密的要求,那么所有通过互联网传送的数据都必须加密。
- 必须为每一个场所购买专门的硬件和软件,并进行配置,使每一个场所的 VPN 系统都知道其他场所的地址。
6 用隧道技术实现虚拟专用网
VPN 类型
- 内联网 (intranet):同一个机构的内部网络所构成的 VPN。
- 外联网 (extranet):一个机构和某些外部机构共同建立的。
- 远程接入 VPN (remote access VPN):允许外部流动员工通过接入 VPN 建立 VPN 隧道访问公司内部网络,好像就是使用公司内部的本地网络访问一样。
8.2 网络地址转换 NAT
-
问题:在专用网上使用专用地址的主机如何与互联网上的主机通信(并不需要加密)?
- 再申请一些全球 IP 地址。但这在很多情况下是不容易做到的。
- 采用网络地址转换 NAT。这是目前使用得最多的方法。
-
需要在专用网连接到互联网的路由器上安装 NAT 软件。
-
装有 NAT 软件的路由器叫做 NAT路由器,它至少有一个有效的外部全球 IP 地址。
-
所有使用本地地址的主机在和外界通信时,都要在 NAT 路由器上将其本地地址转换成全球 IP 地址,才能和互联网连接。
1 网络地址转换的过程
- 在内部主机与外部主机通信时,在 NAT 路由器上发生了两次地址转换:
- 离开专用网时:替换源地址,将内部地址替换为全球地址。
- 进入专用网时:替换目的地址,将全球地址替换为内部地址。
例子:网络地址转换的过程
2 网络地址转换 NAT
- 当 NAT 路由器具有 n 个全球 IP 地址时,专用网内最多可以同时有 n 台主机接入到互联网。
- 可以使专用网内较多数量的主机轮流使用 NAT 路由器有限数量的全球 IP 地址。
- 通过 NAT 路由器的通信必须由专用网内的主机发起,因此,专用网内部的主机不能充当服务器用。
3 网络地址与端口号转换 NAPT
-
NAT 并不能节省 IP 地址。
-
NAPT 可以使多台拥有本地地址的主机,共用一个全球 IP 地址,同时和互联网上的不同主机进行通信。
-
使用运输层端口号的 NAT 叫做网络地址与端口号转换 NAPT(Network Address and Port Translation),而不使用端口号的NAT 就叫做传统的 NAT (traditional NAT)。
-
NAPT 把专用网内不同的源 IP 地址都转换为相同的全球 IP 地址,将 TCP 源端口号转换为新的 TCP 端口号(互不相同)。
-
收到从互联网发来的应答时,从 IP 数据报的数据部分找出运输层端口号,从 NAPT 转换表中找到正确的目的主机。
9 多协议标签交换 MPLS
-
MPLS (MultiProtocol Label Switching):互联网建议标准。
-
多协议:在 MPLS 的上层可以采用多种协议。
-
标签:MPLS 利用面向连接技术,使每个分组携带一个叫做标签 (label) 的小整数。标签交换路由器用标签值检索转发表,实现分组的快速转发。
(给数据包打上标签,用硬件进行转发,不需要去三层查看转发表?,效率更高) -
MPLS 并没有取代 IP,而是作为一种 IP 增强技术。
-
特点:
- 支持面向连接的服务质量;
- 支持流量工程,平衡网络负载;
- 有效地支持虚拟专用网 VPN。
9.1 MPLS 的工作原理
传统 IP 分组的转发:
- 当网络很大时,查找路由表要花费很多时间。
- 在出现突发通信时,缓存会溢出,引起分组丢失、传输时延增大和服务质量下降。
9.1.1 MPLS 基本工作过程
- MPLS 特点:
- 在 MPLS 域的入口处,给每一个 IP 数据报打上固定长度标签。
- 对打上标签的 IP 数据报在第二层(链路层)用硬件进行转发。
- 采用硬件技术对打上标签的 IP 数据报进行转发就称为标签交换。
- 可以使用多种数据链路层协议,如 PPP、以太网、ATM 以及帧中继等。
MPLS 协议的基本原理
MPLS 域
- MPLS 域 (MPLS domain) :指该域中有许多彼此相邻的路由器,并且所有的路由器都是支持 MPLS 技术的标记交换路由器 LSR(Label Switching Router)。
- LSR 同时具有标记交换和路由选择这两种功能。标记交换功能是为了快速转发,路由选择功能是为了构造转发表。
MPLS 的基本工作过程
- 找出标签交换路径 LSP。
各 LSR 使用标签分配协议 LDP (Label Distribution Protocol) 交换报文,找出和标签相对应的标签交换路径 LSP (Label SwitchedPath)。整个标签交换路径就像一条虚连接一样。 - 打标签,然后转发。
- 入口节点 (ingress node) 给进入 MPLS 域的 IP 数据报打上标签(实际上是插入一个 MPLS 首部),并按照转发表把它转发给下一个 LSR。以后的所有 LSR 都按照标签进行转发。
- 给 IP 数据报打标签的过程叫做分类 (classification)。
- 标签对换。
- 一个标签仅在两个 LSR 之间才有意义。
- LSR 要做两件事:转发,更新标记。
- 更新标记:把入标记更换成为出标记。称之为标签对换 (label swapping)。
- 去除标签。
- 当分组离开 MPLS 域时,MPLS 出口节点 (egress node) 把分组的标签去除。
- 把 IP 数据报交付给非 MPLS 的主机或路由器。
- 这种“由入口 LSR 确定进入 MPLS 域以后的转发路径”称为显式路由选择 (explicit routing)
- 与互联网中通常使用的“每一个路由器逐跳进行路由选择”有着很大的区别。
9.1.2 转发等价类 FEC
-
给 IP 数据报打标签的过程叫做分类 (classification)。
- 第三层(网络层)分类:只使用 IP 首部中的源和目的 IP 地址等。
- 大多数运营商实现了第四层(运输层)分类:除了要检查 IP 首部外,运输层还要检查 TCP 或 UDP 端口号。
- 有些运营商则实现了第五层(应用层)分类:进一步地检查数据报的内部并考虑其有效载荷。
-
转发等价类 FEC (Forwarding Equivalence Class) :路由器按照同样方式对待的分组的集合。
-
按照同样方式对待含义:从同样接口转发到同样的下一跳地址,并且具有同样服务类别和同样丢弃优先级等。
-
例如:
- 目的 IP 地址与某一个特定 IP 地址的前缀匹配的 IP 数据报;
- 所有源地址与目的地址都相同的 IP 数据报;
- 具有某种服务质量需求的 IP 数据报。
-
划分 FEC 的方法不受限制,由网络管理员来控制。
-
入口节点并不是给每一个 IP 数据报指派一个不同的标签,而是将属于同样 FEC 的 IP 数据报都指派同样的标签。
-
FEC 和标签是一一对应的关系。
FEC 用于负载平衡
自定义的 FEC 可以更好地管理网络的资源。这种均衡网络负载的做法也称为流量工程 TE (Traffic Engineering) 或通信量工程。
9.2 MPLS 首部的位置与格式
- MPLS 不要求下层的网络都使用面向连接的技术。
- MPLS 采用封装技术:在把 IP数据报封装成以太网帧之前,先要插入一个 MPLS 首部。
MPLS 首部的格式
给 IP 数据报打上标记就是在以太网帧首部和 IP 数据报首部之间插入一个 4 字节的 MPLS 首部。
- 标签值(占 20 位),可以同时容纳高达 220 个流(即 1048576 个流)。
- 试验(占 3 位)。保留用作试验。
- 栈S(占 1 位)。在有“标签栈”时使用。
- 生存时间 TTL(占 8 位),用来防止 MPLS 分组在 MPLS 域中兜圈子。
9.3 新一代的 MPLS
- MPLS 存在的问题:
- 控制协议(如 LDP)比较复杂,扩展性差,运行维护较困难。
- 协议 LDP 无法做到基于时延或带宽等要求的流量调度。
- 为灵活地选择流量的转发路径,还需要再使用资源预留协议 RSVP。
但是:- RSVP 的信令非常复杂,每个节点都要维护一个庞大的链路信息数据库。
- RSVP 只会选择一条最优路径,不支持等价多路径路由选择 ECMP(Equal-Cost Multipath Routing) 。
1 段路由选择协议 SR
- 新一代的 MPLS:段路由选择协议 SR (Segment Routing)。
- 段 (segment):标签,是转发指令的一种标识符。
- SR 工作原理:
- 基于标签交换,但不需要使用协议 LDP。
- 由源节点为发送的报文指定路径,并将路径转换成有序的段列表(Segment List),即 MPLS 标签栈,它被封装在分组首部。
- 网络中的其他节点就执行首部中的指令(即标签)进行转发。
2 控制器
即 SDN 控制器。负责:
- 收集并掌握全网的拓扑信息和链路状态信息,计算出分组应传送的整个路径。
- 给分组分配 SR 标签,指明分组从源点到终点的路径。
- SR 向 IPv6 演进,这就是 SRv6。SRv6 直接利用 IPv6 字段作为标签寻址 (Locator)。
10 软件定义网络 SDN 简介
- 软件定义网络 SDN(Software Defined Network)由斯坦福大学N. McKeown 于 2009 年首先提出。
- 谷歌于 2010 ~ 2012 年的数据中心网络 B4 进行了运行验证。
- 优点:
- 提高网络带宽利用率;
- 网络运行更加稳定;
- 管理更加高效简化;
- 运行费用明显降低
10.1 SDN 与协议 OpenFlow
- SDN
- 是一个体系结构,是一种设计、构建和管理网络的新方法或新概念。
- 把控制层面和数据层面分离,而让控制层面利用软件控制数据层面中的许多设备。
- OpenFlow
- SDN 体系结构中控制层面和数据层面之间的通信接口。
- 使控制层面的控制器可以对数据层面中的物理或虚拟设备进行直接访问和操纵。
- 在逻辑上是集中式的、基于流的。
- 注意:
- SDN 不是 OpenFlow。
- SDN 未规定必须使用 OpenFlow。
1 OpenFlow 数据层面:匹配 + 动作
- 数据层面的分组交换机或 OpenFlow 交换机完成“匹配 + 动作”。
- 称为广义转发。
- 匹配
对不同层次(链路层,网络层,运输层)首部中的字段进行匹配。 - 动作
转发,重写,丢弃等。
2 OpenFlow 数据层面:流表
- 流表 (flow table):规定“匹配 + 动作”。
- 流:穿过网络的一种分组序列,而在此序列中的分组都共享分组首部某些字段的值。
3 流表由远程控制器管理
SDN 远程控制器通过一个安全信道,使用 OpenFlow 协议来管理 OpenFlow 交换机中的流表。
4 流表结构
- 首部字段值:一组字段(12 个),用来使入分组的对应首部与之相匹配。匹配不上的分组被丢弃,或发送到远程控制器做更多的处理。
- 计数器:一组计数器,可包括已经与该表项匹配的分组数量,以及从该表项上次更新到现在经历的时间。
- 动作:一组动作。当分组匹配某个流表项时,把分组转发到指明的端口,或丢弃该分组,或把分组进行复制后再从多个端口转发出去,或重写分组的首部字段(第二、三和四层的首部字段)等。
10.2 SDN 体系结构
SDN 体系结构的四个关键特征
- 基于流的转发。流表规定转发规则。
- 数据层面与控制层面分离。二者不在同一个设备中。
- 网络控制功能位于数据层面交换机之外,用软件实现。
- 可编程的网络。
SDN 与传统网络的差别
- SDN
- 功能分散。交换机、SDN控制器、网络控制应用程序都是可以分开的实体。
- 可以由不同的厂商和机构来提供。
- 传统网络
- 控制层面、数据层面、协议的实现都垂直集成在一个机器里。
- 由单独的厂商提供。
10.3 SDN 控制器














































































































































