IPv6
(提示:由于内容较多,阅读时,建议开启 文档结构图.)
目录
概述... 1
IPv6地址格式... 2
IPv6地址表示方法... 3
IPv6地址类型... 11
配置IPv6地址... 15
IPv6静态路由... 18
IPv6静态路由配置实验... 19
IPv6 RIP (RIPng)23
IPv6 OSPF OSPFv3... 31
IPv6 EIGRP (EIGRP v6)45
IPv6 BGP. 53
IPv6隧道... 65
IPv6组播... 82
 
概述
    在我们现有的网络中,几乎所有网络都使用IP协议作为通信的地址协议,我们的网络使用IP来表示地址信息,每一个节点都应该分配一个唯一的地址,才能保证通信正常。现在正常使用的IP协议为版本4,用32位来表示,地址空间为65536×65536,结果约为42.9亿,需要说明的是,虽然地址共有42.9亿之多,但并不表示这些地址可以供42.9亿个节点使用,因为我们的地址是分网段的,也就是说即使在一个节点的情况下,分配地址时,也是分配一个网段而不是一个地址,所以这样就使得版本4的IP地址一下子变得空间陕小,再加了有相当一部分地址是不可用的,那么随着网络的迅速膨胀,IP ver4的地址空间变得几乎快耗尽了。在这样的情况下,出现了一些如VLSM子网技术,NAT网络地址翻译技术,试图来缓和地址空间的快速消耗。与此同时,人们也开发出了一个地址空间更为庞大的IP协议,这个协议拥有比IP ver4多出数倍的地址空间,来解决网络地址匮乏的问题,这个IP协议就是IP版本6,即IPv6。
 
IPv6地址格式
    IPv6拥有更为庞大的地址空间,是因为IPv4只是采用32位来表示,而IPv6采用128位来表示,这样大的一个地址空间,几乎可以容纳无数个节点。正因为IPv6使用了128位来表示地址,在表示和书写上面具有相当的困难,原来的IPv4使用10进制来表示,而IPv6由于地址太长,则采用16进制来表示,但无论我们如何表示,计算机都是处理二进制。因为10进制表示时,使用0到9共十个数字来表示,而16进制需要在10进制原有的基础上多出6个数字,即需要多出11,12,13,14,15,这6个数字则采用字母的形式来表示,分别为
A(表示10),B(表示11),C(表示12),D(表示13),E(表示14),F(表示15),这些字母是不区别大小写的。
    但是由于IPv6拥有128位的长度,所以不能直接表示,必须像IPv4那样进行分段表示。IPv6将整个地址分为8段来表示,每段之间用冒号隔开,每段的长度为16位,表示如下:
 
XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX
 
    从上面可以看出,IPv6中每一个段是16位,每段共四个X,其中X使用4 bit表示,一个X就表示一个数字或字母,一个完整的地址共128 bit。
    一个X使用4 bit表示,那么XXXX的取值范围就应该从0000 到 FFFF。
 
IPv6地址表示方法
    对于一个完整的IPv6地址,需要写128位,已经被分成了8段,每段4个字符,也就是说完整地表示一个IPv6地址,需要写32个字母,这是相当长的,并且容易混淆和出错,所以IPv6在地址的表示方法上,是有讲究的,到目前为止,IPv6地址的表示方法分为三种,分别是:
    1.首选格式
    2.压缩表示
    3.IPv4内嵌在IPv6中
 
下面分别详细介绍这三种IPv6地址表示方法:
 
1. 首选格式
    首选格式的表示方法其实没有任何讲究,就是将IPv6中的128位,也就是共32个字符完完整整,一个不漏地全写出来,比如下面就是一些IPv6地址的首选格式表示形式:
0000:0000:0000:0000:0000:0000:0000:0000
0000:0000:0000:0000:0000:0000:0000:0001
2001:0410:0000:1234:FB00:1400:5000:45FF
3ffe:0000:0000:0000:1010:2a2a:0000:0001
FE80:0000:0000:0000:0000:0000:0000:0009
FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
 
    从上面IPv6地址的首选格式表示中可以看出,每一个地址,都将32个字符全部写了出来,即使地址中有许多个0,或者有许多个F,也都一个不漏地写了出来,由此可见,首选格式只需要将地址完整写出即可,没有任何复杂的变化,但是容易出错。
 
 
 
2. 压缩格式
    从前面一个IPv6地址表示方法首选格式表示方法中可以看出,一个完整的IPv6地址中,会经常性的出现许多个0,而我们知道,许多时候,0是毫无意义的,0表示没有,写出来,也表示没有,不写,也同样表示没有,那么我们就考虑能否将不影响地址结果的0给省略不写,这样就可以大大节省时间,也方便人们阅读和书写,这样的将地址省略0的表示方法,称为压缩格式。
    而压缩格式的表示中,分三种情况,下面来分别介绍三种压缩格式:
 
第一种情况:
    在IPv6中,地址分为8个段来表示,每个段共4个字符,但是一个完整的IPv6地址会经常碰到整个段4个字符全部都为0,所以我们将整个段4个字符全部都为0的使用双冒号 ::来表示,如果连续多个段全都为0,那么也可以同样将多个段都使用 双冒号 ::来表示,如果是多个段,并不需要将双冒号写多次,只需要写一次即可,比如一个地址8个段,其中有三个段全都为0,那么我们就将这全为0的三个段共48位用 ::来表示,再将其它5个段照常写出即可,当计算机读到这样一个不足128位的地址时,比128位少了多少位,就在 ::的地方补上多少个0,比如上面的 ::代替为48位,那么计算机就会在这个地址的 ::位置补上48位的0,这样就正确地将地址还原回去了。
    下面来看一些整个段4个字符都为0的IPv6地址使用压缩格式来表示:
例1
压缩前:
0000:0000:0000:0000:0000:0000:0000:0000 
压缩后:
::
说明:可以看出,由于这个地址的8个段全部都为0,所以只用 ::就将整个地址表示出来,当计算机拿到这个压缩后的地址时,发现比正常的128位少了128位,那么就会在 ::的地方补上128个0,结果为:
0000:0000:0000:0000:0000:0000:0000:0000 
可以看出,计算机还原的地址就是压缩之前的真实地址。
 
例2
压缩前:
0000:0000:0000:0000:0000:0000:0000 :0001
压缩后:
:: 0001
说明:可以看出,压缩后的地址比正常的128位少了112位,计算机就会在 ::的地方补上112个0,结果为:
0000:0000:0000:0000:0000:0000:0000 :0001
可以看出,计算机还原的地址就是压缩之前的真实地址。
 
例3
压缩前:
2001:0410:0000: 0000:FB00:1400:5000:45FF
压缩后:
2001:0410 :: FB00:1400:5000:45FF
说明:可以看出,压缩后的地址比正常的128位少了32位,计算机就会在 ::的地方补上32个0,结果为:
2001:0410:0000: 0000:FB00:1400:5000:45FF
可以看出,计算机还原的地址就是压缩之前的真实地址。
 
例4
压缩前:
3ffe:0000:0000:0000:1010:2a2a:0000:0001
压缩后:
3ffe::1010:2a2a::0001
说明:当计算机拿到这个压缩后的地址,发现比正常的128位少了64位,计算机就会试图在 ::的地方补上少了的64个0,但是我们可以看到,压缩后的地址有两个 ::,而计算机要补上64个0,所以这时补出来的结果很可能是以下几种:
3ffe:0000:1010:2a2a: 0000:0000:0000:0001
3ffe:0000:00001010:2a2a::0000:0000:0001
3ffe:0000:0000:0000:1010:2a2a:0000:0001
    从结果中可以发现,当一个IPv6地址被压缩后,如果计算机出现两个或多个 ::的时候,计算机在将地址还原时,就可能出现多种情况,这将导致计算机还原后的地址不是压缩之前的地址,将导致地址错误,最终通信失败。
    所以,在压缩IPv6地址时,一个地址中只能出现一个 ::
 
 
第二种情况:
    在压缩格式的第一种情况的表示中,是在地址中整个段4个字符都为0时,才将其压缩为::来表示,但是在使用第一种情况压缩之后,我们仍然可以看见地址中还存在许多毫无意义的0,比如0001,0410。我们知道,0001中,虽然前面有三个0,但是如果我们将前面的0全部省略掉,写为1,结果是等于0001的,而0410也是一样,我们将前面的0省略掉,写成410,也同样等于0410的,所以我们在省略数字前面的0时,是不影响结果的,那么这个时候,表示IPv6地址时,允许将一个段中前导部分的0省略不写,因为不影响结果。但是需要注意的是,如果0不是前导0,比如2001,我们就不能省略0写成21,因为21不等于2001,所以在中间的0不能省略,只能省略最前面的0。下面来看一些省略前导0的地址表示形式:
例1
压缩前:
000 0:0000:0000:0000:0000:0000:0000:0000
压缩后:
0:0:0:0:0:0:0:0
从结果中可以看出,计算机根本就不需要对这样的地址还原,压缩后的结果和压缩前的结果是相等的。
 
例2
压缩前:
000 0:0000:0000:0000:0000:0000:0000:0001
压缩后:
0:0:0:0:0:0:0:1
    从结果中可以看出,计算机根本就不需要对这样的地址还原,压缩后的结果和压缩前的结果是相等的。
 
例3
压缩前:
2001:0410:0000:1234:FB00:1400:5000:45FF
压缩后:
2001:410:0:1234:FB00:1400:5000:45FF
    从结果中可以看出,计算机根本就不需要对这样的地址还原,压缩后的结果和压缩前的结果是相等的。
 
第三种情况:
    在前面两种IPv6地址的压缩表示方法中,第一种是在整段4个字符全为0时,才将其压缩后写为 ::,而第二种是将无意义的0省略不写,可以发现两种方法都能节省时间,方便阅读。第三种压缩方法就是结合前两种方法,既将整段4个字符全为0的部分写成 :: 也将无意义的0省略不写,结果就可以出现以下一些最方便的表示方法:
例1
压缩前:
0000:0000:0000:0000:0000:0000:0000 :0001
压缩后:
:: 1
    可以看到,结合了两种压缩格式的方法,但为简便。
 
例2
压缩前:
2001:0410:0000:0000:FB00:1400:5000:45FF
压缩后:
2001:410:: FB00:1400:5000:45FF
    可以看到,结合了两种压缩格式的方法,但为简便。
 
 
3.IPv4 内嵌在IPv6
    在网络还没有全部从IPv4过渡到IPv6时,就可能出现某些设备即连接了IPv4网络,又连接了IPv6网络,对于这样的情况,就需要一个地址即可以表示IPv4地址,又可以表示IPv6地址。
    因为一个IPv4地址为32位,一个IPv6地址为128位,要让一个IPv4地址表示为IPv6地址,明显已经少了96位,那么就将一个正常的IPv4地址通过增加96位,结果变成128位,来与IPv6通信。在表示时,是在IPv4原有地址的基础上,增加96个0,结果变成128位,增加的96个0再结合原有的IPv4地址,表示方法为
0:0:0:0:0 :0:A.B.C.D 或者 :: A.B.C.D. ,如下:
0000: 0000: 0000: 0000: 0000:0000:A.B.C.D
                  9 6 个0              32位                 
例:
IPv4地址为  138.1.1.1
表示IPv6地址为0:0:0:0:0:0:138.1.1.1
 
注:IPv6中没有广播地址,IPv6不建议划子网,如果需要划子网,网络位请不要低于48位。
 
IPv6地址类型
    在IPv4地址中,地址分许多类型,比如代表节点自己的127.0.0.0/8,私有地址段,组播地址段,广播地址,以及一些不可用的地址。在IPv6中,同样地址也像IPv4那样分了许多类型,我们需要了解的有3种类型,为Unicast(单播),Anycast(任意播)和Multicast(组播),下面分别来详细介绍这几种地址类型。
 
Unicast (单播)
    即使是在IPv4中,单播地址的类型也分好多种,就是我们常用的也分私有,公有,还有回环地址,在IPv6中,单播地址也分好几种,我们需要知道的有:Link-Local  Address(链路本地地址),Unique Local Address (本地站点地址),Aggregatable Global Address(可聚合全球),回环地址。
    下面详细介绍几种单播地址:
 
Link-Local  Address (链路本地地址)
即使网络再大,每两点之间,都有链路相连,在一个节点将数据包发给下一个节点时,必须在数据包中封装三层IP地址,再封装下一节点的二层链路地址(如以太网中的MAC地址),才能将数据包发给下一节点,并且只有当封装的二层链路地址确实为下一节点的真实链路地址时,对方才能接收,这就是普通二层链路地址的功能,这样的地址在一条链路的范围内明确了每个节点,并且这样的地址是不能被路由的。
    而在IPv6网络中,两个IPv6的节点通过链路相连,必须在这条链路之间为各自确立一个Link-Local  Address(即链路本地地址),在一条链路上,IPv6节点能够确定对方节点的身份,能够将数据包发向对方节点,必须知道对方节点的链路本地地址,如果不知道,将是不能通信的,所以一条链路中的IPv6节点要通信,必须拥有链路本地地址,并且这个链路本地地址只在一条链路中有效,也不能被路由,而不同链路的链路本地地址是可以重复的。
    因为在链路上没有链路本地地址的情况下,IPv6是不能通信的,所以每个节点必须拥有一个链路本地地址,当一个节点上正常启动了IPv6之后,链路本地地址是不需要人工干预,会自己生成的,但也可以自己手工配置链路本地地址。
自动生成的链路本地地址,有默认的特殊格式,是以FE80::/10 (1111 1110 10)打头,再加54个0,还差64位,这后面的64位,再使用EUI-64来填充,表示如下:
 
EUI-64 结构
一个链路本地地址的后64位使用EUI-64来填充,EUI-64其实就是接口的MAC地址,而MAC地址共长度为48位,要填充64位的EUI-64,还少16位。一个完整的EUI-64是将MAC地址的48位平均分成两部分,前面24位,后面24位,然后在中间补上FFFE(16位),如一个MAC地址为00:12:33:5C:82:E1,将其变为EUI-64的结果如下表示:
只有以太网链路才会有MAC地址,而串行链路是没有MAC地址的,当一个接口上启用IPv6之后,此接口会自动产生一个链路本地地址,而链路本地地址需要借用接口上的MAC地址才能产生,这在有MAC地址的以太网接口上可以轻松实现,但是当一个没有MAC地址的串行接口上开启IPv6之后,由于自己没有MAC地址,所以不能产生EUI-64,也就无法完成链路本地地址。在这种情况下,所有没有MAC地址的接口,如串行接口,在开启IPv6后,需要产生EUI-64时,统统借用设备上第一个以太网插槽的第一个接口,也可以理解为没有MAC地址的接口,统统使用设备上MAC地址池中的第一个地址,比如设备上为接口s2/3开启IPv6之后,就很有可能借用F0/0或G0/0接口的MAC地址。
EUI-64不仅在产生链路本地地址时可以使用,在正常配置IPv6地址时,同样可以使用EUI-64来填充后64位。
 
本地站点地址
    本地站点地址是单播中一种受限制的地址,只在一个站点内使用,不会默认启用,这个地址不能在公网上路由,只能在一个指定的范围内路由,需要手工配置。IPv6中的本地站点地址类似IPv4中私有地址,如10.0.0.0/8   172.16.0.0/12   192.168.0.0/16。
    得不到合法IPv6地址的机构可配置本地站点地址,表示方法为:
FC00::/7 + 41bit子网标识 +16bit链路标识+ EUI-64
 
可聚合全球单播地址
    可聚合全球单播地址相当于IPv4的公网地址,可以被路由的,可以正常使用的地址,但网络位最少为48位。可聚合全球单播地址的范围是
2000:0000:0000:0000:0000:0000:0000:0000
3FFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
    以上面可以看出,可聚合全球单播地址也就是2和3打头的地址,因为IPv6使用16进制来表示,一个字符的取值范围从0到F共16个,而可聚合全球单播地址地址占了2和3两个,由此说明,可聚合全球单播地址占IPv6总地址空间的8分之1,也就是说,所有IPv6地址中,只有8分之1是可以给网络正常使用的。
 
回环地址
回环地址表示节点自身,类似IPv4的127.0.0.0/8
回环地址表示为
0000:0000:0000:0000:0000:0000:0000:0001
0:0:0:0:0:0:0:1
::1
 
任意播地址
    任意播地址表示一组接口,当一个发向某个任意播地址的数据包,只被最近的接口收到,这个地址是由路由协议定义的,不能手工配置,但是我们无法看到一个地址就能区别出到底是单播地址还是任意播地址,因为任意播地址的表示格式和单播地址是一样的,也就是说任意播地址就是用普通的单播地址来表示的。任意播地址只能出现在路由器上,并且不能作为数据包的源地址来使用。
 
组播
组播地址就是一个目标为组播地址的数据包将被多个节点收到,地址以FF00::/8 (1111 1111)打头,.表示为
FF00:0000:0000:0000:0000:0000:0000:0000/8
FF00:0:0:0:0:0:0:0/8
FF00::/8
详细的IPv6多播知识将在后面的IPv6 Multicast部分介绍。
 
配置IPv6地址
 
1. 激活 IPv6 功能
默认情况下,Cisco设备的IPv6流量转发功能是关闭的,需要使用IPv6,必须先开启IPv6流量转发功能。
1 )开启 IPv6 流量转发功能
r1(config)#ipv6 unicast-routing
2. 配置正常的 IPv6 地址
1 )在接口下配置正常 IPv6 地址
r1(config)#int f0/0
r1(config-if)#ipv6 address 2011:1:2:3:1:1:1:1/64
说明:配置的地址前64位为网络地址,即2011:1:2:3;后64位为主机位,即1:1:1:1。
2 )查看接口的 IPv6 地址
r1#show ipv6 interface brief f0/0
FastEthernet0/0            [up/up]
    FE80::C200:EFF:FEB0:0
    2011:1:2:3:1:1:1:1
r1# r1#
说明:可以看到接口F0/0已经接受我们配置的地址2011:1:2:3:1:1:1:1。
 
3. 使用 EUI-64 格式配置静态地址:
(1) 配置包含 EUI-64 IPv6 地址
r1(config)#int f0/1
r1(config-if)#ipv6 address 2022:2:2:22::/64 eui-64
2 )查看接口的 IPv6 地址
r1#show interfaces f0/0
FastEthernet0/0 is up, line protocol is up
  Hardware is Gt96k FE, address is c000.0eb0.0000 (bia c000.0eb0.0000)
 
r1#show ipv6 interface brief f0/1
FastEthernet0/1            [up/up]
    FE80::C200:EFF:FEB0:1
    2022:2:2:22:C200:EFF:FEB0:1
r1#
说明:可以看到,F0/1成功使用接口上的MAC地址为EUI-64来填充后64位。
 
4. 仅启用接口 IPv6 功能
说明:一个接口上可以仅启用IPv6功能,而不配置IPv6地址
1 )启用接口 IPv6 功能
r1(config)#int s1/0
r1(config-if)#ipv6 enable
2 )查看接口 IPv6 状态
r1#show ipv6 interface brief serial 1/0
Serial1/0                  [up/up]
    FE80::C200:EFF:FEB0:0
r1#
可以看到,接口S1/0可以只开启IPv6功能而不配地址,但开了IPv6功能的接口也会自动产生一个链路本地地址。
 
5. 配置无编号地址
    当地址紧缺时,可以配置一个接口使用另外一个接口的地址,这样的地址称为无编号地址,即unnumbered地址,当从无编号接口产生数据包时,该接口使用借用的那个接口的地址作为源地址,配置这样的地址,需要允许双方不同网段协议的配合。
1 )为接口配置无编号地址
r1(config)#int s1/1
r1(config-if)#ipv6 unnumbered f0/0
2 )查看接口 IPv6 地址情况。
r1#show ipv6 interface brief serial 1/1
Serial1/1                  [up/up]
    FE80::C200:EFF:FEB0:0
    unnumbered (FastEthernet0/0)
r1#
说明:可以看到结果显示为接口S1/1借用F0/0的地址。
 
IPv6静态路由
在IPv6中,静态路由的写法分三种,分别为:
1. 直连静态路由( Directly Attached Static Routes
写法为只指定路由的出口,目标网络被认为是和此接口直连的,但此方法在接口为多路访问时,会有问题。
例配:
ipv6 route 2022:2:2:22::/64 s1/1  
说明:到达目标网络2022:2:2:22::/64 的数据包从接口s1/1发出去。
 
2. 递归静态路由( Recursive Static Routes
写法为只指定路由的下一跳地址,此方法在任何网络环境中可行。
例配:
r1(config)#ipv6 route 2022:2:2:22::/64 2012:1:1:11::2  
说明:到达目标网络2022:2:2:22::/64 的数据包发给下一跳地址2012:1:1:11::2。
 
3. 完全静态路由( Fully Specified Static Routes
写法为同时指定出口和下一跳地址,只有当出口为多路访问时,并且确实需要明确指定下一跳时,才需要写完全静态路由,下一跳必须是和出口同网段的。
例配:
r1(config)#ipv6 route 2022:2:2:22::/64 f0/0 2012:1:1:11::2  
说明:到达目标网络2022:2:2:22::/64 的数据包从接口F0/0发出去,并且交给下一跳地址2012:1:1:11::2。
 
IPv6静态路由配置实验
说明:配置静态路由,使双方都能ping通互相loopback接口的网段。
由于是多路访问接口,所以省去配置直连静态路由的方法。
1. 网络初始配置:
1 R1 初始配置:
r1(config)#ipv6 unicast-routing
r1(config)#int f0/0
r1(config-if)#ipv address 2012:1:1:11::1/64
 
r1(config)#int loopback 0
r1(config-if)#ipv6 address 2011:1:1:11::1/64
r1(config-if)#
2 R2 初始配置:
r2(config)#ipv unicast-routing
r2(config)#int f0/0
r2(config-if)#ipv address 2012:1:1:11::2/64
 
r2(config)#int loopback 0
r2(config-if)#ipv6 address 2022:2:2:22::2/64
r2(config-if)#
 
2. R1 上配置递归静态路由
1 )配置递归静态路由
r1(config)#ipv6 route 2022:2:2:22::/64 2012:1:1:11::2   
说明:到达目标网络2022:2:2:22::/64 的数据包发给下一跳地址2012:1:1:11::2。
2 )检查静态路由
r1#show ipv6 route static
IPv6 Routing Table - 7 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
       U - Per-user Static route
       I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
       O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
       D - EIGRP, EX - EIGRP external
S   2022:2:2:22::/64 [1/0]
     via 2012:1:1:11::2
r1#
说明:从结果中看出,手工配置的递归静态路由已生效。
 
3 )测试连通性
r1#ping 2022:2:2:22::2   
 
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2022:2:2:22::2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/48/140 ms
r1#
说明:由于正确配置静态路由,R1到R2的loopback接口的网段通信正常。
 
3. R2 上配置完全静态路由
1 )配置完全静态路由
r2(config)#ipv6 route 2011:1:1:11::/64 f0/0 2012:1:1:11::1
说明:到达目标网络2011:1:1:11::/64  的数据包从接口F0/0发出去,并且交给下一跳地址2012:1:1:11::1。
2 )检查静态路由
r2#show ipv6 route static
IPv6 Routing Table - 7 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
       U - Per-user Static route
       I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
       O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
       D - EIGRP, EX - EIGRP external
S   2011:1:1:11::/64 [1/0]
     via 2012:1:1:11::1, FastEthernet0/0
r2#
说明:从结果中看出,手工配置的完全静态路由已生效。
3 )测试连通性
r2#ping 2011:1:1:11::1   
 
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2011:1:1:11::1, timeout is 2 seconds:
!!!!
*Mar  1 00:36:50.387: %CDP-4-DUPLEX_MISMATCH: duplex mismatch discovered on FastEthernet0/0 (not full duplex), with Router FastEthernet0/2 (full duplex).!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/92/156 ms
r2#
说明:由于正确配置静态路由,R2到R1的loopback接口的网段通信正常。
IPv6 RIP (RIPng)
IPv6的RIP,所有路由规则与IPv4 RIPv2基本相同,不同之处是IPv4 RIPv2使用UDP 端口520,而RIPng使用UDP端口521,IPv4 RIPv2数据包更新使用地址224.0.0.9,而RIPng使用更新地址为FF02::9。
    在配置RIPng时,方法不同于IPv4 RIP,RIPng是采用先配置进程,然后需要让哪些接口运行在RIPng下,就必须到相应的接口下明确指定,并不像IPv4 RIP那样在进程下通过network来发布。
 
配置RIPng
1. 初始配置
1 R1 初始配置:
r1(config)#ipv6 unicast-routing
 
r1(config)#int f0/0
r1(config-if)#ipv6 address 2012:1:1:11::1/64
 
r1(config)#int loopback 1
r1(config-if)#ipv6 address 3001:1:1:11::1/64
 
r1(config)#int loopback 2
r1(config-if)#ipv6 address 3002:1:1:11::1/64
 
r1(config)#int loopback 3
r1(config-if)#ipv6 address 3003:1:1:11::1/64
 
2 R2 初始配置:
r2(config)#ipv6 unicast-routing
 
r2(config)#int f0/0
r2(config-if)#ipv6 address 2012:1:1:11::2/64
 
r2(config)#int loopback 0
r2(config-if)#ipv6 address 2022:2:2:22::2/64
 
 
2. 启动 RIPng 进程
说明:Cisco IOS最多同时支持4个RIPng进程,不同进程使用不同名字来区分,并且进程名为本地有效。
1 )在 R1 上启动 RIPng 进程
r1(config)#ipv6 router rip ccie
r1(config-rtr)#exit
(2)在R2上启动RIPng进程
r2(config)#ipv6 router rip ccie
r2(config-rtr)#exi
3. 配置 RIPng 接口
1 )将 R1 上的接口放进 RIPng 进程
r1(config)#int f0/0
r1(config-if)#ipv6 rip ccie enable
 
r1(config)#int loopback 1
r1(config-if)#ipv6 rip ccie enable
2 )将 R2 上的接口放进 RIPng 进程
r2(config)#int f0/0
r2(config-if)#ipv6 rip ccie enable
 
r2(config)#int loopback 0
r2(config-if)#ipv6 rip ccie enable
4. 查看 RIPng 路由
1 )查看 R1 RIPng 路由
r1#show ipv6 route rip
IPv6 Routing Table - 11 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
       U - Per-user Static route
       I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
       O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
       D - EIGRP, EX - EIGRP external
R   2022:2:2:22::/64 [120/2]
     via FE80::C200:DFF:FEC4:0, FastEthernet0/0
r1#
说明:由于RIPng配置正确,成功收到对方路由条目,并且可以看出,动态路由学习到的IPv6路由条目,下一跳地址均为对端的链路本地地址。
2 )查看 R2 RIPng 路由
r2#show ipv6 route rip
IPv6 Routing Table - 7 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
       U - Per-user Static route
       I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
       O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
       D - EIGRP, EX - EIGRP external
R   3001:1:1:11::/64 [120/2]
     via FE80::C200:BFF:FE48:0, FastEthernet0/0
r2#
说明:由于RIPng配置正确,成功收到对方路由条目。
 
5. 测试连通性
说明:因为动态路由学习到的IPv6路由条目,下一跳地址均为对端的链路本地地址,所以如果到对端的链路本地地址不通,那么到对端IPv6网络也不会通。
(1) 测试 R1 到对端链路本地地址的连通性
r1#ping FE80::C200:DFF:FEC4:0
Output Interface: FastEthernet0/0          
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to FE80::C200:DFF:FEC4:0, timeout is 2 seconds:
Packet sent with a source address of FE80::C200:DFF:FEC4:0
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 32/70/184 ms
r1#
说明:到对端链路本地地址的通信正常。
2 )测试 R1 到对端 IPv6 网络的连通性
r1#ping 2022:2:2:22::2
 
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2022:2:2:22::2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/75/240 ms
r1
说明:由于到对端链路本地地址的通信正常,所以到对端IPv6网络的通信也正常。
3 )测试 R2 到对端 IPv6 网络的连通性
r2#ping 3001:1:1:11::1
 
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 3001:1:1:11::1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/84/248 ms
r2#
说明:到对端IPv6网络的通信也正常。
6. 重分布 IPv6 网段
说明:将R1上的剩余网段重分布进RIPng
1 )在 R1 上配置重分布剩余网段进 RIPng
r1(config)#route-map con permit 10
r1(config-route-map)#match interface loopback 2
r1(config-route-map)#exit
r1(config)#route-map con permit 20  
r1(config-route-map)#match interface loopback 3
r1(config-route-map)#exit
 
r1(config)#ipv6 router rip ccie
r1(config-rtr)#redistribute connected route-map con
r1(config-rtr)#
2 )在 R2 上查看重分布进 RIPng 的剩余网段
r2#show ipv6 route rip
IPv6 Routing Table - 9 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
       U - Per-user Static route
       I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
       O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
       D - EIGRP, EX - EIGRP external
R   3001:1:1:11::/64 [120/2]
     via FE80::C200:BFF:FE48:0, FastEthernet0/0
R   3002:1:1:11::/64 [120/2]
     via FE80::C200:BFF:FE48:0, FastEthernet0/0
R   3003:1:1:11::/64 [120/2]
     via FE80::C200:BFF:FE48:0, FastEthernet0/0
r2#
说明:可以看到,R1上的剩余网段成功被重分布进RIPng。
7. 过滤 IPv6 路由
说明:在R2上过滤掉IPv6路由,只留想要的网段,使用distribute-list过滤
1 )配置只留 3002:1:1:11::/64 网段
r2(config)#ipv6 prefix-list abc permit 3002:1:1:11::/64
 
r2(config)#ipv6 router rip ccie
r2(config-rtr)#distribute-list prefix-list abc in f0/0
注:ipv6的 prefix-list同样支持ge , le等关键字来匹配范围。
2 )查看过滤后的路由表情况
r2#show ipv6 route rip
IPv6 Routing Table - 7 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
       U - Per-user Static route
       I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
       O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
       D - EIGRP, EX - EIGRP external
R   3002:1:1:11::/64 [120/2]
     via FE80::C200:BFF:FE48:0, FastEthernet0/0
r2#
说明:路由表中只剩想要的网段,说明过滤成功。
 
IPv6 OSPF (OSPFv3
OSPFv3与OSPFv2(IPv4 OSPF)的原理都是相同的,OSPFv3选举Router-ID的规则与OSPFv2相同,OSPFv3也是选择路由器上的IPv4地址作为Router-ID,如果设备上没有配置IPv4地址,那么必须手工指定Router-ID。在配置OSPFv3时,先配置进程,然后需要让哪些接口运行在OSPFv3下,就必须到相应的接口下明确指定,并不像OSPFv2那样在进程下通过network来发布。
 
配置OSPFv3
1. 初始配置
1 R1 初始配置:
r1(config)#ipv6 unicast-routing
 
r1(config)#interface f0/0
r1(config-if)#ipv6 address 2012:1:1:11::1/64
 
r1(config)#int loopback 1
r1(config-if)#ipv6 address 3011:1:1:11::1/64
 
r1(config)#int loopback 2               
r1(config-if)#ipv6 address 3011:1:1:12::1/64
 
r1(config)#int loopback 3               
r1(config-if)#ipv6 address 3011:1:1:13::1/64
 
2 R2 初始配置:
r2(config)#ipv6 unicast-routing
 
r2(config)#interface f0/0
r2(config-if)#ipv6 address 2012:1:1:11::2/64
 
r2(config)#interface s1/0
r2(config-if)#encapsulation frame-relay 
r2(config-if)#no frame-relay inverse-arp   
r2(config-if)#no arp frame-relay
r2(config-if)#ipv6 address 2023:1:1:11::2/64
r2(config-if)#frame-relay map ipv6 2023:1:1:11::3 203 broadcast
r2(config-if)#
3 R3 初始配置:
r3(config)#ipv6 unicast-routing
 
r3(config)#interface s1/0
r3(config-if)#encapsulation frame-relay
r3(config-if)#no frame-relay inverse-arp
r3(config-if)#no arp frame-relay
r3(config-if)#ipv6 address 2023:1:1:11::3/64
r3(config-if)#frame-relay map ipv6 2023:1:1:11::2 302 broadcast
 
2. 启动 OSPFv3 进程
1 )启动 R1 OSPFv3 进程
r1(config)#ipv6 router ospf 2
r1(config-rtr)#router-id 1.1.1.1
说明:由于没有配置IPv4地址,所以必须手工配置Router-ID
2 )启动 R2 OSPFv3 进程
r2(config)#ipv6 router ospf 2
r2(config-rtr)#router-id 2.2.2.2
(3)启动R3的OSPFv3进程
r3(config)#ipv6 router ospf 2
r3(config-rtr)#router-id 3.3.3.3
3. 配置 OSPFv3 接口
1 )将 R1 上的接口放进 OSPFv3 进程
r1(config)#int f0/0
r1(config-if)#ipv6 ospf 2 area 0
 
r1(config)#int loopback 1
r1(config-if)#ipv6 ospf 2 area 0
2 )将 R2 上的接口放进 OSPFv3 进程
r2(config)#int f0/0
r2(config-if)#ipv6 ospf 2 area 0
 
r2(config)#int s1/0
r2(config-if)#ipv6 ospf 2 area 1
3 )将 R3 上的接口放进 OSPFv3 进程
r3(config)#int s1/0
r3(config-if)#ipv6 ospf 2 area 1  
 
4. 查看 OSPFv3 邻居
1 )查看 r1 邻居:
r1#show ipv6 ospf neighbor
 
Neighbor ID     Pri   State           Dead Time   Interface ID    Interface
2.2.2.2           1   FULL/BDR        00:00:39    4               FastEthernet0/0
r1#
说明:R1与R2的OSPFv3邻居正常。
2 )查看 r2 邻居:
r2#show ipv6 ospf neighbor
 
Neighbor ID     Pri   State           Dead Time   Interface ID    Interface
1.1.1.1           1   FULL/DR         00:00:35    4               FastEthernet0/0
r2#
说明:R2与R2的OSPFv3邻居正常,但与R3的邻居没有。
(3) 3 )查看 r3 邻居:
r3#show ipv6 ospf neighbor
 
r3#
说明:R3没有OSPFv3邻居。
5. 解决 OSPFv3 邻居问题
说明:由于R2与R3之间属于NBMA非广播网络,所以无法自动建邻居,要解决邻居问题,有两种方法:第一,手工指定邻居,在指定时,只须在一方指定即可,并且OSPFv3在手工指定邻居时,需要到接口下指定而不是在进程下指定,并且指定的为对方链路本地地址。第二,将网络类型从非广播网络类型改为允许广播的网络类型,如改为Point-to-point类型。
1 )查看 R3 R2 接口的链路本地地址
r3#show ipv6 interface brief s1/0
Serial1/0                  [up/up]
    FE80::C200:DFF:FEAC:0
    2023:1:1:11::3
r3#
2 )在 R2 上指定 R3 为邻居,在接口下指定对方的链路本地地址
r2(config)#int s1/0
r2(config-if)#ipv6 ospf neighbor FE80::C200:DFF:FEAC:0
r2(config-if)#
3 )测试 R2 R3 接口链路本地地址的连通性
r2#ping FE80::C200:DFF:FEAC:0
Output Interface: Serial1/0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to FE80::C200:DFF:FEAC:0, timeout is 2 seconds:
Packet sent with a source address of FE80::C200:BFF:FE94:0
.....
Success rate is 0 percent (0/5)
r2#
说明:由于指定邻居时,指定为对方接口的链路本地地址,所以双方接口的链路本地地址不通,邻居将仍然不能建立。
4 )解决帧中继网络下双方接口的链路本地地址的 PVC 映射
注:必须互相映射
R2:
r2(config)#int s1/0
r2(config-if)#fram map ipv6 FE80::C200:DFF:FEAC:0 203 broadcast
R3:
R3(config)#int s1/0
R3config-if)#fram map ipv6 FE80::C200:BFF:FE94:0 302 broadcast
(5) 查看邻居
r3#show ipv6 ospf neighbor
 
Neighbor ID     Pri   State           Dead Time   Interface ID    Interface
2.2.2.2           1   FULL/BDR        00:01:42    6               Serial1/0
r3#
说明:由于已经手工指定邻居,并且也映射了双方的链路本地地址,所以邻居成功建立。
 
6. 查看 OSPFv3 路由
1 )在 R1 上查看 OSPFv3 路由
r1#sh ipv6 route ospf
IPv6 Routing Table - 11 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
       U - Per-user Static route
       I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
       O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
       D - EIGRP, EX - EIGRP external
OI  2023:1:1:11::/64 [110/74]
     via FE80::C200:BFF:FE94:0, FastEthernet0/0
r1#
说明:由于邻居已经全部正常建立,所以学习到了远程网络的路由条目。
 
2 )在 R2 上查看 OSPFv3 路由
r2#show ipv6 route ospf
IPv6 Routing Table - 7 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
       U - Per-user Static route
       I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
       O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
       D - EIGRP, EX - EIGRP external
O   3011:1:1:11::1/128 [110/10]
     via FE80::C200:AFF:FE28:0, FastEthernet0/0
r2#
说明:由于邻居已经全部正常建立,所以学习到了远程网络的路由条目。
 
3 )在 R3 上查看 OSPFv3 路由
r3#show ipv6 route ospf
IPv6 Routing Table - 6 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
       U - Per-user Static route
       I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
       O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
       D - EIGRP, EX - EIGRP external
OI  2012:1:1:11::/64 [110/74]
     via FE80::C200:BFF:FE94:0, Serial1/0
OI  3011:1:1:11::1/128 [110/74]
     via FE80::C200:BFF:FE94:0, Serial1/0
r3#
说明:由于邻居已经全部正常建立,所以学习到了远程网络的路由条目。
 
7. 解决 OSPFv3 路由掩码问题
说明:由于学习到的路由中,属于loopback接口的网段原本为64位,而学习到的为128位,为主机路由,所以应让路由掩码与原来的掩码一致,需要将网络类型改为Point-to-point类型。
1 )在 R1 loopback 接口的网络类型改为 Point-to-point
r1(config)#int loopback 1
r1(config-if)#ipv6 ospf network point-to-point
r1(config-if)#
2 )查看改后的路由情况
r2#show ipv6 route ospf
IPv6 Routing Table - 9 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
       U - Per-user Static route
       I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
       O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
       D - EIGRP, EX - EIGRP external
O   3011:1:1:11::/64 [110/11]
     via FE80::C200:AFF:FE28:0, FastEthernet0/0
r2#
说明:已经成功变成原来的掩码位数。
8. 重分布 IPv6 网段
说明:将R1上的剩余网段重分布进OSPFv3
1 )在 R1 上配置重分布剩余网段进 OSPFv3
r1(config)#route-map con permit 10
r1(config-route-map)#match interface loopback 2
r1(config-route-map)#exit
r1(config)#route-map con permit 20  
r1(config-route-map)#match interface loopback 3
r1(config-route-map)#exit
 
r1(config)#ipv6 router ospf 2
r1(config-rtr)#redistribute connected route-map con
2 )在 R2 上查看重分布进 OSPFv3 的剩余网段
r2#show ipv6 route ospf
IPv6 Routing Table - 9 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
       U - Per-user Static route
       I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
       O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
       D - EIGRP, EX - EIGRP external
O   3011:1:1:11::/64 [110/11]
     via FE80::C200:AFF:FE28:0, FastEthernet0/0
OE2  3011:1:1:12::/64 [110/20]
     via FE80::C200:AFF:FE28:0, FastEthernet0/0
OE2  3011:1:1:13::/64 [110/20]
     via FE80::C200:AFF:FE28:0, FastEthernet0/0
r2#
说明:可以看到,R1上的剩余网段成功被重分布进OSPFv3。
3 )在 R3 上查看重分布进 OSPFv3 的剩余网段
r3#show ipv6 route ospf
IPv6 Routing Table - 8 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
       U - Per-user Static route
       I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
       O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
       D - EIGRP, EX - EIGRP external
OI  2012:1:1:11::/64 [110/74]
     via FE80::C200:BFF:FE94:0, Serial1/0
OI  3011:1:1:11::/64 [110/75]
     via FE80::C200:BFF:FE94:0, Serial1/0
OE2  3011:1:1:12::/64 [110/20]
     via FE80::C200:BFF:FE94:0, Serial1/0
OE2  3011:1:1:13::/64 [110/20]
     via FE80::C200:BFF:FE94:0, Serial1/0
r3#
说明:可以看到,R1上的剩余网段成功被重分布进OSPFv3。
9. 过滤 IPv6 路由
说明:在R3上过滤掉IPv6路由,只留想要的网段,使用distribute-list过滤
1 )配置只留 3011 打头的网段
r3(config)#ipv6 prefix-list abc permit 3011::/16 ge 64 le 64
r3(config)#ipv6 router ospf 2
r3(config-rtr)#distribute-list prefix-list abc in s1/0
2 )查看过滤后的路由表情况
r3#show ipv6 route ospf
IPv6 Routing Table - 7 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
       U - Per-user Static route
       I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
       O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
       D - EIGRP, EX - EIGRP external
OI  3011:1:1:11::/64 [110/75]
     via FE80::C200:BFF:FE94:0, Serial1/0
OE2  3011:1:1:12::/64 [110/20]
     via FE80::C200:BFF:FE94:0, Serial1/0
OE2  3011:1:1:13::/64 [110/20]
     via FE80::C200:BFF:FE94:0, Serial1/0
r3#
说明:路由表中只剩3011打头的网段了,说明过滤成功。
10. 汇总 OSPFv3 外部路由
说明:对从外部重分布进OSPFv3的路由进行汇总,OSPF内的路由汇总,命令格式基本同IPv4,需要注意的是,汇总必须在重分布的路由器上配置,即必须在ASBR上配置。
1 )在 ASBR R1 )上配置外部路由的汇总
说明:将3011:1:1:11::/64 ,3011:1:1:12::/64 ,3011:1:1:13::/64三条路由汇总成3011:1:1::/48 
r1(config)#ipv6 router ospf 2
r1(config-rtr)#summary-prefix 3011:1:1::/48             
r1(config-rtr)#
(2) R2 上查看汇总后的路由表情况
r2#show ipv6 route ospf
IPv6 Routing Table - 8 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
       U - Per-user Static route
       I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
       O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
       D - EIGRP, EX - EIGRP external
OE2  3011:1:1::/48 [110/20]
     via FE80::C200:AFF:FE28:0, FastEthernet0/0
O   3011:1:1:11::/64 [110/11]
     via FE80::C200:AFF:FE28:0, FastEthernet0/0
r2#
说明:可以看到,汇总成功。
 
IPv6 EIGRP (EIGRP v6)
EIGRP v6与IPv4 EIGRP的原理都是相同的,但是EIGRP v6必须有router-id才能运行,所以在EIGRP v6不能获得router-id时,请手工配置router-id;更多的是EIGRP v6进程有个shutdown的特性,要用no shutdown开启进程;在配置EIGRP v6时,先配置进程,然后需要让哪些接口运行在EIGRP v6下,就必须到相应的接口下明确指定,并不像IPv4 EIGRP那样通过network来发布。
       EIGRP hello时间默认是5秒一个,在低链路是60秒一个,比如NBMA,或者所有低于或等于T1的链路(1.544M)。Hold time是hello的三倍。
 
配置EIGRP v6
1. 初始配置
1 R1 初始配置:
r1(config)#ipv6 unicast-routing
 
r1(config)#int f0/0
r1(config-if)#ipv6 address 2012:1:1:11::1/64
 
r1(config)#int loopback 1
r1(config-if)#ipv6 address 3001:1:1:11::1/64
 
r1(config)#int loopback 2
r1(config-if)#ipv6 address 3002:1:1:11::1/64
 
r1(config)#int loopback 3
r1(config-if)#ipv6 address 3003:1:1:11::1/64
 
 
2 R2 初始配置:
r2(config)#ipv6 unicast-routing
 
r2(config)#int f0/0
r2(config-if)#ipv6 address 2012:1:1:11::2/64
 
r2(config)#int loopback 0
r2(config-if)#ipv6 address 2022:2:2:22::2/64
 
2. 配置 EIGRP v6 进程
1 )在 R1 上启动 EIGRP v6 进程
r1(config)#ipv6 router eigrp 10
r1(config-rtr)#router-id 1.1.1.1
2 )在 R1 上启动 EIGRP v6 进程
r2(config)#ipv6 router eigrp 10
r2(config-rtr)#router-id 2.2.2.2
3. 配置 EIGRP v6 接口
1 )将 R1 上的接口放进 EIGRP v6 进程
r1(config)#interface f0/0
r1(config-if)#ipv6 eigrp 10
 
r1(config)#int loopback 1
r1(config-if)#ipv6 eigrp 10
2 )将 R2 上的接口放进 EIGRP v6 进程
r2(config)#int f0/0
r2(config-if)#ipv6 eigrp 10
 
r2(config)#int loopback 0
r2(config-if)#ipv6 eigrp 10
3 )查看 EIGRP v6 邻居状态
r1#show ipv6 eigrp neighbors
IPv6-EIGRP neighbors for process 10
% EIGRP 10 is in SHUTDOWN
r1#
说明:从结果中看出,EIGRP v进程默认是shutdown的,必须手工开启。
4 )开启 EIGRP v6 进程
r1(config)#ipv6 router eigrp 10
r1(config-rtr)#no shutdown
5 )查看邻居
r1#show ipv6 eigrp neighbors
IPv6-EIGRP neighbors for process 10
H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq
                                            (sec)         (ms)       Cnt Num
0   Link-local address:     Fa0/0             11 00:00:36  192  1152  0  2
FE80::C200:AFF:FE50:0
说明:开启EIGRP v6进程后,邻居正常建立。
4. 查看 EIGRP v6 路由
1 )查看 R1 EIGRP v6 路由
r1#show ipv6 route eigrp
IPv6 Routing Table - 11 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
       U - Per-user Static route
       I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
       O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
       D - EIGRP, EX - EIGRP external
D   2022:2:2:22::/64 [90/409600]
     via FE80::C200:AFF:FE50:0, FastEthernet0/0
r1#
说明:由于EIGRP v6配置正确,成功收到对方路由条目。
2 )查看 R2 EIGRP v6 路由
r2#sh ipv6 route eigrp
IPv6 Routing Table - 7 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
       U - Per-user Static route
       I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
       O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
       D - EIGRP, EX - EIGRP external
D   3001:1:1:11::/64 [90/409600]
     via FE80::C200:9FF:FE54:0, FastEthernet0/0
r2#
说明:由于EIGRP v6配置正确,成功收到对方路由条目。
5. 重分布 IPv6 网段
说明:将R1上的剩余网段重分布进EIGRP v6
1 )在 R1 上配置重分布剩余网段进 EIGRP v6
r1(config)#route-map con permit 10
r1(config-route-map)#match interface loopback 2
r1(config-route-map)#exit
r1(config)#route-map con permit 20  
r1(config-route-map)#match interface loopback 3
 
r1(config)#ipv6 router eigrp 10
r1(config-rtr)#redistribute connected route-map con
r1(config-rtr)#exit
2 )在 R2 上查看重分布进 EIGRP v6 的剩余网段
r2#sh ipv6 route eigrp
IPv6 Routing Table - 9 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
       U - Per-user Static route
       I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
       O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
       D - EIGRP, EX - EIGRP external
D   3001:1:1:11::/64 [90/409600]
     via FE80::C200:9FF:FE54:0, FastEthernet0/0
EX  3002:1:1:11::/64 [170/409600]
     via FE80::C200:9FF:FE54:0, FastEthernet0/0
EX  3003:1:1:11::/64 [170/409600]
     via FE80::C200:9FF:FE54:0, FastEthernet0/0
r2#
说明:可以看到,R1上的剩余网段成功被重分布进EIGRP v6。
6. 过滤 IPv6 路由
说明:在R2上过滤掉IPv6路由,只留想要的网段,使用distribute-list过滤
1 )配置只留 3002:1:1:11::/64 网段
r2(config)#ipv6 prefix-list abc permit 3002:1:1:11::/64
r2(config)#ipv6 router eigrp 10
r2(config-rtr)#distribute-list prefix-list abc in f0/0
r2(config-rtr)#
2 )查看过滤后的路由表情况
r2#sh ipv6 route eigrp
IPv6 Routing Table - 7 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
       U - Per-user Static route
       I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
       O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
       D - EIGRP, EX - EIGRP external
EX  3002:1:1:11::/64 [170/409600]
     via FE80::C200:9FF:FE54:0, FastEthernet0/0
r2#
说明:路由表中只剩想要的网段,说明过滤成功。
 
 
IPv6 BGP
     普通情况下配置的BGP,是用来传递IPv4路由的,所传递的信息是IPv4的协议,如果要让BGP传递其它路由或协议,这就需要将BGP扩展为支持更多协议的BGP,如扩展BGP支持IPv6协议,支持***v4,这样的支持多协议的BGP,称为Multiprotocol BGP,即MP-BGP,
       要配置MP-BGP,就需要为除IPv4之外的协议单独创建address-family,但是建立BGP邻居和正常情况下一样,当邻居建立之后,还得到address-family下活动,这是MP-BGP的特性,而需要发布的网段,也需要到address-family下发布。传递单播IPv6的address-family应该是address-family ipv6 unicast,但关键字unicast如果省略,默认就是address-family ipv6 unicast。下面根据以上特征,来配置MP-BGP传递IPv6路由。
 
配置IPv6 MP-BGP
1. 初始配置
1 R1 初始配置:
r1(config)#ipv6 unicast-routing
 
r1(config)#int f0/0
r1(config-if)#ipv6 address 2012:1:1:11::1/64
 
r1(config)#int loopback 1
r1(config-if)#ipv6 address 3001:1:1:11::1/64
 
r1(config)#int loopback 2
r1(config-if)#ipv6 address 3002:1:1:11::1/64
 
r1(config)#int loopback 3
r1(config-if)#ipv6 address 3003:1:1:11::1/64
 
 
2 R2 初始配置:
r2(config)#ipv6 unicast-routing
 
r2(config)#int f0/0
r2(config-if)#ipv6 address 2012:1:1:11::2/64
 
r2(config)#int loopback 0
r2(config-if)#ipv6 address 2022:2:2:22::2/64
 
2. 配置 MP-BGP 中的 IPv6 邻居
说明:所有邻居正常配置,但需要到IPv6的address-family下激活邻居。
1 )在 R1 上配置 BGP 邻居
r1(config)#router bgp 100
r1(config-router)#bgp router-id 1.1.1.1
r1(config-router)#neighbor 2012:1:1:11::2 remote-as 100
r1(config-router)#address-family ipv6                 
r1(config-router-af)#neighbor 2012:1:1:11::2 activate
r1(config-router-af)#exit
2 )在 R2 上配置 BGP 邻居
r2(config)#router bgp 100
r2(config-router)#bgp router-id 2.2.2.2
r2(config-router)#neighbor 2012:1:1:11::1 remote-as 100
r2(config-router)#address-family ipv6       
r2(config-router-af)#neighbor 2012:1:1:11::1 activate
r2(config-router-af)#exit
3. 查看 IPv6 BGP 邻居
1 )在 R1 上查看 IPv6 BGP 邻居
r1#show bgp sum
BGP router identifier 1.1.1.1, local AS number 100
BGP table version is 1, main routing table version 1
 
Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
2012:1:1:11::2  4   100       5       4        1    0    0 00:01:35        0
r1#
说明:由于配置正确,所以已正常建立IPv6 BGP邻居命令。命令show bgp sum为隐藏命令。
2 )在 R2 上查看 IPv6 BGP 邻居
r2#show bgp sum
BGP router identifier 2.2.2.2, local AS number 100
BGP table version is 1, main routing table version 1
 
Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
2012:1:1:11::1  4   100       5       6        1    0    0 00:02:02        0
r2#
说明:由于配置正确,所以已正常建立IPv6 BGP邻居命令。
4. 发布 IPv6 路由进 IPv6 BGP
(1) R1 上发布路由进 IPv6 BGP
r1(config)#router bgp 100
r1(config-router)#address-family ipv6
r1(config-router-af)#network 3001:1:1:11::/64
(2) R2 上发布路由进 IPv6 BGP
r2(config)#router bgp 100
r2(config-router)#address-family ipv6
r2(config-router-af)#network 2022:2:2:22::/64
(3) R1 上查看 IPv6 BGP 路由
r1#show bgp all
For address family: IPv6 Unicast
BGP table version is 3, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
 
   Network          Next Hop            Metric LocPrf Weight Path
*>i2022:2:2:22::/64 2012:1:1:11::2           0    100      0 i
*> 3001:1:1:11::/64 ::                       0         32768 i
r1#
说明:已成功学习到对方邻居发来的IPv6路由。
(4) R2 上查看 IPv6 BGP 路由
r2#show bgp all
For address family: IPv6 Unicast
BGP table version is 3, local router ID is 2.2.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
 
   Network          Next Hop            Metric LocPrf Weight Path
*> 2022:2:2:22::/64 ::                       0         32768 i
*>i3001:1:1:11::/64 2012:1:1:11::1           0    100      0 i
r2#
说明:已成功学习到对方邻居发来的IPv6路由。
5 )测试网络连通性
r1#ping 2022:2:2:22::2
 
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2022:2:2:22::2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/96/208 ms
r1#
 
r2#ping 3001:1:1:11::1
 
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 3001:1:1:11::1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 24/88/200 ms
r2#
说明:由于双方路由学习正常,所以网络连通性正常。
5. 重分布 IPv6 网段
说明:将R1上的剩余网段重分布进IPv6 BGP
1 )在 R1 上配置重分布剩余网段进 IPv6 BGP
r1(config)#route-map con permit 10
r1(config-route-map)#match interface loopback 2
r1(config-route-map)#exit
r1(config)#route-map con permit 20  
r1(config-route-map)#match interface loopback 3
r1(config-route-map)#exit
 
r1(config)#router bgp 100
r1(config-router)#address-family ipv6
r1(config-router-af)#redistribute connected route-map con
2 )在 R2 上查看重分布进 IPv6 BGP 的剩余网段
r2#show bgp all      
For address family: IPv6 Unicast
BGP table version is 11, local router ID is 2.2.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
 
   Network          Next Hop            Metric LocPrf Weight Path
*> 2022:2:2:22::/64 ::                       0         32768 i
*>i3001:1:1:11::/64 2012:1:1:11::1           0    100      0 i
*>i3002:1:1:11::/64 2012:1:1:11::1           0    100      0 ?
*>i3003:1:1:11::/64 2012:1:1:11::1           0    100      0 ?
r2#
说明:可以看到,R1上的剩余网段成功被重分布进RIPng。
6. 过滤 IPv6 路由
说明:在R2上过滤掉IPv6路由,只留想要的网段,使用distribute-list对指定邻居进行过滤
1 )配置只留 3002:1:1:11::/64 网段
r2(config)#ipv6 prefix-list abc permit 3002:1:1:11::/64
 
r2(config)#router bgp 100
r2(config-router)#address-family ipv6
r2(config-router-af)#neighbor 2012:1:1:11::1 prefix-list abc in
2 )查看过滤后的路由表情况
r2#clear bgp ipv6 unicast *
 
r2#sh bgp all
For address family: IPv6 Unicast
BGP table version is 3, local router ID is 2.2.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
 
   Network          Next Hop            Metric LocPrf Weight Path
*> 2022:2:2:22::/64 ::                       0         32768 i
*>i3002:1:1:11::/64 2012:1:1:11::1           0    100      0 ?
r2#
说明:路由表中只剩想要的网段,说明过滤成功。
7. 使用链路本地地址建立 IPv6 BGP 邻居
说明:正常情况下,IPv6 BGP使用全局地址建立邻居,也可以配置使用链路本地地址建立邻居。
1 )在 R1 上配置 IPv6 BGP 用链路本地地址建立邻居
r1(config)#router bgp 100        
r1(config-router)#neighbor FE80::C200:DFF:FEC8:0 remote-as 100
r1(config-router)#neighbor FE80::C200:DFF:FEC8:0 update-source f0/0
r1(config-router)#address-family ipv6         
r1(config-router-af)#neighbor FE80::C200:DFF:FEC8:0 activate
r1(config-router-af)#
2 )在 R2 上配置 IPv6 BGP 用链路本地地址建立邻居
r2(config)#router bgp 100
r2(config-router)#neighbor FE80::C200:8FF:FE10:0 remote-as 100        
r2(config-router)#neighbor FE80::C200:8FF:FE10:0 update-source f0/0
r2(config-router)#address-family ipv6            
r2(config-router-af)#neighbor FE80::C200:8FF:FE10:0 activate
r2(config-router-af)#
3 )查看邻居建立情况
r1#show bgp sum
BGP router identifier 1.1.1.1, local AS number 100
BGP table version is 1, main routing table version 1
 
Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
FE80::C200:DFF:FEC8:0
                4   100       6       7        1    0    0 00:01:30        0
r1#
 
 
r2#show bgp sum
BGP router identifier 2.2.2.2, local AS number 100
BGP table version is 1, main routing table version 1
 
Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
FE80::C200:8FF:FE10:0
                4   100       8       7        1    0    0 00:02:20        0
r2#
说明:从结果中看出,双方IPv6 BGP已成功使用链路本地地址建立邻居
4 )查看路由学习情况
r1#sh bgp all 
For address family: IPv6 Unicast
BGP table version is 14, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
 
   Network          Next Hop            Metric LocPrf Weight Path
*>i2022:2:2:22::/64 FE80::C200:DFF:FEC8:0
                                             0    100      0 i
*> 3001:1:1:11::/64 ::                       0         32768 i
*> 3002:1:1:11::/64 ::                       0         32768 ?
*> 3003:1:1:11::/64 ::                       0         32768 ?
r1#
 
r2#show bgp all
For address family: IPv6 Unicast
BGP table version is 6, local router ID is 2.2.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
 
   Network          Next Hop            Metric LocPrf Weight Path
*> 2022:2:2:22::/64 ::                       0         32768 i
*>i3001:1:1:11::/64 FE80::C200:8FF:FE10:0
                                             0    100      0 i
*>i3002:1:1:11::/64 FE80::C200:8FF:FE10:0
                                             0    100      0 ?
*>i3003:1:1:11::/64 FE80::C200:8FF:FE10:0
                                             0    100      0 ?
r2#
说明:从结果中看出,双方IPv6 BGP已成功学习到相互的IPv6路由条目。