跳到主要内容

6.1.8. 重定向请求 (Redirecting Requests)

6.1.8. 重定向请求 (Redirecting Requests)

当重定向代理收到路由项为 REDIRECT 的请求时, 必须 (MUST) 回复应答消息, 置位 'E' 比特, 保持头中的 Hop-by-Hop Identifier, 并在 Result-Code AVP 中取 DIAMETER_REDIRECT_INDICATION. 与该路由项关联的每个服务器分别放入单独的 Redirect-Host AVP.

+------------------+
| Diameter |
| Redirect Agent |
+------------------+
^ | 2. command + 'E' bit
1. Request | | Result-Code =
[email protected] | | DIAMETER_REDIRECT_INDICATION +
| | Redirect-Host AVP(s)
| v
+-------------+ 3. Request +-------------+
| example.com |------------->| example.net |
| Relay | | Diameter |
| Agent |<-------------| Server |
+-------------+ 4. Answer +-------------+

图 5: Diameter 重定向代理 (Diameter Redirect Agent)

收到 'E' 比特已置位且 Result-Code AVP 为 DIAMETER_REDIRECT_INDICATION 的应答时, 接收方用 Diameter 头中的 Hop-by-Hop Identifier 在待处理消息队列 (见第 5.5.4 节) 中定位待重定向的请求. 若与新对等体尚无传输连接, 则建立连接并将请求直接发往该对等体.

允许出现多个 Redirect-Host AVP. 接收方在 'E' 已置位的应答中必须从中恰好选择一个主机作为重定向消息的目的地.

当应答中的 Redirect-Host-Usage AVP 为非零时, 接收方为该重定向指示创建并缓存路由项. 该路由项的重定向用途由 Redirect-Host-Usage AVP 取值决定, 缓存生存期由 Redirect-Max-Cache-Time AVP 决定.

多个重定向指示可能产生多条缓存路由项, 彼此仅在重定向用途与转发目标对等体上不同. 例如两次 (2) 重定向指示产生两条 (2) 针对同一 realm 与 Application Id 的缓存路由, 但其中一条用途为 ALL_SESSION, 匹配请求转发到一对等体; 另一条为 ALL_REALM, 请求转发到另一对等体. 因此, 若入向请求同时匹配两条路由的 realm 与 Application Id, 需要进一步裁决. 此情况下必须 (MUST) 按重定向用途值应用路由优先级规则消解冲突, 规则见第 6.13 节.