IPv6概念

IPv6特点

  • 128bits的地址方案,为未来数十年提供了巨大的IP地址空间
  • 多等级层次有助于路由聚合,提高了因特网网络路由的效率及可扩展性
  • 自动配置过程允许IPv6网络中的节点更加便捷的接入IPv6网络
  • 重新编址机制使得IPv6提供商之间的转换对最终用户是透明的
  • 无需NAT
  • 不再有广播、不再有ARP
  • IPv6的包头比IPv4更有效率,数据字段更少,去掉了包头校验和。更简单的报头提高了路由器的处理效率。新的扩展包头替代了IPv4的选项字段,并且提供了更多的灵活性
  • 更有效的支持移动性和安全性
  • v4v6过渡方式丰富多彩
  • 测试IPv6的情况:http://www.test-ipv6.com/

IPv6报头

image-20200327195321911 image-20200327195336038 image-20200327195345373

IPv6报头改进

  • 取消了IP的校验
    第二层和第四层的校验已经足够健壮了,因此IPv6直接取消了IP的三层校验。
  • 取消中间节点的分片功能
    分片重组功能由源目端自己进行,通过PMTU机制来发现路径MTU
  • 定义最长的IPv6报头
    有利于硬件的快速处理,如此一来中间节点可以避免处理而节省大量的资源
  • 安全选项的支持
    IPv6提供了对Ipsec的完美支持,如此上层协议可以省去许多安全选项,例如OSPFv3就取消了认证
  • 增加流标签
    提高QoS效率

扩展报头

​ 在IPv6中,v4中的选项被移到了扩展报头中。一个IPv6数据包可能包括0个或多个扩展包头,当使用多个扩展包头时,通过前面的包头的Nexthead字段指明该扩展包头后的扩展包头。有了扩展包头,中间路由器就不需要处理每一个可能出现的选项,提高了路由器处理数据包的速度,提高了其转发性能。在扩展报头链的最后就是有效负载。

扩展报头可选,只有需要该扩展报头对应的功能,发送主机才会添加相应扩展报头

  • 逐跳选项报头Hop-by—Hop Options Header(协议0)
    • 传送路径上每个路由器都要处理,用于巨型数据包和路由器警报。如RSVP资源预留协议
  • 目标选项报头Destination Options Header(协议60)
    • 该包头承载特别针对数据包目的地的可选信息,例如用在移动节点和家乡代理之间交换注册信息,移动
      IP是这样的一个协议,即使移动节点改变了连接点,仍允许它保持永久的IP地址
  • 分段报头Fragment Header (协议44)
    • 在IPv6中,建议所有的节点使用PMTUD机制来发现链路的MTU,这样就不需要对数据进行分段了。但是如果IPv6节点不支持PMTUD,但又必须发送比路径MTU还大的数据包时,就不得不分段了,这时候需使用分段包头,节点将数据分段,使用分段包头发送每个分段。
  • 认证报头Authentication Header (协议51)
  • 封装安全有效载荷报头Encapsulating Security Payload Header(协议51)

IPv6编址

地址简写

IPv6地址在简写的时候多个前导0可以省略成一个0;
如:2001:00a8:0207:0000:0000:0000:0000:8207
可缩写成:2001:a8:207:0:0:0:0:8207
一个或多个连续的16比特字段为0时,可用::表示,但整个缩写中只允许有一个::
如上面的例子,可以进一步缩写成:2001:a8:207::8207

URL表示

http://[ipv6地址]:8080 !! 必须用[ ] 括起来

地址分类

image-20200327204510186

单播地址

  • 可聚合全局单播地址(Aggregatable global unicast address)
    • 一般从运营商处申请到的IPv6地址空间为/48,再由自己根据需要进一步规划
image-20200327204629908
  • 本地站点地址 (Site-local address)
    • 类似IPv4中的私有地址。
    • 以FEC0::/10为前缀。
  • 链路本地地址 (Link-local address)
    • 以FE80::/10为前缀,11-64位为0,外加一个64bits的接口标识(一般是EUI-64)。
    • 只能在连接到同一本地链路的节点之间使用,也就是链路范围内有效。
    • 用于自动地址配置、邻居发现、路由器发现等。
    • 当一个节点启动IPv6协议栈时,节点的每个接口会自动配置一个链路本地地址。这种机制使得两个连接到同一链路的IPv6节点不需要做任何配置就可以通信。缺省网关建议使用链路本地地址,因为这个地址是最稳定的。
image-20200327205602314

EUI-64

image-20200327205703530

将48bits的MAC对半劈开,插入FFFE,然后设置第7位,也就是U/L位,该比特位确定48bits的MAC地址的唯一性与否。一个以太网地址可以有两种含义,地址可被全球管理或本地管理。全球管理指使用如0800-2bxx-xxxx之类的厂商MAC,本地管理指使用自己的值重写MAC地址,在这种情况下,这个特殊的位=1表示本地管理;为0表示全球管理。但是在EUI-64格式中,U/L的含义正好相反,0表示本地管理,1表示全球管理,所以使用EUI-64格式的地址IPv6地址,U/L位为1,则地址是全球唯一的,如果为0,则为本地唯一。

特殊的地址

  • 回环地址:::1 0:0:0:0:0:1/128 或者::1/128
    • 用于IPv6节点发送报文给自己
  • IPv4兼容地址
    • 在过渡技术中会使用到一些包含IPv4地址的IPv6地址,为了让IPv4地址显得更加突出一些,定义了内嵌IPv4地址的IPv6地址格式。
    • 0:0:0:0:0:0:192.168.1.2或者::192.168.1.2(96个0)

组播

image-20200327210049611

组播地址最高位前8位固定为全1,比如:FFXX::/8

  • Flags
    • 4bits,0000:永久分配或众所周知的; 0001:临时的
  • Scop用来限制组播数据流在网络中发送的范围。
    • 0:预留
    • 1:节点本地范围; 单个接口有效,仅用于Loopback通讯
    • 2:链路本地范围; 如FF02::1表示链路上的所有节点;FF02::9:表示链路上的所有RIP路由器
    • 3:本地子网范围
    • 4:本地管理范围
    • 5:本地站点范围
    • 8:组织机构范围
    • E:全球范围
    • F:预留
  • Group-ID
    • 该字段长度可以为112位,用来标识组播组,而112位最多可以生成2112个组ID
    • 建议仅使用该112位的最低32位组ID,将剩余的80位都置0

组播地址的MAC映射

image-20200327210009088

特殊组播地址

FF01::1 节点本地范围所有节点组播地址
FF01::2 节点本地范围所有路由器组播地址
FF02::1 链路本地范围所有节点组播地址
FF02::2 链路本地范围所有路由器组播地址
……

被请求节点组播地址Solicited-node

  • 是一种特殊用途的地址,主要用于重复地址检测(DAD)和替代IPv4中的ARP。
  • 由前缀FF02::1:FF00:0 / 104和ipv6单播地址的最后24位组成。
  • 一个IPv6单播地址对应一个Solicited-node地址。
  • Solicited-node地址有效范围为本地链路范围。
image-20200327210739796

Anycast

任播地址没有专门的地址空间,使用的是单播的地址空间。一个IPv6地址被分配给多个接口,仅用于路由器,发往任播地址的数据包被路由给分配了任播地址中的最近的一个(由路由协议判断远近)。

配置IPv6地址

image-20200327211422768

拓扑

image-20200327212157474

手工配置

1
2
3
4
5
6
7
8
R1(config)#int e0/0
R1(config-if)#ipv6 enable
R1(config-if)#ipv6 address 2012::/64 eui-64
R1(config-if)#no shutdown
R1#show ipv6 interface brief
Ethernet0/0 [administratively down/down]
FE80::A8BB:CCFF:FE00:1000
2012::A8BB:CCFF:FE00:1000

上面这条命令的意思是使用2012::/64作为前缀,并且追加64bits的EUI-64格式接口ID,构成接口的全局唯一IPv6地址。

1
2
3
4
5
6
7
8
9
10
11
R2(config)#int e0/0
R2(config-if)#ipv6 add 2012::2/64
R2(config-if)#no sh
R2(config-if)#int e0/1
R2(config-if)#ipv6 add 2023::2/64
R2(config-if)#no sh
R2#ping 2012::A8BB:CCFF:FE00:1000
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2012::A8BB:CCFF:FE00:1000, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/163/650 ms
image-20200327212709617 image-20200327212930308 image-20200327213031287

自动配置

IPv6地址的自动配置一般有两种方式

无状态地址自动配置

IPv6通过前缀公告实现无状态地址自动配置,报文如下

image-20200328202638347

  • Cur Hop Limit
    • 表示当PC使用该RA通告的前缀构建IPv6地址,那么该PC发送的IPv6报文hoplimit都是该值(64)
  • Flags
    • 如果not managed位为1表示主机使用有状态地址自动配置(如DHCPv6)
    • not other位为1则表示主机使用有状态地址自动配置来获取除了地址以外的参数
  • RouterLifetime
    • 该RA关联的前缀发给PC后,PC将Router视为网关
  • Reachable time及retrans timer如果为0则表示为指定,下面为指定的地方

image-20200328202830063

  • 有效生存期(Valid lifetime)
  • 首选生存期(preferred lifetime)
    • 当地址处于Deprecated状态,地址不能主动的发起连接只能是被动的接受连接,这也是为了保证上层应用而设计的,但是过了valid lifetime时间地址就变为invalid,这时任何连接都会down掉
image-20200328203122928

拓扑

image-20200327213528207

R2负责分配IP地址

1
2
3
4
5
6
7
8
9
R2(config)#ipv unicast-routing
R2(config)#int e0/0
R2(config-if)#ipv add 2012::2/64
R2(config-if)#no ipv nd ra suppress
R2(config-if)#no sh
R2(config-if)#int e0/1
R2(config-if)#ipv add 2023::2/64
R2(config-if)#no ipv nd ra suppress
R2(config-if)#no sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
R1(config)#int e0/0
R1(config-if)#ipv add autoconfig default
R1(config-if)#no sh
R1#sh ipv int br
Ethernet0/0 [up/up]
FE80::A8BB:CCFF:FE00:1000
2012::A8BB:CCFF:FE00:1000
R1#sh ipv route
ND ::/0 [2/0]
via FE80::A8BB:CCFF:FE00:2000, Ethernet0/0
NDp 2012::/64 [2/0]
via Ethernet0/0, directly connected
L 2012::A8BB:CCFF:FE00:1000/128 [0/0]
via Ethernet0/0, receive
L FF00::/8 [0/0]
via Null0, receive

如果加default关键字,则会在获取到地址的接口上添加一个默认网关(默认路由)

image-20200327214340221image-20200327214503017

image-20200327214529213

有状态地址自动配置(DHCPv6)

拓扑

image-20200327214706107

R1为DHCP服务器

1
2
3
4
5
6
7
8
9
10
11
R1(config)#ipv6 unicast-routing 
R1(config)#ipv6 dhcp pool dhcppool
R1(config-dhcpv6)#prefix-delegation pool dhcppool lifetime 1800 600
R1(config-dhcpv6)#dns-server 2400:3200::1
R1(config)#ipv6 local pool dhcppool 2001::/16 16
R1(config)#int e0/0
R1(config-if)#ipv add 2001::1/64
R1(config-if)#no sh
R1(config-if)#ipv6 nd other-config-flag
R1(config-if)#ipv6 nd managed-config-flag
R1(config-if)#ipv6 dhcp server dhcppool
1
2
3
4
5
6
7
8
R2(config)#int e0/0
R2(config-if)#ipv dhcp client pd test
R2(config-if)#ipv6 address test ::/64 eui-64
R2(config-if)#no sh
R2#sh ipv int br
Ethernet0/0 [up/up]
FE80::A8BB:CCFF:FE00:2000
2001::A8BB:CCFF:FE00:2000

当一个主机收到RA路由器通告的时候,它会去查看RA里M位,如果M位为1,则开始在LAN上寻找DHCP服务器。主机将使用linklocal地址作为源发送DHCP-solicit message,目的是ALL_DHCP_Agents

以下是DHCPv6可能使用到的地址及端口:
FF02::1:2 = ALL DHCP Agents(servers or relays,link-local scope)
FF05::1:3 = ALL DHCP servers(Site-local scope)
DHCP报文 client侦听UDP546;servers及agents侦听UDP547

image-20200327221750421
评论
加载中,最新评论有1分钟缓存...