Skip to content

0. 课件来源

1. IPv4 地址回顾

1.1 有类地址分类

类别二进制前缀地址范围默认掩码用途
A类0xxxxxxx1.0.0.0 - 126.255.255.255/8大型网络
B类10xxxxxx128.0.0.0 - 191.255.255.255/16中型网络
C类110xxxxx192.0.0.0 - 223.255.255.255/24小型网络
D类1110xxxx224.0.0.0 - 239.255.255.255组播
E类1111xxxx240.0.0.0 - 255.255.255.255保留

1.2 特殊地址

地址用途
0.0.0.0/8本网络(未分配)
127.0.0.0/8本地回环
169.254.0.0/16链路本地(APIPA)
255.255.255.255有限广播
224.0.0.0/4组播地址

1.3 CIDR 与地址聚合

VLSM(可变长子网掩码):网络不断分割,变小,提高地址利用率。 Supernet(超网):子网不断聚合,变大,减少路由表条目。

text
/24 → /25 → /26    VLSM:子网划分
/24 ← /25 ← /26    Supernet:路由聚合

1.4 地址的拓扑含义

IPv4 地址是网络与拓扑的融合

text
interface g0/0/0
 ip address 1.1.1.1 255.255.255.0
  • 1.1.1.0/24 = 目的网段
  • 1.1.1.1 = 标识该网段上的本节点
text
Destination/Mask    Proto   Pre  Cost  Flags  NextHop      Interface
3.3.3.0/24         Direct  0     0     D       1.1.1.1      g0/0/0

2. IPv6 地址详解

2.1 表示与简化

IPv6 地址 128 位,分 8 段,每段 16 位(4 个十六进制):

text
完整:2001:0001:0000:0000:f000:0000:0000:0000
省略首部0:2001:1:0:0:f000:0:0:0
:: 压缩连续0:2001:1:0:0:f000::

规则

  1. 每段首部0 可省略,尾部不可省
  2. 连续多段 0 可用 :: 代替,只能出现一次

2.2 特殊地址

地址/前缀含义
::/128未指定地址
::1/128本地回环
fe80::/10链路本地(Link-Local)
fc00::/7唯一本地地址(ULA,类似 IPv4 私网)
2000::/3全球可聚合单播地址(AGUA)
ff00::/8组播地址

2.3 地址分类

单播 Unicast
AGUA 2000::/3
Link-Local fe80::/10
ULA fc00::/7
组播 Multicast
ff00::/8
ff02::1 本链路所有主机
ff02::2 本链路所有路由器
ff02::5 OSPFv3 设备
任播 Anycast
多个设备共享同一地址
就近原则路由
不能作为源地址
不进行 DAD

请求节点组播地址(Solicited-Node):

text
ff02::1:ffxx:xxxx   (后24位 copy 自单播地址后24位)

2001:10:1:12::2  →  ff02::1:ff00:2
2011:172:16:1::2 →  ff02::1:ff00:2   (两个地址可能加入同一组播组)

2.4 EUI-64 地址生成

MAC 地址(48位)中间插入 FFFE,并翻转 U/L 位(第7位):

text
MAC:        00e0-fcc5-6be9
插入 FFFE:  00e0-fcff-fec5-6be9
翻转U/L位:  02e0-fcff-fec5-6be9
EUI-64:     02E0:FCFF:FEC5:6BE9

2.5 配置方式汇总

text
ipv6
#
interface g0/0/0
 ipv6 enable
 ipv6 address 2001:10:1:12::1/64              # 手工指定 global
 ipv6 address 2003::/64 eui-64                # EUI-64 生成 global
 ipv6 address fe80::1 link-local              # 手工指定 link-local
 ipv6 address auto link-local                 # 自动生成 link-local
 ipv6 address 2001:172:16:12::1/64 anycast    # 任播地址

3. NDP 邻居发现协议

NDP(Neighbor Discovery Protocol)借助 ICMPv6 报文实现 IPv6 中 ARP 的功能。

3.1 报文类型

Type名称功能
133RS(Router Solicitation)路由器请求
134RA(Router Advertisement)路由器通告
135NS(Neighbor Solicitation)邻居请求
136NA(Neighbor Advertisement)邻居通告
137Redirect重定向

NDP 五大功能:DAD 重复地址检测、ND 邻居发现、自动配置、MTU 路径发现、Redirect 重定向。

3.2 DAD 重复地址检测

接口配置任何 IPv6 单播地址都要执行 DAD。

Link-Local 地址 DAD

text
接口 up 后,link-local 地址标记为 [tentative](试验地址)

发送 NS Type 135:
  sip = ::(未指定地址)
  dip = 自己的请求节点组播地址(ff02::1:ff00:1)
  target = fe80::1
  • 无冲突:无回应,去掉 tentative 标记,正常转发
  • 有冲突:对端回复 NA Type 136
text
NA Type 136:
  sip = 冲突的 link-local 地址
  dip = ff02::1(本链路所有主机)

本端收到后,接口标记从 [tentative][duplicate]

Global 地址 DAD:Link-Local DAD 完成后,逐个对 global 地址执行 DAD。

3.3 邻居发现(替代 ARP)

IPv4 ARP 过程

text
ARP Request 广播:
  smac=AR1  dmac=FF:FF:FF:FF:FF:FF
  sender ip=10.1.12.1  target ip=10.1.12.2

ARP Reply 单播:
  smac=AR2  dmac=AR1
  sender ip=10.1.12.2  target ip=10.1.12.1

IPv6 NDP 过程

text
ping ipv6 fe80::2

1. 查路由表,有路由则转发
2. 封装:sip=fe80::1 dip=fe80::2  smac=AR1 dmac=?
3. 查 NDP 表无记录,发送 NS Type 135:
     sip=fe80::1
     dip=ff02::1:ff00:2(对方请求节点组播)
     target=fe80::2
     option: source mac=AR1

4. AR2 收到:检查 DMAC 是否在侦听列表 → 检查 target 是否为本接口地址
   → 更新 NDP 表 → 回复 NA Type 136:
     sip=fe80::2  dip=fe80::1  smac=AR2  dmac=AR1
     target=fe80::2
     option: target mac=AR2

5. AR1 收到:检查 DMAC → 更新 NDP 表

3.4 邻居不可达检测状态机

EmptyIncomplete→(收到NA)Reachable→(30s超时/收到非请求NA且MAC变化)Stale→(需发包)Delay→(5s超时)Probe→(收到NA)Reachable
状态说明
Empty无缓存条目
Incomplete已发 NS,等待 NA
Reachable邻居可达,确认生效
Stale可达时间超时,未知是否仍可达
DelayStale 状态下需向该邻居发数据,等待 5 秒
ProbeDelay 超时未收到数据,发送单播 NS 探测

4. IPv6 自动配置

4.1 无状态自动配置(SLAAC)

路由器周期性(200~600 秒)发送 RA 报文,主机根据 RA 中的 prefix + EUI-64 自动生成地址。

text
RA 报文关键字段:
  sip = 路由器 link-local 地址
  dip = ff02::1(本链路所有主机)
  prefix = 2001:10:1:12::/64
  preferred lifetime = 7天(可用于收发)
  valid lifetime = 30天(仅可用于接收)

触发更新(RS/RA):主机刚启动时不等待周期 RA,主动发送 RS,路由器立即回复 RA。

text
# 主机配置
interface g0/0/0
 ipv6 enable
 ipv6 address auto global        # 无状态自动生成 global 地址
 ipv6 address auto link-local    # 自动生成 link-local
text
# 路由器配置
interface g0/0/0
 undo ipv6 nd ra halt            # 使能 RA 功能

4.2 有状态自动配置(DHCPv6)

DHCPv6 可提供地址、DNS、SIP、NIS 等额外信息,但默认不分配网关

text
# DHCPv6 Server
ipv6
dhcp enable
#
dhcpv6 pool A
 address prefix 3FFF::/64
 dns-server 3FFF::1
#
interface g0/0/0
 dhcpv6 server A
text
# DHCPv6 Client
interface g0/0/0
 ipv6 address auto dhcp

4.3 无状态 + 有状态组合(最佳实践)

通过 RA 中 M/O flag 控制地址获取方式:

M = 1(Managed)
地址、掩码、网关通过 DHCPv6 获取
等价于"有状态地址分配"
O = 1(Other)
地址通过 SLAAC 获取
DNS、SIP、NIS 等通过 DHCPv6 获取
等价于"无状态地址 + 有状态其他信息"

最佳实践M=0, O=1(地址无状态,其他信息有状态)

text
# Server 配置
interface g0/0/0
 dhcpv6 server A
 ipv6 nd autoconfig other-flag     # O 置位 = 1,其他信息走 DHCPv6
 ipv6 nd autoconfig managed-address-flag   # M 置位 = 0,地址走 SLAAC
text
# Client 配置
interface g0/0/0
 dhcpv6 client information-request    # 使能 DHCPv6 无状态
 ipv6 address auto global default     # SLAAC 生成地址,同时生成默认路由

注意:默认 M=0, O=0,全部无状态。若 M=1, O=1,全部走有状态 DHCPv6。

4.4 DHCPv6 4-way 与 2-way

4-way(Server 多台时默认,用于选择 Server):

text
Client          Server
  |  Solicit    →|
  |← Advertise   |
  |  Request    →|
  |← Reply       |

2-way(Server 只有一台时,降低开销):

text
Client          Server
  |  Solicit    →|
  |← Reply       |
text
# Server 侧启用 rapid-commit
interface g0/0/0
 dhcpv6 server A rapid-commit

# Client 侧启用 rapid-commit
interface g0/0/0
 ipv6 address auto dhcp rapid-commit

5. IPv4 与 IPv6 核心对比

IPv4
地址长度:32 位
表示方式:点分十进制
地址空间:2³² ≈ 43 亿
广播:支持
地址解析:ARP Request/Reply
重复地址检测:免费 ARP
自动配置:DHCPv4
地址与拓扑:融合
最小 MTU:68 字节
报头大小:20 字节
IPv6
地址长度:128 位
表示方式:冒号分十六进制
地址空间:2¹²⁸ ≈ 3.4×10³⁸
广播:不支持(用组播代替)
地址解析:NDP(NS/NA)
重复地址检测:ICMPv6 NS/NA
自动配置:SLAAC + DHCPv6
地址与拓扑:分离
最小 MTU:1280 字节
报头大小:40 字节

6. 报文结构

6.1 IPv4 Header(20~60 字节)

IPv4 Header
Ver
4b
IHL
4b
TOS
8b
Total Length
16b
Identification
16b
Flags
3b
Fragment Offset
13b
TTL
8b
Protocol
8b
Header Checksum
16b
Source Address
32 bits
Destination Address
32 bits
Options + Padding
0~40 bytes

6.2 IPv6 Header(固定 40 字节)

IPv6 Header
Ver
4b
Traffic Class
8b
Flow Label
20b
Payload Length
16b
Next Header
8b
Hop Limit
8b
Source Address
128 bits
Destination Address
128 bits

6.3 ICMPv6 报文结构

text
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |     Code      |          Checksum             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                        Message Body                           +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

常见 Type 值

Type含义
128Echo Request
129Echo Reply
133Router Solicitation (RS)
134Router Advertisement (RA)
135Neighbor Solicitation (NS)
136Neighbor Advertisement (NA)
137Redirect
真人撰写written by human