5.7 IP隧道
IP隧道技术顾名思义,是用于在两片网络区域间直接建立通信的通路,而绕过此间的其他网络的一种技术,如下图所示:
网络A与网络B使用IPv6技术,使用IP隧道技术,便可以绕过网络C。
那么其工作原理是怎样的呢?
IP隧道技术将从网络A中发过来的IPv6的包统合为一个数据,并为之追加一个IPv4的首部,再转发给网络C。通常情况下,IP首部后紧接着的是TCP或是UDP首部,然而现如今,IP首部后紧跟IP或者IPv6首部的情况越来越多。这种在网络层的首部后面继续追加网络层首部的通信方法就叫做“IP隧道”,如下图所示:
那么为什么要有IP隧道技术呢?首先我们要知道,构造一个既支持IPv4又支持IPv6的网络是一项极其庞大的工程,路由表的数量有可能会翻一倍,给网络管理员增加了不小的负担。那么给路由器设置,令其支持IPv4和IPv6可不可以呢?可以,但是相当费劲。
骨干网上通常使用IPv4或IPv6进行传输,那些不支持其中某种的路由器就以采用IP隧道的技术转发数据包,IP地址则无需在路由器中进行管理而是在一旁进行统一管理。
一般什么数据包会使用IP隧道技术呢?书中给出了以下几种例子:
- Mobile IP
- 多播包的转播
- IPv4网络中传送IPv6的包(6to4,指IPv6包使用IPv4进行封装,使其看起来像是IPv4)
- IPv6网络中传送IPv4的包(4to6)
- 数据链路帧通过IP包发送(L2TP,指数据链路中的PPP包用IP包转发的一种技术)
书中给出了一种利用IP隧道转发多播消息的例子,见下图:
5.8 其他IP相关技术
这个部分我们就粗略的过一遍吧。
首先提到了IP多播相关技术,多播通信时确认接收端是否存在相当重要。确认的方式是MLD(Multicast Listener Discovery,多播监听发现),这也是IPv4中IGMP(Internet Group Management Protocol)he IPv6中ICMPv6的重要功能之一。
这之后是IP任播技术,该技术重要勇于报警电话110和消防电话119。当人们拨打110或者119是,接收的电话不止一个,而是拨打到一个区域管辖范围内的所有公安或者消防部门。这背后使用到的技术就是IP任播。
IP任播是指为那些提供同一种服务的服务器配置同一个IP地址,并与其中最近的服务器进行通信的一种方法。既可以适用于IPv4也可以适用于IPv6。
其中最有名的应用应当是DNS根域名服务器。此前我们介绍DNS技术时,多多少少有所提及。
世界上一共有13种类型(历史原因)的根服务器,但想想就知道不可能只有13处,目前全世界一共有上千个根DNS服务器的镜像服务器,通过IP任播技术,就可以让这些服务器遍布世界的各个角落。
虽然听上去IP任播很方便,但是其无法保证第一个包和第二个包都发送给同一个主机。使用UDP的时候自然没有问题,但若使用的是TCP或者UDP中要求连续的多个包进行通信的情况时,就显得有些力不从心了。
之后涉及到的内容有关于通信质量控制。既然我们有了IP协议,那么如何评价IP协议的好坏,如何保证其服务质量(QoS:Quality of Service),就成了一个关键的问题。
通信线路上的拥塞也叫做收敛,当网络发生收敛是,路由器和集线器的buffer会溢出,出现大量的丢包现象。
通信质量,包括带宽、延迟、时延波动等情况,路由器在内部缓存中可以用先处理那些要求保证通信质量的包,有时甚至不得已丢弃那些没有优先级的包以保证通信质量。
为了控制通信质量,人们提出了RSVP(Resolution Reservation Protocol,资源预留协议)技术,其包括两个内容,提供点对点的详细优先控制(IntServ),另一个则是提供相对较为粗粒度的优先控制(DiffServ)。
简要来说,IntServ提供的是对特定应用之间的通信的控制。特定应用指“源IP、目标IP、源端口、目标端口、以及协议号”五项内容完全一致。其涉及的通信并非一直进行,而只是在必要的时候进行,在路由器上进行“流量设置“,使用的协议正式RSVP。
而DiffServ则更为灵活(也更粗糙),其会根据某个特定的供应商进行顾客排名,从而进行数据包的优先处理。其控制的网络叫做DiffServ域。该域中的路由器会对所有进入该域中IP包首部的DSCP字段进行替换,即进行优先级设置。
既然讲了流量控制,那么接下来就可以讲讲什么叫做显式拥塞通知。
当网络发生拥塞时,主机应当减少数据包的发送。虽然TCP也可以控制网络拥塞,但是它是通过数据包的实际损坏情况来判断是否发生拥塞,这种方法并不能在数据包损坏之前减少数据包的发送量。
为了解决这个问题,人们使用ECN(Explicit Congestion Notification,显式拥塞通知),其将IP首部的TOS字段替换为ECN字段,在TCP的保留位中增加CWR(Congestion Window Reduced,拥塞窗口减少)和ECE(ECN-Echo)标志.
ECN的机制概括起来就是,在发送包的IP首部中记录路由器是否遇到了拥塞,并在返回包的TCP首部中通知是否发生过拥塞。拥塞检查在网络层进行,而拥塞通知则在传输层进行,两层相互协助,实现了显示拥塞通知的功能。
最后一部分,有关于Mobile IP,即移动设备(例如手机、笔记本等)的IP。
移动设备进行通信时, 一旦连接的子网发生变化,则无法通过TCP继续通信(比如从数据连接切换到WiFi会有延迟,而WiFi切换到移动,则会断开连接)。
UDP通信也不行,但是鉴于UDP是面向非连接的协议,但或许可以在应用层面上处理变更IP地址的问题。
所以,Mobile IP登上了历史舞台。这种技术在主机所连接的子网IP发生变化时,令主机IP地址仍保持不变,应用不需要做任何改动。下图则是书中给出的一个具体用例:
最后需要提的是,Mobile IPv6,比起Mobile IP,更加完善。
本篇小结
5.7与5.8小节是本章最后两节。
主要介绍的技术是IP隧道,其原理也简单,就是给IP包的首部再加包,令其可以如同拿了门禁卡一般,在不同协议的网络层中畅通无阻。
其余的IP相关技术,提到了IP多播、任播,任播有一个重要的应用范例就是13个DNS根域名服务器部署在全世界各地。
之后提到了一部分做通信控制的相关内容,提到了RSVP,资源预留协议,其中既有点对点详细控制的IntServ,又有粗却灵活的DiffServ,两者工作的原理都是对IP包首部中的字段进行替换。
而显示拥塞通知则是用到了ECN(就是显示拥塞通知的意思)技术,其工作原理也是如此,替换的是IP包首部中的TOS字段。机制即在发送包的IP首部中记录路由器是否遇到了拥塞,并在返回包的TCP首部中通知是否发生过拥塞。
最后,Mobile IP,应用场景为移动设备因为各种原因出现IP更换时,令其IP地址保持不变的一种方式。
到此为止,IP层的相关内容已经介绍完了,较为浅显,还有很多可以深挖的地方。下一章正式进入,与网络层同样重要的“传输层”,领略TCP与UDP的赫赫威名。