2.3.1. 信用窗口初始化 (Credit Window Initialization)
如上所述, Credit Window Initialization Data Item 由调制解调器用于标识信用窗口并设置其大小. 为避免使用未定义 FID 或未初始化信用窗口导致的错误, 任何指示支持此类扩展的 Session Initialization Response Message 都应该包含该 Data Item. 调制解调器可以通过在 Session Update Messages 中包含该 Data Item, 发送对先前已标识信用窗口的更新或新的信用窗口. 一个消息中可以包含多个 Data Item, 以提供多个信用窗口的信息.
Credit Window Initialization Data Item 使用 FID 标识信用窗口. 它还提供所标识信用窗口的大小. 若要使用, FID 必须在 Traffic Classification Data Item 中定义, 且关联的 TID 必须通过 Credit Window Association Data Item 提供.
Credit Window Initialization Data Item 的格式如下:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data Item Type | Length (16) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flow Identifier (FID) | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Credit Value |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Scale | Credit Window Max Size |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Data Item Type: : 30
Length: : 16
如 [RFC8175] 所规定, Length 是 Data Item 中的八位字节数. 它必须等于十六 (16). 如果为其它值, 则该 Data Item 已损坏, 因此无法可靠解析其所在消息, 并忽略该消息.
Flow Identifier (FID): : 由 Traffic Classification Data Item [RFC9892] 定义的 2 八位字节流标识符. FID 还唯一标识特定 DLEP 会话的一个信用窗口.
Reserved: : 对于 Credit Window Initialization Data Item, 该保留字段当前未使用. 在此版本的 Data Item 中, 它必须设置为全零, 且接收时当前会忽略该字段. 这允许未来在需要时扩展该 Data Item.
Credit Value: : 一个 64 位无符号整数, 表示要添加到信用窗口的信用, 单位为八位字节. 该值包含调制解调器和路由器之间链路上所见的 MAC 头部.
Scale: : 一个 8 位无符号整数, 指示 Credit Window Max Size 字段使用的尺度. 有效值如下:
+=======+=========================+
| Value | Scale |
+=======+=========================+
| 0 | B: Bytes (Octets) |
+-------+-------------------------+
| 1 | KB: Kilobytes (B/1024) |
+-------+-------------------------+
| 2 | MB: Megabytes (KB/1024) |
+-------+-------------------------+
| 3 | GB: Gigabytes (MB/1024) |
+-------+-------------------------+
表 1: 有效的 Scale 字段值
Credit Window Max Size: : 一个 24 位无符号整数, 表示关联信用窗口的最大大小, 单位为 Scale 字段指示的八位字节尺度.
收到 Credit Window Initialization Data Item 的路由器必须确保 FID 字段值已由调制解调器在当前消息或先前消息携带的 Traffic Classification Data Item 中提供. 如果找不到该 FID, 路由器应该记录此信息. 日志记录方法由路由器实现决定. 请注意, 在这种情况下, 没有流量会与该信用窗口关联. FID 验证后, 路由器必须定位与每个收到 Data Item 中所指示 FID 关联的信用窗口. 如果未找到关联的信用窗口, 路由器必须使用该 Data Item 中携带的值初始化一个新的信用窗口. 如果找到关联的信用窗口, 路由器必须使用该 Data Item 中携带的值更新信用窗口和关联的数据平面状态. 如果得到的信用值导致信用窗口超过所表示的 Credit Window Max Size, 则使用 Credit Window Max Size 字段值作为新的信用窗口大小.
值得注意的是, 此类更新可能导致信用窗口大小减小, 例如由于调制解调器上的传输速率变化. 在发送包含一个或多个降低 Credit Window Max Size 的 Credit Window Initialization Data Items 的 Session Update Message 之后, 调制解调器应该继续处理满足以下条件的已接收数据包: 匹配所指示的 FID, 适合未修改 Credit Window Max Size 的窗口, 且在调制解调器收到对应 Session Update Response Message 之前到达. 无论何时收到对应的 Session Update Response Message, 在任何受影响 FID 的关联窗口降至小于新的 Credit Window Max Size 之前, 调制解调器不应该为该 FID 发放附加信用.