IPv6最开始设计并没有隧道技术,但IPv4实在应用太普及了,IPv6的网络改造不可能将IPv4的网络弃之不用,这样就要让IPv4和IPv6两种协议在同一个网络中共存。使用中,有些地方IPv6和IPv6之间,或者IPv4和IPv4之间的网络是隔离的,就需要将经过IPv4网络的IPv6打通,将经过IPv6网络的IPv4打通,IPv6隧道技术应运而生。隧道技术绝对是一种为了网络融合设立的标准,本质上就是报文头的多层叠加,这样极大地降低网络转发效率,因为以太网报文的最大长度是固定的,报文头长度占比越大,转发效率越低。不管是IPv6-Over-IPv4还是IPv4-Over-IPv6,其报文内容都要包含两个报文头,而且IPv6报文头本来就长,IPv4若本身就是MPLS网络,报文头的内容就更多了。
IPv6隧道已有不少种,比如:基于MPLS网络跑IPv6的6PE技术;基于GRE的IPv6隧道技术,其可以在IPv4的GRE隧道上承载IPv6数据报文;基于UNDP的IPv6隧道技术,其解决了传统NAT不能够支持IPv6-over-IPv4数据包穿越的问题,这种技术将IPv6数据封装在UDP载荷中穿越NAT,叫做Teredo隧道;还有用于简化隧道配置的代理技术,提供自动的配置手段;ISATAP隧道、手工隧道、IPv4兼容IPv6自动隧道等等,IPv6隧道形式多样,之所以这么多种,主要还是为了适配现有的IPv4网络,IPv4网络中GRE、MPLS、NAT等技术应用普遍,IPv6需要能够穿透这些网络才能真正达到与IPv4共存。IPv6隧道技术俨然已经成为IPv6技术的重要组成部分。
如今,全网开启建设IPv6网络的热潮,绝大多数是在现有的IPv4网络上改造,即保持原有的IPv4网络应用不变,再开通IPv6网络以便支持IPv6用户,两大网络技术共存到处都需要隧道技术。在这里我们不去具体讲这些隧道,每种隧道的特点和实现方式在网络上都能搜索得到,掌握起来也并不复杂,每台网络设备都会提供每种隧道如何使用和配置的指导。但是,如果真正想要用起来,必须要注意一些技术坑,避免掉进去,走很多弯路。
MTU问题
隧道使用首先要考虑MTU问题,隧道的最大传输单元和分段:IPv6的MTU最小值为1280字节,而经过tunnel后又增加了IPv4的包头使得数据包的MTU由1500减少到1480字节。带有隧道封装报文的报文头要比正常报文长,一个报文在加封装之前,还没有超过最大以太帧长,加上MTU就可能超过了,这种处于边界值的报文要处理好分片问题,否则就会因为报文长度问题而无法通过。隧道的MTU支持静态指定和动态协商,我们可以将隧道的MTU改大一些,这样避免出现加隧道后报文超过最大以太帧,要分片的问题,这样处理得当虽没有问题,但转发效率变低了。MTU加上了,也要考虑隧道链路上的其它设备是否支持,否则就会因为MTU的大小设置差异,导致一些处于两者之间的报文无法通过。有时这种情况还不容易排查,比如经过隧道的BGP邻居建立不起来,这就可能是BGP协议发送的长度不一的报文,有的无法通过所导致,这样的问题分析起来找到MTU的原因并不容易,如果能提前做好设计规划,就可以避免这点。
隧道邻居建立问题
IPv6隧道有很多种,但是基本在一个网络中只采用一种方式,而且一台网络设备也不支持同时配置两种以上的隧道,至少两个隧道之间的流量是无法互通的。所以,在隧道的类型选择上,根据网络需求最先要确定下来。隧道的建立非常简单,只要隧道两端的IP地址可达,就可以建立起隧道。IPv6的隧道还不像VXLAN隧道那么丰富,不支持水平分割,所以多见的都是只有一个隧道,将处于独立的两部分网络打通。既然只要可达就行,隧道两端的IP地址可以二层互通,也可以三层互通,还可以在隧道经过的链路上做各种的QoS。隧道类问题无外乎有无法建立、隧道震荡、不通这三种问题,原因可能千奇百怪,因设备而异。表面上看隧道实现比较复杂,其实问题并不多,就将隧道外部转发时,不看内层即可,而看内层转发时,不关心外层就行,与IPv6其它技术相比,隧道技术表面上看起来吓人,实际掌握起来并不复杂。
隧道安全
隧道要比普通的网络转发不安全,这是一定的,为何这样讲?是因为隧道要面临内外层两方面叠加的安全威胁。如果IPv4地址被欺骗,任何人都可以向隧道内想注入多少流量就注入多少流量,6over4还有可能受到地址欺骗攻击,外部伪造的6over4包有可能侵入6over4域内。由于隧道技术会在优化过程中屏蔽掉有效载荷以及很多语音电话和FTP客户端经常使用的临时端口,这将导致无法建立起有效的安全策略等问题。并且还可能导致网络在连接时出现其它类型的潜在错误,按照迈克·莫里斯在《回归思科子网》一文中所说的:“……次优路由,最大传输单元的问题,以及硬件和软件可扩展性方面的风险”都属于可能出现的情况。总之,隧道技术的安全问题将更加突出,对于那些特别关注网络安全的数据中心,如何建立一条安全的隧道是一个长期研究的课题,现在还缺少专门针对隧道方面的安全防护技术。
IPv6隧道是打通IPv4网络中的IPv6孤岛,IPv6网络中的IPv4孤岛的必要技术,经过2018年全网大张旗鼓地建设以来,涉及IPv6隧道的应用极小,绝大多数还是以开启IPv4/IPv6双栈为主要方式,随着IPv6部署的深入化,有些局域网络就可能涉及到隧道的应用,到时就要认真考虑本文所提到的问题。IPv6隧道虽然理论比较健全,但实际应用案例却很少,在实践中也可能会遇到新的问题。在IPv6全网改造进行的过程中,IPv6隧道作为一种应用特性,必将在网络改造中发挥重要作用。