ICMPv6介绍

ICMPv6消息

  • ICMPv6 是IPv6的基础协议之一。协议号58,该协议号在IPv6报头的“下一个包头”字段中
  • ICMP报文有两种:差错消息及信息消息

消息类型

image-20200328190751913

拓扑

image-20200328191430243

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
R1
ipv un
int e0/0
ipv add 2012::1/64
no sh
ipv route ::/0 2012::2
===================
R2
ipv un
int e0/0
ipv add 2012::2/64
no sh
int s1/1
ipv add 2023::2/64
no sh
===================
R3
ipv un
int s1/1
ipv add 2023::3/64
no sh
ipv route ::/0 2023::2

检查连通性

1
2
3
4
5
R1#ping 2023::3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2023::3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 7/8/9 ms

无路由

1
2
3
4
5
R1#ping 2024::1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2024::1, timeout is 2 seconds:
UUUUU
Success rate is 0 percent (0/5)

image-20200328192204166

地址不可达

1
2
3
4
5
R1#ping 2023::4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2023::4, timeout is 2 seconds:
HHHHH
Success rate is 0 percent (0/5)

image-20200328192340343

管理原因禁止访问

1
2
3
4
5
R2(config)#ipv6 access-list denyany
R2(config-ipv6-acl)#deny any any
R2(config-ipv6-acl)#int s1/1
R2(config-if)#ipv6 tr
R2(config-if)#ipv6 traffic-filter denyany out
1
2
3
4
5
R1#ping 2023::3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2023::3, timeout is 2 seconds:
AAAAA
Success rate is 0 percent (0/5)

image-20200328192511298

PMTUD

  • PMTU就是路径上的最小接口MTU。
  • IPv6的由源节点自己对数据包进行分片。

IPv4分片

拓扑

image-20200328192743153

1
2
3
4
5
R1#ping 3.3.3.3 size 2500        
Type escape sequence to abort.
Sending 5, 2500-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/5 ms

image-20200328193317878

image-20200328193419669

在ipv4中,如果一个数据超过了接口的mtu,那么会被瓶颈的网络设备进行分片

IPv6探测MTU

拓扑

image-20200328194003027

完成环境的搭建及设备的基本配置,保证全网互通。
R1去ping R4,能够ping通。

1
2
3
4
5
R1#ping 2034::4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2034::4, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/4/17 ms

修改R2的e0/1接口的MTU

1
2
R2(config)#int e0/1
R2(config-if)#ipv6 mtu 1400

在R2上查看接口的MTU

1
2
R2#sh ipv6 int e0/1
MTU is 1400 bytes

在R1上ping一下

1
2
3
4
5
R1#ping 2034::4 re 1 size 1500
Type escape sequence to abort.
Sending 1, 1500-byte ICMP Echos to 2034::4, timeout is 2 seconds:
B
Success rate is 0 percent (0/1)

image-20200328195047947

此刻R1已经学到了这条路线上最小的MTU

1
2
3
R1#show ipv6 mtu
MTU Since Source Address Destination Address
1400 00:00:08 2012::1 2034::4

image-20200328195219909

image-20200328195248313

NDP邻居发现协议

NDP可以帮助我们实现以下功能

  • 地址解析(代替ARP协议,使用ICMP完成地址解析)
  • 邻居的状态跟踪
  • 无状态自动配置
  • 重复地址检测(DAD)
  • 前缀重编址
  • 路由器重定向

ICMPv6 for NDP

ICMPv6 Type 消息名称
133 路由器请求(RS)
134 路由器通告(RA)
135 邻居请求(NS)
136 邻居通告(NA)
137 重定向消息

NDP机制使用的ICMPv6消息

机制 RS133 RA134 NS135 NA136 重定向消息137
报文介绍 主机可以发送RS要求路由器立即产生RA 包含MTU、前缀信息等 用来判断邻居的链路层地址,也用于DAD等
替代ARP
前缀通告
前缀重新编址
DAD
路由重定向

地址解析

拓扑

image-20200328200441312

1
2
3
4
5
R1#ping 2012::2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2012::2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/4/17 ms

R1从e0/0接口发出了一个NS消息,报文如下

image-20200328200924540

R2的e0/0接口正在监听ff02::1:ff00:2这个组播地址

1
2
3
4
5
R2#show ipv int e0/0
Joined group address(es):
FF02::1
FF02::1:FF00:2
FF02::1:FF00:2000

R2收到之后进行回复,报文如下

image-20200328201123017

R1收到了之后,将R2的mac地址信息记录到IPv6的邻居表中

1
2
3
4
R1#show ipv6 neighbors 
IPv6 Address Age Link-layer Addr State Interface
2012::2 4 aabb.cc00.2000 STALE Et0/0
FE80::A8BB:CCFF:FE00:2000 4 aabb.cc00.2000 STALE Et0/0

注意到报文中的Flag字段

image-20200328201309263

  • R位置1表示这是台路由器
  • S位置1表示这是响应某个邻居请求的通告,置0则为主动发送的
  • O位置1表示NA消息中的条目是否覆盖已有,收到该消息的邻居会覆盖已有条目

邻居状态

  • Incomplete 邻居请求已经发送到目标节点的请求组播地址,但没有收到邻居的通告
  • Reachable 可达,收到确认,不续再发包确认
  • Stale 从收到上一次可达性确认后过了超过30s
  • Delay 在stale状态后发送过一个报文,并且5s内没有可达性确认
  • Probe 每隔1s重传邻居请求来主动请求可达性确认,直到收到确认

image-20200328201501084

  1. A发送NS,并生成缓存条目,状态为Incomplete
  2. 若B回复NA,则Incomplete ->Reachable。否则10S后Incomplete->Empty,即删除条目
  3. 经过ReachableTime(默认30S),B的条目状态Reachable->stale,或者在Reachable状态,收到B的非请求NA,且链路层地址不同,则马上->stale
  4. 在Stale状态若A要向B发送数据,并从Stale->Delay,等待应用层的提示信息,提示邻居可达
  5. 在Delay_First_Probe_Time(默认5S)内,若有NA应答或者应用层的提示信息,则Delay->Reachable,无应用层提示信息,Delay->Probe
  6. 在Probe状态,每隔RetransTimer(默认1S)发送单播NS,发送MAX_Unicast_Solicit个后再等RetransTimer,有应答则Reachable,无则进入Empty,即删除条目

测试命令debug ipv6 nd

DAD(Duplicate Address Detection)

节点向一个自己将使用的tentative地址所对应的Solicited-Node组播地址发送一个NS,如果收到某个其他站点回应的NA,就证明该地址已被网络上使用,节点将不能使用该tentative地址通讯。

如果1S后没有检测到冲突,A就会发送non-solicited advertisement(一个NA消息),宣告大家我将正式使用这个IPv6地址。

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