3.5.9. 标签中止请求消息
标签中止请求 (Label Abort Request) 消息可用于中止一条尚未完成的标签请求消息。
标签中止请求消息的编码为:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0| Label Abort Req (0x0404) | Message Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| FEC TLV |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Label Request Message ID TLV |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Optional Parameters |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Message ID
用于标识本消息的 32 位值。
FEC TLV
标识正在中止其标签请求的 FEC。
Label Request Message ID TLV
规定要中止的标签请求消息的 message ID。
Optional Parameters
标签中止请求消息没有定义可选参数。
3.5.9.1. 标签中止请求消息过程
在以下情况下, LSR Ru 可以向 LSR Rd 发送一条标签中止请求消息, 以中止先前向 Rd 发出的、针对某个 FEC 的尚未完成的标签请求消息:
-
Ru 在该 FEC 上的下一跳已从 LSR Rd 变为 LSR X; 或者
-
Ru 是一台非合并、非入口 (non-merge, non-ingress) LSR, 并且已从上游对等体 Y 收到针对该 FEC 的标签中止请求。
-
Ru 是一台合并、非入口 (merge, non-ingress) LSR, 并且已从上游对等体 Y 收到针对该 FEC 的标签中止请求, 且 Y 是唯一 (最后) 一个为该 FEC 请求标签的上游 LSR。
也可能有其他情况, LSR 可以选择中止一条尚未完成的标签请求消息, 以回收与待定 LSP 关联的资源。不过, 规定使用中止机制的一般策略超出了 LDP 的范围。
当 LSR 收到标签中止请求消息时, 如果它先前尚未用标签映射消息或其他通知消息响应正在被中止的标签请求, 则它必须用一条 Label Request Aborted 通知消息响应以确认该中止。该通知必须包含一个 Label Request Message ID TLV, 其中携带被中止的标签请求消息的 message ID。
如果 LSR 在已经用标签映射消息或通知消息响应了相关标签请求之后收到标签中止请求消息, 它忽略该中止请求。
如果 LSR 在发送标签中止请求消息以中止某条标签请求之后, 收到了响应该标签请求的标签映射消息, 则该标签映射消息中的标签是有效的。该 LSR 可以选择使用该标签, 或者用标签释放消息释放它。
正在中止某条标签请求消息的 LSR, 在从其对等体收到以下之一之前, 不得重用该标签请求消息的 Message ID:
-
确认该中止的 Label Request Aborted 通知消息;
-
响应正在被中止的标签请求消息的标签映射消息;
-
响应正在被中止的标签请求消息的通知消息 (例如 Loop Detected、No Label Resources 等)。
为防范迟钝的对等体或有缺陷的对等体实现, LSR 可以选择对上述响应的接收设置超时。超时时间应当相对较长 (数分钟)。如果超时时间到期而仍未收到对等体的回复, 该 LSR 可以重用该标签请求消息的 Message ID; 如果这样做, 它还应当丢弃有关该未完成标签请求和中止消息的所有记录。
请注意, 对标签中止请求消息的响应从来不是 "有序 (ordered)" 的。也就是说, 该响应不依赖于正在被中止的 LSP 建立的下游状态。收到标签中止请求消息的 LSR 必须立即处理它, 无论该 LSP 的下游状态如何, 并按适当情况用 Label Request Aborted 通知响应或忽略它。