Internet Protocol: Routing IP Datagrams
网际协议:转发IP数据报
1. 第六章,我们介绍了IP数据报的格式,它刻画的是网际协议静态的一面。本章我们介绍路由器如何转发IP数据报,以及如何把它们交付给最终目的站。
2. 过去的传统,术语路由选择(routing)在Internet分组交换系统中,指为要发送的分组选择一条路径的过程。但是近来,工程人员采用转发(forwarding)来表示分组选择路径的过程。
术语路由器(router)则是指做出这种分组选择路径的一台计算机。
3. 转发(forwarding)发生在几个层级:
1)例如,在用交换机连接的由多个物理网段构成的以太网内,从以太网帧开始进入网络直到交付给目的主机,
帧的转发都是由交换机负责的。这种内部转发完全自包含在网络内部。外部的机器无法参与决策,它们
仅仅把网络看成是一个接受并交付分组的实体。(称为单个物理网络内部的转发forwarding)
2)多个物理网络组成的一个虚拟网络的转发 - IP转发
4. 多归属主机:任何具有多个网络连接的计算机都可以充当路由器,比如在实际生活中我们有时会用
装有Linux操作系统的计算机当作路由器来使用。
5. 直接交付和间接交付
1)直接交付:是指把数据报从一台机器通过物理网络直接传输到另一台机器,这是所有互联网通信的基础,
只有当两台机器同时连接到同一底层物理传输系统是(比如同一个以太网),才能进行直接交付。
2)间接交付:目的站不在一个直接相连的网络中时,从而强迫发送方把数据报传递给一个路由器进行交付。
TCP/IP互联网中的路由器形成一个相互协作的互连结构。数据报从一个路由器传递到下一个路由器,
知道抵达一个可直接交付数据报的路由器。
6. 表格驱动IP转发
IP转发算法使用每台机器上的一个数据结构(IP路由表)来存储有关可能的目的站及怎样达到目的站的信息。
IP路由表(IP routing table)正式名称是网际协议路由表(Internet Protocol routing table),简称路由表。
由于主机或路由器都为数据报选择路由,因此它们都有IP路由表。当主机或路由器中的IP转发软件需要传输数据报时,它就查询路由表来决定把数据报发往何处。
7. 下一跳转发
使用目的地址的网络部分而不是完整的主机地址,使转发效率很高,同时也可以让路由表保持较小。
典型的情况是,一个路由表包含许多对(N,R),其中N是目的网络的IP地址(网络部分),R是通往网络N的路径上“下一个”路由器的IP地址(完整的IP地址)。路由器R称为下一跳(next hop),用路由表为每个目的站存储下一跳的做法称为下一跳路由选择(next-hop routing)或下一跳转发(next-hop forwarding).
因此,路由器R中的路由表仅仅指明了从R到某个目的网络的路径上的下一步——路由器并不知道到目的站的完整路径。
路由表中每个表项指向一个可通过单个网络到达的路由器,理解这一点很重要。也就是说,机器M的路由表中列出的所有路由器必须位于M直接相连的网络上。当一个数据报准备好离开M时,IP软件找到目的IP地址,并提取地址的网络部分,然后M使用网络部分做出转发决策,选择一个可直接达到的路由器。
(这样的话,IP路由表的(N,R)对中R的取值应该比较少。但这并不表示IP路由表很小。路由表的大小取决于互联网中网络N的数量。)
8. 默认路由
另一种用来隐藏信息和保持路由表容量较小的技术是把多个表项合并成一个默认表项。
其思路是:
IP软件首先在路由表中查找目的网络,如果表中没有路由,则转发软件把数据报发给一个默认路由器。
当一个网点的本地地址集很小,并且只有一条到互联网的连接时,默认转发尤其有用。因为它们通过唯一的路由器通向互联网其余部分,默认路由可以很好的发挥作用。
转发决策有两种测试组成:一个用于本地网络,另一个默认指向唯一的路由器。即使网点中包含多个本地网络,转发也很简单,因为它只包括对几个本地网络的测试,外加一个针对所有其它目的站的默认测试。
9. Host-Specific Routes(特定主机的路由)
我们知道所有的转发是基于网络而不是基于个别主机的,但是多数的IP转发软件允许指明每个主机的路由作为特例。(也就是说我们为某个特定的主机来指定一条路由)指明每个主机的路由,使本地网络管理员能够更好地控制网络的使用,允许测试,还可出于安全目的来控制访问。在调试网络连接或路由表时,为单个主机指定一条特殊路由的能力尤其有用。
10. IP转发算法(原型算法)
RouteDatagram(Datagram, RoutingTable)
{
从IP数据报中抽取出目的IP地址D,计算出网络前缀N;
if N matches any directly connected network address
通过该直接网络,将数据报运送到目的地址D(涉及到用ARP协议将D转换为物理地址);
else if IP路由表含有host-specific route for D
将数据报发送到IP路由表中的“下一跳”地址;
else if IP路由表含有一个网络地址N的路由
将数据报发送到IP路由表中的“下一跳”地址;
else if IP路由表含有一个“默认路由”
将数据报发送到IP路由表中的“默认路由”地址;
else 发送错误
}
阅读(843) | 评论(0) | 转发(0) |