1.IPv6简介
随着互联网的快速发展,IPv4地址变的越来越紧缺,即使有NAT技术来进行缓解,但是也只能缓解燃眉之急。同时,IPv4的报文头部设计的不合理,导致IPv4转发不具有安全性,头部字段太多且头部长度可变,导致转发效率低下。
IPv6有128个比特,几乎地球上的每一粒沙子都可以分配一个IPv6的地址,解决了IPv4地址不够用的问题。IPv6针对于报文头部也进行了调整优化,分为了基本头部和扩展头部。基本头部保留转发需要的必要信息,所以长度是固定的,为40个字节。剩余其他信息使用扩展头部来进行封装,提高了转发效率。
2.IPv6报文格式
IPv6头部字段只保留了转发需要的必要信息,同时增加了一个next header字段,通过此字段来判断是否有下一个扩展头部信息。数据在进行转发的时候,只需要读取基本包头即可。
version:版本信息
traffic class:流分类
flow label:流标签
payload lenth:长度
next header:下一个头部标识
hop limit:相当于IPv4中的TTL
sourece address:源IP
destination address:目的IP
extension header:扩展头部
3.IPv6地址的表示
IPv6地址共有共16个字节,也就是128比特。由于位数比较长,因此是用冒号分十六进制来表示的。128个比特分为了8段,每段16个比特,每段都用十六进制来表示,各段之间用冒号分开。例如:2001:0FCE:3F00:4C02:0000:0000:0001:0002,每段的最前面的0可以省略,可以缩写为:2001:FCE:3F:4C02:0:0:1:2,连续的段为0的时候,可以缩写为::,因此这个IPv6地址最简化的表示为2001:FCE:3F:4C02::1:2。双冒号在一个地址中只能出现一次。
4.IPv6地址分类
IPv6地址分为三大类,分别是单播、组播和任播。
4.1 单播地址
IPv6的单播地址又可以分为全球单播地址、链路本地地址、唯一本地地址、特殊地址等几大类,单播地址由网络前缀和接口标识组成,常见单播地址要求网络前缀和接口标识都是64位,其中::1/128为本地回环地址,::/128表示未分配地址。
接口标识生成的方式有三种,可以手工分配、自动获取、EUI-64生成。
EUI-64规范是指将MAC地址中间插入FFFE,并且将MAC地址的第7位即LG位变为1,例如:
MAC地址为:00e0-fc31-6f8e
插入FFFE:00e0-fcff-fe31-6f8e
LG位置为1:02e0-fcff-fe31-6f8e
全球单播地址
全球单播地址网段是2000::/3,范围2000——3FFF。全球单播地址用来标识唯一一台终端或者接口,它的地址格式如下:
唯一本地地址
唯一本地地址是私网地址,地址段是FC00::/7,目前只是用了FD00::/8,唯一本地地址只在内网中有效,不能跨越公网,公网中没有私网的路由。地址格式如下:
链路本地地址
链路本地地址的有效范围是本链路生效,不能跨越路由器,前缀为:FE80::/10。链路本地地址可用于邻居发现,自动获取等场景。这个地址可以手工配置或者系统根据EUI-64自动生成。它的地址格式如下:
4.2 组播地址
IPv6的组播地址可用于标识多个接口,只可用作目的地址来使用。地址格式如下:
前8个比特固定全为1,后32比特是组播的组ID。
Flags:为0标识永久,为1表示临时。
Scope: 为0是预留
为1表示节点
为2表示链路本地
为5表示站点本地
为8表示组织本地
为E表示全球范围
为F是预留
组播中比较重要的一种是被请求节点组播地址,主要用于地址检测或者邻居发现。每个单播地址都会自动生成对应的被请求节点组播地址,并加入这个组播组。被请求节点组播地址格式如下:
被请求节点组播地址的前104个比特是固定的,后24位根据单播地址的后24来进行填充。
例如:全球单播地址:2001:172:16:12::1
对应被请求节点组播地址为:FF02::1:FF00:01
组播中FF02::1表示所有主机,FF02::2表示所有路由器。
4.3 任播地址
在IPv6中没有广播的概念,但是有任播地址,它的范围和全球单播地址一致,只不过可以重复配置,用于用户访问最近的业务节点,任播地址也是只能作为目的地址使用。
5.NDP协议
IPv6中没有ARP地址解析协议,IPv6是通过NDP邻居发现协议来进行地址冲突检测和MAC地址解析的。IPv6通过新增ICMPv6报文来承载NDP协议,ICMPv6协议通过不同type类型来区别不同的承载协议。
ICMPv6 type类型 | 代表协议 |
type=133 | RS报文:路由请求 |
type=134 | RA报文:路由通告 |
type=135 | NS报文:邻居请求 |
type=136 | NA报文:邻居通告 |
type=136 | 重定向 |
5.1 IPv6的DAD(地址冲突检测)
IPv4是通过免费ARP来进行地址冲突检测的,IPv6根据NS报文来进行DAD检测,如果没有收到NA的应答,则表示地址没有冲突,收到NA的回复,则表示地址冲突,不可用。
DAD的原理:当接口第一次获取到IPv6单播地址时,会发送一个NS报文,NS的格式如下:
ICMPv6头部 | IPv6头部 | 以太帧头部 |
target address:要检测的IPv6地址 | 源::: 目的:检测IP的被请求节点地址 |
源:本端MAC 目的:组播MAC |
组播MAC地址前16为固定为33-33,后32为取被请求节点地址的后32位组成。
例如:被请求节点地址为FF02::1:FF00:1
组播MAC地址为:33-33-FF-00-00-01
没有收到NA的应答,则表示地址不冲突,一旦地址冲突,收到的NA应答报文格式如下:
ICMPv6头部 | IPv6头部 | 以太帧头部 |
target address:冲突的IPv6地址 link-layer address:本端MAC地址 |
源:本端接口IPv6地址 目的:FF02::1 |
源:本端MAC 目的:组播MAC |
5.2 IPv6的ping通原理
R1 ping R2
1.R1查看路由表,没有则不发包。
2.R1有R2的路由,进行ICMPv6的封装,封装到二层,不知道目的MAC地址。
3.查看IPv6邻居表项,有邻居则拿出邻居的MAC进行封装,没有,则发送NS请求。
ICMPv6头部 | IPv6头部 | 以太帧头部 |
target addres:2001::2 | 源:2001::1 目的:FF02::1:FF00:2 |
源:本端MAC 目的:33-33-FF-00-00-02 |
4.R2收到R1的NS报文,侦听目的组播MAC地址,接收解封装,产看目的IP是自己,则回复NA报文,同时把R1的MAC地址和IP加入自己的IPv6邻居表。
ICMPv6头部 | IPv6头部 | 以太帧头部 |
target addres:2001::2 link-layer address:本端MAC地址 |
源:2001::2 目的:2001::1 |
源:本端MAC 目的:R1的MAC |
5.R1收到R2的NA响应,把R2的MAC地址和IP加入自己的IPv6邻居表,完成ICMPv6的封装,按路由表转发数据。
6.自动获取
IPv6支持有状态自动获取和无状态自动获取两种,IPv4只有有状态的自动获取。
6.1 无状态自动获取
IPv6地址具有即插即用的快捷方便性,此机制通过无状态获取来实现。服务端开启RA功能,周期性的向所有主机发送RA报文,发送的周期在600秒和200秒之间随机,但是一旦收到客户端发来的RS请求,则会立即响应一次RA。RA报文中包含本端接口地址的前缀信息,客户端根据服务端的前缀加上自己的EUI-64组成自己的接口地址。
服务端开启RA功能命令:接口下undo ipv6 nd ra halt
客户端获取命令:接口下ipv add auto global default------获取地址的同时产生默认路由
RS报文格式如下:
ICMPv6头部 | IPv6头部 | 以太帧头部 |
link-layer address:本端MAC地址 |
源:本端的连接本地地址 目的:FF02::1 |
源:本端MAC 目的:组播MAC |
RA报文格式如下:
ICMPv6头部 | IPv6头部 | 以太帧头部 |
link-layer address:本端MAC地址 IP前缀信息 |
源:本端的连接本地地址 目的:FF02::1 |
源:本端MAC 目的:组播MAC |
6.2 IPv6的有状态自动获取
IPv6的有状态获取是通过DHCPv6获取的,可分为4-way模式和2-way模式,默认是4-way模式,也就是有四种报文交互。
4-way模式:
1.首先由客户端发起solicit请求,寻找全网的DHCPv6服务端,包含本端MAC地址等信息,以组播的形式发送。
2.服务端回复advertise回复给客户端,包含网络前缀,客户端MAC、服务端MAC等信息,以单播形式发送。
3.客户端发起request请求地址是否可用,包含请求使用的IPv6地址,客户端MAC、服务端MAC等信息,以组播形式发送。
4.服务端回复reply给客户端,包含对方请求使用的IPv6地址,客户端MAC、服务端MAC等信息,以单播形式发送。
2-way模式:
当网络中只有一个DHCPv6服务端时,可以配置快速分配模式。
1.DHCPv6客户端在发送的Solicit报文中携带Rapid Commit选项,标识客户端希望服务器能够快速为其分配地址和网络配置参数。
2.DHCPv6服务器接收到Solicit报文后,将进行如下处理:
如果DHCPv6服务器支持快速分配地址,则直接返回Reply报文,为客户端分配IPv6地址和其他网络配置参数,Reply报文中也携带Rapid Commit选项。
如果DHCPv6服务器不支持快速分配过程,则采用四步交互方式为客户端分配IPv6地址/前缀和其他网络配置参数。
快速获取地址配置方式:
服务端:接口下dhcpv6 server A rapid-commit
客户端:接口下ipv6 address auto dhcp rapid-commit
无状态获取只能获取到IP前缀信息,获取不到其他一系列的参数,例如DNS等,当无状态需要向有状态迁移时,可以配置flag位中的M位和O位置为1。
服务端:ipv6 nd autoconfig managed-address-flag----M位置为1
ipv6 nd autoconfig other-flag------O位置为1
7.IPv6基础实验
拓扑:
描述:R1和R2手动配置,R2作为DHCPv6服务器,R3采用有状态的获取方式,R4采用无状态的获取方式并都能生成缺省路由,在R1上配置静态路由,使能全网通。
基本信息:
设备 | 接口 | IP地址 | 前缀 |
R1 | G0/0/0 | 2001::1 | 64 |
R2 | G0/0/0 | 2001::2 | 64 |
G0/0/1 | 2003::2 | 64 | |
G0/0/2 | 2004::2 | 64 | |
R3 | G0/0/0 | 有状态获取 | |
R4 | G0/0/0 | 无状态获取 |
R1配置:
#
ipv6
#
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address 2001::1/64
#
ipv6 route-static 2003:: 64 2001::2
ipv6 route-static 2004:: 64 2001::2
R2配置:
#
ipv6
#
dhcp enable
#
dhcpv6 pool A
address prefix 2003::/64
excluded-address 2003::1 to 2003::2
#
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address 2001::2/64
#
interface GigabitEthernet0/0/1
ipv6 enable
ipv6 address 2003::2/64
undo ipv6 nd ra halt
ipv6 nd autoconfig managed-address-flag
ipv6 nd autoconfig other-flag
dhcpv6 server A
#
interface GigabitEthernet0/0/2
ipv6 enable
ipv6 address 2004::2/64
undo ipv6 nd ra halt
R3配置:
#
ipv6
#
dhcp enable
#
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address auto link-local
ipv6 address auto global default
ipv6 address auto dhcp
R4配置:
#
ipv6
#
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address auto global default
查看R1接口的DAD报文:
查看R1pingR2的NS和NA报文:
查看R4无状态获取的报文信息:
查看R3有状态获取的报文信息:
R1上ping测试 :
文章来源:https://www.toymoban.com/news/detail-405639.html
文章来源地址https://www.toymoban.com/news/detail-405639.html
到了这里,关于IPv6基础介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!