关于IPv6的概述

现在正常使用的IP协议为版本4,用32位来表示,地址空间为65536 x65536,结果约为42.9亿,但并不表示这些地址可以供42.9亿个节点使用,所以这样就使得版本4IP一下子变得空间狭小,那么随着网络的迅速膨胀,IPv4的地址空间变得几乎快耗尽了。在这样的情况下,出现了一些缓解IP地址的技术:如VLSMNAT。与此同时,人们也开发了一个地址空间更为庞大的IP地址,来解决地址匮乏的问题,这个协议就是IP版本6,即IPv6

 

IPv6的地址空间为128位,采用16进制表示

IPv6将整个地址分为8段来表示,每段之间使用冒号隔开,每段的长度为16位,表示如下:

 

XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX

可以看出,IPv6中每一个段是16位,每段共四个X,其中X使用4bit表示。

XXXX的取值范围为 0000FFFF

 

IPv6的表示方法

对于一个完整的IPv6地址,看起来比较复杂,写起来也不是很方便,没有v4那么友好,这个怎么解决呢?在IPv6中有两种压缩方法,分别如下所示:

1.省“0”压缩法

2.双冒号“::”压缩法

在一个完整的IPv6中,会经常的出现很多个0,表示起来比较麻烦,其实可以将不必要的0去掉。这样可以大大的节省时间,方便人们的阅读和书写。

例:

压缩前:2001:0410:0000:0000:0000:0000:0000:0001

压缩后:2001:410:0:0:0:0:0:1

注意:在第二个字段中的0410省掉的是开头的0,而不是结尾的0,这是IPv6地址表示中的一个约定;对于中间的0,如2001,不做省略;对一个段中全0的情况,保留一个0

 

这仍然比较麻烦,为了方便书写,当地址中存在一个或多个连续的16比特为0字符时,为了缩短地址长度,可用一个::(双冒号)表示,当一个IPv6中只能有一个::。

 

压缩前:FF02:30:0:0:0:0:0:5

压缩后:FF02:30::5

要注意的是,不能将有效的0也压缩掉,例如:FF02:3::5

要确定::代表多少位0,可以计算压缩地址中的块数,用8减去此数,然后将结果乘以16。例如,地址FF02::有两块(“FF02和“2”两块),这意味着其他616位快(总共96位)已被压缩。

 

两种压缩方法结合使用:

例如:

压缩前:0000:0000:0000:0000:0000:0000:0000:0001

压缩后:::1

 

IPv4过渡IPv6的兼容地址

在网络从IPv4过渡到IPv6时,就可能出现某些设备及连接了IPv4网络,又连接了IPv6网络,在IPv4内嵌在IPv6中即可以表示IPv4地址,又可以表示IPv6地址。

IPv4原有的地址基础上,增加960,变成128位。

例如:

IPv4地址为:123.1.1.1

IPv6地址为:::123.1.1.1

 

注:IPv6中没有广播地址,IPv6不建议划子网,如果需要划子网,网络位请不要低于48位。

 

IPv4地址中,地址分许多类型,比如代表节点自己的127.0.0.0/8,私有地址段,组播地址段,广播地址段,以及不可用地址,在IPv6中同样也有许多类型。

 

Unicast (单播)

Anycast (任意播)

Multicast (组播)

 

地址类型

二进制前缀

IPv6标识

未指定

00...0128bits

::/128

环回地址

00...0128bits

::/128

组播

11111111

FF00::/8

本地链路地址

1111111010

FE80::/10

本地站点地址

1111111011

FEC0::/10

可聚合全球地址

(其他)


 

 

Link-Local Address (本地链路地址)

而在IPv6网络中,两个IPv6的节点通过链路相连,必须在这条链路之间为各自确立一个Link-Local Address (即本地链路地址),在一条链路上,必须知道对方节点的本地链路地址,如果不知道,将是不能通信的,所以一条链路中的IPv6节点要通信必须拥有本地链路地址,并且这个地址只在一条链路中有效,也不能被路由,而不同链路的本地链路地址是可以重复的。

注:当一个节点上正常启动了IPv6之后,本地链路地址是不需要人工干预,会自动生成,也可以手工配置

 

自动生成的本地链路地址,默认的特殊格式为:

FE80::/10+54+EUI-64

FE80

0

EUI-64

10bit    54bit  64bit

EUI-64结构

EUI-64是将MAC地址的48为平均分成两部分,前24位,后24位;然后在中间补上FFFE16位)。地址中的U/L位进行求反(如果是1、则设置为0,反之亦然)。

这样说不是很容易理解,下面举个例子:

证明目标:ca00.02a8.0038

MAC地址重中间分开 |如下

ca00.02|a8.0038 将固定部分FFFE填充到MAC中间

ca00.02|FF.FE|a8.0038 ca换成二进制

 

1100 1010   1取反

 

1100 1000   转换16进制为 :

 C    8

以上就是本地链路地址的形成过程;

 

非以太网接口的EUI-64的产生

若没有MAC地址的接口,在开启IPv6后,需要产生EUI-64时,需要借用设备上第一个以太网插槽的第一个接口,也可以理解为没有MAC地址的接口,统统使用设备上MAC地址池中的第一个地址;

 

注:EUI-64不仅在产生本地链路地址时使用,在正常配置IPv6地址时,同样可以使用EUI-64来填充后64

 

Unique local address本地站点地址:

本地站点地址是单播中一种受限制的地址,只在一个站点内使用,不会默认启用,这个地址不能在公网上路由,只在一个指定范围内路由,需要手工配置,IPv6的本地站点地址类似IPv4中的私有地址。

 

得不到合法IPv6地址的机构可配置本地站点地址,表示方法为:

FECO::/10

 

Aggregatable global address 可聚合全球

可聚合全球单播地址相当于IPv4的公网地址,可以被路由的,可以正常使用的地址,网络位最少为48位;

可聚合全球单播地址范围:

2000:0000:0000:0000:0000:0000:0000:0000

3FFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF

以上可以看出;可聚合全球单播地址第一位是23,由此说明;可聚合单播地址占IPv6总地址空间的8分之一。

 

回环地址

回环地址表示节点自身,类似于IPv4127.0.0.0/8

回环地址表示为:

0000:0000:0000:0000:0000:0000:0000:0001

0:0:0:0:0:0:0:1

::1

 

Anycast 任意播

任意播地址表示一组接口,当一个发向某个任意播地址的数据包,只被最近的接口收到,这个地址是由路由协议定义的,不能手工配置,但是我们无法看到一个地址就能区分到底是单播还是任意播地址,因为任意播地址的表示格式和单播地址是一样的,也就是说任意播地址就是用普通的单播地址来表示的。任意播地址只能出现在路由器上,并且不能作为数据包的源地址来使用。

 

 

Multicast 组播

组播地址就是一个目标为组播地址的数据包将被多个节点收到,地址以

FF00::/81111 1111)打头,表示为:

FF00:0000:0000:0000:0000:0000:0000:0000/8

 

FF00:0:0:0:0:0:0:0/8

 

FF00::/8

 

配置IPv6地址

1.激活IPv6功能

开启IPv6流量转发功能

R1(config)#ipv6 unicast-routing

 

2.配置正常的IPv6地址

R1(config)#int f0/0

R1(config-if)#ipv6 address 2001:1::1/64

 

查看ipv6接口状态

R1#show ipv6 interface f0/0

 

3.使用EUI-64配置静态地址:

R1(config)#interface f0/0

R1(config)#ipv6 add 2001:1::/64 eui-64

 

4.启用接口ipv6功能

R1(config)#interface f0/0

R1(config-if)#ipv6 enable

 

5.为接口配置无编号地址

R1(config)#interface f0/0

R1(config)#ipv6 unnumbered f0/0

 

 

IPv6中,静态路由的写法分为三种:

1.直连静态路由(directly attached static routes

2.递归静态路由(recursive static routes

3.完全静态路由(fully sepcified static routes

 

1.直连静态路由

写法为只指定路由的出口,目标网络被认为是和此接口直连的,但此方法在接口为多路访问时,会有问题。

例:ipv6 route 2001:1::2/64 f0/1

说明:到达目标网络2001:1::2/64的数据包从接口f0/1发出去。


2.递归静态路由

写法为只指定路由的下一跳地址,此方法在任何网络环境中可行。

例:ipv6 route 2001:2::1/64 2001:1::2

说明:到达目标网络2001:2::1/64的数据包发给下一跳地址 2001:1::2.



 

3.完全静态路由

写法为同时指定出口和下一跳地址,只有当出口为多路访问时,并且确实需要明确指定下一跳时,才需要写完静态路由,下一跳必须是和出口同网段的

例:ipv6 route 2001:2::2/64 f0/0 2001:1::2

说明:到达目标网络2001:2::2/64的数据包从接口f0/0发出去,并且交给下一跳地址2001:1::2

 

IPv6 RIP RIPng

IPv6RIP,所有路由规则与IPv4 RIPv2基本相同,不同之处是IPv4 RIPv2使用UDP端口520,而RIPng使用UDP端口521IPv4 RIPv2数据包更新使用地址224.0.0.9,而RIPng使用跟新地址为FF02::9

在配置RIPng时,方法不同于IPv4 RIPRIPng是采用先配置进程,然后需要让那些接口运行在RIPng下,就必须到相应的接口下明确指定,并不像IPv4那样在进程下通过network来发布

 

OSPFv3OSPFv2IPv4 OSPF) 的原理都是相同的,OSPFv3选举router-ID的规则与OSPFv2相同,OSPFv3也是选择路由器上的IPv4地址作为router-ID,如果设备上没有配置IPv4地址,那么必须手工指定router-ID。在配置OSPFv3时,先配置进程,然后需要然那些接口运行在OSPFv3下,就必须到相应的接口下明确指定,并不像OSPFv2那样在进程下通过network来发布。

 

EIGRPv6IPv4 EIGRP的原理都是相同的,但是EIGRPv6必须有router-ID才能运行,所有在EIGRPv6不能获得Router-ID时,请手工配置Router-ID,更多的是EIGRP v6进程有个shutdown的特征,然后需要让那些接口运行在EIGRPv6下,就必须到相应的接口下明确指定,并不像IPv4 EIGRP那样通过network来发布。

EIGRP hello时间默认是5秒发一次,再低链路是60秒发一次,比如MBMA,或者所有低于或等于T1的链路(1.544M)。Hold timehello的三倍。

 

 

 

欢迎大家前来交流技术