第4章 网络层
4.7 IP 多播
4.7.1 IP 多播的基本概念
1. 多播可大大节约网络资源
2. IP 多播
- 在互联网上进行多播就叫做 IP 多播。
- 互联网范围的多播要靠路由器来实现。能够运行多播协议的路由器称为多播路由器(multicast router)。当然它也可以转发普通的单播IP数据报。
- 从 1992 年起,在互联网上开始试验虚拟的多播主干网 MBONE (Multicast Backbone On the InterNEt)。 现在多播主干网已经有了相当大的规模。
3. 多播 IP 地址
- IP 多播所传送的分组需要使用多播 IP 地址。
- 在多播数据报的目的地址写入的是多播组的标识符。
- 多播组的标识符就是 IP 地址中的 D 类地址(多播地址)。每一个 D 类地址标志一个多播组。
- 多播地址只能用于目的地址,不能用于源地址。
4. 多播数据报
- 多播数据报和一般的 IP 数据报的区别就是它使用 D 类 IP 地址作为目的地址,并且首部中的协议字段值是 2,表明使用网际组管理协议 IGMP。
- 多播数据报也是 “尽最大努力交付” ,不保证一定能够交付多播组内的所有成员。
- 对多播数据报不产生 ICMP 差错报文。因此,若在 PING 命令后面键入多播地址,将永远不会收到响应。
4.7.2 在局域网上进行硬件多播
- 互联网号码指派管理局 IANA 拥有的以太网地址块的高 24 位为 00-00-5E。
- 以太网硬件地址字段中的第1字节的最低位为1时即为多播地址。
- 因此 TCP/IP 协议使用的以太网地址块的范围是
从00-00-5E
-00-00-00
到00-00-5E
-FF-FF-FF
不难看出,在每一个地址中,只有23位可用作多播。 - D 类 IP 地址可供分配的有 28 位,在这 28 位中的前 5 位不能用来构成以太网硬件地址。
由于多播 IP 地址与以太网硬件地址的映射关系不是唯一的,因此收到多播数据报的主机,还要在 IP 层利用软件进行过滤,把不是本主机要接收的数据报丢弃。
4.7.3 网际组管理协议 IGMP 和多播路由选择协议
1. IP 多播需要两种协议
(1)网际组管理协议 IGMP (Internet Group Management Protocol)
为了使路由器知道多播组成员的信息,需要利用网际组管理协议 IGMP 。
- IGMP 并非在互联网范围内对所有多播组成员进行管理的协议。
- IGMP 不知道 IP 多播组包含的成员数,也不知道这些成员都分布在哪些网络上。
- IGMP 协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格讲,是主机上的某个进程)参加或退出了某个多播组。
(2)多播路由选择协议
连接在局域网上的多播路由器还必须和互联网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员。这就需要使用多播路由选择协议。
- 多播转发必须动态地适应多播组成员的变化(这时网络拓扑并未发生变化)。请注意,单播路由选择通常是在网络拓扑发生变化时才需要更新路由。
- 多播路由器在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,而是还要考虑这个多播数据报从什么地方来和要到什么地方去。
多播数据报可以由没有加入多播组的主机发出,也可以通过没有组成员接入的网络。
2. 网际组管理协议 IGMP
(1)IGMP 是整个网际协议 IP 的一个组成部分
和 ICMP 相似,IGMP 使用 IP 数据报传递其报文(即 IGMP 报文加上 IP 首部构成 IP 数据报),但它也向 IP 提供服务。因此,我们不把 IGMP 看成是一个单独的协议,而是属于整个网际协议 IP 的一个组成部分。
(2)IGMP 的工作
第一阶段:加入多播组。 | |
---|---|
① | 当某个主机加入新的多播组时,该主机应向多播组的多播地址发送 IGMP 报文,声明自己要成为该组的成员。 |
② | 本地的多播路由器收到 IGMP 报文后,将组成员关系转发给互联网上的其他多播路由器。 |
第二阶段:探询组成员变化情况。 | |
① | 因为组成员关系是动态的,因此本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员。 |
② | 只要对某个组有一个主机响应,那么多播路由器就认为这个组是活跃的。 |
③ | 但一个组在经过几次的探询后仍然没有一个主机响应,则不再将该组的成员关系转发给其他的多播路由器。 |
(3)IGMP 采用的一些具体措施
具体措施 | |
---|---|
① | 在主机和多播路由器之间的所有通信都是使用 IP 多播。 |
② | 多播路由器在探询组成员关系时,只需要对所有的组发送一个请求信息的询问报文,而不需要对每一个组发送一个询问报文。默认的询问速率是每 125 秒发送一次。 |
③ | 当同一个网络上连接有几个多播路由器时,它们能够迅速和有效地选择其中的一个来探询主机的成员关系。 |
④ | 在 IGMP 的询问报文中有一个数值 N,它指明一个最长响应时间(默认值为 10 秒)。当收到询问时,主机在 0 到 N 之间随机选择发送响应所需经过的时延。对应于最小时延的响应最先发送。 |
⑤ | 同一个组内的每一个主机都要监听响应,只要有本组的其他主机先发送了响应,自己就可以不再发送响应了。 |
3. 多播路由选择
多播路由选择协议尚未标准化。
一个多播组中的成员是动态变化的,随时会有主机加入或离开这个多播组。
- 多播路由选择实际上就是要找出以源主机为根结点的多播转发树。
- 在多播转发树上的路由器不会收到重复的多播数据报。
- 对不同的多播组对应于不同的多播转发树。同一个多播组,对不同的源点也会有不同的多播转发树。
- 多播路由选择协议在转发多播数据报时使用三种方法:洪泛与剪除、隧道技术、基于核心的发现技术。
(1) 洪泛与剪除
这种方法适合于较小的多播组,而所有的组成员接入的局域网也是相邻接的。一开始,路由器转发多播数据报使用洪泛的方法(这就是广播)。为了避免兜圈子,采用了叫做反向路径广播 RPB (Reverse Path Broadcasting) 的策略。
RPB 的要点 | |
---|---|
① | 路由器收到多播数据报时,先检查它是否是从源点经最短路径传送来的。 |
② | 若是,就向所有其他方向转发刚才收到的多播数据报(但进入的方向除外),否则就丢弃而不转发。 |
③ | 如果存在几条同样长度的最短路径,那么只能选择一条最短路径,选择的准则就是看这几条最短路径中的相邻路由器谁的 IP 地址最小。 |
④ | 最后就得出了用来转发多播数据报的多播转发树,以后就按这个多播转发树转发多播数据报。避免了多播数据报的兜圈子,同时每一个路由器也不会接收重复的多播数据报。 |
⑤ | 如果在多播转发树上的某个路由器发现它的下游树枝(即叶节点方向)已没有该多播组的成员,就应把它和下游的树枝一起剪除。 |
⑥ | 当某个树枝有新增加的组成员时,可以再接入到多播转发树上。 |
(2)隧道技术 (tunneling)
(3) 基于核心的发现技术
- 这种方法对于多播组的大小在较大范围内变化时都适合。
- 这种方法是对每一个多播组 G 指定一个核心(core) 路由器,给出它的 IP 单播地址。核心路由器按照前面讲过的方法创建出对应于多播组 G 的转发树。
几种多播路由选择协议
- 距离向量多播路由选择协议 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)
4.8 虚拟专用网 VPN和网络地址转换 NAT
4.8.1 虚拟专用网 VPN
- 由于 IP 地址的紧缺,一个机构能够申请到的IP地址数往往远小于本机构所拥有的主机数。
- 考虑到互联网并不很安全,一个机构内也并不需要把所有的主机接入到外部的互联网。
- 假定在一个机构内部的计算机通信也是采用 TCP/IP 协议,那么从原则上讲,对于这些仅在机构内部使用的计算机就可以由本机构自行分配其 IP 地址。
1. 专用网
(1)本地地址和全球地址
本地地址 | 仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向互联网的管理机构申请。 |
---|---|
全球地址 | 全球唯一的 IP 地址,必须向互联网的管理机构申请。 |
(2)RFC 1918 指明的专用 IP 地址
在内部使用的本地地址就有可能和互联网中某个 IP 地址重合,这样就会出现地址的二义性问题。RFC 1918 指明了一些专用地址 (private address)。专用地址只能用作本地地址而不能用作全球地址。在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。
地址 | 说明 | |
---|---|---|
① | 10.0.0.0 到 10.255.255.255 | A类,或记为10.0.0.0/8 ,它又称为 24 位块 |
② | 172.16.0.0 到 172.31.255.255 | B类,或记为172.16.0.0/12 ,它又称为 20 位块 |
③ | 192.168.0.0 到192.168.255.255 | C类,或记为192.168.0.0/16 ,它又称为 16 位块 |
采用这样的专用 IP 地址的互连网络称为专用互联网或本地互联网,或更简单些,就叫做专用网。因为这些专用地址仅在本机构内部使用。专用IP地址也叫做可重用地址 (reusable address)。
2. 虚拟专用网 VPN
(1)虚拟专用网VPN (Virtual Private Network)
利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网VPN (Virtual Private Network)。
“专用网” 是因为这种网络是为本机构的主机用于机构内部的通信,而不是用于和网络外非本机构的主机通信。
“虚拟” 表示“好像是”,但实际上并不是,因为现在并没有真正使用通信专线,而VPN只是在效果上和真正的专用网一样。
(2)虚拟专用网 VPN 构建
如果专用网不同网点之间的通信必须经过公用的互联网,但又有保密的要求,那么所有通过互联网传送的数据都必须加密。
一个机构要构建自己的 VPN 就必须为它的每一个场所购买专门的硬件和软件,并进行配置,使每一个场所的 VPN 系统都知道其他场所的地址。
(3)用隧道技术实现虚拟专用网
(4) 内联网 intranet 和外联网 extranet
① 它们都是基于 TCP/IP 协议的。
② 由部门 A 和 B 的内部网络所构成的虚拟专用网 VPN 又称为内联网 (intranet),表示部门 A 和 B 都是在同一个机构的内部。
③ 一个机构和某些外部机构共同建立的虚拟专用网 VPN 又称为外联网 (extranet)。
(5)远程接入 VPN(remote access VPN)
远程接入 VPN (remote access VPN)可以满足外部流动员工访问公司网络的需求。在外地工作的员工拨号接入互联网,而驻留在员工 PC 机中的 VPN 软件可在员工的 PC 机和公司的主机之间建立 VPN 隧道,因而外地员工与公司通信的内容是保密的,员工们感到好像就是使用公司内部的本地网络。
4.8.2 网络地址转换 NAT
- 网络地址转换 NAT (Network Address Translation) 方法于1994年提出。
- 需要在专用网连接到互联网的路由器上安装 NAT 软件。装有 NAT 软件的路由器叫做 NAT路由器,它至少有一个有效的外部全球IP地址。
- 所有使用本地地址的主机在和外界通信时,都要在 NAT 路由器上将其本地地址转换成全球 IP 地址,才能和互联网连接。
1. 网络地址转换的过程
地址转换过程 | |
---|---|
① | 内部主机 A 用本地地址 I P A IP_A IPA 和互联网上主机 B 通信所发送的数据报必须经过 NAT 路由器。 |
② | NAT 路由器将数据报的源地址 I P A IP_A IPA 转换成全球地址 I P G IP_G IPG ,并把转换结果记录到NAT地址转换表中,目的地址 I P B IP_B IPB 保持不变,然后发送到互联网。 |
③ | NAT 路由器收到主机 B 发回的数据报时,知道数据报中的源地址是 I P B IP_B IPB 而目的地址是 I P G IP_G IPG 。 |
④ | 根据 NAT 转换表,NAT 路由器将目的地址 I P G IP_G IPG 转换为 I P A IP_A IPA ,转发给最终的内部主机 A。 |
- 当 NAT 路由器具有 n 个全球 IP 地址时,专用网内最多可以同时有 n 台主机接入到互联网。这样就可以使专用网内较多数量的主机,轮流使用 NAT 路由器有限数量的全球 IP 地址。
- 通过 NAT 路由器的通信必须由专用网内的主机发起。专用网内部的主机不能充当服务器用,因为互联网上的客户无法请求专用网内的服务器提供服务。
2. 网络地址与端口号转换 NAPT
(1) 为了更加有效地利用 NAT 路由器上的全球IP地址,现在常用的 NAT 转换表把运输层的端口号也利用上。这样,就可以使多个拥有本地地址的主机,共用一个 NAT 路由器上的全球 IP 地址,因而可以同时和互联网上的不同主机进行通信。
(2) 使用端口号的 NAT 叫做网络地址与端口号转换NAPT (Network Address and Port Translation),而不使用端口号的 NAT 就叫做传统的 NAT (traditional NAT)。
(3) NAPT地址转换表举例
方向 | 字段 | 旧的IP地址和端口号 | 新的IP地址和端口号 |
---|---|---|---|
出 | 源IP地址:TCP源端口 | 192.168.0.3:30000 | 172.38.1.5:40001 |
出 | 源IP地址:TCP源端口 | 192.168.0.4:30000 | 172.38.1.5:40002 |
入 | 目的IP地址:TCP目的端口 | 172.38.1.5:40001 | 192.168.0.3:30000 |
入 | 目的IP地址:TCP目的端口 | 172.38.1.5:40002 | 192.168.0.4:30000 |
APT把专用网内不同的源 IP 地址,都转换为同样的全球 IP 地址。但对源主机所采用的 TCP 端口号(不管相同或不同),则转换为不同的新的端口号。因此,当 NAPT 路由器收到从互联网发来的应答时,就可以从 IP 数据报的数据部分找出运输层的端口号,然后根据不同的目的端口号,从 NAPT 转换表中找到正确的目的主机。
4.9 多协议标记交换 MPLS
- IETF于1997年成立了 MPLS 工作组,开发出一种新的协议——多协议标记交换 MPLS (MultiProtocol Label Switching)。
- “多协议” 表示在 MPLS 的上层可以采用多种协议,例如:IP,IPX;可以使用多种数据链路层协议,例如:PPP,以太网,ATM 等。
- “标记” 是指每个分组被打上一个标记,根据该标记对分组进行转发。
- MPLS 具有以下三个方面的特点:
① 支持面向连接的服务质量;
② 支持流量工程,平衡网络负载;
③ 有效地支持虚拟专用网 VPN。
MPLS 并没有取代 IP,而是作为一种 IP 增强技术,被广泛地应用在互联网中
4.9.1 MPLS 的工作原理
1. 基本工作过程
(1)基本原理
① 在 MPLS 域的入口处,给每一个 IP 数据报打上固定长度 “标记”,然后对打上标记的 IP 数据报 用硬件进行转发。
② 采用硬件技术对打上标记的 IP 数据报进行转发就称为标记交换。
③ “交换”也表示在转发时不再上升到第三层查找转发表,而是根据标记在第二层(链路层) 用硬件进行转发。
④ MPLS 域 (MPLS domain) 是指该域中有许多彼此相邻的路由器,并且所有的路由器都是支持 MPLS 技术的标记交换路由器 LSR (Label Switching Router)。
⑤ LSR 同时具有标记交换和路由选择这两种功能,标记交换功能是为了快速转发,但在这之前LSR 需要使用路由选择功能构造转发表。
(2)MPLS 的基本工作过程
① MPLS 域中的各 LSR 使用专门的标记分配协议 LDP 交换报文,并找出标记交换路径 LSP。各 LSR 根据这些路径构造出分组转发表。
② 分组进入到 MPLS 域时, MPLS 入口结点把分组打上标记,并按照转发表将分组转发给下一个 LSR。给 IP 数据报打标记的过程叫做分类 (classification)。
③ 一个标记仅仅在两个标记交换路由器 LSR 之间才有意义。分组每经过一个 LSR,LSR 就要做两件事:一是转发,二是更换新的标记,即把入标记更换成为出标记。这就叫做标记对换 (label swapping)。
入接口 | 入标记 | 出接口 | 出标记 |
---|---|---|---|
0 | 3 | 1 | 1 |
项目含义:从入接口 0 收到一个入标记为 3 的IP 数据报,转发时,应当把该IP数据报从出接口 1 转发出去,同时把标记对换为 1。
④当分组离开 MPLS 域时,MPLS 出口结点把分组的标记去除。再以后就按照一般分组的转发方法进行转发。
上述的这种“由入口 LSR 确定进入 MPLS 域以后的转发路径”称为显式路由选择 (explicit routing),它和互联网中通常使用的“每一个路由器逐跳进行路由选择”有着很大的区别。
2. 转发等价类 FEC
“转发等价类”FEC (Forwarding Equivalence Class) 就是路由器按照同样方式对待的分组的集合。
- "按照同样方式对待”表示:从同样接口转发到同样的下一跳地址,并且具有同样服务类别和同样丢弃优先级等。
- 划分 FEC 的方法不受什么限制,这都由网络管理员来控制,因此非常灵活。
- 入口结点并不是给每一个分组指派一个不同的标记,而是将属于同样 FEC 的分组都指派同样的标记。
- FEC 和标记是一一对应的关系。
(1)FEC 用于负载平衡
(2)流量工程
- 网络管理员采用自定义的 FEC 就可以更好地管理网络的资源。
- 这种均衡网络负载的做法也称为流量工程 TE (Traffic Engineering) 或通信量工程。
4.9.2 MPLS 首部的位置与格式
- MPLS 并不要求下层的网络都使用面向连接的技术。
- 下层的网络并不提供打标记的手段,而 IPv4 数据报首部也没有多余的位置存放 MPLS 标记。
- 这就需要使用一种封装技术:在把 IP 数据报封装成以太网帧之前,先要插入一个 MPLS 首部。
- 从层次的角度看,MPLS 首部就处在第二层和第三层之间。
“给 IP 数据报打上标记”其实就是在以太网的帧首部和 IP 数据报的首部之间插入一个 4 字节的 MPLS 首部。
1. MPLS 首部的格式
MPLS 首部共包括以下四个字段:
(1) 标记值(占 20 位)。可以同时容纳高达 220 个流(即 1048576 个流)。实际上几乎没有哪个 MPLS 实例会使用很大数目的流,因为通常需要管理员人工管理和设置每条交换路径。
(2) 试验(占 3 位)。目前保留用作试验。
(3) 栈S(占 1 位)。在有“标记栈”时使用。
(4) 生存时间TTL(占 8 位)。用来防止 MPLS 分组在 MPLS 域中兜圈子。