IPv4局限性:
1.地址短缺.
2.IP头部比较复杂.
3.路由器和主机的配置比较复杂.
4.复杂的重编址.
5.路由表非常庞大.
5.IP安全,IP组播和移动IP部署困难.
IPv4解决方案:
1.NAT(PAT)
端到端的IP模型被破坏了,转发速率慢,占用资源多.
2.子网划分(VLSM)
3.DHCP.
4.CIDR.
5.强制高效的地址管理.
IPv6特点:
1.庞大的地址空间
全球可达性和灵活性.
支持更好的地址聚合.
支持多宿主.
支持Stateless地址自动配置.
支持即插即用.
端到端之间不需要NAT.
支持更好的重编址机制.
2.更简单的报头
路由更有效.
性能和转发速率可靠.
不存在广播.
不存在校验和.
支持扩展报头.
流标签.
3.支持移动性和安全性
遵循RFC的移动IP.使用扩展报头(路由选择报头和目的地址报头).
强制的IPsec(AH和ESP).
4.过渡方式丰富多彩
双栈
6-to-4 Tunnel
NAT转换
IPv4与IPv6对比
1.地址空间
IPv4地址是32bits,可提供2^32个地址.
IPv6地址是128bits,可提供3.4x10^38个地址.
2.报头
IPv4报头长度范围是20 - 60字节,IPv6报头为固定长度40字节.
Version(4bit) IPv4为0x0100,IPv6为0x0110.
Traffic Class(8bit) 与IPv4的ToS相对应,主要用于DiffServ.
Flow Label(20bit) IPv4中流使用5元素标记分别是源和目的IP地址,源和目的端口号以及上层协议.IPv6中流只使用源和目的IP地址以及流标签.
Payload Length(16bit) IPv6数据包有效负载长度.
Hop Limit(8bit) IPv4中是TTL,每经过一条路由器将其减1.
Next Header(8bit) 逐跳选项报头(0),目的选项报头(60),路由报头(43),分段报头(44),AH报头(51),ESP报头(50)
IPv6编址
8个16bit的十六进制段用":"分隔,每个16bit段中值范围是0x0000 - 0xFFFF.
IPv6地址简写规则
1.每个16bit段中如果起始为0,则可省略.
2.在连续的16bit段如果都为0,则可书写为"::",但每个IPv6地址只能出现一个"::".
::/0是IPv6的缺省地址.
::/128是IPv6的未指定地址(Unsecified Address).
::1/128是IPv6的Loopback接口地址.
IPv6地址类型
1.单播
用于一个单独的接口.
A.全局单播地址(Global Unicast Address)
范围是2000-3FFF,2000被保留.
2001::/16 全球第一个商用IPv6地址.
2002::/16 6-to-4 Tunnel保留使用.
3FFF::/16 非商业化IPv6地址,教育和科研等使用.
注:每个接口上可以存在多个全局单播地址.
B.链路本地单播地址(Link Local Unicast Address)
范围是FE80::/10.用于在本地链路上标识设备的唯一性.
EUI-64是在MAC地址第24位后插入FFFE从而形成了Interface-ID,接口MAC地址第7位置为1,表示是全局唯一的.
C.站点本地单播地址(Site Local Unicast Address)
范围是FEC0::/10.类似于IPv4的私有IP地址.
2.组播
标识一组设备.
Flag 0表示是永久的, 1表示是临时的.
Scope 1表示本地接口,2表示是链路本地,3表示本地子网,4表示本地管理,5表示是场点本地,8表示组织本地,E表示全球范围.
FF02::1--本地链路上的所有节点.
FF02::2--本地链路上的所有路由器.
FF02::5--本地链路上的所有OSPFv3路由器.
FF02::6--本地链路上的所有OSPFv3 DR.
FF02::9--本地链路上的所有RIP路由器.
FF02::A--本地链路上的所有EIGRP路由器.
FF02::C--本地链路上的所有DHCP服务器.
FF02::D--本地链路上的所有PIM路由器.
FF02::1:FFXX.XXXX--请求节点地址.
FF05::101--场点本地上的所有NTP服务器.
3.任意播
一到最近.多个设备共享一个相同的地址.路由器会选择最近的设备到达目的地.
Neighbor Discovery Protocol(NDP)
依靠ICMPv6实现的,IPv6协议号是58.
1.重复地址检测DAD(Duplicate Address Detection)
使用ICMPv6类型135 NS和请求节点地址.
路由器A发送NS,Source-IPv6为::,Destination-IPv6为其自己的请求节点地址.
路由器B也发送NS,如果出现重复地址的话,则只允许一方使用其配置的IPv6地址.
Router(config-if)#ipv6 nd daa attempt value--设置接口上DAD请求次数,设置为0表明不发送DAD请求.
2.代替ARP
使用ICMPv6类型135 NS和136 NA以及请求节点地址.
路由器A发送的NS中Source-IPv6为::,Destination-IPv6为路由器B的请求节点地址.Source-MAC为Y,Destination-MAC为路由器B的IPv6地址到组播MAC地址的映射.
路由器A发送的NS中Source-IPv6为W,Destination-IPv6为X.Source-MAC为Z,Destination-MAC为Y.
Router(config)#ipv6 neighbor ipv6-address/prefix-length interface mac-address--手工设置IPv6邻居的MAC地址.
Router(config-if)#ipv6 nd ns-interval milliseconds--调整NS的发送间隔.
Router(config-if)#ipv6 nd reachable-time milliseconds--调整IPv6邻居可达性的时间验证间隔,默认为30分钟.
Router#show ipv6 neighbors--查看IPv6的邻居表(相当于IPv4的ARP表).
Router#clear ipv6 neighbors--清除IPv6的邻居表.
3.无状态的自动配置(Stateless autoconfiguration).
使用ICMPv6类型133 RS和134 RA.
1).前缀通告
路由器A周期性发送RA,Source-IPv6为路由器A的本地链路地址,Destination-IPv6为FF02::1,RA消息中包含前缀,前缀长度以及接口MTU.
PC B发送RS,Source-IPv6为PC B的本地链路地址,Destination-IPv6为FF02::2.
Router(config-if)#ipv6 nd prefix ipv6-prefix/prefix-length [default valid-lifetime preferred-lifetime at valid-date preferred-date] off-link no-autoconfig no-advertise
ipv6-prefix/prefix-length RA中通告的前缀信息,无状态自动配置的Prefix-length默认为64.
default 采用默认参数.
valid-lifetime 无状态配置得到的IPv6地址的有效期.
preferred-lifetime IPv6地址保持首选项状态的时间.
Router(config-if)#ipv6 nd suppress-ra--关闭接口上发送RA,通常用于连接路由器时.
Router#show ipv6 routers
4.MTU发现(PMTUD).
使用ICMPv6类型2,数据包超长错误信息.使用PMTUD发现的MTU值被源端缓存.
Router#show ipv6 mtu
5.ICMP重定向.
使用ICMPv6类型137.
Router(config-if)#ipv6 redirects
133 Router Solicitation(RS)前缀请求
RS由主机发送.源地址为链路本地单播地址,目的地址为FF02::2.每次启动时只能发送3个RS.
134 Router Advertisement(RA)前缀通告
RA由路由器发送.源地址为链路本地单播地址,目的地址为FF02::1.每200s或收到RS时发送.
包含MAC地址,MTU以及prefix信息.
135 Neighbor Solicitation(NS)邻居请求
NS数据包中的源地址为::(Local),目的地址为FF02::1:FFXX.XXX(XX.XXXX为链路本地单播地址的最后24bits),其中的target中包含本地链路单播地址.
136 Neighbor Advertisement(NA)邻居通告
NA中宣告本地路由器使用的IPv6地址,其中源地址为其全局单播地址或链路本地单播地址,目的地址为FF02::1.
137 Redirect
配置命令
Router(config)#ipv6 unicast-routing--启用IPv6路由. Router(config-if)#ipv6 enable--在接口上自动配置链路本地单播地址. Router(config-if)#ipv6 address FE80:x.x.x.x.x.x.x/n link-local--修改链路本地单播地址 Router(config-if)#ipv6 address x.x.x.x.x.x.x.x/n--直接配置IPv6全局单播地址. Router(config-if)#ipv6 address x.x.x.x.x.x.x.x/n EUI-64--依据Interface-ID配置全局单播地址. Router(config-if)#ipv6 address autoconfig--IPv6地址无状态自动配置. Router#show ipv6 interface slot/port Router#show ipv6 neighbors Router#show ipv6 route--查看IPv6路由表. Router#show ipv6 protocol
IPv6路由协议
1.Static
Router(config)#ipv6 route ipv6-prefix/prefix-length {next-hop | interface} [distance] Next-hop必须指定为下一跳的本地链路地址且要配置出站接口. Router(config)#ipv6 route ipv6-prefix/prefix-length interface link-local-address--推荐IPv6静态路由配置方式. Router(config)#ipv6 ::/0 interface next-hop--配置IPv6缺省路由.
2.RIPng
DV路由协议,最大跳数为15跳,RIP的防环机制仍然保留.使用组播地址FF02::9.使用UDP端口号521. 下一跳地址为链路本地单播地址,更新源地址也是本地链路地址. Router(config)#ipv6 router rip tag--启用RIPng进程,tag只标识进程本地有效. Router(config-if)#ipv6 rip tag enable--接口上启用RIPng进程. Router(config-if)#ipv6 rip tag default-information {only | originate}--宣告RIPng缺省路由,only表示只宣告缺省路由抑制其他明细路由.originate表示既宣告缺省也宣告明细. Router(config-if)#ipv6 rip tag summary-address ipv6-prefix/prefix-length--配置RIPng路由汇总. Router(config-if)#ipv6 rip tag metric-offset number--配置RIPng偏移列表. Router#debug ipv6 rip Router#clear ipv6 rip tag
3.OSPFv3
与IPv4具有相同机制. 携带IPv6地址,链路本地单播地址用于源. Link-ID取消了.OSPFv3 Router-ID必须手工指定. OSPFv3 LSA 0x2001 LSA 只包含ADV Router以及邻居的Router-ID 0x2009 LSA(链路) 包含链路本地单播地址以及接口地址. 0x2009 LSA(区域内前缀) 包含前缀信息. 以上三个LSA 相当于将OSPFv2 Router LSA进行了拆分. 0x2003 LSA(区域内前缀LSA) 0X2004 LSA(区域间前缀LSA) 0x2005 LSA 携带外部网络的前缀信息. Router(config)#ipv6 router ospf process-id Router(config-rtr)#router-id x.x.x.x--必须手工设置Router-id.
4.IS-IS
Router(config)#router isis [tag] Router(config-router)#net network-entiy-title Router(config-if)#ipv6 router isis
5.MP-BGPv4
Router(config)#router bgp autonomous-system Router(config-router)#no bgp default ipv6-unicast Router(config-router)#bgp router-id x.x.x.x--IPv6中仍然使用一个32bit的点分十进制表示的Router-ID. Router(config-router)#neighbor ipv6-address remote-as autonomous-sysytem Router(config-router)#address-family ipv6 unicast Router(config-router-af)#neighbor ipv6-address activate Router(config-router-af)#network ipv6-prefix/prefix-length Router#show bgp ipv6 [summary]
6.EIGRPv3
IPv4与IPv6的转换
1.双栈
IPv4以太网帧的协议ID为0x0800,IPv6以太网帧的协议ID为0x86DD.
在Cisco路由器接口上同时配置了IPv4和IPv6地址就是启用了双栈.
2.Tunnel
路由器必须支持双栈.将IPv6数据包封装到IPv4数据包中.【IPv4报头 IPv6报头 有效载荷】
IPv6有效载荷减少了20字节(IPv4报头).封装在IPv4的IPv6数据包使用IP协议号41.
1).IPv6 over IPv6
Router(config)#interface tunnel number Router(config-if)#ipv6 address ipv6-prefix/prefix-length--推荐使用/64前缀. Router(config-if)#tunnel source ipv4-address Router(config-if)#tunnel destination ipv6-address Router(config-if)#tunnel mode ipv6ip Router(config)#ipv6 route ipv6-prefix/prefix-length tunnel number
2).6-to-4 Tunnel
使用2002::/16的地址空间,IPv4地址转换为IPv6地址的形式是2002:IPv4-address::/48. Router(config)#interface loopback number Router(config-if)#ip address ipv4-address netmask Router(config)#interface interface-type interface-number Router(config-if)#ipv6 address ipv6-prefix/prefix-length Router(config)#interface tunnel number Router(config-if)#ipv6 unnumbered interface-type interface-number Router(config-if)#tunnel source interface-type interface-number Router(config-if)#tunnel mode ipv6ip 6to4 Router(config)#ipv6 route 2002::/16 tunnel number
3).6-to-4 Tunnel 中继
在6-to-4 Tunnel上增加一条缺省路由. Router(config)#ipv6 route ::/0 2002:IPv4-address::xx
3.NAT-PT
Router(config-if)#ipv6 nat Router(config-if)#ipv6 nat prefix ipv6-prefix/96 Router(config)#ipv6 nat v6v4 source ipv6-address ipv4-address Router(config)#ipv6 nat v4v6 source ipv4-address ipv6-address Router#show ipv6 nat translations