IPv6编址与寻址
IPv6地址
IPv4:32 bits or 4bytes long
分为私有地址和公有地址,上网需要做一个NAT转换,主要为了解决地址少问题。
IPv6:128 bits or 16bytes : 4 tims the bits of IPv4
v6地址和v4地址表示方法不同:
用十六进制表示:如:FE08:...
16位一组,中间用:隔开,如:2001:12FC:..
若以零开头可以省略,全零的组可用"::"表示,如:1:2::ABCD:..
地址前缀长度用“/xx”表示,如: 1::1/64
注:“::” 一个v6地址只能出现一次
例如同一个地址的不同表示方法:
①0001:0123:0000:0000:0000:ABCD:0000:0001/96
②1:123:0:0:0:ABCD:0:1/96
③1:123::ABCD:0:1/96
v4环回地址是127.0.0.1,v6环回地址是0:0:0:0:0:0:0:1 简写 ::1
当电脑没有配置IPv6的时候,0:0:0:0:0:0:0:1充当占位符,
当配置了IPv6以后,在IPv6中代表默认路由,即:: 代表0.0.0.0/0
IPv6地址 = 前缀 + 接口标识
前缀:相当于v4网络地址中的网络ID
接口标识:相当于v4地址中的主机ID
如:2001:A304:6101:1::E0:F726:4E58/64
前缀是2001:A304:6101:1 接口标识:E0:F726:4E58 那么前缀64位,接口64位
如:2001:123::xx:xx:x/128 ,那么这个代表一个环回口地址 例如2.2.2.2/32
如:2001:123::xx:xx:x/127 ,那么这个代表一个点到点地址,例如12.1.1.1/30
IPv6地址分类
v6地址分为三种地址:
①单播地址(UA) ②组播地址(MA) ③泛播地址(AA)
在IPv6中不再使用广播的概念,所有的广播都是用组播代替。
单播和组播都和v4相同。泛播即任意播,是指,在分布式场景中,多个设备使用同一个泛播地址为最近的用户提供服务。
地址类型 | 二进制前缀 | IPv6标识 |
---|---|---|
未指定 | 00..0(128bits) | ::/128 |
环回地址 | 00..1(128bits) | ::1/128 |
组播 | 11111111.xx | FF00::/8 |
链路本地地址(用于路由协议) | 1111111010.xx | FE80::/10 |
站点本地地址(私有地址) | 1111111011.xx | FEC0::/10 |
全局单播(公有地址) |
单播
单播地址用于一对一的连接,IPv6单播地址有以下类型:
- 未指定的地址,环回地址和IPv4兼容地址
IPv4兼容地址,是把v6地址的后32位,用来存放v4地址,例如:::192.168.30.1 = ::C048:1E01 - 本地链路地址,简称Link-Local 地址
FE80::/10 - 本地站点地址,简称Site-Local地址
FEC0::/10 - 可聚合全球单播地址,简称AGUA地址
2000::到3FFF:FFFF:FFFF:FFFF.....
AGUA地址,前三位必须是001,后十三位为TLA,再后8位为RES区域位,再往后24位为NLAs,是网络位,供运营商进行分配,之后的16位为SLA,为子网位,分配给企业用,企业拿到的就是2::/48的地址。
组播
组播地址用于一到多的连接,地址主要是FF00::/8
前八位为FF,后四位代表标志位,Flag位为0代表永久的,Flag位为1代表暂时的,而再后四位代表范围,
范围为1代表本地接口范围,2代表本地链路范围,5代表本地站点范围,8代表组织结构范围,E代表全球范围。
例如FF02::9 这个地址FF开头,是个组播地址,第三位为0,代表永久分配,第四位为2,代表本地链路范围。
组播指定地址:
组播地址 | 范围 | 含义 | 描述 |
---|---|---|---|
FF01::1 | 节点 | 所有节点 | 在本地接口范围的所有节点 |
FF01::2 | 节点 | 所有路由器 | 在本地接口范围的所有路由器 |
FF02::1 | 本地链路 | 所有节点 | 在本地链路范围的所有节点 |
FF02::2 | 本地链路 | 所有路由器 | 在本地链路范围的所有路由器 |
FF05::2 | 站点 | 所有路由器 | 在一个站点范围的所有路由器 |
节点必需的地址
任何一个v6节点都需要开启以下地址:
每个接口的本地链路地址、环回口地址、被分配的单播地址、
所有节点组播地址、主机所属的组播组地址、本地站点地址
所用的每个单播和任播地址的被请求节点组播地址(相当于v4的arp协议,使用ICMPv6)
被请求节点组播地址
就是本地链路范围的组播地址,前面是FF02:,中间是全零,然后是FF/104,即FF02::1:FF/104
IPv6在Ethernet技术上
IPv6拥有一个特定的Ethernet协议ID,是0x86DD,用来分辨是IPv6还是IPv4。
Destination Ethernet Address | Source Ethernet Address | Type | header and payload |
---|---|---|---|
0x0800 | IPv4 | ||
0x86DD | IPv6 |
组播在Ethernet中的映射
如果一个数据包是三层的封装发送到组播地址,你肯定需要一个目的MAC地址,那么这个目的MAC如何表示?
答:把你要发送的这个三层的组播地址的最后三十二位拿出来,当做目标MAC,然后往前补16位的33:33.
即,比如发送的组播地址是FF02::1:FF17:FC0F,那么最后32位FF17:FC0F用来做MAC地址,并补齐地址为:33:33:FF17:FC:0F,这就是IPv6在以太协议栈中的地址映射。
不难发现,FF02::1:FF17:FC0F,前面是FF02,中间全零,后端是FFxx,这很显然是一个被请求节点组播地址。
接口ID的生成
v6地址中都会有接口ID,这是由MAC地址构成,通过48bit的MAC地址转化为64bit的接口ID,肯定是扩充得到的,通过EUI-64的扩充方式。
通过实验能看出,IPv6的接口地址中式插入了FF:FE字段,并且在地址的第7bit改为了1.
IPv6地址配置技术
IPv6可以发现邻居,其实通过ICMPv6来实现的。(NDP_RFC2461)
IPv6邻居发现原理:
首先PC1发送一个ICMP135类型邻居请求消息(NS)到PC2的被请求节点组播地址,PC2收到后,回复一个ICMP136类型邻居宣告消息(NA)到IPC1,这样在PC1就记录下了PC2的MAC地址,类似于v4网络中,将目标MAC存放在自己的ARP缓存表中。
我们抓包看看,在v6网络中是通过ICMPv6建立邻居关系,最后Neighbor Solicitation和Neighbor Advertisement就代表着建立邻居请求和邻居宣告的完成。
启用IPv6
- 启用IPv6流量转发
Router(config) ipv6 unicast-routing //默认关闭,跑路由协议需开启,其实就是加入组播地址 FF02::2
Router(config) ipv6 ref load-sharing original //等价路由下,基于hash算法的数据报流量分担
- 通过在接口上配置IPv6地址,开启接口对IPv6支持
Router(config-if-GigabitEthernet 0/0)#ipv6 address 2001:12::1/64 //PC机模式
- 也可以不配置v6地址,先配置本地链路地址
Router(config-if-GigabitEthernet 0/0)#ipv6 enable //默认情况下,不可用 PC机模式
IPv6的自动配置
IPv6地址的自动配置分为【无状态自动配置】和【有状态自动配置】。
IPv4中的DHCP配置,是一种有状态自动配置,是通过DHCP这种应用层协议来实现的。
IPv6中,可以通过ICMPv6实现无状态自动配置。
PC通过ICMP133向FF02::2发送一个RS请求,路由器收到后,通过ICMP134向目的地址FF02::1发送一个RA消息。这些地址都是基于Ethernet的。
FF02::2(链路上的所有路由器的组播地址) FF02::1(所有节点的组播地址)
IPv6路由选择(RiPng、OSPFv3)
RIPng中的主要更新
- UDP端口号:IPv4中的RIP使用UDP520号端口,IPv6的RIPNG使用UDP521号端口
- 本地链路地址:使用本地链路地址作为更新消息的源地址
- 组播地址:IPv4中的RIP使用224.0.0.9,IPv6中的RIPng使用FF02::9
- Metric值:在RIPng中,默认情况下进入路由表之前的RIPng度量值+1
-
一些时间参数:见 “ show ipv6 rip”
负载均衡功能:RIPng支持默认16条路径进行负载均衡(Max:64条)
OSPFv3
IPv6的OSPF和IPv4的OSPF差别并不大,下面的实验中,同时跑了IPv4和IPv6协议栈,基于接口的宣告可以加快邻居的建立关系。
基于IPv4和IPv6网络的共存和整合
-双栈协议(Dual Stack):网络中的主机、服务器和路由器可以同时使用IPv4和IPv6协议栈。
-隧道协议(Tunneling):隧道使孤立的IPv6主机、服务器、路由器和域利用现有的IPv4基础设施与其他IPv6网络通信。
例如在两端都是IPv6的网络,中间是IPv4的网络,这时候,如何让两端IPv6的网络能够实现OSFP路由协议的宣告,这时候使用tunneling,为IPv6地址做一层IPv4的封装,然后到对端后又进行解封装除去IPv4的头部,实现IPv6的互通。
以上就是目前IPv6的相关原理与配置方法,临近元旦终于有时间进行整理一下了。