2. 操作
当使用 RADIUS 计费时,NAS 通常作为客户端,RADIUS 计费服务器作为服务器。
2.1. 计费流程
当拨入用户开始接受一项服务时,NAS 向 RADIUS 计费服务器发送一个计费请求数据包,其中 Acct-Status-Type 设为 Start。该包中应包含描述会话的信息,这些信息足以唯一地标识该会话,例如 Use-Name、NAS-IP-Address、NAS-Port 和 Acct-Session-Id。
如果 RADIUS 计费服务器在长达 T 秒的时间内没有响应,NAS 应当重传该包。如果重传未能收到响应,NAS 应当尝试下一个计费服务器。NAS 应当继续发送计费请求,直到收到响应,或者已尝试了可配置次数的所有可用计费服务器。如果所有计费服务器都无响应,NAS 可以忽略该失败,因为计费信息是非关键的。然而,如果 NAS 在超时期限内收到来自计费服务器的计费响应(其中必须包含原始计费请求中的 Acct-Session-Id),则完成本次交换。
当用户会话结束,并且服务被终止时,NAS 向 RADIUS 计费服务器发送一个计费请求数据包,其中 Acct-Status-Type 设为 Stop。该包中应当包含用于描述会话的信息,足以唯一地标识该会话,并描述了会话交付的内容、会话长度以及交付的数量(例如,输入/输出字节数或输入/输出数据包数)。
如果 NAS 未收到对计费请求数据包的响应,它将按前文所述进行重传。它应当继续发送计费请求,直到收到响应,或者已尝试了可配置次数的所有可用计费服务器。如果所有计费服务器都无响应,NAS 可以忽略该失败,因为计费信息是非关键的。
2.2. 计费重传算法
RADIUS 计费服务器可能需要接收给定会话的全部计费记录。由于重传的计费请求可能与原始的计费请求逐字节相同(重传时不改变标识符或 Request Authenticator),服务器可以检测出重复请求并丢弃它们。因此,NAS 可以重传未确认的计费请求,而不必担心计费服务器会重复记录。
客户端重传算法类似于 RFC 2131 第 4.1 节中描述的算法。客户端在初次超时前等待的时长,通过选取一个介于 1 秒(建议最小值)和 3 秒之间的随机值 R 来确定,R 应当是整数。每次后续超时,客户端应将等待间隔加倍,该间隔取决于重传次数。当间隔达到 120 秒(建议最大值)时,重传算法的客户端应当将间隔重新设为 120 秒,并在剩余的重传中保持该值。在每次重传后,客户端等待的时长如下:
R
2R
4R
8R
16R
32R
...
客户端应当继续重传,直到收到对计费请求的响应,或已重传了 N 次(可配置,建议 N 至少等于 5,最多等于 10)。
2.3. 代理
实现代理计费服务器(即转发请求的服务器)时,必须遵循以下规则:
a) 从 NAS 接收到的计费请求的 Identifier 字段,必须在响应到达之前保留。它将在从计费服务器转发回响应时使用。
b) 代理在将请求转发到另一个服务器时,必须保留从 NAS 接收到的值(Acct-Status-Type、Acct-Delay-Time、Acct-Session-Id、Acct-Authentic、User-Name、NAS-IP-Address、NAS-Identifier、NAS-Port 等),除非本备忘录另有规定。特别地,代理在转发时必须保留 Acct-Delay-Time 的值。
c) 代理必须根据本地配置中指定的转发目标,将计费请求转发到适当的计费服务器。
d) 当代理从转发的计费服务器收到计费响应(Code = 5)时,它必须将该响应原样发回给发送了计费请求的 NAS。
e) 代理在转发响应时,必须保留 Identifier 字段。该字段必须设置为从 NAS 收到的计费请求的 Identifier 字段。
f) 如果代理在重传了 N 次(可配置)后未收到对计费请求的响应,它必须发回一个计费响应(Code = 5),其中 Acct-Session-Id 设为从 NAS 收到的计费请求的 Acct-Session-Id,其余属性本地设置。
g) 代理必须保留 Acct-Status-Type、Acct-Session-Id、Acct-Authentic、User-Name、NAS-IP-Address、NAS-Identifier、NAS-Port 的 NAS 原始值,即使计费请求被代理。
h) 代理在向另一个服务器转发计费请求时,必须保留 Acct-Delay-Time 的值。如果响应超时并且代理发回一个本地生成的计费响应,则在向 NAS 发送之前,必须将 Acct-Delay-Time 增加代理在等待响应期间花费的秒数。
i) 代理必须保留计费请求中 Acct-Session-Id 的值,即使请求被转发。
j) 当代理接收到一个计费请求并将其转发到另一个服务器时,Acct-Delay-Time 表示计费信息在到达该代理之前已经等待的秒数(即 NAS 的重传次数乘以 NAS 的重传间隔)。Acct-Delay-Time 必须按本备忘录第 4.1 节的规定递增,而代理在等待响应期间花费的额外时间,应在代理发回响应时加到 Acct-Delay-Time 上。
k) 代理必须保留计费请求中 Acct-Authentic 的值,即使请求被转发。