IPv6下CDN和网络的最佳实践

在工业和信息化部发布的《关于开展2019年IPv6网络就绪专项行动的实施意见》中对CDN提升IPv6业务承载能力提出了明确的要求。自 2019年初,腾讯云 CDN 启动了全国范围内的 IPv6 加速节点建设计划,截止现在已完成了全国各省份三大运营商,总计 100+ 加速节点全覆盖。

2020年07月03日,腾讯云计算(北京)有限责任公司CDN(静态资源加速、流媒体加速、文件下载加速)、ECDN(全站加速)、SCDN(安全加速)产品通过了IPv6 Enabled CDN Logo 认证测试!

一. IPv6基础知识

1.概念

IPv6是英文“Internet Protocol Version 6”(互联网协议第6版)的缩写,是互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议,其地址数量号称可以为全世界的每一粒沙子编上一个地址。

IPv4最大的问题在于网络地址资源不足,严重制约了互联网的应用和发展。IPv6的使用,不仅能解决网络地址资源数量的问题,而且也解决了多种接入设备连入互联网的障碍。

2.组成

◎IPv6的地址长度为128位,是IPv4地址长度的4倍。IPv4点分十进制格式不再适用,采用十六进制表示。

冒分十六进制表示法:格式为X:X:X:X:X:X:X:X,其中每个X表示地址中的16b,以十六进制表示,例如:

ABCD:EF01:2345:6789:ABCD:EF01:2345:6789

0位压缩表示法:在某些情况下,一个IPv6地址中间可能包含很长的一段0,可以把连续的一段0压缩为“::”。但为保证地址解析的唯一性,地址中”::”只能出现一次,例如:

FF01:0:0:0:0:0:0:1101 → FF01::1101

内嵌IPv4地址表示法:为了实现IPv4-IPv6互通,IPv4地址会嵌入IPv6地址中,此时地址常表示为:X:X:X:X:X:X:d.d.d.d,前96b采用冒分十六进制表示,而最后32b地址则使用IPv4的点分十进制表示,例如::192.168.0.1与::FFFF:192.168.0.1

IPv6报文的整体结构分为IPv6报头、扩展报头和上层协议数据3部分。

IPv6报头是必选报文头部,长度固定为40B,包含该报文的基本信息;

扩展报头是可选报头,可能存在0个、1个或多个,IPv6协议通过扩展报头实现各种丰富的功能;

上层协议数据是该IPv6报文携带的上层数据,可能是ICMPv6报文、TCP报文、UDP报文或其他可能报文。

IPv6下CDN和网络的最佳实践

3.地址类型

IPv6协议主要定义了三种地址类型:单播地址(Unicast Address)、组播地址(Multicast Address)和任播地址(Anycast Address)。与原来在IPv4地址相比,新增了“任播地址”类型,取消了原来IPv4地址中的广播地址,因为在IPv6中的广播功能是通过组播来完成的。

单播地址:用来唯一标识一个接口,类似于IPv4中的单播地址。发送到单播地址的数据报文将被传送给此地址所标识的一个接口。

组播地址:用来标识一组接口(通常这组接口属于不同的节点),类似于IPv4中的组播地址。发送到组播地址的数据报文被传送给此地址所标识的所有接口。

任播地址:用来标识一组接口(通常这组接口属于不同的节点)。发送到任播地址的数据报文被传送给此地址所标识的一组接口中距离源节点最近(根据使用的路由协议进行度量)的一个接口。

4.使用协议

地址配置协议:
IPv6使用两种地址自动配置协议,分别为无状态地址自动配置协议(SLAAC)和IPv6动态主机配置协议(DHCPv6)。

◎无状态地址自动配置协议(SLAAC)不需要服务器对地址进行管理,主机直接根据网络中的路由器通告信息与本机MAC地址结合计算出本机IPv6地址,实现地址自动配置,包括4个基本步骤:

01.链路本地地址配置,主机计算本地地址

02.重复地址检测,确定当前地址唯一

03.全局前缀获取,主机计算全局地址

04.前缀重新编址,主机改变全局地址

◎IPv6动态主机配置协议(DHCPv6)由DHCPv6服务器管理地址池,用户主机从服务器请求并获取IPv6地址及其他信息,达到地址自动配置的目的。DHCPv6在IPv4场景下的DHCP的基础上,进行了一定的改进与扩充。其中包含3种角色:

◎DHCPv6客户端:用于动态获取IPv6地址、IPv6前缀或其他网络配置参数;

◎DHCPv6服务器:负责为DHCPv6客户端分配IPv6地址、IPv6前缀和其他配置参数;

◎DHCPv6中继:若服务器和客户端不在同一链路范围内,则需要DHCPv6中继进行转发。

路由协议:
与IPv4相同,IPv6路由协议同样分成内部网关协议(IGP)与外部网关协议(EGP),其中IGP包括由RIP变化而来的RIPng,由OSPF变化而来的OSPFv3,以及IS-IS协议变化而来的IS-ISv6。EGP则主要是由BGP变化而来的BGP4+。

5.优势特点

与IPV4相比,IPV6具有以下优势:
01.更大的地址空间:
IPv4规定IP地址长度:32,
最大地址个数:2^32;
IPv6规定IP地址长度:128,
最大地址个数:2^128。

02.更小的路由表:
IPv6的地址分配遵循聚类(Aggregation)的原则,路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。

03.增强的组播支持以及对流的控制
网络上的多媒体应用有了长足发展的机会,为服务质量(QoS,Quality of Service)控制提供了良好的网络平台。

04.支持自动配置
网络(尤其是局域网)的管理更加方便快捷。

05.更高的安全性
用户可以对网络层的数据进行加密并对IP报文进行校验,在IPV6中的加密与鉴别选项提供了分组的保密性与完整性,极大地增强了网络的安全性。

06.允许扩充
如果新的技术或应用需要时,IPV6允许协议进行扩充。

07.更好的头部格式
IPV6使用新的头部格式,其选项与基本头部分开,如果需要,可将选项插入到基本头部与上层数据之间,简化和加速了路由选择过程。

08.新的选项
IPV6有一些新的选项来实现附加的功能

6.过渡技术

IPv6不可能立刻替代IPv4,因此在相当一段时间内IPv4和IPv6会共存在一个环境中。要提供平稳的转换过程,使得对现有的使用者影响最小,就需要有良好的转换机制。IETF推荐了双协议栈、隧道技术以及网络地址转换等转换机制。

二.腾讯云CDN IPv6改造架构设计

在国内互联网的客户端和流量以 IPv4 为主的大环境下,腾讯云 CDN 提供平滑、安全的 IPv6 互联网入口,配合客户逐步完成端到端的 IPv6 改造。

在很长的一段时间里,IPv6 与 IPv4 双栈将同时运行,随着互联网的 IPv6 用户活跃数的持续增大,最终完成底层核心网络向 IPv6 平滑过渡,IPv6 成为网络主体,并且兼容存量的 IPv4 的业务。

IPv6下CDN和网络的最佳实践
腾讯云CDN支持IPv6访问的架构图如下所示:
IPv6下CDN和网络的最佳实践

三.操作步骤详解

1.接入并配置加速域名

01.登录腾讯云CDN控制台,在左侧边栏目录中选择【域名管理】后,点击【添加域名】。
IPv6下CDN和网络的最佳实践
02.输入待接入的加速域名,选择【所属项目】(可置为默认),【源站类型】选择【自有源站】,并勾选【IPv6】,源站请填写有效的IPv6地址。域名配置完成后,可根据业务需要变更【缓存规则】等配置。
IPv6下CDN和网络的最佳实践
03.待域名状态变成 【已启动】,表示域名添加并上线成功。
IPv6下CDN和网络的最佳实践

2.测试并添加CNAME记录

腾讯云CDN提供的CNAME格式为:

加速域名.cdn.dnsv1.com

可以通过Dig工具向当地LocalDNS查看CNAME解析的完整过程,并返回最终解析出的AAAA记录,对应的AAAA记录应该为CDN返回覆盖当地的边缘节点的IPv6地址,命令:

dig AAAA 加速域名
IPv6下CDN和网络的最佳实践
登录腾讯云解析控制台,单击您所购买的【域名】,在“记录管理”页面单击【添加记录】按钮,为域名添加 CNAME 记录,输入如下内容并保存:

◎主机记录:即域名前缀,本例设为www

◎记录类型:CNAME

◎线路类型:默认

◎记录值:加速域名.cdn.dnsv1.com

◎TTL:设置为默认值“600s”
IPv6下CDN和网络的最佳实践
【保存】成功后,对加速域名的访问将解析至腾讯云CDN节点。

3.测试IPv6源站

本例中,为加速域名配置的源站为部署在云服务器上的Nginx服务,下面介绍如何验证源站已开启并监听IPv6。

  1. 查看本机(即源站)IP地址是否含有IPv6
ifconfig | grep -i inet6

第一行inet6后的公网地址即为步骤一接入加速域名时,所填写的源站IP
IPv6下CDN和网络的最佳实践

  1. 查看本机是否已经监听IPv6
netstat -tupln

IPv6下CDN和网络的最佳实践

  1. 测试本机http请求连通性
curl -6 -sv ip6-localhost/ipv6.txt

4.IPv6回源及节点访问

在支持IPv6的客户端请求加速域名,可以看到请求成功解析至CDN节点,节点将源站内容缓存并正确返回。

curl -sv -6 加速域名

IPv6下CDN和网络的最佳实践

了解更多关于IPv6及CDN知识关注腾讯云CDN公众号,技术干货一手掌握!
IPv6下CDN和网络的最佳实践

上一篇:算法题:给出一组数字,拼接一个最大的值 PHP


下一篇:面试题:应用中很多jar包,比如spring、mybatis、redis等等,各自用的日志系统各异,怎么用slf4j统一输出?(上)