网络之IPv6改造相关记录总结

一、ipv6 改造背景

    IPv4的地址空间为2的32次方,约为40多亿。但随着互联网的普及,根据相关机构的统计,全世界网民总数已经达到了40多亿,IPv4地址已近枯竭。基于此背景按照物联网公司的总要求,要求各业务系统内外全部改造为ipv6单栈通信。据此,将对现场某业务系统进行业务地址全量ipv6地址替换,待试运行支持后,回收源ipv4地址。IPv6的地址空间为2的128次方(43亿×43亿×43亿×43亿)。

在这里插入图片描述

IPv4地址总数=232=4,294,967,296

IPv6地址总数=2128= 340,282,366,920,938,463,374,607,431,768,211,456

在这里插入图片描述

※ IPv6应用优势:

  • 永久性IP地址将为移动互联网精确计费提供良好的支持,对通信运营商至关重要,当然也是移动互联网领域的关键。另外巨大的地址空间(IPv4中规定IP地址长度为32,即有2^(32-1) 个地址;而IPv6中IP地址的长度为128,即有2^(128-1)个地址。)为很多新型和未来业务提供更多可能性,支持泛在网络(Ubiquitous Network)的大规模实现。再者IPv6相对现在资源紧张的ipv4公网ip,也更便宜;

  • IPv6提供的接入无关性会话连续性将为业务的移动性提供支持。这种特性对于很多业务,特别是IPTV和手机电视这样的业务特别重要。

  • IPv6在QoS(在IPv6中,增加了流标识机制,这样包处理和转发的效率更高,从而增大了设备的吞吐能力;另外,允许源把特定的流和一组特定的参数进行关联,从而可以实现对于流的过滤和分类。因为有了流标识字段,路由器可以通过该字段直接定位到这组参数,而不必象在IPv4种那样去在每个数据包中寻找该组参数。)和安全全局性永久地址对于提高鉴权能力是一个很大的帮助。而且不需要NAT,很多端到端的安全机制如IPsec(IPv6强制使用IPSec,传输时数据经过加密)等就可以无障碍地使用。没有NAT,使得组播更加容易实现;)方面的内在优势将为IMS(IP Multimedia Subsystem)提供端到端的安全和服务质量创造良好条件,可以促进IMS的普及应用。而承载效率的提高,以及IPv6的地址自配置功能,通过采用全局可路由地址前缀,优化建网的成本,使得网络具有所谓Future-proof能力,延长投资生命期,所有这些都将有助于运营商降低CapExOpEx。前面说的转发效率更高,是因为IPv6使用更小的路由表。IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。IPv6增强的组播(Multicast)支持以及对流的控制支持(Flow Control),将会促进网络上的多媒体应用具备更长足发展的机会,为服务质量(QoS,Quality of Service)控制提供了良好的网络平台。IPv6加入的对自动配置(Auto Configuration)的支持,深化了对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。使用IPv6网络中用户可以对网络层的数据进行加密并对IP报文进行校验,极大的增强了网络的安全性。

  • 移动终端,通过使用IPv6,可以在很大程度上降低功耗,延长电池使用寿命。其中一个原因是媒体数据主要通过UDP协议承载,而由于IPv4在很多情况下需要进行NAT/FW穿越,因此UDP需要周期性(如每45秒)发送keep-alive消息保持NAT/FW上特定端口的开放,从而消耗额外电力。而使用IPv6因为不再存在NAT/FW穿越,就可以免除这部分功耗。

  • 删除了IPv4包头中无用的信息,IPv6的包头大大简化。从而提高了包处理和转发的效率,因而降低了额外的带宽开销

  • 通过对于不同的数据流进行标识(labelling),可以更好地支持对于不同属性数据流的不同处理方式,允许非缺省的处理模式并且简化包处理的过程。

※ IPv4及IPv6三种常见的共存策略和过渡技术:

  • 双栈DualStack:

    所谓的双栈就是主机或者网络设备同时支持IPv4及IPv6双协议栈,如果节点支持双栈,即它能够同时使用V4和V6的协议栈、同时处理IPv4及IPv6的数据。在双栈设备上,上层应用会优先选择IPv6协议栈,而不是IPv4。

    比如,一个同时支持v4和v6的应用请求通过DNS请求地址,会先请求AAAA记录,如果没有,则再请求A记录。双栈是V4、V6并存及IPv6过渡技术的基础。

    一般路由器都支持双栈,默认情况下路由器本身就已经支持IPv4,接口上也配置了IPv4的地址,已经能够正常转发IPv4的报文,此刻在激活路由器的IPv6数据转发能力,再为接口分配IPv6的单播地址,那么这个接口就具备了了IPv6数据转发能力。且对于路由器而言,IPv4及IPv6协议栈互不干扰,独立工作。
    \
  • 隧道技术:

    隧道技术是一种非常经典的解决方案,应用在各种场景中解决数据通信问题。核心思想其实就是在两个通信孤岛之间搭建一条点到点的虚拟通道,使得此二者能够通过这条点到点隧道穿越中间的网络进行通信。

    比如,假设一个网络中R1及R2都连接到同一个IPv4网,同时还各自连接一个IPv6网络。此刻R1及R2均是双栈路由器,而两者各自下挂的这两个IPv6网络其实是信息孤岛,彼此之间无法互相通信,因为要通信就需要经过中间的网络,而中间的网络是IPv4的,根本无法识别IPv6的数据。我们在R1及R2之间利用隧道技术可以建立起一条点到点的通道,这条虚拟通道穿越了中间的IPv4网络,使得两个信息孤岛之间能够互通。

    实际上孤岛之间的IPv6互访流量还是经过中间的IPv4网络进行转发,只不过在被转发的IPv6报文基础之上增加了一个新的IPv4头部,这个头部我们称之为隧道头,正是这个隧道IPv4头部,使得IPv6报文能够被包裹在其中从而穿越中间的IPv4网络。
    \
  • NAT64

    NAT64技术实际上是一种协议转换技术,能够将分组在V4及V6格式之间灵活转换。当IPv4网络的节点需要直接与IPv6网络的节点进行通信时,默认情况下当然是行不通的,因为两个协议栈无法兼容。这时,可借助一台中间NAT设备,由该设备来实现IPv6与IPv4的互转,从而完成v4到v6的通信。

更多请查看相关资讯

二、IPv6 地址分类及计算

在这里插入图片描述

IPv6地址使用128比特(8*4*16bit)进行标识,每16个比特划分为一段,每段使用4个16进制来表示,每2字节1段(Big Endian),并且使用冒号隔开,共8段。注意每段中的前面的0都可以进行省略。如果IPv6的地址中包含的连续两个或多个均为0的段,可以用双冒号 :: 来代替。但是一个IPv6的地址中只能使用一次双冒号,因为如果使用多次,恢复成128位完整的格式的时候,会无法确定知道每段的0的个数;如果想了解缩写的ipv6地址被压缩的多少位0,可以数一下地址中还有多少个位段,然后用8减去这个数,再将结果乘以16(例如:在地址FF02:3::5中有3个位段(FF02、3和2),可以根据公式计算:(8-3)×16=80,则::之间表示有80位的0被压缩)。另外,IPv6不支持子网掩码,它只支持前缀长度表示法。例如21DA::D3:2:0/48的48表其前缀固定位数为48bit,我们也可以这样简单理解,这时可把前48bit看做是网络前缀,相当于IPv4地址中的网络位,后80bit相当于IPv4地址中的主机位,ipv6没有广播地址。

在这里插入图片描述
在这里插入图片描述

示例: 2001:200:dff:fff1:216:3eff:feb1:44d7
在这里插入图片描述
在这里插入图片描述

IPv6支持不同范围的地址,即作用域:
在这里插入图片描述

1)全球单播地址(Unicast IPv6 Addresses)

这里指可聚合的全球单播地址(Aggregatable Global Unicast Addresses)
可在全球范围内路由和到达的,又称为“唯一本地地址”,可理解为类似于ipv4公网地址的IPv6,前三个bit是001。

0010 ==> 2xxx::
0011 ==> 3xxx::

所以只有2和3开头的地址才是“公网地址”,因IPv6地址总量庞大,所以很难看到3开头的地址,一般2开头的地址就够我们使用。结构如下:
在这里插入图片描述
在这里插入图片描述

例如: 2000::1:2345:6789:abcd //相当于IPv4里面的global addresses:8.8.8.8

它的地址范围:

2xxx:xxxxx/3 --- 3FFF: :FFFF;

在全球单播地址中,规定如2001:BCFF:FEA6::/48表示一个IPv6路由前缀,2001:BCFF:FEA6:6C01::/64表示一个IPv6子网前缀。其中:

2001::/16 ------>IPV6因特网地址;
2002::/16 --------->6to4过渡地址;
3ffe::/16 ---------->用于6 bone测试目的的前缀;

全局路由前缀 (Global Routing prefix) 标识表分配给一个网络的地址范围。这部分地址是由国际注册服务和互联网服务提供商(ISP)分配的,并具有层次结构。

子网ID (Subnet ID) 用于子网的划分,网络的管理员分配这部分地址。

接口ID (Interface ID) 用于标识子网中的接口,在子网中不能重复。接口ID始终为64位,因此IPv6子网始终为/64子网。接口ID可以由接口的MAC地址生成。

2种配置方式:

1、自动配置:

无状态(Stateless):根据路由通告报文RA(Router Advertisement)包含的prefix前缀信息自动配置IPv6地址,组成方式是Prefix + (EUI64 or 随机)。Stateless也可以称为SLAAC(Stateless address autoconfiguration);这种方式不可控、难管理。在网络中只有网关,没有IP地址管理者。因此无人去识别客户端,每个客户端根据网关发送的相同的RA报文内容,自行配置IPv6地址。

有状态(Stateful):通过DHCPv6方式获得IPv6地址;1>有状态DHCPv6(Stateful DHCPv6):IPv6地址、其他参数(如DNS)均通过DHCPv6获取;2>无状态DHCPv6(Stateless DHCPv6):IPv6地址依然通过路由通告RA方式生成,其他参数(如DNS)通过DHCPv6获取。这种方式可控、可管理。在网络中存在一个IP地址管理者,它能够识别客户端,根据不同的客户端,分配对应的IPv6地址,客户端与服务端之间需要维护IP地址的租期及续约。目前实现这种效果的,就是DHCPv6协议,IP地址管理者就是DHCPv6 Server

2、手动配置

建议在服务器和重要网络设备上配置。

RA(路由器通告(Router Advertisement)报文中有3个关键的flag bit:

在这里插入图片描述

Autonomous flag(简称A flag):表示是否配置无状态IP。在一个RA报文中,可存在多个prefix,比如2401::/64、2402::/64、2403::/64,每个prefix都可以独立配置A flag

▪ 为on时(对应bit位为1):表示客户端应当在该prefix范围内自动生成IPv6地址(客户端通过DAD自行保证地址可用),并配置子网路由条目、网关

▪ 为off时(对应bit位为0):表示客户端不应当在该prefix范围内自动生成IPv6地址,但是可以配置子网路由条目、网关

Managed flag(简称M flag):表示是否配置有状态IP。M flag是RA报文的全局参数,一个RA报文只有一个M flag。

▪ 为on时(对应bit位为1):表示在stateless流程结束后开始stateful流程,也就是告诉客户端可以通过DHCPv6来获得IPv6地址和其他参数(如DNS列表)

▪ 为off时(对应bit位为0):表示不通过DHCPv6来获得IPv6地址。

Other flag(简称O flag):表示是否通过DHCPv6获得除IP以外的其他参数(如DNS列表)。O flag也是RA报文中的全局参数,一个RA报文只有一个O flag。**注意:**仅当M flag为off时,该参数才会被读取。

▪ 为on时(对应bit位为1):当M flag为on,或者M flag为off且至少有一个A flag为on时,将通过DHCPv6获得其他参数

▪ 为off时(对应bit位为0):当M flag为on时,依然将通过DHCPv6获得其他参数;当M flag也为off时,将不通过DHCPv6获得其他参数。

另外,无状态和有状态并不是相互对立的,他们可以同时存在,也就是一张网卡上可以同时出现通过RA生成的IP以及通过DHCPv6获得的IP。
在这里插入图片描述
上图中可知:

Stateless自动配置“链路本地地址”
Stateless自动配置“全球地址”(或“唯一本地地址”)
Stateful自动配置“全球地址”(或“唯一本地地址”)和其他参数,其中Stateful阶段中存在Stateful DHCPv6或Stateless DHCPv6

注意:部分客户端操作系统或网络管理器当Stateless阶段没有收到RA报文后,就到此结束,不会走Stateful阶段,比如CentOS 7、Ubuntu 17的默认逻辑都是这样,而windows server 2012就会继续走Stateful阶段。

对于状态的2种选择,核心在于是否需要控制IP地址,比如保持IP不变,如果需要控制,就采用有状态;如果无需控制,就采用无状态。参考如下:

服务端领域:如对外提供服务,通常需要采用有状态IP。因为业务IP的突然变化容易导致业务中断(除非做好服务发现)
客户端领域: 如移动设备、办公室内PC机,只需要上IPv6互联网,并不需要对外提供服务,可以采用无状态IP。

2)链路本地地址(Link-Local Addresses):不路由(LLA地址:一个子网内通信)

用于同一个链路上的相邻节点之间通信,Ipv6的路由器不会转发链路本地地址的数据包。固定前缀FE80::/10;当一个节点启用IPv6时自动生成,64位拓展由MAC地址按照EUI 64转换而来。格式如下图:
在这里插入图片描述

其中,前10个bit是1111 1110 10,由于最后是64bit的interface ID,所以它的前缀总是 FE80::/64;例如:FE80::1,相当于IPv4里面的169.254.0.0/16地址。

换算示例: 例如MAC地址为0012:3400:ABCD;

首先把MAC地址对半分开,插入一个固定值FFFE;
0012:3400:ABCD ----> 0012:34FF:FE00:ABCD;
再把第七位翻转:0----> 1, 1---->0
0012:34FF:FE00:ABCD ----> 0212:34FF:FE00:ABCD;
最后加上前缀:
FE80::212:34FF:FE00:ABCD;

链路本地地址只在本链路生效,而且可能重复,且无法路由,所以在ping一个链路本地地址的时候必须指定接口,否则节点不知道将请求发往哪个接口。

比如本地链接IPV6地址: fe80::f80f:6d4c:4310:b18e%11 这个就是链接本地地址。这个地址只能对应某一条链路! 后面的%11就是指你的网络interface标识符。

3)站点本地地址(Site-Local Addresses):类似ipv4内外地址

对于无法访问internet的本地网络,可以使用站点本地地址,它的前10个bit是1111 1110 11,它最后是16bit的Subnet ID和64bit的i

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羌俊恩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值