IPV6的一些整理

基本知识


IPv6与IPv4的区别

相同之处(黄色区域)

Version(4bits) :用来表明IP协议版本 (IPv4, Version=0100; IPv6, Version=0110)

Source Adrresss(IPv4为 32bits,IPv6为128bits):发出地的IP地址

Destination Address(IPv4为 32bits,IPv6为128bits)  :目的地的IP地址

名字被修改的地方(蓝色区域)

Time to Live(8bits) -> Hop Limit(8bits) :

Time to Live简称TTL, TTL表示IP包的最大路由数,TTL=77 表示在IP包接力过程中最多经过77个路由接力,如果超过77个路由,那么这个IP包就停止再路由。数据包经过一个路由器时,其TTL就会被减一。当其TTL为0时,路由器便会取消该数据包转发,TTL的主要作用是避免数据包在网络中的无限循环和收发

IPv6中的Hop Limit功能与TTL相同, 用于丢弃路由错误的数据包,避免数据包在网络中的无限循环和收发

Type of Service (8bits) -> Traffic Class (8bits) :

Type of Service简称ToSToS主要源自美国国防部规范JANAP-128,该规范定义了消息优先级。它定义了一种为每个IP数据包分配优先级的机制, 如果路由器拥塞,需要丢弃某些数据包,它将首先丢弃优先级最低的数据包

76543210
DSCP ECN

TOS在RFC 2474被更改,现在名为Differentiated Service (DS), DS被实际分为两部分:Differentiated Services Code Point (DSCP, 6Bits)和Explicit Congestion Notification (ECN, 2bits) ,IPv6的Traffic Class 提供与IPv4的ToS类似的功能,并也被分成两部分

Protocol (8bits) -> Next Header (8bits) :

表示IP头部(Header)下一层的头部类型,作用与IPv4相同,且使用相同的值(IANA-Protocol-Numbers)

Total Length(16bits) -> Payload Length (16bits) :

使用Total LengthIHL字段可以指示数据报的数据部分从何处开始以及其长度。但是由于IPv6的头部是固定的长度320bits,所以IPv6中并不需要使用 Total Length 和 IHL区域指示数据从何处开始以及其长度 。转而使用Payload Length用来表示IPv6的数据部分的长度。整个IP包为 320bits + Payload Length

删除的部分(红色区域)

IPv4头部有个可选区域 Options 大小为0-40 bytes 。如果不考虑options的话,整个IPv4头部有160bits。但由于有options的存在,整个头部的总长度是不确定的。可能导致头部无法以32bits的倍数结束, 所以还需要Padding填充0补齐32位 , 还要用IHL(Internet Header Length)来记录头部的长度,用Total Length记录整个IP包的总长度, 但是由于IPv6没有options, 头部大小是固定的, 所以IPv6中并不需要IHL, Padding

IPv4中还有一个Header Checksum区域。这个checksum用于校验IP包的头部信息。IPv6则没有checksum区域。IPv6包的校验依赖高层的协议来完成,这样的好处是免去了执行checksum校验所需要的时间,减小了网络延迟 (latency)。

Identification, FlagsFragment Offset,这三个包都是为碎片化(fragmentation)服务的。碎片化是指一个路由器将接收到的IP包分拆成多个IP包传送,而接收这些“碎片”的路由器或者主机需要将“碎片”重新组合(reassembly)成一个IP包。不同的局域网所支持的最大传输单元(MTU, Maximum Transportation Unit)不同。如果一个IP包的大小超过了局域网支持的MTU,就需要在进入该局域网时碎片化传输。碎片化会给路由器和网络带来很大的负担。最好在IP包发出之前探测整个路径上的最小MTU,IP包的大小不超过该最小MTU,就可以避免碎片化。IPv6在设计上避免碎片化。每一个IPv6局域网的MTU都必须大于等于1280 bytes。IPv6的默认发送IP包大小为1280 bytes。

新增部分(绿色区域)

Flow Label (20-bits) :

Source可以使用IPv6报头中20位的Flow Label标记信息包的顺序,Source请求IPv6路由器对这些信息包进行特殊的处理,例如非默认的服务质量和“实时”业务, IPv6路由器在接受到一个信息包时,通过检查它的Flow Label,就可以判断它属于哪个流,然后就可以知道信息包的QoS需求


IPv6地址格式

IPv6使用以冒号(:)分隔8个16字节16进制地址段,来表示128位地址格式,使地址表 达更简化、更不易于出错。以下是一个正确的IPv6地址示例:2001:db8:130F:0000:000 0:09C0:876A:130B。

此外,为缩短IPv6地址,使地址更便于表达,IPv6使用以下惯例:

  • 地址段中的前导零位可选,且能够压缩。例如:以下16进制地址能以压缩格式 表达:
    • 示例1:0000 = 0(压缩格式)
    • 示例2:2001:db8:130F:0000:0000:09C0:876A:130B=2001:db8:130F:0:0:9C0:876A:130B (压缩格式)
  • 一对冒号(::)能够表示相连的0字段。但是,在一个有效IPv6地址中,只允许使用一 次冒号对
    • 示例1:2001:db8:130F:0:0:9C0:876A:130B =2001:db8:130F::9C0:876A:130B(压缩格式)
    • 示例2:FF01:0:0:0:0:0:1 = FF01::1(压缩格式) 地址分析器能够轻松识别IPv6地址中省略的0的个数,它将地址的两部分分开,在其中 填充0,直至128位地址填满为止。但是,如果同一地址中出现两个冒号对,就无法确 定每个零地址块的大小。使用“::”使许多IPv6地址变得很小。

网络前缀

在IPv6中,前缀大致相当于IPv4中的子网。IPv6前缀由最左边的位构成,起 网络标识符 的作用。IPv6前缀使用IPv6前缀或前缀长度格式表示,就像IPv4地址以无类别域间路由 选择(CIDR)符号表示一样。

/前缀长度变量是一个十进制数值,表示构成前缀的地址高阶连续位的数目,是地址的 网络部分。例如:2001:db8:8086:6502::/64是一个正确的IPv6前缀。如果地址以双冒号 结束,这尾部的双冒号可以省略。因此这个地址也可写作2001:db8:8086:6502/64。但 不管怎样,前缀长度写为十进制数值64,表示该IPv6地址的左边的位数。在IPv4中,类 似的地址应表达为xxx.xxx.xxx.xxx/16。

一般获得的前缀:

  • 32 RIR/NIR(区域/国家互联网注册机构)分配给有 ASN 的运营商、互联网公司、大型企业。是地址最小分配单元。
  • 40 运营商向有多个(256个以内)站点和数据中心的大型企业分配的前缀
  • 44 运营商向有多个(16个以内)站点和数据中心的中型企业分配的前缀
  • 48 运营商向中小客户分配的常见前缀长度。或大中企业内一个站点的前缀
  • 56 宽带运营商给家庭用户和小微企业分配的最小前缀长度(最大子网大小)
  • 64 末端设备子网,/64 是很多协议硬性要求的(IPv6 无广播风暴风险)
  • 127 路由器点对点链路,此处不是为了节约地址而是防止一种资源耗尽型攻击

IPv6地址类型

对于IPv4主机和IPv6主机来说,在IP地址要求方面有一个重要差异。IPv4主机一般使用 一个IP地址,而IPv6主机可能会有多个IP地址。

IPv6的地址类型主要有三种:

  • 单播—一个用于单一接口的地址。发送到单播地址的数据包会传输到该地址所指定 的接口。
  • 任意播—一个用于一组通常属于不同节点的接口的地址。发送到任意播地址的数据 包会按照所用的路由协议的定义,传输到最近的、任意播地址指定的接口。
  • 组播—一个用于一组通常属于不同节点(在特定范围内)的接口的地址。发送到组 播地址的数据包会传输到组播地址(在特定范围内)指定的所有接口。

地址管理和分配

在IPv6中,主机地址可使用四种方法进行配置:

  • 静态配置 —— 类似于IPv4,主机地址、掩码和网关地址通过人工方式定义。
  • 无状态自动地址配置SLAAC) —— 在这种情况下,主机自动配置其地址。启动节点 发送路由器请求消息,申请路由器广播(RA),以配置接口(RFC2462)。
  • 基于状态的DHCPv6  —— 主机使用DHCP获取其IPv6地址。此地址管理类似于IPv4的 DHCP行为(RFC3315)。
  • 无状态DHCP —— 主机使用SLAAC以及DHCP,来获取其它参数,如TFTP服务器、 WINS等

IPv6地址规划的考虑因素

IPv6提供了显著高于IPv4的地址空间,使您能够极为灵活地定义逻辑和实际编址计划。 您可以根据不同逻辑机制(涵盖了在IP编址指南中详细介绍的各项因素)和IPv6相关的 其它因素分配子网前缀,例如:

  • 使用现有IP编址机制
    • 当前子网编号转换为IPv6子网ID
    • VLAN ID转换为IPv6子网ID
  • 重新设计您的IP编址机制 - 按需分配IPv6地址

在重新设计IP编址机制时,您可以按需分配地址。此类逻辑编址计划能够简化网络运营 和服务交付、以及网络管理和故障排障工作。

编址计划中必须要考虑到以下内容:

  • 前缀聚合 —— 除非网络设计人员主动执行聚合,否则大量IPv6地址会导致路由表过于 庞大。
  • 网络增长 —— 设计将网络增长考虑在内的地址基础设施十分重要。
  • 使用唯一本地地址(RFC4193) —— 像IPv4一样,IPv6中有专用地址空间。它们的主 要差别在于,在IPv4中,每个机构都从相同的专用地址空间中进行选择。而在IPv6 中,地址空间仅用于一个网络,是全球唯一的。这个专用地址空间能用于对无需连接 互联网的设备和服务编址。

前缀大小考虑因素

IPv6规范中为普通IPv6单播地址定义了/64前缀长度。由于IPv6有非常大的地址空间, 您也有可能希望使用非/64前缀长度

在IPv6中,非/64前缀长度将使以下技术失效

  • 邻居发现(ND)
  • 安全邻居发现(SEND)[RFC3971]
  • 私密性扩展[RFC4941]
  • 部分移动IPv6[RFC4866]
  • 稀疏模式独立组播协议(PIM-SM),带内嵌RP[RFC3956]
  • 通过IPv6协调支持的站点多重寻址(SHIM6)[SHIM6]

/64前缀

64位前缀适用于网络设备的传统局域网/广域网接口。

/126前缀

126位前缀一般用于点对点链路,类似于IPv4中为点对点链路分配的/30保留地址。但 IPv6的地址空间要远大于IPv4地址空间。一般建议在点对点链路上使用/64。

/127前缀

RFC3627认为,在点对点链路上使用相当于IPv4 /31的/127前缀(RFC 3021),是有害 的。这种分配就像为点对点链路分配/126前缀,使用127前缀是出于考虑地址保留的原 因。为简化运营,应考虑为点对点链路使用/64前缀。

/128前缀

128位前缀可用于需要一个地址的情况。网络设备的回环地址即是这类地址的一个 示例。


安全

目标IPv4IPv6
简单网关作为默认路由器和地址池管理者DHCP 上游单一地址,下游有限个地址DHCPv6-PD 前缀分发,下游无状态自动配置(SLAAC)
简单安全由于没有状态就被过滤掉明确的基于上下文的访问控制
本地使用情况跟踪NAT 状态表地址唯一性
终端系统的隐私性NAT 把地址中的设备 ID 转换掉临时使用的隐私地址
拓扑隐藏NAT 把地址中的子网转换掉不可跟踪的地址,或MIPv6隧道
地址自治RFC 1918 地址段RFC 3177(IPv6 地址分配准则)和 RFC 4193(本地唯一 IPv6 单播地址)
节约全球地址池RFC 1918,应用程序终结点拓扑受限用不完的子网和地址,无限拓扑
地址重新分配和多网络接入边界上的地址转换每个前缀的生命周期以及每个接口多个地址


子网地址范围:

0000:0000:0000:0000:0000:0000:0000:0000 FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
点赞

发表评论

请稍后(无限等待请刷新重试)....

由于当前政策法规,主站禁止评论,请前往Global

电子邮件地址不会被公开。必填项已用 * 标注