您的位置:首页 > 理论基础 > 计算机网络

IPv6技术研究

2014-07-26 22:58 375 查看
问:
1、IPV6怎么配网关,如何实现跨网段通信
2、IPV6地址解析表有没有
答:
windows 7上面可以配置ipv6的网关。windows xp上由于TCP/IP版本 6的属性对话框是灰的,所以只能到cmd上去对ipv6进行操作,且没有配置网关的命令。不过在windiows 7上属性对话框是可以用的。这意味着,ipv6可以像ipv4那样配置自动获取ip或是手动添加ip,还可以添加多个网段,配置网关、DNS等。
ipv6的地址解析表是有的,在PC可以netsh\interface\ipv6> show neighbors;在命令行上可以[vxworks]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直连上联口,上联口pvid 101,vlan 101 untag,pc上面配一个ipv4地址和一个ipv6地址,都和l3接口同网段。
在pc上ping 带内ipv4和带外ipv4可以通,ping带内ipv6不能通。

答:
vxworks协议栈是这么处理的,对于IPV6,没有要求l3接口一定能ping 通带内或带外。

IPv6地址 = 网络前缀 + 接口标识
网络前缀:相当于IPv4地址中的网络ID
接口标识:相当于v4地址中的主机ID。

IPv6地址类型

单播地址(Unicast Address):标识一个接口,目的为单播地址的报文会被送到被标识的接口
组播地址(Multicast Address):标识多个接口,目的为组播地址的报文会被送到被标识的所有接口
任播地址(Anycast Address):标识多个接口,目的为任播地址的报文会被送到最近的一个被标识接口,最近节点是由路由协议来定义的
IPv6没有定义广播地址,所有格式前缀不是组播格式前缀(1111 1111)的IPv6地址都是IPv6单播格式(任
播和IPv6单播格式相同)。IPv6单播地址和IPv4单播地址一样可聚合。

IPv6单播地址包括:
1、全球单播地址   (Aggregatable global unicast address)
2、站点本地地址    (Site-local address) 以FEC0::为前缀。其中前十bits 固定为1111111011,紧跟在后面的是连续38bits 0。对于站点本地地址来说,前48bits 总是固定的。在接口ID和48bits 特定前缀之间有16bits 子网ID字段,供机构在内部构建子网。站点本地地址不是自动生成的。
3、链路本地地址  (Link-local address) 以FE80::为前缀,11-64位为0,只能在连接到同一本地链路的节点之间使用,主要是用于IPv6的一些协议中(比如邻居发现协议:NDP)。 当一个节点启动IPv6协议栈时,节点的每个接口会自动配置一个链路本地地址。这种机制使得两个连接到同一链路的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-pt

4)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 bits)+子网ID(m bits)+接口ID(128-n-m bits),其中前两部分形成了IPv6的前缀。
6bone IPv6实验网络,06年已经停止运行

全球单播地址的格式如下:



组播地址

组播地址的格式如下:



组播地址最高位前8位为1,故组播地址以FFXX::开头。
Flag 为0 :永久分配的 1:临时分配的。
范围(scop)用来限制组播数据流在网络中发送的范围。
0:预留;
1:节点本地范围;单个接口有效,仅用于Loopback通讯
2:链路本地范围; FF02::1
5:站点本地范围;
8:组织本地范围;
E:全球范围;
F:预留。
组ID(group-ID)字段。该字段长度可以为112位,用来标识组播组,而112位最多可以生成2112个组ID . RFC2373并没有将所有的112位都定义成组标识,而是建议仅使用该112位的最低32位组ID,将剩余的80位都置0。

IPv6有一些特殊的组播地址,这些地址有特别的含义:
FF01::1(节点本地范围所有节点组播地址);
FF01 ::2(节点本地范围所有路由器组播地址);
FF02::1(链路本地范围所有节点组播地址);
FF02::2(链路本地范围所有路由器组播地址);
。。。。。。

在IPv6组播地址中,有一种特别的组播地址,叫做Solicited-node地址(请求节点组播地址)。Solicited-node地址是一种特殊用途的地址.主要用于重复地址检测和地址解析。Solicited-node地址由前缀FF02::1:FF00:0/l04和单播地址的最后24位组成。一个单播地址对应一个Solicited-node地址。Solicited-node地址受限范围为本地链路范围::FF02:0:0:0:0:1:FFXX:XXXX,用于地址解析、DAD

和请求节点组播地址相近的还有一个概念:IPv6多播映射地址
用于NS报文中是33:33:ff:xx:yy:zz
用于RS报文中是33:33:00:xx:yy:zz
其中xx:yy:zz是所请求的IPv6地址的后24位,ARP报文用的是广播,这里用组播减少了对网络的影响。

ipv6节点的每个接口有一个本地链路地址、一个回环地址,可以有一到多个分配的可聚合全球单播地址和相应的被请求节点多播地址。

IPv6地址配置方法
手动配置
自动配置(前缀、接口IP+路由地址、跳数、MTU)
  有状态地址自动配置(DHCPv6)
  无状态地址自动配置(路由发现协议)

无状态地址自动配置(路由发现协议)

前缀获得:
一个主机的IPv6地址由前缀和接口ID组成,接口ID的长度固定是64位,可以由 48位MAC地址自动生成64位Interface ID。

IPv6前缀的实际作用是标识主机与路由器之间的网络。主机需要的这个前缀就是路由器接口的前缀。为了自动获得这个前缀,只要在路由器和主机之间运行一个协议即可。使用NDP协议的Router Solicitation恳求和Router Advertisement 通告消息。前者用于发现路由器,并促使路由器发送Router Advertisement消息通报前缀信息。

整个流程如下:

(1)主机发送router Solicitation报文
(2)路由器回应Router Advertisement报文
(3)主机获得前缀及其它参数
(4)路由器周期性地向外发送RA报文

具体过程参见路由请求、路由通告章节

接口ID获得:

接口ID可以根据IEEE EUI-64规范将48比特的MAC地址转化为64比特的接口ID,MAC地址的唯一性保证了接口ID的唯一性,设备自动生成,不需人为干预。
接口ID可由设备随机生成或者手工配置。通常站点本地地址和链路本地地址中的接口ID是由设备生成的,全球可聚合单播地址中的接口ID可以自己配置



u/L 0本地管理 1 全球管理

重复地址检测(DAD)    RFC
2462


重复地址检测(Duplicate Address Detection)确保地址的唯一性,任何地址都要做DAD,地址配置给接口前称为“tentative地址”,暂时不可用,经过DAD检测后,没有冲突后可以使用,如果有冲突,则不能分配给接口使用。

一台主机的本地链路地址和所有的可聚合全球单播地址都要进行重复地址检测。检测时发送邻居请求报文,target域中的地址就是自己要使用的tentative地址,如果有主机接收到NS报文,发现其中的Target域中包含的地址对它而言不是一个tentative地址(即是一个已经正常使用的地址),那么它就会向Target所在的Node-Solicited组播组发送一个Neighbor
Advertisement。



ICMPv6
ICMPv6实现IPv4中ICMP、ARP和IGMP的功能。ICMPv6协议功能: 向源节点报告关于目的地址传输。
ICMPv6消息分为两类:差错消息和信息消息。
差错消息用于报告在报文转发过程中的错误,常见的有目标不可达(Destination Unreachable)、数据报文超长(Packet Too Big)、超时(Time
Exceeded)和参数问题(Parameter Problem)。
信息消息提供诊断功能和附加的主机功能,比如组播侦听发现(MLD)和邻居发现(ND)。常见的ICMPv6信息消息主要包括回送请求(Echo Requst)和回送应答(Echo Reply)。

组播侦听发现 MLD
MLP:Multicast Listener Report

IPV6的长度类型字段为0x86dd
ICMPv6在IPV6报文中的next-header为58(0x3a)
ICMPv6报文格式



类型:标识ICMPv6报文类型,它的值根据报文的内容来确定。
代码:用于确定ICMPv6进一步的信息,对同一类型的报文进行了更详细的分类。
校验和:用于检测ICMPv6的报文是否正确传送。
报文体:用于返回出错的参数和记录出错报文的片段,帮助源节点判断错误的原因。或是其它参数。

ICMP type类型如下:



用于封装ICMPv6报文的IPv6报文的源地址的原则
1、对于信息消息
1)如果收到的IPv6分组的源地址是单播地址,那么在进行ICMPv6应答时源地址就是IPv6分组的目的地址。
2)如果收到的IPv6分组的源地址是组播地址或任播地址,那么在进行ICMPv6应答时源地址是接收到该分组的接口地址。
2、对于差错消息
1)生成差错报告的PC或设备将报告IPv6分组出错信息的节点地址作为源地址。
2)主动发送的ICMPv6报文需要查看路由表,确定适合的接口单播地址作为源地址。

ICMPv6报文处理规则

1、当接收到ICMPv6差错报告报文时,如果无法识别具体的类型,必须将它交给上层协议模块进行处理。
2、当接收到ICMPv6信息报文时,如果无法识别具体的类型,必须将它丢弃。
3、ICMPv6差错报告报文应尽可能多的包括引发该差错报文的IPv6分组片段,但要小于IPV6的MTU(1280字节)。

IPV6邻居发现协议用ICMPv6和被请求节点的组播地址来得到同一网络上相邻节点的链路层地址,验证邻居的可达性,找到邻居路由器。
IPV6邻居发现协议包括的功能有邻居发现路由器发现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地址的最后24bit来实现的,减少了广播风暴的可能性。
邻居通告 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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  网络 ipv6