《hcie面试答题-IPv6如何传超大包.docx》由会员分享,可在线阅读,更多相关《hcie面试答题-IPv6如何传超大包.docx(5页珍藏版)》请在优知文库上搜索。
1、IPv6如何传送超大包?答:(1)在IPv4中,报文如果过大,必须要分片进行发送,所以在每个节点发送报文之前,设备都会根据发送接口的最大传输单元MTU(MaximumTransmissionUnit)来对报文进行分片。但是在IPv6中,为了减少中间转发设备的处理压力,中间转发设备不对IPv6报文进行分片,报文的分片将在源节点进行。当中间转发设备的接口收到一个报文后,如果发现报文长度比转发接口的MTU值大,则会将其丢弃;同时将转发接口的MTU值通过ICMPV6报文的PacketTo。Big消息发给源端主机,源端主机以该值重新发送IPv6报文,这样带来了额外流量开销。PMTU发现协议可以动态发现整
2、条传输路径上各链路的MTU值,减少由于重传带来的额外流量开销。PMTU协议是通过ICMPv6的PacketTooBig报文来完成的。首先源节点假设PMTU就是其出接口的MTU发出一个试探性的报文,当转发路径上存在一个小于当前假设的PMTU时,转发设备就会向源节点发送PacketTooBig报文,并且携带自己的MTU值,此后源节点将PMTU的假设值更改为新收到的MTU值继续发送报文。如此反复,直到报文到达目的地之后,源节点就能知道到达目的地的PMTU了。PMTU的工作过程如图所示:Packet with MTU=1500ICMPerror:packettbig.useMTU1400Packetw
3、ithMTU=1400VICMPerror:packettoobig.useMTU1300PacketwithMTU=1300PacketreivedPathMTU=1300整条传输路径需要通过4条链路每条链路的MTU分别是1500、1500、1400、1300,当源节点发送一个分片报文的时候,首先按照PMTU为1500进行分片并发送分片报文,当到达MTU为1400的出接口时,设备返回PacketTooBig错误,同时携带MTU值为1400的信息。源节点接收到之后会将报文重新按照PMTU为1400进行分片并再次发送一个分片报文,当分片报文到达MTU值为1300的出接口时,同样返回PacketT
4、ooBig错误,携带MTU值为1300的信息。之后源节点重新按照PMTU为1300进行分片并发送分片报文,最终到达目的地,这样就找到了该路径的PMTUe由于IPv6要求链路层所支持的最小MTU为1280,所以PMTU的值必须大于1280o建议您用1500作为链路的PMTU值。(2)在IPv6中,仅数据报的发送者可以执行分片操作。这就是说,中间路由器或着主机不再需要处理分片报文,这样会提高分片报文处理效率,因为分片报文的重组和分片都是耗cpu的。在这种情况下需要添加一个分片头部。分片头部包括的信息与IPv4头部中的相同,只不过标识符字段变成32位,而不是IPv4采用的16位。这个更大的字段提供了
5、在网络中容纳更多分片的能力。下图显示了分片头部采用的格式,(书上拍的图):IPv6分片头部包含一个32位的标识符字段(是IPv4中标识符字段的两倍).M位字段表明该分片是否为原始数据报的最后一个分片。与IPv4一样,分片偏移字段给出了有效载荷在原始数据报中以8字节为单位的偏移量。上图中,保留字囹口2位的Res字段都为O,并且都会被接收方所忽略。分片偏移字段表明数据以8字节为单位的偏移量放置在分片头部之后(相对于原始IPv6数据报的可分片部分),如果M字段设置为1,表示在数据报中包含更多分片。如果该值为O,表示该分片是原始数据报的最后一个分片。在分片过程中,输入的数据报称为“原始数据报,它由两部
6、分组成:不可分片部分.和“可分片部分。不可分片部分包括IPv6头部和任何到达目的地之前需要由中间节点处理的扩展头部(即包括路由头部之前的所有头部,如果有逐跳选项扩展头部,则是该头部之前的所有头部)。可分片部分包括数据报的其余部分(即目的选项头部,上层头部?口有效载荷数据)。简单说,就是有些扩展头部是不允许分片的,需要每个分片报文都携带不允许分片的部分。当原始数据报被分片后,将会产生多个分片,其中每个分片都包含一个原始数据报综合那个不可分片部分的副本,但是需要修改每个IPv6头部的负载长度字段,以反映它所描述的分片报文大小。在不可分片部分之后,每个新的分片都包含一个分片头部,其中包含一个分片相应
7、的分片偏移字段(例如第一个分片的偏移量为0),以及一个原始分组的标识符字段的副本,最后一个分片的M(更多分片)位字段设置为Oe下面结合一个例子演示一下IPv6源节点对数据报的分片过程。在该例子中,一个3960字节的有效载荷被分片其中分片的大小都没有超过1500字节(一个典型的以太网MTU),分片数据的大小仍为8字节的倍数。IPv6分片报文例子,一个3960字节的有效载荷被分为3个1448字节或更小的分片。每个分片包含一个带相同的标识符字段的分片头部。除了最后一个分片,所有分片的更多分片(M)字段设置为Io偏移量以8字节为单位。例如最后一个分片包含的数据是从原始数据开始出偏移(362*8)=28
8、96字节。这个方案与IPv4中分片相似。在上图中,可以看到较大的原始数据报被分为3个较小的分片。每个分片都包含一个分片头部。IPv6头部的负载长度字段被修改,以反映数据和新生成的分片头部的大小。每个分片中的分片头部包含一个公共标识符字段,以确保网络中不同的原始数据报在其生存期内不会被分配相同的标识符字段。接收端会将标识符相同的报文重组起来。分片头部中的偏移量字段以8字节为单位。因此分片需要在8字节的边界处进行,这就是第一个和第二个分片包含1448字节,而不是1452字节的原因。因此,除了最后一个分片之外的所有分片都是8字节的倍数(最后一个分片也可能是)。接收方在对分片进行重组之前,必须确保已接收原始数据报的所有分片。重组过程中需要聚合所有分片以形成原始数据报。与IPv4分片一样,分片可能不按顺序到达接收方,但需要按顺序重组为一个数据报,以便交给高层的其它协议处理。