《TCP/IP协议族》笔记
交付(delivery)是指在网络层的控制下,底层各网络对分组的处理方式。包括 直接交付 和 间接交付。
转发(forwarding)指的是把分组交付到下一站的方式。有两种不同形式的转发:基于分组目的地址的转发 和 基于附加在分组上的标记的转发。
目标:
- 讨论分组在网络层的交互以及直接交付和间接交付之间的区别;
- 讨论分组在网络层的转发以及基于目的地址的转发和基于标记的转发之间的区别;
- 讨论不同的转发技巧,包括下一跳方法、特定网络方法、特定主机方法以及默认方法;
- 讨论分类编址和无分类编址时路由表的内容,以及一些搜索路由表的算法;
- 介绍MPLS技术,并说明如何用它来实现基于标记的转发;
- 介绍路由器的组成构件,并解释各个构件的作用以及与其他构件之间的关系。
交付
网络层监视底层物理网络对分组的处理过程,我们把这种处理定义为分组的交付。
直接交付
直接交付(direct delivery)时,分组的终点是一台与交互这者连接在同一个网络上的主机。
在直接交付时,发送方通过目的IP地址找出目的物理地址,然后IP软件把目的IP地址和目的物理地址一起交付给数据链路层用于实际的交付。 这个过程称为把 IP地址映射到物理地址,ARP协议动态地把IP地址映射为相应的物理地址。
间接交付
如果目的主机与交付者不在同一个网络上,分组就要间接地交付。在间接交付(indirect delivery)时,分组经过了一个又一个路由器,最后到达与终点在同一个网络上的路由器。
转发
如今因特网是由许多链路组合构成的,所以转发也就是将分组交付给下一跳。
虽然IP协议在最初设计时是一个无连接的协议,但是将IP作为面向连接的协议来使用也是当前的一种趋势。
当IP作为无连接的协议时转发的基础是IP数据报的目的地址;而当IP作为面向连接的协议时,转发的基础则是附加在IP数据报上的标记。
基于目的地址的转发
传统方式---基于目的地址的转发,要求主机或路由器具有一张路由表才能进行转发。
当主机有分组要发送,或路由器收到分组来进行转发时,就搜索路由表。因为路由表的表项数量过多将导致路由表的查找效率非常低。
转发技术
使用一些技术可以使路由表的规模变为可管理的,同时还能处理一些如安全性这样的问题。
下一跳方法
下一跳方法(next hop method)的技术可以减少路由表中的内容。
这种技术就是在路由器中只保留下一跳的地址,而不是保留完整路由的信息。
特定网络方法
特定网络方法(network-specific method)能够使路由表长度变小并简化查找过程。
此时,路由表并不是对连接在同一个物理网络上的每一台主机都设置一个表项,而是只用一个表项来定义目的网络本身的地址。
特定主机方法
在使用 特定主机方法(host-specific method)时,目的主机的地址在路由表中要给出。
默认方法
默认方法(default method)通常称为默认路由,默认表项(通常定义网络地址为 0.0.0.0)。
使用分类编址时的转发
无子网划分的转发
全球大多数路由器都没有使用子网划分。
在这种情况下,一个典型的转发模块要使用三张表。每个单播类别(A,B,C)三张表;(如果路由器支持多播,那么还要增加一张处理D类地址的表),有了这三张表就使得搜索的效率更高。
每张路由表至少有下面三列:
- 目的网络和网络地址;
- 下一跳地址;
- 接口号。
有子网划分的转发
在使用分类编址时,子网划分发生在组织的内部。处理子网划分的路由器不是在该组织站点的边界上,就是在站点边界的里面。
如果这个组织使用了可变长的子网划分,那么我们就需要多张路由表,否则就只需要一张就够了。
使用无分类编址时的转发
在使用无分类编址时,整个地址空间是完整的,没有划分类别。
我们需要在路由器表中包含 掩码(/n)。需要有另外的一列包含对应地址块的掩码。
换言之,虽然一个分类编址的路由表可以设计为三列,但无分类编址的路由表至少需要四列。
点对点网络通常在路由表中没有表项,因为没有主机连接到它们。
地址聚合
当我们使用分类编址时,一个组织之外的每一个站点在路由表中只有一个表项。这个表项定义了一个对应的站点,而不管该站点是否又划分了子网。当分组到达路由器时,路由器检查相应的表项并转发这个分组;
当我们使用无分类编址时,路由表的表项数量很可能会增加,这是因为无分类编制的意图就是把整个的地址空间划分为很多可管理的地址块。
路由表的规模变大就会导致搜索路由表的时间变长。为了解决这个问题,人们设计了 **地址聚合(Address aggregation)的概念。
小地址被聚合成为一个更大的地址块。如果每个组织的地址不能被聚合到一个地址块中,那么路由器就需要一个更长的路由表。
虽然地址聚合的概念和子网划分的概念相似,但我们并没有一个共同的站点,也就是说每一个组织的网络是独立的。另外,我们还可以有多级聚合。
最长掩码匹配
无分类编址的路由器使用了另一个原则,即 最长掩码匹配(longest mask matching)。这个原则指出,路由表按照从最长掩码到最短掩码来排序。
多级路由选择
要解决路由表过于庞大的问题,我们可以在路由表中建立分等级的概念。像因特网中的主干ISP、地区ISP和本地ISP。
地理区域化路由选择
为了进一步缩小路由表的长度,我们需要把多级路由选择进一步延伸,以包括地理区域化的路由选择。
如,把一块地址块给欧洲,一块给亚洲······,这样对于路由器来说,发往欧洲的分组在路由表中只需要一个表项。
路由表的查找算法
分类编址搜索路由表的算法必须要做适当的调整才能使无分类编址的路由选择更加有效。
使用分类编址时的查找
在使用分类编址的时候,路由表被组织成列表的形式。通常包括A、B、C类三张表。
在无分类中的查找
在使用无分类编址时,最简单但不是最有效的搜索方法称为 最长前缀匹配。但这种类型的
基于标记的转发
在一个无连接的网络中(数据报方式),路由器根据分组首部的目的地址来转发分组;在一个面向连接的网络中(虚电路方式),交换机则根据附加在分组上的标记来转发该分组。
路由选择通常基于对路由表内容的搜索,而交换机则可以用一个索引访问交换表完成。换言之,路由选择涉及到搜索过程,而交换则涉及直接的访问。
当转发短发得到分组的目的地址后,它就需要埋头在掩码列中开始搜索。对于每一个表项,它都要应用掩码来求出分组的目的网络地址,然后再查看路由表中的网络地址,直到找到相匹配的网络地址。然后路由器提取出要传递给ARP 协议的下一跳和接口号,以便将该分组交付到下一跳。
因为标记被当作是交换表的索引,所以可以立刻在表中找到相应的信息。
MPLS
多协议标记交换(Multi-Protocol Label Switching),在这个协议中,因特网传统路由器可以被MPLS路由器所取代,这些MPLS路由器既可用作路由器,也可用作交换机。当它用作路由器使用时,它可以根据目的地址来转发分组;而当它用作交换机使用时,又能够基于标记来转发分组。
一个新的首部
要使用像IP这样的协议来模仿面向连接的交换,首先要做的事情就是为分组增加一个字段,以便携带标记。IPv4分组格式不允许此类扩展(虽然在IPv6分组格式中已提供了这个字段)。
解决办法就是将IPv4分组封装在一个MPLS分组中。完整的IP分组作为净负荷被封装到一个MPLS分组中,并附加上MPLS首部。
MPLS首部是32位(4字节)长。
标记,这个20位字段定义为标记,他在路由器中被用作路由表的索引;
Exp,这个3位字段保留作为实验用;
S,这个1位的堆栈字段定义了堆栈中的子首部的状态;
TTL,TTL值。
多级交换
MPLS中的标记堆栈使得多级交换成为可能。
路由器的结构
当我们讨论转发和路由选择时,我们把路由器画成一个黑盒子。它从一个输入端口接收进入的分组,再通过路由器找出分组离开的输出端口,然后把分组从输出端口发送出去。
构件
一个路由器有四个构件:输入端口(Input port),输出端口(Output port),路由选择处理器(Routing processor),交换结构(Switching fabric)。
输入端口
输入端口执行路由器的物理层和链路层的功能。
它从接收到的信号中得到比特流,并把帧拆装后得到分组,同时还要进行差错的检测和纠正。分组准备就绪后,就可以通过网络层进行转发。除了物理层处理器和数据链路层处理器之外,输入端口还有一些缓存,用来在分组被传送到交换结构之前进行暂存。
输出端口
输出端口与输入端口功能一样,但是顺序相反。
路由选择处理器
路由选择处理器执行网络层的功能。
它用目的地址来找出下一跳地址,与此同时,还要找出将分组发送出去的端口号。这个动作有时称为 查表。
交换结构
在路由器中最困难的任务就是把分组从输入队列搬移到输出队列中。完成这件事的速度直接影响到输入/输出队列的大小和分组交付的总延时。
纵横交换结构
纵横交换结构(cross switch)把n个输入和n个输出连接成一个栅格,在每一个交叉点(cross point)使用了电子微开关。
榕树交换结构
比纵横交换结构更现实一些的是榕树交换结构(banyan switch)。
Batcher 榕树交换结构
榕树交换结构存在的问题是有可能会出现内部碰撞,哪怕两个分组并不是要到相同的输出端口去。解决这个问题的方法是对到达的分组根据他们的目的端口进行排序。
重要术语
榕树交换结构; 间接交付;
Batcher榕树交换结构; 输入端口;
纵横交换结构; 最长掩码匹配;
交叉点; 最长前缀匹配;
默认方法; 特定网络方法;
交付; 下一跳地址;
直接交付; 下一跳方法;
转发; 输出端口;
特定主机方法; 路由选择处理器;