IPv6相关RFC标准演进

关于IPV6的RFC标准

概述

对于IPv6的相关知识,之前大都停留在对IPv6 Header、IPv6 Address、IPv6路由等简单的了解。因为当下实际工作的需要,的确需要对IPv6有一个更加全面、深入的学习。但是如何全面的梳理IPv6这块的知识体系,我想RFC应该是最好的学习途径。

关于IPv6的RFC标准,从1995年开始到2018年,持续不断的衍生、更新,相关RFC标准非常多。我花了点时间在RFC-Editor搜索了一下,IPv6相关RFC标准数量已经超过400个,这还只是通过IPv6Internet Protocol, Version 6IP Version 6为关键词搜索,没有搜索出来还有很多。

针对这些搜索的结果,简单粗暴的整理下,还不够十分严谨和专业,仅供参考,具体结构如下:

Screen Shot 2019-01-05 at 12.36.56

其中:

  • IPv6 Spec
    • 主要阐述IPv6的基本概念,相关RFC初步统计约20个左右;
    • 最主要的基础RFC是RFC1883Internet Protocol Version 6(IPv6) Specification,该标准在1995年发布,后面在1998年被RFC2460Internet Protocol Version6(IPv6)Specification替代,随后近二十年,这个文件本身没有更新,所以,RFC2460本质上只是一个Draft Standard;
    • 在RFC2460基础上,随后几年进行了Update,以单独的RFC出现,包括RFC3697RFC5095RFC5722,RFC5871RFC6564RFC6935RFC6946RFC7045RFC7112,涉及Flow Label、Fragment、Routing Header、Extension Header等;
    • 到2017年,推出的RFC8200Internet Protocol, Version 6 (IPv6) Specification是最新的标准,该RFC把之前相关的RFC更新实现了合并,是最建议先阅读的IPv6规范;
  • IPv6 Sokets
    • 主要是面向上层应用开发,满足基于IPv6的应用承载,需要对原有的Soket进行更改;
    • 这块的RFC比较少;
  • IPv6 地址相关
    • 这块的标准比较多,我粗略分为三类,
      • IPv6地址结构及表示相关:定义地址格式及分类。最早是1995年的RFC1884IP Version 6 Addressing Architecture,目前最新的版本是RFC4291(2006年),另外,还包括关于单播、组播地址映射等RFC;
      • 关于IPv6地址配置:主要一些如何获取、配置地址相关。其中比较重要的是关于无状态地址获取的RFC4862IPv6 Stateless Address Autoconfiguration(2007年)。另外,还有关于127 bit地址在互联口的使用、测试地址的使用等;
      • 关于IPv6地址的分配:主要涉及机构如何分配地址的问题,比如单播地址的分配、保留的任播地址、组播地址分配等;
  • IPv6网络部署
    • 我个人理解为是在一些特殊场景下进行IPv6部署相关的RFC,比如在Multihoming的部署、在IXP场景的部署、针对ISP在宽带接入网中的部署等;
  • IPv6基础能力
    这块的内容非常多,主要是涉及IPv6的一些基本协议,具体如下:

    • ICMPv6:
      • 最主要的RFC是RFC4443Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification
    • DHCPv6:
      • 这块的RFC最多,粗略整理的大概15个左右;
      • 比较重要的RFC是RFC3315Dynamic Host Configuration Protocol for IPv6 (DHCPv6)RFC3736Stateless Dynamic Host Configuration Protocol (DHCP) Service for IPv6;
      • 其他的RFC主要是针对DHCPv6的细化和补充,比如针对Option、针对Dual-Stack的问题、DHCP Relay等;
    • DNS
      • 这块相关RFC大概十多个,个人认为比较重要的是RFC3596DNS Extensions to Support IP Version 6,其他包括在IPv6的表示、DNS64、Operational等;
    • ND(Neighbor Discovery)
      • 最重要的是RFC4861Neighbor Discovery for IP version 6 (IPv6),其他包括ND的安全及威胁、ND在6LoWANs的优化等;
    • RA( Router Advertisement)
      • 比较重要的是关于RFC6105IPv6 Router Advertisement GuardRFC5175 IPv6 Router Advertisement Flags Option
      • 其他包括RA针对DNS的Opations。
    • DAD
      • 重要的是RFC4429Optimistic Duplicate Address Detection (DAD) for IPv6,同时还有关于DAD Proxy的RFC;
    • 组播
      • 目前只看到关于MLD及MLD2的相关RFC;
    • 管理
      • 目前整理看到的是关于针对UDP和TCP的MIB相关RFC;
  • IPv6过度协议
    • 关于v4与v6过度的相关协议,主要涉及两大块;
      • 隧道模式,包括大家熟悉的6PE、ISATAP、6rd、6to4等;
      • 网关模式,这块RFC比较多,涉及v4与v6的地址转换(NAT);
    • 当下主要遇到的最多的还是双栈模式,搭建一个端到端的IPv6平面,对于隧道提及的已经不多;对于网关地址NAT,目前还是会用,作为v4用户访问v6业务的过度方案;
  • IPv6安全
    • 除了大家熟悉的IPSec相关的协议外,涉及Radius在IPv6网络中应用的RFC还是比较多的;
    • 其他,包括关于网络扫描、本地网络安全防护等RFC;
  • IPv6路由
    • 主要涉及RIPng、OSPFv3、ISISv6、BGP等;
    • 这块核心还是路由协议,所以没有展开;
  • IPv6在特种网络上的承载
    • 主要涉及IPv6在一些特殊网络上的传输,比如FDDI、NBMA、PPP、IEE1394等;
  • IPv6应用相关
    • 这块的内容主要是跟一些上层应用相关的RFC,比如FTP、在企业网络中的网络分析等;
    • 其中最大的一块是关于Mobile IPv6的,这是一块非常独立的模块,相关的RFC有几十个之多,包括基础的地址分配、代理、安全、DHCP等等;
    • 因为现实工作中很少涉及,所以也没有全部整理;

总结

通过简单梳理IPv6相关的RFC,结合当下遇到的一些实际的IPv6项目,如果想从架构上提出更多有实际价值的方案和建议,还是需要针对IPv6基础相关的RFC有更加深入的理解。这里面包括IPv6 Spec、IPv6 Address、IPv6基础能力中的ND、RA、DHCP等等。