IPv4的局限性:
1.地址空间的局限性:IP地址空间的危机由来已久,并正是升级到IPv6的主要动力。
2.安全性:IPv4在网络层没有安全性可言,安全性一直被认为是由网络层以上的层负责。
3.自动配置:对于IPv4节点的配置比较复杂,让很多普通用户无所适从。
4.NAT:破坏了Internet端到端的网络模型。
5.由于IPv4地址分配杂乱无章,没有层次性,网络设备需要维护庞大的路由表项。
6.IPv4包头过于复杂,使得网络节点处理的效率不高。
IPV6的好处:
1、超大的地址空间
2、全球可达性,不需要再用NAT
3、全球重新部署,有规划,易于实现聚合
4、能自动配置,实现即插即用
5、方便的进行重编址
6、包头简单,通过扩展包头技术可实现以后的新技术扩展
ipv4 路由转发的时候,ip包会改变checksum(校验和) 和TTL(每经过一个路由器TTL值减一)ipv6 只变TTL,没有校验和,没有广播,组播代替广播。所以没有ARP。IPv4中的广播(broadcast)可以导致网络性能的下降甚至广播风暴(broadcast storm).在IPv6中,就不存在广播这一概念了,取而代之的是组
播.(multicast)和任意播(anycast),任意播也称为泛播.
IPv6地址表示
我们知道,IPv4地址长度为32位(4个字节)。书写IPv4的地址是用一个字节来代表一个无符号十进制整数,四个字节写成由3个点分开的四个十进制数,例如:
10.1.123.56
对于128位的IPv6地址,定义相似的表示方法是必要的。考虑到IPv6地址的长度是原来的四倍,RFC1884规定的标准语法建议把IPv6地址的128位(16个字节)写成8个16位的无符号整数,每个整数用四个十六进制位表示,这些数之间用冒号(:)分开,例如:
3ffe:3201:1401:1:280:c8ff:fe4d:db39
从上面的例子我们看到了手工管理IPv6地址的难度,也看到了DHCP和DNS 的必要性。为了进一步简化IPv6的地址表示,可以用0来表示0000,用1来表示0001,用20来表示0020,用300来表示0300,只要保证数值不便,就可以将前面的0省略。比如:
1080:0000:0000:0000:0008:0800:200C:417A
0000:0000:0000:0000:0000:0000:0A00:0001
可以简写为:
1080:0:0:0:8:800:200C:417A
0:0:0:0:0:0:A00:1
另外,还规定可以用符号::表示一系列的0。那么上面的地址又可以简化为:
1080::0:8:800:200C:417A
::A00:1
IPv6地址的前缀(FP, Format Prefix)的表示和IPv4地址前缀在CIDR中的表示方法类似。比如 0020:0250:f002::/48表示一个前缀为48位的网络地址空间。
在IPV6中掩码只能使用CIDR表示法
2001:410:0:1::45ff/128
2001:410::1/64
IPV6的地址类型
可分为三大类:
1、单播地址
2、组播地址
3、任意播地址
可聚合全球单播地址可聚合全球单播地址相当于IPv4的公网地址,可以被路由的,可以正常使用的地址,但网络位最少为48位。可聚合全球单播地址的范围是 2000:0000:0000:0000:0000:0000:0000:0000 到
3FFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
可聚合全球单播地址占IPv6总地址空间的8分之1,也就是说,所有IPv6地址中,只有8分之1是可以给网络正常使用的。
链路本地地址,链路本地地址只在一条链路中有效,也不能被路由,而不同链路的链路本地地址是可以重复的。因为在链路上没有链路本地地址的情况下,IPv6是不能通信的,所以每个节点必须拥有一个链路本地地址,当一个节点上正常启动了IPv6之后,链路本地地址是不需要人工干预,会自己生成的,但也可以自己手工配置链路本地地址。自动生成的链路本地地址,有默认的特殊格式,是以FE80::/10 (1111 1110 10)打头,再加54个0,还差64位,这后面的64位,再使用EUI-64来填充,
回环地址表示节点自身,类似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
任意播地址anycast:共享IPv6的单播地址空间。当一个单播地址被分配到多于一个的接口上时,发到该接口的报文被网络路由到路由协议度量的“最近”的目标接口上。 Unicast允许源结点向单一目标结点发送数据报,Multicast允许源结点向一组目标结点发送数据报,而Anycast则允许源结点向一组目标结点中的一个结点发送数据报,而这个结点由路由系统选择,对源结点透明;同时,路由系统选择“最近”的结点为源结点提供服务
EUI-64格式:扩展惟一标识符
在IPV6中,无状态自动配置机制使用EUI-64格式来自动配置IPV6地址
所谓无状态自动配置是指在网络中没有DHCP服务器的情况下,允许节点自行配置IPV6地址的机制。
EUI-64的构造规则–根据接口的MAC地址再加上固定的前缀来生成一个IPV6的地址
工作原理:自动将48bit的以太网MAC地址扩展成64bit,再挂在一个64bit的前缀后面,组成一个IPV6地址,将48位的MAC地址从中间分开,插入一个固定数值FFFE
0050:3EE4:4C00–>0050:3EFF:FEE4:4C00
ICMPV6用来向源节点报告关于向目的地传输IP数据包的错误和信息。定义了多种消息类型。
ICMP V6在IPV6中的协议号是58
在IPV6中ICMP的功能得到极大增强,除了原有的功能,还有以下几个主要作用在IPV6中ICMP的主要功能:
1、路径MTU发现–PMTUD
2、替代地址解析协议–NDP(邻居发现协议)
3、无状态自动配置–NDP
4、重复地址检测–NDP
5、前缀重新编址—NDP
为NDP特有的范畴定义了新的ICMPV6消息:
NS (Neighbor Solicitation) 135 邻居请求
NA (Neighbor Advertisement) 136 邻居通告
RS 133 发到FF02::2 路由器请求信息,发给所有路由器
RA 134 发到FF02::1 路由器通告信息,每200S发一次,发向所有节点
类型137 重定向消息
替代ARP
使用NS 135和NA 136消息
主机使用邻居请求消息NS135发向邻居的被请求节点组播地址,请求一个MAC 地址,邻居回应一个NA136邻居通告消息
公告前缀–类似于DHCP
路由器周期性地发出RA134公告,每200S一次,主机收到后自动生成IP地址只要在路由器的接口上配置了一个本地站点或全球可聚合单播地址,就启用了CISCO路由器上的IPV6前缀通告
默认情况下:无状态自动配置公告的前缀长度为64比特
RS 133 发到FF02::2 请求信息,发给所有路由器
RA 134 发到FF02::1 通告信息,每200S发一次,发向所有节点
IPV6静态路由配置:
IPv6 route命令添加静态ipv6路由:
Router(config)#ipv6 unicast-routing //全局启用IPV6单播路由功能Router(config)#ipv6 route ipv6-prefix/prefix-length
{next-hop|interface} [distance]
配置R1和R2:
R1使用网络接口S1/0,通过下跳FE80::CE00:2FF:FEA4:0,可到达目的IPV6网络2001:2:2::/48
r1(config)#ipv6 route 2001:2:2::/48 serial1/0 FE80::CE00:2FF:FEA4:0 r2(config)#ipv6 route 2001:1:1::/48 serial 1/0 FE80::CE00:3FF:FE68:0 或:
r2(config)#ipv6 route 2001:1:1::/48 2001:A:A:A::1
默认路由配置例子:
r2(config)#ipv6 route ::/0 serial 1/0 FE80::CE00:3FF:FE68:0
静态路由配置时要注意:
在IPV6规范中,不推荐使用聚合全球单播或本地站点地址作为下一跳地址,一般使用本地链路地址作为下一跳,但在配置本地地址作为一下跳时,在配置中必须指出路由器上相应的网络接口
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 来发布。
配置步骤:
R1:
ipv6 unicast-routing
interface Loopback0
ipv6 address 2001:1:1:1::1/64
ipv6 enable
ipv6 rip ccnp enable
interface Serial0/3
no ip address
ipv6 address 2001:A:A:A::/64 eui-64
ipv6 enable
ipv6 rip ccnp enable
ipv6 router rip ccnp
R1(config)#int s0/3
R1(config-if)#ipv rip ccnp default-information only 发布默认路由
R2:
ipv6 unicast-routing
interface Loopback0
no ip address
ipv6 address 2001:2:2:2::1/64
ipv6 enable
ipv6 rip ccnp enable
!
interface Serial0/2
no ip address
ipv6 address 2001:A:A:A::/64 eui-64
ipv6 enable
ipv6 rip ccnp enable
clock rate 2000000
!
interface Serial0/3
no ip address
ipv6 address 2001:B:B:B::/64 eui-64
ipv6 enable
ipv6 rip ccnp enable
clock rate 2000000
ipv6 router rip ccnp
R3:
ipv6 unicast-routing
interface Loopback0
no ip address
ipv6 address 2001:3:3:3::3/64
ipv6 enable
ipv6 rip ccnp enable
interface Serial0/2
no ip address
ipv6 address 2001:B:B:B::/64 eui-64
ipv6 enable
ipv6 rip ccnp enable
clock rate 2000000
!
ipv6 router rip ccnp
OSPFv3与OSPFv2(IPv4 OSPF)的原理都是相同的,OSPFv3选举Router-ID的规则与OSPFv2相同,OSPFv3也是选择路由器上的IPv4地址作为Router-ID,如果设备上没有配置IPv4地址,那么必须手工指定Router-ID。在配置OSPFv3时,先配置进程,然后需要让哪些接口运行在OSPFv3下,就必须到相应的接口下明确指定,并不像OSPFv2那样在进程下通过network来发布。
预配置:(完成接口IPV6地址)
R1:
Enable
Conf t
Host R1
interface Loopback0
ipv6 address 2001:1:1:1::1/64
no shut
interface Serial0/3
no shut
ipv6 address 2001:A:A:A::/64 eui-64
R2:
Enable
Conf t
Host R2
interface Loopback0
ipv6 address 2001:2:2:2::1/64
interface Serial0/2
no shut
ipv6 address 2001:A:A:A::/64 eui-64
interface Serial0/3
no shut
ipv6 address 2001:B:B:B::/64 eui-64
R3:
Enable
Conf t
Host R3
interface Loopback0
ipv6 address 2001:3:3:3::3/64
interface Serial0/2
no shut
ipv6 address 2001:B:B:B::/64 eui-64
配置步骤:
R1(config)#ipv unicast-routing
R1(config)#ipv router ospf 1
R1(config-rtr)#router-id 1.1.1.1
R1(config-rtr)#exit
R1(config)#int loop 0
R1(config-if)#ipv enable
R1(config-if)#ipv ospf 1 area 0
R1(config-if)#int s0/3
R1(config-if)#ipv enable
R1(config-if)#ipv ospf 1 area 0
R2(config)#ipv6 unicast-routing
R2(config)#ipv router ospf 1
R2(config-rtr)#router-id 2.2.2.2
R2(config-rtr)#int s0/2
R2(config-if)#ipv enable
R2(config-if)#ipv ospf 1 area 0
R2(config-if)#int s0/3
R2(config-if)#ipv enable
R2(config-if)#ipv ospf 1 area 0
R2(config-if)#int loop 0
R2(config-if)#ipv enable
R2(config-if)#ipv ospf 1 area 0
R3(config)#ipv unicast-routing
R3(config)#ipv router ospf 1
R3(config-rtr)#router-id 3.3.3.3
R3(config-rtr)#int s0/2
R3(config-if)#ipv enable
R3(config-if)#ipv ospf 1 area 0
R3(config-if)#int loop 0
R3(config-if)#ipv enable
R3(config-if)#ipv ospf 1 area 0
EIGRP v6与IPv4 EIGRP的原理都是相同的,但是EIGRP v6必须有router-id 才能运行,所以在EIGRP v6不能获得router-id时,请手工配置router-id;在配置EIGRP v6时,先配置进程,然后需要让哪些接口运行在EIGRP v6下,就必须到相应的接口下明确指定。注意的是EIGRP v6进程有个shutdown的特性,要用no shutdown开启进程.
IPV6 BGP,是用来传递IPv4路由的,所传递的信息是IPv4的协议,如果要让BGP传递其它路由或协议,这就需要将BGP扩展为支持更多协议的BGP,如扩展BGP支持IPv6协议,支持vpnv4,这样的支持多协议的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。
隧道技术:当两个IPv6网络需要通信时,如果中间需要穿越IPv4网络,而由于IPv4网络中只能识别IPv4包头,并不能为IPv6数据提供正确的路径传输,这时就需要在IPv4网络中为IPv6创建一条隧道,来提供IPv6在IPv4中的传递,这样的隧道,就是把IPv6的数据全部封装在IPv4中,将IPv4当作链路层来传递的隧道形式,称为覆盖型隧道(Overlay Tunnels )。由于隧道是建立在IPv4基础上的,隧道又必须有起点和终点来明确隧道的路径,所以覆盖型隧道的起点和终点最好是使用IPv4地址,有时必须是IPv4地址,并且隧道在传输IPv6数据时,也应该在隧道的两端添加IPv6地址,来完成两端IPv6网络的通信。隧道的起点和终点必须同时支持IPv4和IPv6。当前在IOS中支持的覆盖型隧道共有以下几中:
Manual 点对点,只传递IPv6数据包。模式为:ipv6ip
Generic routing encapsulation (GRE) 点对点,可以传递多种协议。模式为:gre ip
IPv4-compatible 点到多点的,思科不建议使用。模式为:ipv6ip auto-tunnel 6to4 点到多点的,使用地址为2002::/16。模式为:ipv6ip 6to4
Intra-Site Automatic Tunnel Addressing Protocol (ISATAP) 是点到多点的。模式为:ipv6ip isatap
teredo tunneling: 一种通过网络地址转换器 (NAT) 发送 IPv4 封装的 IPv6 数据包的 IPv6 转换技术。
6to4隧道也是一种自动构造隧道的方式。6to4隧道是点到多点的自动隧道,主要用于将多个IPv6孤岛通过IPv4网络连接到IPv6网络。6to4隧道通过IPv6报文的目的地址中嵌入的IPv4地址,可以自动获取隧道的终点。6to4隧道采用特殊的地址:6to4地址,它以2002开头,后面跟着32位的IPv4地址转化的32位16进制表示,构成一个 48位的6to4前缀2002:IPv4ADDR::/48。
6to4隧道实验:
预配置:
R2
En
Conf t
Host r2
Int s0/3
Ip add 23.1.1.2 255.255.255.0
No shut
Int loop 0
Ip add 2.2.2.2 255.255.255.255 Router ospf 1
Net 0.0.0.0 255.255.255.255 area 0
R3
En
Conf t
Host r3
Int s0/2
Ip add 23.1.1.3 255.255.255.0
No shut
Int s0/3
Ip add 34.1.1.3 255.255.255.0
No shut
Router ospf 1
Net 0.0.0.0 255.255.255.255 area 0
R4
En
Conf t
Host r4
Int s0/2
Ip add 34.1.1.4 255.255.255.0
No shut
Int loop 0
Ip add 4.4.4.4 255.255.255.255 Router ospf 1
Net 0.0.0.0 255.255.255.255 area 0
配置步骤:
R2 :
ipv6 unicast-routing
interface Loopback0
ip address 2.2.2.2 255.255.255.255 interface Tunnel0
tunnel source Loopback0
tunnel mode ipv6ip 6to4
interface Serial0/2
ipv6 enable
ipv6 ospf 1 area 0
ipv6 route 2002:404:404::/48 Tunnel0 ipv6 router ospf 1
router-id 2.2.2.2
redistribute static
R4:
ipv6 unicast-routing
interface Loopback0
ip address 4.4.4.4 255.255.255.255 interface Tunnel0
tunnel source Loopback0
tunnel mode ipv6ip 6to4
interface Serial0/3
ipv6 enable
ipv6 ospf 1 area 0
ipv6 route 2002:202:202::/48 Tunnel0 ipv6 router ospf 1
router-id 4.4.4.4
redistribute static
R1:
ipv6 unicast-routing
interface Loopback0
ip address 1.1.1.1 255.255.255.255 ipv6 address 2002:202:202:1::1/64 ipv6 enable
ipv6 ospf 1 area 0
interface Serial0/3
ipv6 enable
ipv6 ospf 1 area 0
ipv6 router ospf 1
router-id 1.1.1.1
R2:
ipv6 unicast-routing
interface Loopback0
ip address 5.5.5.5 255.255.255.255 ipv6 address 2002:202:202:5::5/64 ipv6 enable
ipv6 ospf 1 area 0
interface Serial0/3
ipv6 enable
ipv6 ospf 1 area 0
ipv6 router ospf 1
router-id 5.5.5.5