3.13. Traffic Selector Payload (流量选择器载荷)
3.13. Traffic Selector Payload (流量选择器载荷)
Traffic Selector (流量选择器) payload 在本文件中记为 TS, 使对等方能够标识交由 IPsec 安全服务处理的数据包流. Traffic Selector payload 由 IKE 通用载荷头后跟若干单个 Traffic Selector 构成, 如下:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Payload |C| RESERVED | Payload Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Number of TSs | RESERVED |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
~ <Traffic Selectors> ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
图 19: Traffic Selector payload 格式
-
Number of TSs (1 个八位组) - 提供的 Traffic Selector 数量.
-
RESERVED - 本字段必须发送为零且必须在接收时忽略.
-
Traffic Selectors (可变长度) - 一个或多个单个 Traffic Selector.
Traffic Selector payload 的长度包含 TS 头及所有 Traffic Selector.
发起方端 SA 地址侧 Traffic Selector payload 的载荷类型为四十四 (44), 响应方端为四十五 (45).
并不要求 TSi 与 TSr 包含相同数量的单个 Traffic Selector. 因此解释如下: 若某数据包至少匹配 TSi 中一个选择器且至少匹配 TSr 中一个选择器, 则该数据包匹配给定的 TSi/TSr.
例如, 以下 Traffic Selector:
TSi = ((17, 100, 198.51.100.66-198.51.100.66),
(17, 200, 198.51.100.66-198.51.100.66))
TSr = ((17, 300, 0.0.0.0-255.255.255.255),
(17, 400, 0.0.0.0-255.255.255.255))
将匹配从 198.51.100.66 发往任意目的地的 UDP 包, 源/目的端口可为 (100,300), (100,400), (200,300), (200, 400) 四种组合之一.
因此, 某些策略类型可能需要多对子 SA. 例如, 仅匹配源/目的端口 (100,300) 与 (200,400) 而不匹配另两种组合的策略, 无法作为单对子 SA 协商.
3.13.1. Traffic Selector (流量选择器)
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TS Type |IP Protocol ID*| Selector Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Start Port* | End Port* |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
~ Starting Address* ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
~ Ending Address* ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
图 20: Traffic Selector
*注: 除 TS Type 与 Selector Length 外, 所有字段均取决于 TS Type. 所示字段适用于 TS Type 7 与 8, 即当前唯一定义的两种取值.
-
TS Type (一个八位组) - 指定 Traffic Selector 类型.
-
IP protocol ID (1 个八位组) - 指定关联的 IP 协议 ID 的值 (如 UDP, TCP, ICMP). 值为零表示协议 ID 与本 Traffic Selector 无关 -- SA 可承载所有协议.
-
Selector Length (2 个八位组, 无符号整数) - 本 Traffic Selector 子结构 (含头) 的长度.
-
Start Port (2 个八位组, 无符号整数) - 本 Traffic Selector 允许的最小端口号. 对于未定义端口的协议 (含协议 0), 或若允许所有端口, 本字段必须为零. ICMP 与 ICMPv6 的 Type 与 Code 值, 以及 Mobile IP version 6 (MIPv6) 移动头 (MH) 的 Type 值, 在本字段中的表示见
[IPSECARCH]第 4.4.1.1 节. ICMP Type 与 Code 视为单个 16 位整数端口, Type 在高 8 位, Code 在低 8 位. MIPv6 MH Type 视为单个 16 位整数端口, Type 在高 8 位, 低 8 位为零. -
End Port (2 个八位组, 无符号整数) - 本 Traffic Selector 允许的最大端口号. 对于未定义端口的协议 (含协议 0), 或若允许所有端口, 本字段必须为 65535. ICMP 与 ICMPv6 的 Type 与 Code, 以及 MIPv6 MH Type, 表示方式同
[IPSECARCH]第 4.4.1.1 节. ICMP Type 与 Code 为单个 16 位端口, Type 在高 8 位, Code 在低 8 位. MIPv6 MH Type 为单个 16 位端口, Type 在高 8 位, 低 8 位为零. -
Starting Address - 本 Traffic Selector 包含的最小地址 (长度由 TS Type 决定).
-
Ending Address - 本 Traffic Selector 包含的最大地址 (长度由 TS Type 决定).
符合 [IPSECARCH] 且要表示 “ANY” 端口的系统必须将起始端口置 0, 结束端口置 65535; 根据 [IPSECARCH], “ANY” 包含 “OPAQUE”. 在 [IPSECARCH] 下要表示 “OPAQUE” 端口但不要 “ANY” 的系统必须将起始端口置 65535, 结束端口置 0.
TS Type 7 与 8 也可指 ICMP 或 ICMPv6 的 type 与 code 字段, 以及 IPv6 移动头 [MIPV6] 的 MH Type 字段. 但 ICMP 与 MIPv6 包没有独立的源与目的字段. 为 ICMP 与 MIPv6 指定 Traffic Selector 的方法见 [IPSECARCH] 第 4.4.1.3 节的示例.
下表列出 Traffic Selector Type 字段的取值及对应地址选择器数据. 表中取值仅截至 RFC 4306 发布之日有效. 此后可能已有其他取值被加入. 读者应查阅 [IKEV2IANA] 获取最新取值.
| TS Type | 取值 |
|---|---|
| TS_IPV4_ADDR_RANGE | 7 |
| 一段 IPv4 地址范围, 由两个四八位组值表示. 第一个为起始 IPv4 地址 (含), 第二个为结束 IPv4 地址 (含). 两地址之间的所有地址均视为在列表内. | |
| TS_IPV6_ADDR_RANGE | 8 |
| 一段 IPv6 地址范围, 由两个十六八位组值表示. 第一个为起始 IPv6 地址 (含), 第二个为结束 IPv6 地址 (含). 两地址之间的所有地址均视为在列表内. |