IPv6技术研究
问:
1、IPV6怎么配网关,如何实现跨网段通信
2、IPV6地址解析表有没有
答:
在Windows7系统中可以配置IPv6网络接口的网关设置。而在WindowsXP系统中,默认情况下TCP/IPv6版本界面不可见,默认设置为不可用状态,在命令提示符窗口中执行IPv6相关操作更为便捷。值得注意的是,在Windows7系统环境中,默认情况下该界面已经恢复可用状态。这意味着,IPv6配置支持类似于IPv4的功能性特点:自动获取IP地址、手动指定IP地址以及设置多个网络段域,并完成网络接口相关的网关和DNS配置任务。
IPv6地址解析表确实存在,在Windows PC端可执行netsh interface显示出相关的IPv6邻居信息;通过终端界面运行vxworksp_ndp -a命令即可获取相应的邻居列表信息。
问:
带内配置如下:
C8510-A5(config)# show inband-info
VLAN interface : 1000
IPV4 IP address : 192.168.86.91
IPV4 IP netmask : 255.255.255.0
IPV6 IP address : 2001::e1:2:1:1:3
IPV6 IP prefix : 64
l3配置如下:
C8510-A5(config-vlan-101)#show vlan l3-interface
VLAN interface : 101
IPv4 address : 192.168.21.254
IPv4 netmask : 255.255.255.0
IPv6 address : 2001::e2:2:1:1:1
IPv6 prefix : 64
L3 interface ARP proxy : enable
L3 interface ND proxy : enable
当前将一台PC通过直连方式连接至上联口,并对该_upper口配置为PVID 101,并设置VLAN 101为无标签,在该PC上分配了一个IPv4地址以及一个IPv6地址,这些配置均与L3接口处于同一网络段。
在pc上ping 带内ipv4和带外ipv4可以通,ping带内ipv6不能通。
答:
该协议栈采用如下方式进行处理:针对IPv6地址族不强求支持三层接口必定实现内部或外部可达性保证即使在三层接口缺乏内部网链路的情况下也能完成通信任务
IPv6地址 = 网络前缀 + 接口标识
网络前缀:相当于IPv4地址中的网络ID
接口标识:相当于v4地址中的主机ID。
IPv6地址类型
单播地址标识(Unicast Address):该地址用于指定一个接收端口,在此端口处将接收其报文并将其转发至该指定的接收端口。
该 multicast 地址用于代表一组网络接口。其作用是将目标数据分片发送至所有被指定的网络设备。
任播地址用于标识多个网络接口。其报文会被路由协议分配至最邻近的标识接口处。其中邻近区域由路由协议动态计算并更新。
没有为IPv6定义广播地址;所有非组播类目的前缀(二进制值为0b1111\ 0000)的IPv6地址均为IPv6单播地址。
播和IPv6单播格式相同)。IPv6单播地址和IPv4单播地址一样可聚合。
IPv6单播地址包括:
1、全球单播地址 (Aggregatable global unicast address)
2、站内本地地址(Site-local address)采用FEC0::作为前缀。其中前十位二进制位预先设定为固定值' 0b' 7FFE-9A2B-7FFD-9C3D-99A5-7FFC ''(即十进制值4294967293),随后跟着连续的38位零值二进制位。就站内本地地址而言,在其前面总共有固定的48位二进制位数值。在接口标识符与该特定的48位前缀字段之间存在一个长度为十六位的子网标识符字段(Subnet ID),该字段专门用于机构内部划分子网结构。站内本地地址并非自动分配生成的
链路本地地址(Link-local address)是以FE80::开头,并且其第11至第64位字段为零值的一种地址类型。这种地址仅限于在其所属的本地网络路径上的设备之间通信,并主要应用于IPv6相关协议(如邻居发现协议NDP)。一旦某设备启用IPv6功能表层架构(protocol stack),该设备的所有接口都将自动分配一个相应的本地地址。这种设计使得任何两个通过同一网络路径相连的IPv6设备无需额外配置即可实现通信。默认网关通常会采用此类型的地址进行通信操作。
4、特殊的地址
1)未指定地址:全0地址 :: 0:0:0:0:0:0/128 或者 :/128
该地址可以表示某个接口或者节点还没有IP地址,可以作为某些报文的源IP地址(比如作为DAD报文的源IP DHCP)。用于IPv6节点在没有获取IPv6地址时的
2)回环地址:::1 0:0:0:0:0:1/128 或者::1/128
用于IPv6节点发送报文给自己
3)ipv4兼容的ipv6地址:在过渡技术中会使用到一些包含IPv4地址的IPv6地址,为了让IPv4地址显得更加突出一些,定义了内嵌IPv4地址的IPv6地址格式。内嵌IPv4地址格式是过渡机制中使用的一种特殊表示方法。
在这种表示方法中,IPv6地址的部分使用十六进制表示,IPv4地址部分是十进制格式。
0:0:0:0:0:0:192.168.1.2或者::192.168.1.2(96个0)
自动ipv4兼容隧道 nat-pt4)ipv4映射的ipv6地址:这种地址最前80比特为全0,中间16比特为全1,最后32比特为IPv4地址。这种地址用来把只支持IPv4的节点用IPv6地址表示。在支持双栈的IPv6节点上,IPv6应用发送目的报文是这种地址时,实际上发出的报文为IPv4报文(目的地址是“IPv4映射的IPv6地址”中的IPv4地址)。
全球单播地址
目前已经分配的全球单播地址前缀都是以001开头的,分配范围有以下几个:
2001::/16 IPv6 Internet
2002::/16 6to4隧道
3ffe::/16 6bone
还有2003::/16到3ffd::/16目前没有分配。
一般由路由前缀(n位二进制数)、子网ID(m位二进制编码)以及接口ID(剩余的128减去n和m后的位数)构成,在IPv6中这两者共同构成了网络地址的部分。
6bone IPv6实验网络,06年已经停止运行
全球单播地址的格式如下:

组播地址
组播地址的格式如下:

组播地址最高位前8位为1,故组播地址以FFXX::开头。
Flag 为0 :永久分配的 1:临时分配的。
范围(scop)用来限制组播数据流在网络中发送的范围。
0:预留;
1:节点本地范围;单个接口有效,仅用于Loopback通讯
2:链路本地范围; FF02::1
5:站点本地范围;
8:组织本地范围;
E:全球范围;
F:预留。
group ID字段具有最大长度为112位,并用于标识参与的广播群组。这些group ID能够生成的最大数量达到2^{112}个不同的值。然而,在RFC 2373标准中,并未将所有可能的group ID直接指定为有效的广播群组标识符;相反地,则建议仅使用该group ID的最低32位来作为实际使用的广播群组标识符,并将剩余高位全部置零以避免冲突。
IPv6有一些特殊的组播地址,这些地址有特别的含义:
FF01::1(节点本地范围所有节点组播地址);
FF01 ::2(节点本地范围所有路由器组播地址);
FF02::1(链路本地范围所有节点组播地址);
FF02::2(链路本地范围所有路由器组播地址);
。。。。。。
在IPv6组播机制中存在一种特殊的组 broadcast 标识(称为 Solicited-node 标识)。该标识主要用于进行重复主机检测以及 IP 解析功能。其特征是由前缀 FF₀₂∶1∶FFFF∶F FFE∶8 88X 和单 broadcast 主机末尾的 24 位组成。每个单 broadcast 主机都分配到一个对应的 Solicited-node 标识(SOA)。受限范围为本地链路范围内 FF₀₂∶O∶O∶O∶O∶1∶F FXX∶XXXX 等值域部分用于 IP 解析和 DAD 配置工作
和请求节点组播地址相近的还有一个概念:IPv6多播映射地址
用于NS报文中是33:33:ff:xx:yy:zz
用于RS报文中是33:33:00:xx:yy:zz
其中xx:yy:zz表示请求的IPv6地址后24位,在采用广播机制发送ARP报文时,在这种场景下使用组播传输方式可以有效地减少对网络资源的影响。
每个IPv6设备的端口有一个本地IP 地址和一个环回寻址;这些端口还可以配置多个大范围广播服务,并对应地提供响应式多播寻址。
IPv6地址配置方法
手动配置
自动配置(前缀、接口IP+路由地址、跳数、MTU)
有状态地址自动配置(DHCPv6)
无状态地址自动配置(路由发现协议)
无状态地址自动配置(路由发现协议)
前缀获得:
每个主机的IPv6地址都包含一个前缀与一个接口标识码。其中,这些Interface ID可源自48位MAC地址的自动转换。由于其长度固定为64位。
IPv6地址的作用在于标识主机与其所属的路由器之间的网络关系。该IP地址即为主机所属路由器接口分配的地址。通过在路由器和主机之间运行特定协议的方式,可以自动生成该地址。采用NDP协议中的Router Solicitation请求消息和Router Advertisement公报消息。前者用于发现routers并引导其发布Router Advertisement消息以传递相关地址信息。
整个流程如下:
(1)主机发送router Solicitation报文
(2)路由器回应Router Advertisement报文
(3)主机获得前缀及其它参数
(4)路由器周期性地向外发送RA报文
具体过程参见路由请求、路由通告章节
接口ID获得:
接口ID遵循IEEE EUI-64规范将48-bit MAC地址转换为64-bit接口ID。MAC地址的独特性确保了 interfaces ID的独特性。设备能够自动生成 interfaces ID,并无需人工干预
接口ID可通过设备随机生成或手动设置。一般而言,在站点本地地址和链路本地地址中找到的接口ID通常是由设备自动生成的;而对于全球可聚合单播地址中的接口ID,则允许自行指定。

u/L 0本地管理 1 全球管理
重复地址检测(DAD) RFC 2462
重复地址检测(DA/DRP)保证了网络设备间地址的一致性与唯一性。所有配置的网络设备都需要完成DAD过程,在接口配置之前被系统标记为"临时可用地址"。该临时可用状态仅在DA过程完成后恢复,在无冲突情况下允许接口正常接入;如果存在冲突情况,则DA过程失败。
一台主机的所有本地接口以及可聚合的所有全球单播接口都需要执行重复性检测。在目标域中设置该主机将使用的临时性IP地址,在执行重复性检测的过程中。当某个主机接收到来源广播数据(NS广播数据)时,在其目标域中的IP列表中发现了一个已经被分配为临时IP使用的目标子网段,则会将当前节点的信息告知该目标节点参与组播服务的所有节点。

ICMPv6
ICMPv6支持IPv4中ICMP、ARP和IGMP的功能。ICMPv6协议功能: 将目标地址的信息反馈给源节点。
ICMPv6消息分为两类:差错消息和信息消息。
错误信息用于标识报文转发过程中出现的问题。常见的错误类型包括:目标无法到达(Destination Unreachable)、数据包过大(Packet Too Big)、超时事件发生(Time Exceeded)以及参数配置不当(Parameter Problem)。
信息消息包含检测功能以及额外的主机功能,例如组播探测发现(MLD)和邻居识别(ND).常见的ICMPv6信息消息主要包括应答请求(Echo Request)和应答回执(Echo Reply).
组播侦听发现 MLD
MLP:Multicast Listener Report
IPV6的长度类型字段为0x86dd
ICMPv6在IPV6报文中的next-header为58(0x3a)
ICMPv6报文格式

类型:标识ICMPv6报文类型,它的值根据报文的内容来确定。
代码:识别ICMPv6进一步的信息,并实现了更为细致的分类。
校验和:用于检测ICMPv6的报文是否正确传送。
报告体:用于返回错误信息或记录错误发生的情况,并帮助源节点定位并理解错误发生的具体原因。或其他相关参数。
ICMP type类型如下:

用于封装ICMPv6报文的IPv6报文的源地址的原则
1、对于信息消息
当接收方收到IPv6分组且其源IP地址属于单播范围时,在执行ICMPv6响应操作时,该分组的目标IP地址即为其来源。
2)当收到的IPv6数据包的源IP地址属于组播范围或任意广播范围时,在发起ICMPv6响应请求的过程中,源IP地址将被设置为接收该数据包的接口IP地址。
2、对于差错消息
由生成差错报告的PC或设备负责传递IPv6分组出错信息的节点地址作为源地址。
该ICMPv6报文必须通过路由表查询以获取合适的接口单播地址作为源地址。
ICMPv6报文处理规则
当接收到来自ICMPv6差错报告的报文时,在无法明确识别其具体类型的情况下,则应将其交由上层协议模块进行处理。
2、当接收到ICMPv6信息报文时,如果无法识别具体的类型,必须将它丢弃。
错误报告数据包应尽量多地包含与该错误相关的IPv6分组字段,并且必须不超过IPV6 MTU大小(1280字节)。
该协议通过ICMPv6消息及目标节点的广播地址获取相邻节点在同一个网络中的链路层接口信息;确认与该接口相连设备是否可到达;识别其对应的路由器。
IPv6邻居探测协议分别包括:** 邻居探测 、 路由器探测 、 自动地址分配 和 流量转发功能 **。
邻居发现 ND (Neighbor Discovry)
邻居发现可以通过发送邻居请求信息并发布邻居通告消息来实现其网络设备间的通信功能与IPv4网络中使用的ARP协议具有相似性。该系统既可以用于获取已连接的链路层接口地址(多播场景),也可以用于检测潜在连接是否可达(单播场景)。
**邻居请求 NS (**Neighbor solicitation) type:135 code:0
发送邻居请求时的目的MAC是IPV6组播MAC:IPv6mcast_ff:xx:yy:zz(33:33:ff:xx:yy:zz)
目的IPv6是组播IPv6:ff02::1:ffxx:yyzz (Solicited-node)
无论是哪种目的节点(包括目标MAC或目标IP),都通过其目标节点IPv6地址中的最后24位来实现通信机制的设计。这种设计方法使得潜在的广播风暴风险得以显著降低。
**邻居通告 NA (Neighbor advertisment)**type:136 code:0
邻居通告是对邻居请求数据包的响应;当本地链路上发生链路层地址变更时,则会自动发送相应的邻居通告报文。
邻居通告是对邻居请求数据包的响应;当本地链路上发生链路层地址变更时,则会自动发送相应的邻居通告报文。
IPv6邻居发现通过一次报文交互即可完成学习过程;而IPv4的ARP协议则需两次报文交互才能完成相同功能;由此可见, IPv6邻居发现的整体效率明显更高。

NS报文字段

类型:135
代码:必须为0
校验和:整个ICMPv6报文的校验和
保留:必须为0x00000000
目标IPv6地址:用于解析的目的IPv6地址,在发送的ICMPv6报文中,目标MAC和目标IP均为广播地址,并非所请求的目标IPv6地址。因此这一字段具有重要意义。
选项类型:对于ICMPv6报文类型的数值等于135的情况,默认情况下设置该字段的值为1,并指示本机所拥有的源链路地址;而对于数值等于136的情形,则将该字段设置为2,并指示其目标节点对应的本地链路地址。
选项长度:以8字节为单位,包括选项类型、选项数据长度、可选项,此处为1
NA报文字段

路由R比特字段:R=1表明该报文是由路由器发出的
请求S比特字段:S=1表明是对邻居请求报文的响应
指定字段"0":当接收方收到该数据包时(即'O'字段值为1),应根据数据包中的目的链路层地址更新本地缓存信息
用于ICMPv6信息报文的可选项格式
type=1,源链路层地址(Source Link_layer Address)
=2,目的链路层地址(Target Link_layer Address)
=3,前缀信息(Prefix Information)
=4,重定向首部(Redirected Head)
=5,最大传输单元(MTU)
RS报文字段
**

**
类型字段,其值为133。
代码字段,必须置为0。
校验和字段,保存整个ICMPv6报文的检验和。
保留字段,保留不用,其值必须等于0。
可选项字段,包含了一些可选参数。
目标主机的链路层地址可以通过发送报文的方式实现。
该网络设备能够通过接收相关报文信息确定目标节点所在的网络接口。
在处理包含该请求的信息时,默认情况下不会采用广播机制,在响应包含该请求的控制包时将仅将控制信息发送给发起请求的那个节点。
RA报文字段

类型字段,其值为134。
代码字段,必须置为0。
校验和字段,保存整个ICMPv6报文的检验和。
最大跳数(max hop)字段,在路由器中被配置为默认值时,在Pv6分组头中将本地网络主机指定到'跳数限制'字段。
M/O比特字段,决定主机的地址自动配置方法。
M 如被置“1”,不准主机使用无状态地址自动配置,而应采用DHCP配置IP地址。
O 如被设置为"1",该主机可自动分配无状态地址,则要求其他配置信息必须通过 DHCP 设置。
保留字段,保留不用,其值必须等于0。
