IPV6
IPV6技术特点
地址空间巨大
精简报文格式
实现自动配置和重新编址
支持层次化网络编址
支持端对端安全
更好的支持QoS
支持移动特性
IPv6地址生成:1静态
2动态 EUI-64(扩展的唯一标识符) : 根据接口mac地址,产生唯一的IPv6
能够防止IPv6地址重复冲突
EUI-64 IP生成的方法:关于接口ID,接口ID为64bit,用于标识链路上的接口,在每条链路上接口ID必须唯一
接口ID可以通过三种方式生成:
1手工配置
2系统通过软件自动生成,保护主机的私密性
3IEEE EUI-64规范自动生成,最常用的方法
MAC地址有48bit 。先将mac地址二进制转出,导致64-48 长度不足。中间插入FFFE。再全写入二进制=64
[R1]int g0/0/1
[R1-GigabitEhernet0/0/1]ipv6 enable
[R1-GigabitEhernet0/0/1]dis this
mac:00e0-fcff-3f29
1:00e0-fc FFFE ff-3f29=00e0-fcff-feaa-d329 //插入FFFE
2:00e0:fcff:feaa:3f29 //写成IPv6格式
3:02e0:fcff:feaa:3f29 //将第7 bit 反转(0变1 1变0)
[R1-GigabitEhernet0/0/1]ipv6 adress 2001:1111:1111:1111:: 64 eui 64
[R1-GigabitEhernet0/0/1]dis ipv6 int brf
反转:0变1 1变0
置位:0变1 1不变(华为思科使用)
第1字节第七bit反转、
MAC地址第8bit:标识单播or组播
这个位置是U/L位,用于标识MAC地址的唯一性,在单播MAC地址中,
如果U/L=0表示该MAC是全局管理地址,如果U/L=1表示本地管理地址
在EUI-64中,如果U/L=1表示该MAC是全局管理地址,如果U/L=0表示本地管理地址
在IPv4中一个接口只能配置一个IPv4地址 或者配置一个sub子地址
IPv6中可以配置多个IPv6地址
EUI-64只能填充64bit的接口ID部分,如果IPv6前缀不满足64bit 如何产生接口ID?
接口ID依然使用EUI-64的方式进行产生,后64bit前的接口ID部分,用0进行填充
如果IPv6前缀超过64bit,此时接口ID部分,将会少于64bit,EUI-64又是64bit的接口ID部分,如何产生接口ID?
华为设备不允许
思科设备,接口ID与网络前缀冲突部分被前缀内容覆盖,只显示后面的接口ID部分
ipv6地址在华为设备最多配置10个IPv6地址,根据不同厂家的不同系列地址数量可能不同
IPv6报文头部
1 IPv4和IPv6相似的地方
version:IPv4的version和IPv6的version字段,作用相同,都是用于描述当前IP报文版本。
IPv4的IHL和total length:IPv6的载荷长度。
针对IPv4来说:IPv4报文头部变长,并不固定,所在的IPv4中存在IHL和总长度两个字段。
使用总长度减去IHL才能够判断出载荷长度。
针对IPv6来说:在IPv6中基本报头长度固定,所以在报文中需要携带载荷长度来描述上层协议数据即可
IPv4的TOS字段:IPv6的流类别。作用相同,都是用于QOS使用。
IPv4的TTL和上层协议标识:IPv6的跳数限制和吓一跳头部
2 IPv6与IPv4不同的部分。
在IPv6中删除了IHL,ID Flags,分片偏移,头部校验,Option。
针对IPv4来说:ID Flags,分片偏移,作用都是用于IPv4报文的分片。
1,如果报文没有被分片:那么字段没有任何意义,此时IPv4报文头部固定的字段,占用一部分空间
2,如果报文已经分片了:只有目的节点才需要进行报文重组,而中间节点不需要报文重组
但是转发报文的时候读取IPv4报文头部,依然会读取ID 标志位 分片便宜,导致转发效率低下。
针对IPv6来说,IPv6协议重新定义了分片处理机制:
1,IPv6中只允许,源节点对数据进行分片,中间节点不允许进行分片,所以中间节点在进行转发报文的时候,不需要读取分片字段。
2,IPv6中只有报文被分片的时候,才会携带分片扩展头,中间节点只读取基本报文进行转发,分片扩展报头实现目的节点的报文重组功能。
在IPv6中删除了Option选项,IPv4中可选项提供的功能,由IPv6报文的扩展报头提供,基本报文头部固定,设备处理更加高效。
针对IPv4来说,二层和四层存在校验,对于网络层来说,本身需要校验的功能,由于设备在转发的时候TTL会改变,每跳都需要对报文重新校验,导致转发效率低下
针对IPv6来说,删除了三层校验的功能,IPv6报文头部的完整性,依靠二层和四层完整
3,IPv6新增部分。
在IPv6中新增流标签字段;
1,针对设备处理角度来看,
针对IPv4五元组确定唯一的流,大多数倍都是基于流确定唯一的一种报文类型,比如路由器负载分担的时候,本身只看IP报头进行转发,由于需要确定唯一的流,依然要读取传输层信心,导致转发效率低下。
针对IPv6来说通过流标签+源IPv6地址,确定唯一的流,不需要读取传输层信息,转发效率更高。
2,在QOS角度来说,
针对IPv4来说,要想实现区分服务,对于IPv4报头,通过TOS字段来实现
针对IPv6来说,要想实现区分服务,可以基于流分类,或者源IP+流标签,实现基于流的QOS功能,实现源IP+流标签,实现基于流的QOS功能,区分能力更加精细化。
扩展报头的好处:
1,转发能力强:
针对IPv4中,可选项字段,导致IPv4的报头不够固定,并且IPv4的报头最长只有60个字节,数据转发过程中,每一个路由器都需要读取IPv4报文的可选项,在这些可选项中,在这些可选项中,可能有一些只需要目的节点识别,但由于IPv4报文携带这些字段导致沿途每一个路由都要读取,转发效率低下。
针对IPv6来说,将Options选项提供的功能,放入扩展报头中,当沿途的节点,不需要处理某项功能时候,查看基本报头中的Next header 就可以识别出扩展报头的具体作用,如果本路由器不需要处理,将直接查看IPv6基本报头进行数据转发。
2,扩展能力强:
针对IPv4报头的大小只能是20~60个字节,受到大小的限制,不便于日后进行扩展。
针对IPv6扩展报头长度任意,不受大小的限制,便于后续扩展(IPv6扩展报头,必须是个8个字节的整倍数)协议定义的
针对IPv6扩展报头来说,出现的顺序RFC1883中定义中以下顺序进行
目的选项扩展报头最多两次其他最多一次。目的地体现,沿途中指定也可以出现一次
IPv6基本报头
1,逐跳选项扩展报头 (每个设备都会处理所以放在上面)
2,目的选项扩展报头
3, 路由扩展报头
4,分段扩展报头
5,认证扩展报头
6,封装安全有效载荷扩展报头
7,目的选项扩展报头 (这个代表只有目的节点才会处理)
上层协议数据报头
IPv4分类
组播
单播
广播
IPv6分类
单播
组播
任播
单播:与IPv4单播是相同的,目的地址是单播IPv6地址的报文,会送到被这个地址标记的接口。
链路本地地址(link-local addressLLA)FE80::/10(/10前十bit固定)
开启IPv6自动产生的三层地址,方便设备通信
范围:FE80::/10(即,从FE80::~FEBF:FF.....)
好处:链路本地地址为IPv6提供了一个独一无二优势,就是运行了IPv6的链路两端的节点天生就能够具备IPv6通讯能力,不需要像IPv4那样必须配置IPv4地址才可以具备三层通讯,在华为中只有先配置全局单播地址之后才会产生链路本地地址,思科只要IPv6就会产生链路本地地址。
LLA如何产生:
1,静态:认为的为这个接口配置一个链路本地地址。
2,动态:当一个链路启用IPv6功能之后,将自动为这个链路产生一个LLA,产生方法为EUI-64
作用范围:只能在直连的链路上生成(华为ping ipv6 地址 出接口)
用于:ripng OSPFv3都是使能LLA作为路由表的下一跳
ICMPv6某些机制需要依赖链路本地地址
ripng OSPFv3使用链路本地地址作为报文的源地址
[Huawei-GigabitEthernet0/0/0]ipv6 address fe80::1 link-local
配置链路本地地址前缀长度为64并且不可更改
[Huawei-GigabitEthernet0/0/0]ipv6 address fe80::1 64 (后面加掩码表示单播地址)
Error: The address entered is a link-local address when configure global unicast
address.(链路本地地址不能作为全局单薄地址)
一般在网络设备互联的链路中 一般建议LLA手动配置
1。LLA前缀为64,并且设备上不可更改
2。LLA不可以作为全局的单播地址配置在接口上
3。某些没有MAC地址的接口依然可以产生LLA
可聚合全球地址:类似于IPv4的公网地址,也是单播地址的一部分
可用地址范围2000::——3FFF:。。。
IANA机构给RIP地址,然后再给各个运营商 常见从2001::/16开始
2002::/16主要用于6to4隧道
3FF3::/16早期用于IPv6公共研究所,现在IPv6推广这串地址已经废除。
3+45+16+64 3.14法则 并不是固定的 推荐的
3:三个16位bit 地址前缀
1:一个16位bit 子网ID
4:四个16位bit 接口ID
ICMPv6
1。ICMP是IPv6的基础协议之一,用于向源节点转发报文和报错信息
2。协议类型号为:58
3。在IPv6中,ICMPv6除了提供ICMPv4功能外还提供其他功能,邻居发现,无状态配置 ,重复地址检测,PMTU等。
消息类型:信息消息TYPE取值:1-127。
错误信息TYPE取值:128-255。
IPv6邻居发现协议——NDP概述
NDP(neighbor Discovery Protocol 邻居发现协议)在RFC2462及RFC4861中定义。实现了IPv6中诸多重要机制:
路由器发现:发现链路上的路由器,获取路由器的通告的信息
无状态自动配置:获得路由器的地址前缀,终端自动生成IPv6地址
DAD:获取地址后,进行地址重复检测,确保地址不存在冲突
地址解析:请求目的网络地址的链路层地址,类似于IPv4的ARP
邻居状态跟踪:通过NDP发现链路上的邻居并跟踪邻居状态
前缀重编址:路由器对通告的地址前缀进行灵活设置实现网咯重编址
路由重定向:告知其他设备,到目标网络的更优下一跳。
在IPv6中,有很多重要的工作机制,基于NDP协议实现,而NDP基于ICMPv6进行实现,NDP协议使用ICMPv6的信息报文,交换一些必要的信息。在RFC2462中,定义了5种NDP使用的ICMPv6 信息报文
1,路由器请求RS,类型值为133
2,路由器通告RA,类型值为134
3,邻居请求NS,类型值为135。
4,邻居通告NA,类型值为136
5,重定向redirct,类型值为137。
所有承载NDP消息的ICMPv6报文跳数都限制为255,如果这个设备收到小于255NDP报文,则报文会被丢弃,这样更安全。
地址解析
1,IPv6的地址解析不再使用ARP,也不再使用广播方式
2,地址解析在三层完成,针对不同的链路层协议可以采用相同的地址解析协议
通过ICMPv6(类型135的NS及类型136的NA报文)来实现地址解析。
3,NS报文发送使用组播的方式,报文的目的IPv6地址为被请求的IPv6地址对应的
“被请求节点组播地址”,报文的目的MAC为组播MAC。
4,采用组播的方式发送NS消息相对比与广播的方式更加的高效,也减少了对其他节点的
影响和对二层网络的性能压力。
5,可以使用三层的安全机制(IPsec)避免地址解析攻击。
IPv6地址解析的特点
1,IPv6地址解析不依赖ARP完成,也不使用广播方式
2,地址解析在三层完成,针对不同的链路层协议可以采用相同的地址解析协议
3,层次分明,应为ICMPv6被看做三层协议,不像ARP那样,类似于2.5层
4,NS报文使用组播地址发送
5,采用三层完成解析,可以使用一些三层的安全机制,避免攻击的产生。
IPv6地址解析的好处:
1,加强介质的独立性:
针对IPv4来说,IPv4协议本身不能完成地址解析,依赖于ARP协议完成,而ARP服务于以太网,如果网络类型不同,
针对IPv6来说,IPv6的地址解析由NDP进行完成,基于三层进行解析,不需要对每一个链路层协议定义一种新的解析协议。
2,安全性更高:
针对IPv4 ARP协议自身存在缺陷,容易遭受到ARP欺骗攻击。
针对IPv6来收,地址解析基于三层完成,可利用三层安全机制,提高安全性。
3,降低了二层的网络的压力:
针对IPv4来说,ARP请求报文是广播发送,广播报文将会泛洪到整个广播域内,其他节点收到广播报文都会交于CPU处理。增加了主机的负担。
针对IPv6来说,NS报文采用组播地址发送,虽然组播地址也是交换机泛洪,但是有目的MAC是组播帧,其他节点收到这个报文之后,如果本身没有监听这个地址,报文将会在网卡上丢弃,而不会交于CPU处理,减少主机负担,(如果NS报文的被请求节点组播地址,由多个主机监听,则其他主机依然会交于CPU处理,但是后24bit相同的主机很难在一个广播域出现)
IPv6邻居路由表(dis ipv6 ne)
在IPv6中不存在ARP缓存表,取而代之的叫做IPv6邻居状态表,在IPv6中一共定义了5中邻居状态,
1,未完成状态(INCOMPLETE):表面当前正在针对地址进行解析,比如以及发送了NS报文
2,可达状态(REACHABLE):表明当前地址解析以及完成,此时认为地址是可达的,有两种原因进入陈旧状态,
1.此状态保持30S时间,将会进入到陈旧状态
2.收到了邻居非请求的NA报文,并且链路层地址不同。
3.可达,不仅要确定自己到达对端是可达的,也要确定对端到达自己是可达的,即双向可达。基于这个原因,如果收到一个未经请求的NS报文,并且链路层地址不同,这个NA报文只能证明邻居到末端的可达性。由于这个NA 不是本段NS之后的响应,所以本段不能确定自己到达对端是可达到。
IPv6种如何才能确定双向可达呢?
1.针对邻居发送NS报文之后,收到了责怪邻居NA报文。
2.上层应用程序的ACK报文(非重复的ack确定)
验证:两台设备互相telnet,并且查看IPv6邻居状态,将会永远保持到Reach状态
3,陈旧状态(STALE):上一状态达到30S进入陈旧状态。
4,延迟状态(DELAY):这个状态只能触发产生,当设备访问一个处于成就状态的节点时,将会进入到这个状态,
如果停留5S内未收到任何关于可达性的确定,将会进入到reach状态。
如果停留5S内收到任何关于可达性的确定,将会进入到PROBE状态。
延迟状态的5S:相当于发送邻居请求之后,如果没有收到NA报文,将会在这个状态停留5S,是预留给上层协议的一个可达性确认的机会,属于一种优化措施,或者说备用措施。
5,探查状态(PROBE) :延迟状态停留5s后,如果没有收到邻居可达性的确认
IPv6邻居状态的好处:
针对IPv4来说:ARP表项,本身没有办法做到动态维护,当吓一跳离开的实施,如果本端存在吓一跳的ARP表项,则依然会将数据发出,导致网络内传递大量无用流量。
针对IPv6来说,引入了IPv6邻居关系的维护,能够保证在访问的时候,确定这个下一跳是可达的地址,防止网络内传递无用的流量,这点ARP协议本身是做不到的,ARP只能通过老化机制实现。
在P2P链路上不存在IPv6邻居状态表,因为针对P2P链路上来说,本身存在链路层的检测比如LAP这些,所以不需要IPv6维护。
地址重复检测 DAD
机制概述:
1,重复地址检测确保网络中无两个相同的单播地址
2,所有地址都需要做DAD
3,使用NS和NA完成DAD交互过程。
原理:
1,一个地址在通过DAD地址重复检测之前称为“tentative地址”也就是试验性地址。接口暂时还不能使用这个试验性地址进行正常的IPv6单播地址通讯,但是会加入和该地址所对应的Soliceted-Node组播组。dis ipv6 int g0/0/0
2,DAD重复地址检测:节点向该tentative地址所在的Solicited-Node组播地址发送一个NS,如果收到某个其他站点回应的NA,就证明该地址已被网络上使用,节点将不能使用该tentative地址通讯。
3,接口在启用任何一个单播IPv6地址前都先不要进行DAD,包括link-local地址。
检测过程:设备A发送NS报文(组播)之后,设备B收到这个NS报文,有两种处理方式
1,如果B发现,冲突的这个地址,在自身上也是“试验地址”,则不做任何处理,将会放弃这个地址的使用
2,如果B发现,冲突的这个地址,已经被自己正常使用,则会向该地址的被请求节点组播发送一个NA报文。变成冲突状态(DUPLICATE)
[Huawei]dis ipv6 interface GigabitEthernet 0/0/0
GigabitEthernet0/0/0 current state : UP
IPv6 protocol current state : UP
IPv6 is enabled, link-local address is FE80::5689:98FF:FEE2:7EC3
Global unicast address(es):
2001:10::10:10, subnet is 2001:10::/64 [DUPLICATE]
Joined group address(es):
FF02::1:FF10:10
FF02::2
FF02::1
FF02::1:FFE2:7EC3
MTU is 1500 bytes
ND DAD is enabled, number of DAD attempts: 1
ND reachable time is 30000 milliseconds
ND retransmit interval is 1000 milliseconds
Hosts use stateless autoconfig for addresses
无状态地址自动配置(Stateless adress autoconfiguration,SLAAC)
作用:用于帮助设备发现本地直连链路 相连的设备,并获取与地址自动配置的相关前缀和其他配置参数(比如DNS服务器的地址,地址租期这些)
路由器发现是属于IPv6地址自动配置功能的基础,IPv6的路由器发现和地址自动配置主要依靠以下两种报文。
RA:路由器通告报文。由路由器定时组播发送RA报文,RA报文中包含本接口的全局单播前缀信息,以及一些其他的标志位实现其他作用。RA保温的Type134 Code0、
RS:路由器请求报文。由主机在接入网络后想要尽快获取网络前缀,就会发RS报文,Type133 Code0,收到RA报文之后将会进行地址自动配置
华为设备中RA报文的发送能力默认是关闭的,接口下使用命令:undo ipv6 nd ra half 开启RA报文的发送。
默认缺省情况下,RA报文的最大时间间隔是600s,最小发送时间间隔是200s。即RA发送时间在200s~600S之间,思科设备默认200s定期发送。
ipv6 nd ra max-interval //修改最大发送时间间隔
ipv6 nd ra min-interval //修改最小发送时间间隔
华为设备中RS保温的发送能力默认是开启的,但是需要在接口下配置:ipv6 address auto global //配置接口使用SLAAC来配置全局单薄地址,默认设备指挥在配置之后发送3次RS,之后不再发
主机接收到RA报文之后的自动配置:
第一步:AR1发送RA报文--->
源地址:AR1的G0/0/0接口的LLA(link-local address)
目的地址:FF02::1(所有节点组播地址)
第二步:PC3配置了通过SLAAC进行IPv6地址自动配置之后,将会执行以下动作:
1,先根据接口标识产生链路本地地址。
2,发出邻居请求,进行重复地址检测。
- 如地址冲突,则停止自动配置,需要手动配置
- 如不冲突,链路本地地址生效,根据RA报文中的前缀产生全局单播地址,并产生指向该路由器本地地址的缺省路由
主机发送RS报文请求地址自动配置
如果此时PC2接入网络之后,将会根据EUI-64产生接口的链路本地地址,然后进行DAD检测,检测通过之后会发送RS
第一步:PC2发送RS报文-->
源地址:PC2的G0/0/0接口的链路本地地址
目的地址:FF02::2(所有路由器组播地址)
第二步:AR1接收到RS响应报文-->
源地址:AR1的G0/0/0接口的LLA(link-local address)
目的地址:PC2的G0/0/0的接口LLA
第三步:PC2收到RA之后,根据RA报文中的64位前缀,结合EUI-64自动生成GUA,并且产生指向路由器链路本地地址的缺省路由。
默认情况下,路由器会将接口所有的IPv6前缀,填充到RA报文中发送,主机收到之后根据前缀配置IPv6地址,如果RA报文中存在多个IPv6前缀,则主机会配置多个IPv6前缀
IPv6 nd ra prefix 2003:123::64 10000 1000 指定某一个前缀发送
注意点:当设备出现以下情况时:将会出现忽略RA报文的处理:
1:RA报文选项中的“auto”未置位。
2:前缀与已有地址前缀重复(包括link-local地址)。
3:RA报文选项中的“preferred lifetime”时间大于“valid lifetime”
4:前缀长度与接口ID长度之和不等于128位。
如果设备开启了RA报文的发送能力,默认情况下,接口存在几个全局单播前缀,RA报文中就会包含多个前缀信息。主机收到就会配置多少个地址。
如果设备本身没有全局单播地址依然会发送RA报文 但是其中不包括前缀信息 其他设备收到之后也不进行配置
当广播域内存在多个发送RA的路由器,并且RA报文中的前缀信息也是相同的时候,此时主机只会配置一个全局的IPV6单播地址。
如果广播域内存在多个发送RA的路由器,设备将根据每个RA报文中携带的前缀信息都产生GUA。但是在产生缺省路由的时候将会比较RA报文的优先级,优先级越高越优。
如果RA保温的路由优先级相同,设备将会产生多条缺省路由,报文会通过负载分担的方式通过缺省路由转发。
华为设备最多只能从RA报文中学习到3条缺省路由,并且不能覆盖,多余的路由将会舍弃。
RA报文默认指向路由优先级:IPv6 nd ra preference high/medium/low
dis ipv6 routing-table
在IPv6中 既然能通过SLAAC进行地址的自动配置,那么DHCPv6的部署是否还存在必要性呢?
SLAAC局限性太大。打印机,PC需要静态的地址 SLACC不能实现,mac地址发生改变,地址也会随之改变,
当存在多条缺省路由的时候,如果其中一台设备故障 主机缺省路由如何切换?
1,当发送RA报文的路由器接口shudown之后,设备将会从接口发送出最后一个RA报文,其中Routerfiletime设置为0,主机收到之后将会删除产生的缺省路由。
2,[huawei-g0/0/0]IPv6 nd ra router-lifetime XX //修改根据RA报文产生缺省路由失效时间 默认1800s。
3,Router lifetime 仅适用于作为默认路由器的路由器应用 如果设置为0,则主机不在产生指向此RA报文的发送者的缺省路由,但是依然会使用它的RA报文配置GUA。
IPv6设备用到了RA报文中的以下三个标记位:
1,A标记(Address Autoconfiguration Flag):地址自动配置标记位。(此标记只在RA报文中的prefix信息中出现。默认1)
置1时:代表告诉主机使用该前缀信息,通过SLAAC创建本地的IPv6 GUA
置0时:代表告诉主机不适用该前缀信息,通过SLAAC创建本地IPv6 GUA(但是缺省路由依旧产生)
2,O标记(Other Configuration Flag):叫做其他配置标记位。(出现在RA报文的主题字段中,默认0)
置1时:代表告诉主机使用无状态DHCPv6服务器获取,除了IPv6地址之外的其他配置信息。也就是只使用无状态DHCPv6服务器获取DNS等服务
置0时:代表告诉主机不适用无状态DHCPv6.配置任何参数。
3,M标记(Managed Address Configuration Flag):叫做管理地址标记位。
置1时:代表告诉主机使用有状态DHCPv6服务器获取IPv6 GUA还有其他配置
置0时:代表告诉主机不使用有状态DHCPv6,配置任何参数。
M=1类似于DHCPv4 但是还是有区别,设备收到RA报文之后的操作只有:
- 提取IPv6报头的源地址,作为本机的默认网关,其他所有参数都需要有状态DHCPv6进行配置,这点与DHCPv4不同
- 这是因为IPv6协议开发者认为根据RA报文产生的缺省路由更准确些。
上述3个标记位,
有状态DHCPv6与无状态DHCPv6的区别(DHCPv6不能为主机提供网关,由RA报文提供)
1,有状态DHCPv6:能够为主机提供IPv6地址,也能够记录IPv6客户端的信息,而且能够提供DNS等配置参数。
2,无状态DHCPv6:不能够为主机提供IPv6地址,也不会记录客户端信息,只能够提供DNS配置参数。
隧道技术
IPv6和IPv4共存技术分为两类:
1双栈协议
2IPv6 over IPv4隧道技术:特点是将IPv6报文封装进IPv4报头中,把IPv6报文作为IPv4报文的载荷,穿越IPv4网络连接多个IPv6孤岛
1,手动隧道
2,GRE隧道