跳到主要内容

6.5. Routing Locator Hashing (路由定位器哈希)

6.5. Routing Locator Hashing (路由定位器哈希)

当 ETR 在 Map-Reply 中向请求的 ITR 提供 EID-to-RLOC 映射时, 该 EID-Prefix 的 Locator-Set 中各 locator 地址可有不同 Priority 值. 当存在多个最优 Priority 的 Locator 时, ITR 可决定如何在这些 Locator 之间对流量做负载分担.

ITR 可使用以下哈希算法为发往某 EID 的分组选择 EID-to-RLOC 映射中的 Locator:

  1. 可使用源地址与目的地址哈希, 或传统的 5 元组哈希. 传统 5 元组哈希包含源地址与目的地址, 源与目的 TCP, UDP 或 Stream Control Transmission Protocol (流控制传输协议, SCTP) 端口号, 以及 LISP 站点内主机发起的分组的 IP 协议号字段或 IPv6 下一首部字段. 当分组不是 TCP, UDP 或 SCTP 分组时, 仅使用首部中的源地址与目的地址计算哈希.

  2. 取哈希值除以 EID-to-RLOC 映射的 Locator-Set 中存储的 Locator 数量.

  3. 余数落在 0 到 "Locator 数量减 1" 之间. 用该余数在 Locator-Set 中选择 Locator.

注意 LISP 封装时, 外层 UDP 首部中的源端口号需要设置. 选择哈希值可使连接到 Link Aggregation Groups (链路聚合组, LAG) 的核心路由器将已封装分组在 LAG 成员链路上负载分担. 否则核心路由器会看到单一流, 因为分组源地址为 ITR, 而源站点上不同 EID 发起的分组本应区分. 建议 ITR 将源端口号设为对内层首部按上文所述 5 元组哈希函数计算的结果.

许多核心路由器实现使用 5 元组哈希在 LAG 成员间平衡分组负载. 5 元组哈希包含分组的源地址与目的地址, 以及当协议号为 TCP 或 UDP 时的源端口与目的端口. 因此 LISP 封装使用 UDP 编码.