ipv6

发布时间 2023-03-28 20:10:28作者: wefjack

IPv6概述

IPv6产生背景

IPv4目前已广泛部署,经过多年的发展,已经非常成熟,得到了所有设备厂商的支持,但也有一些不足之处:

  1. 地址空间不足
  • 由于互联几何数的增长,IPv4地址已经耗尽,IPv4可以提供2的32次方个地址,由于协议设计之初又有许多部分地址不能被公网分配使用(私网地址、D类地址、E类地址等),同时全球IPv4地址分配不均,美国占用大多数。
  1. 互联网骨干路由器的路由器路由表非常庞大
  • 因IPv4发展初期缺乏合理的地址规划,造成地址分配不连续,导致目前互联网骨干路由器BGP路由表非常庞大,影响数据包的转发效率。

IPv6(Internet Protocol Version 6)是网络层协议的第二代标准协议,也被称为IPng(IP Next Generation),它是Internet工程任务组(IETF)设计的一套规范,是IPv4 [RFC 791]的升级版本。

IPv6的优势

  1. 地址空间巨大
  2. 层次化的路由设计

IPv6报文格式

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Version| Traffic Class |           Flow Label                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Payload Length        |  Next Header  |   Hop Limit   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                         Source Address                        +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                                                               +
   |                                                               |
   +                      Destination Address                      +
   |                                                               |
   +                                                               +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Extension Headers                        |
   +                         ... ...                               +


IPv6基本头:
Internet Protocol Version 6, Src: fe80::224:acff:fe0e:d568, Dst: fd01:200b:1300:3::1
    0110 .... = Version: 6
    .... 0000 0000 .... .... .... .... .... = Traffic Class: 0x00 (DSCP: CS0, ECN: Not-ECT)
    .... 0000 0000 0000 0000 0000 = Flow Label: 0x00000
    Payload Length: 56
    Next Header: ICMPv6 (58)
    Hop Limit: 64
    Source Address: fe80::224:acff:fe0e:d568
    Destination Address: fd01:200b:1300:3::1
字段 长度 字段说明
Version 4bit 和IPv4一样,占用4个bit,IPv4是0100,IPv6是0110。
Traffic Class 1B IPv4中DSCP(Tos)字段,用来给数据包打上一个优先级,或设备识别数据包优先级。使用了6bit,预留2个bit,总共可以表示64中种优先级。
Flow Label 20bit 用于标识同一个数据流,此字段为IPv6新增字段,目前该字段还在试用中。
Payload Length 2B 数据包的有效载荷,指的是IPv6基本头后面的长度,包含扩展头部分。该字段和IPv4不同的是,IPv4中的length包含IP头(20B)的长度(MTU),IPv6 payload length不包含IPv6基本头。
Next Header 1B 指的是上层使用的是什么协议,相当于IPv4中protocol字段,而且与IPv4的协议字段使用相同的协议值,udp 6,tcp 17。
Hop Limit 1B IPv4中ttl字段,使用三层防环,最大值为255。
Source Address 16B 源地址,128bit(16B),必须是单播地址。
Destination Address 16B 目的地址,128bit(16B),可以是单播或组播地址。

与IPv4报头比较

IPv4中包含13个字段,在IPv6中 把IP报文头的长度(IHL)、标识(id)、flags、offset(偏移)、校验和(checksum)、options字段给取消了,因为IPv6基本头是40B,所以把IHL字段去除,分片功能由IPv6扩展头来实现,所以去除了标识、flags、offset字段。1.数据链路层会对数据包进行FCS校验 2.传输层会对数据包进行checksum 3.ttl在一条都会改变,路由器要进行繁琐的校验和的重新计算,影响数据包的转发效率,所以IPv6将checksum也取消了。

IPv6的扩展头

IPv6扩展头是可选报头,跟在IPv6基本头之后,将IPv4中的可选项分离出来后,大大提高了中间节点对数据包的转发效率,每个IP数据包都有0个或多个扩展头。

RFC 2460 定义了6个IPv6扩展头:逐跳选项报头、目的选项报头、路由选择报头、分段报头、认证报头、封装安全静载报头。

路由选择报头:

报头格式:

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  next header  | Hdr Ext Len |  routing type=0 |  segment left |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          reserved                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                         Address[1]                            +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                         Address[2]                            +
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                         ……………………                              +
   |                                                               |								
   								
字段 字段说明
next header 作用等同于基本头中next header
Hdr Ext Len 表示扩展头的长度,该长度以8Byte为单位
routing type 目前只定义了类型0,表示经过的中间路由器地址字段不为空
segment left 数据包经过中间IPv6节点的数量

作用:扩展头包含 数据包 去往目的节点 中间所经过的节点的信息(IPv6地址),类似于IPv4 options里的宽松源路由。

使用路由选择扩展头时,初始状态源端主机发出的数据包目的地址并非实际的最终目的地址,而是中间的需要经过的第一个中间节点IPv6地址,其segment left等于需要经过节点的数量,中间其它路由器忽略路由扩展头,数据包到达第一个指定的路由器(IPv6 地址为Address[1])后才处理路由扩展头,数据包的目的地址替换为指定经过的第二台路由器(IPv6 地址为Address[2]),segment left值减1,以此类推,数据包到达最后的目的地址。segment left址段字段为0表示此目的地址 为最终的目的地址。路由选择扩展头广泛用于SRv6。

参考文档:

https://support.huawei.com/hedex/hdx.do?docid=EDOC1000105967&id=ZH-CN_CONCEPT_0254009201