📄 rfc2893.txt
字号:
2.3.在DNS里广告地址
在传输时使用DNS会发生一些限制。大多数是明显的但为了完全在此被规定。
值得注意的是对一个节点的A6/AAAA记录不应该被加到DNS除非以下的条件都满足:
1)地址在节点上被赋给了接口。
2)地址在接口上被配置。
3)连向IPv6基础部件的接口在一个连接上。
如果一个IPv6的节点被从IPv6的视图中隔开约束#3将意味着在DNS里不应该有一个地址。
这种操作主要是在当其它的双重堆栈节点试图去连接被隔开的双重堆栈节点。在DNS
里没有IPv6地址因此前面的情况就不会试图用IPv6连接而是直接转向了IPv4。
然而,这并不能很好的运行当被隔离的节点试图去确立连接时。即使在NDS里没有IPv6
的地址但它为前面的记录找到A6/AAAA记录。由于被隔离的节点有IPv6地址至少被赋给
一个接口它将会试着用IPv6去连接。如果它没有到6bone的路径那这样的连接将会失败。
很典型的,这就意味着当TCP超时时会耽搁一些时间。TCP规范里说明了ICMP不能到达
的信息可能是由于路由的暂时性因此他们不应该立即终止TCP的连接。这就意味着一般TCP
超时的应用。一旦TCP超时应用将有希望试图使在DNS里的IPv4地址基于一个记录,但
是这将是非常慢的。
上面的建议中暗含了一种可能性,如果一个是IPv6在一个没有IPv6基础部件的连接的
节点上,并且选择了为那个节点加A6/AAAA记录到DNS,那外部的IPv6节点可能看到这
些A6/AAAA记录并且将可能使用IPv6试图到达那个节点,这就因为不可到达性将遭受耽
搁或连接失败。因此建议不但按照建议而且要谨慎的用将不会受外部通道耽搁或连接失败的
影响去做。
在将来当一个站点或节点去掉IPv4的支持时上面的建议应用到当一个节点从DNS删
除。
3.一般的通道机制
在大多数配置的关中,随着时间的推移IPv6路由下部基础组织将被建立。当IPv6下部
基础组织被配置,现有的IPv4下部基础组织能保持运行,并且可用作执行IPv6的传输。通
道提供了一种利用现有的IPv4路由下部基础组织来执行IPv6的传输的方法。
IPv6/IPv4主机和路由器能通过在IPv4包里压缩IPv6数据包在IPv4路由的拓扑区域上
传输IPv6数据包。传输能被用在各种各样的方式中:
——路由器到路由器。IPv6/IPv4路由器通过IPv4的下部基础组织连接能够在两者之间传输
IPv6的数据包。在这种情况下,通道横跨IPv6包走的端到端路径的一部分。
——主机到路由器。IPv6/IPv4主机能传输IPv6包到一个中介的IPv6/IPv4路由器,者通过
一个IPv4的下部基础组织是可是实现的。这种类型的传输跨越包的端到端传输路径的第一
部分。
——主机到主机。IPv6/IPv4主机通过一个IPv4的下部基础组织相互连接能在他们间传输
IPv6的数据包。在这种情况下,传输跨越了数据包走的端到端路径的全部。
——路由器到主机。IPv6/IPv4路由器能传输IPv6包到他们的IPv6/IPv4主机的目的地。这
种传输仅仅跨越了端到端路径的最后部分。
通道技术通常根据由压缩节点决定在通道末端的节点地址的机制分类。在上面列举的路
由器到路由器和主机到路由器两种通道技术中IPv6数据包被传输到一个路由器。这种类型
通道的终点是一个中介路由器,这个路由器负责解压缩IPv6包和传输它到它的最后目的地。
当传输到一个路由器,通道终端和被传输包的终点是不同的。因此在被传输的IPv6包的地
址不能提供传输端点的IPv4地址。反而,通道的端点地址必须由在执行传输的节点上的配
置信息来决定。我们使用"配置通道"这一术语来描述端点被明确配置的通道类型。
在后面的主机对主机和路由器对主机两种传输方法中IPv6包被直接传输到最后的终
点。在这种情况下,IPv6包和压缩的IPv4包头的终端地址确定同样的节点!这种事实能被
在IPv6最后地址的编码信息被开发允许压缩节点来自动决定传输终点的IPv4地址。自动通
道使用这种技术,利用一个有IPv4地址嵌入的特殊的IPv6地址格式来允许传输节点自动的
得到IPv4的端点地址。这就排除了对配置通道端点地址的明确需要,大大简化了配置。
自动的和配置的两种通道技术在他们怎样决定同到端点地址上是根本不同的。大多数基
本的机制是一样的:
——通道的入口节点创建一个压缩的IPv4包头和传输压缩包。
——通道的出口节点接收压缩包,根据需要重新组合,去掉包头信息,更新IPv6包头信息,
并且处理接收到的IPv6包。
——为了处理传输到通道里的IPv6包,压缩节点的MAY关键字需要为每个参数为通道的
MTU的通道记录维持软件状态信息。由于传输数量可能变得非常大每台主机和路由器都可
能被使用,当不用时这种状态信息将被缓存和抛弃。
接下来的这部分讨论用于两种通道类型的一般的机制。后面部分讨论怎样为自动的和配
置的通道决定传输端点地址。
3.1.封装
一个在IPv4里的IPv6数据图的封装如下图所示:
|-------------|
| IPv4 |
| Header |
+-------------+ +-------------+
| IPv6 | | IPv6 |
| Header | | Header |
+-------------+ +-------------+
| Transport | | Transport |
| Layer | ===> | Layer |
| Header | | Header |
+-------------+ +-------------+
| | | |
~ Data ~ ~ Data ~
| | | |
+-------------+ +-------------+
在IPv4里封装的IPv6
另外增加一个IPv4报头,压缩节点不得不处理一些更加复杂的事情:
——决定何时分成片断何时返回一个ICMP"包太大"的出错信息给资源。
——怎样从路由器沿着传输路径作为IPv6ICMP错误映射IPv4ICMP错误到资源。
那些问题将在下面部分讨论。
3.2.MTU传输和分片
压缩节点可以看作是IPv6利用一个非常大的MTU的IPv4作为连接层的压缩。压缩节
点将仅仅用来由于包超过了MTU向资源汇报IPv6ICMP"包太大"的错误信息。然而,由于
两点理由使得这种方案的效率是低的:
1)它将导致需要更多的分片。IPv4层的分片关键字SHOULD由于丢失单元比转发单元更
小而导致的性能问题所以应该尽量避免。
2)在传输里发生的任何IPv4的分片将不得不在通道的端点重新组合。因为传输在一个路由
器结束,这就将需要附加的寄存器来重新把IPv4片断组合成完整的IPv6包在包能被传输到
前面前。
在通道里的分片能通过压缩节点通过通道路由IPv4路径的MTU来减少到最小,利用
IPv4路径MTU发现协议[8]和记录的结果路径MTU。在压缩节点里的IPv6层能把有一个与
IPv4路径MTU同等的MTU的连接层看作一个通道,减去压缩的IPv4包头的大小。
注意这并不能完全排除在当IPv4路径MTU将导致一个IPv6MTU比1280bytes少的情
况下IPv4分片。在这样的情况下IPv6层不得不用一个1280bytesMTU来处理一个连接层并
且压缩节点为了传输1280bytes的IPv6包而不得不用IPv4分片。
压缩节点能用以下的运算法则来决定何时传输一个比用IPv4分片的传输路径MTU大
的IPv6包,何时返回一个IPv6IMCP"包太大"的信息:
If (IPv4 path MTU - 20) is less than or equal to 1280
If packet is larger than 1280 bytes
Send IPv6 ICMP "packet too big" with MTU = 1280.
Drop packet.
Else
Encapsulate but do not set the Don't Fragment
flag in the IPv4 header. The resulting IPv4
packet might be fragmented by the IPv4 layer on
the encapsulating node or by some router along
the IPv4 path.
End if
Else
If packet is larger than (IPv4 path MTU - 20)
Send IPv6 ICMP "packet too big" with
MTU = (IPv4 path MTU - 20).
Drop packet.
Else
Encapsulate and set the Don't Fragment flag
in the IPv4 header.
End if
End if
压缩节点由大量的传输时就不可能为所有的传输储存IPv4路径MTU。像这样的节点就要在
网络上花费附加的分片,避免通过传输使用IPv4路径MTU运算法则并用在运算法则上的
连接层MTU来代替IPv4路径MTU。
在这样的情况下不分片位的关键字MUST NOT将在封装的IPv4包头里设置。
3.3.跳线限制
作为单一跳线模型的基于IPv4的IPv6通道。这就是说,当一个IPv6包经过通道时IPv6
条线限制就被减少一。单一跳线模型为隐藏一个存在的通道服务。通道对网络用户来说是不
透明的,并且对跟踪路由这样的网络诊断工具来说多是不可发觉的。
单一跳线模型通过有压缩和解压缩的用来处理当他们将传输一个包到其它的数据连接
的IPv6跳线限制的节点被执行。那就是说,当传输一个IPv6包时他们就减少一个跳线限制。
封装的IPv4包头的TTL在一个依靠方式的执行中被选择。MAY的执行提供了一个允
许管理员配置IPv4 TLL的机制,这在IP Tunnel MIB[17]中详细说明了。
3.4.处理IPv4 ICMP错误
在对封装包的响应被送到通道里,压缩节点可能从在通道内部的IPv4路由器收到IPv4
ICMP错误信息。这些包被标明指向压缩节点的地址因为这是压缩包的IPv4资源。
ICMP"包太大"的出错信息通过IPv4路径MTU Discovery[8]来处理并且在IPv4层里记
录着导致的路径MTU。被记录的路径MTU被IPv6用来决定是否一个IPv6 ICMP"包太大"
出错已经在3.2中说明的那样产生。
其它类型的ICMP错误信息处理依靠在"错误包"里包含了多少信息,那块区域阻止了封
装的包因此导致错误。
许多老的IPv4路由器仅仅返回数据的8bytes这就超出了出错的IPv4包的报头,这对包
含IPv6报头的地址域来说是不够的。更先进的IPv4路由器返回足够的数据,这数据超过包
含整个IPv6报头的IPv4报头并且甚至能超出数据。
如果可恶的包包含了足够的数据,封装节点MAY吸取了封装的IPv6包并用它来产生
一个IPv6 ICMP信息直接返回到先前的IPv6节点,就像下面所示的:
+--------------+
| IPv4 Header |
| dst = encaps |
| node |
+--------------+
| ICMP |
| Header |
- - +--------------+
| IPv4 Header |
| src = encaps |
IPv4 | node |
+--------------+ - -
Packet | IPv6 |
| Header | Original IPv6
in +--------------+ Packet -
| Transport | Can be used to
Error | Header | generate an
+--------------+ IPv6 ICMP
| | error message
~ Data ~ back to the source.
| |
- - +--------------+ - -
3.5.IPv4报头组成
当在一个IPv4数据图里正封装一个IPv6包时,IPv4包头区域是按如下所设置:
版本:
4
32位的IP包头长:
5
服务类型:
0.
总长度:
有效负载长度是IPv6和IPv4报头的长度加上IPv6报头。
鉴定:
独一无二的作为被系统产生的为任何IPv4包传输的。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -