AAA和radius协议学习
AAA 是Authentication(认证)、Authorization(授权)和Accounting(计费)的简称。它提供对用户进行认证、授权和计费三种安全功能。具体如下:
- 认证(Authentication):验证用户是否可以获得访问权,确定哪些用户可以访问网络。
- 授权(Authorization):授权用户可以使用哪些服务。
- 计费(Accounting):记录用户使用网络资源的情况。
AAA 一般采用客户/服务器结构,客户端运行于被管理的资源侧,服务器上则集中存放用户信息。这种结构既具有良好的可扩展性,又便于用户信息的集中管理。
-
- 认证功能,AAA 支持以下认证方式:
- 不认证:对用户非常信任,不对其进行合法检查,一般情况下不采用这种方式。
- 本地认证:将用户信息(包括本地用户的用户名、密码和各种属性)配置在NAS(Network Access Server)服务器上。本地认证的优点是速度快,可以为运营降低成本;缺点是存储信息量受设备硬件条件限制。
- 远端认证:支持通过RADIUS 协议进行远端认证,由NAS 服务器作为Client端,与RADIUS 服务器通信。对于RADIUS 协议,可以采用标准RADIUS 协议或华为公司的扩展RADIUS 协议。
- 授权功能,AAA 支持以下授权方式:
- 直接授权:对用户非常信任,直接授权通过。
- 本地授权:根据NAS 服务器上为本地用户帐号配置的相关属性进行授权。
- RADIUS 认证成功后授权:RADIUS 协议的认证和授权是绑定在一起的,不能单独使用RADIUS 进行授权。
- 计费功能,AAA 支持以下计费方式:
- 不计费:不对用户计费。
- 远端计费:支持通过RADIUS 服务器进行远端计费。
- RADIUS 概述
AAA 是一种管理框架,因此,它可以用多种协议来实现。在实践中,人们最常使用RADIUS 协议来实现AAA。
RADIUS的全称为(Remote Access Dail-In User Service),它是对远程拨号用户访问进行认证的一种协议,是在RADIUS Server和RADIUS Client之间进行认证、授权、计费的协议标准。认证即辨别用户是谁的过程,通常该过程通过输入有效的用户名和密码实现;授权是指对完成认证过程的用户授予相应权限,解决他能做什么的问题,在一些身份认证的实现中,认证和授权是统一在一起的;计费(Accounting)则是统计用户做过什么的过程,包括用户使用的时间和费用,可通过用户占用系统的时间、接收和发送的信息量来衡量。
RADIUS采用Client/Server模型,在NAS上运行的是Client端,负责将用户信息传送到指定的RADIUS服务器上,并根据服务器返回的结果进行相应的处理。RADIUS服务器包括两种类型:授权认证服务器和计费服务器。授权认证服务器(RADIUS Authentication Server)负责接受用户的连接请求、验证用户身份,并返回给客户需要的相关配置信息。一个授权认证服务器也可以作为RADIUS客户的代理,将其连接到另一个授权认证服务器。计费服务器(RADIUS Accounting Server)负责接受用户计费开始请求和计费结束请求,并实现计费功能。
RADIUS具有以下属性:
- RADIUS以Client/Server模式工作,实现了对远程用户的身份认证、授权和计费功能。
- RADIUS Client主要用来将用户信息传递给RADIUS Server;Server则对用户进行认证,并返回用户的配置信息。
- 为保证传输的安全性,在Client和Server之间传送的数据均以MD5方式加密。
- 认证具有灵活性。采取多种认证机制,主要包括PAP和CHAP。
AAA网元是核心网的网络实体之一,目前业务接口协议都是RADIUS协议,营帐接口没有标准协议接口,一般是基于TCP/IP的SOCKET命令行接口,但是针对不同的网络(例如CDMA、GPRS、WiMax、DSL等等),业务接口(认证和计费接口)、后台数据的组织结构和营帐接口都存在很大的差别,但是主要的差别都是在应用层面,具体就是RADIUS协议参数和存储的用户数据的不同。
目前AAA服务器在多种核心网中应用,例如CDMA1x、EVDO、WiMax、GRPS、窄带、有线宽带、IP电话等等,主要实现用户的认证、授权和计费功能,在不同的网络类型中业务接口目前都是用RADIUS协议,下图为RADIUS参考协议栈:
图1 RADIUS参考协议栈
RADIUS协议是基于UDP协议的,在UDP数据域中封装RADIUS数据包.一个完整的RADIUS数据包是被封装在UDP的数据域中,在那UDP目标端口域指定为1812 (十进制数)。
在应答数据包生成时,源端口号和目的端口号进行颠倒。RADIUS早期的配置中是使用的UDP的1645端口号,它是与数据矩阵服务(datametrics)冲突。标准RADIUS端口号是1812。以下是RADIUS数据格式的总结。域是从左向右传输的。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 编码 | 标识符 | 长度 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| 鉴别码 |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 属性 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-
编码
编码域是一位字节,确定RADIUS数据包的类型。在接收到一个无效编码域的地数据包后,该数据包只是会被简单的丢弃。RADIUS指定了如下编码:
取值 |
数据包类型 |
1 |
接入请求(Access-Request) |
2 |
接入允许(Access-Accept) |
3 |
接入拒绝(Access-Reject) |
4 |
记账请求(Accounting-Request) |
5 |
记账回应(Accounting-Response) |
11 |
接入询问(Access-Challenge) |
12 |
服务器状态(Status-Server(experimental)) |
13 |
客户机状态(Status-Client(experimental)) |
255 |
保留(Reserved) |
编码4和编码5在RADIUS记账文档中描述。编码12和编码13为有可能出现的应用保留。
标识符
标识符域是一个字节,用于比较请求与回复。如果在一个很短的时间片段里,一个请求有相同的客户源IP地址、源UDP端口号和标识符,RADIUS服务器会认为这是上一个重复的请求。
长度
长度域是两个字节。它指明了包括编码、标识符、长度、鉴别码和属性域在内的数据包的长度。在数据包长度以外的字节位必须以填充数对待,在接收时忽略它。如果包的长度比指定的短,则此包会被直接丢弃。最小的长度是20,最大的长度是4096。
鉴别码
鉴别码域是十六个字节。最重要的字节是被第一个传输的。这个值是被用于验证来自RADIUS服务器的回复,和密码隐藏算法。
请求鉴别码
在接入请求数据包中,鉴别码值是一个十六个字节的随机二进制数,被称为请求鉴别码。在机密的整个生存周期中(如RADIUAS服务器和客户端共享的机密),这个值应该是不可预测的,并且是唯一的,因为具有相同密码的重复请求值,使黑客有机会用已截取的响应回复用户。因为同一机密可以被用在不同地理区域中的服务器的验证中,所以请求认证域应该具有全球和临时唯一性。
接入是请求数据包中的请求鉴别码值应该也是不可预测的,以免黑客蒙骗服务器,对一个可预测的将来的请求进行响应,然后以此响应为基础,对未来的接入请求伪装成那台服务器。
虽然如像RADIUS这样的协议是没有能力防卫通过实时活动监听攻击和窃取认证过的对话内容,但是唯一的不可预测的请求的存在很大范围内预防了对认证系统的攻击。
NAS和RADIUS共享机密。请求认证执行的共享机密是用单向MD5哈氏算法产生一个十六位的摘要值,此值同用户输入的密码进行异或,异或值放置在接入请求数据包中的用户密码属性域中。在属性单元中可以了解到更为详细关于用户密码的信息。
响应鉴别码
接入请求、接入拒绝和接入盘问数据包中鉴别码值叫做响应鉴别码,它包含了在一串字节流上的计算出的单向MD5散列,这些二进制数是由RADIUS数据包组成,以编码域开始,包括标识符,长度,来自接入请求数据包的请求鉴别码,和执行共享机密的响应属性。即
ResponseAuth =MD5 (Code+ID+Length+RequestAuth+Attributes+Secret)
其中 "+"表示连接。
管理标记
机密(在客户端和RADIUS服务器端共享的密码)应该至少和一个精选的密码一样宽大和不可预测。密码长度至少应该在十六字节以上。宽大密码范围能有效提供对穷举搜寻攻击的防卫。机密禁止为空(长度为零),因为这会简化数据包的伪造。
RADIUS服务器必须使用RADIUS用户UDP数据包中的源IP地址来决定应该使用那一个共享机密,因此RADIUS请求是可以被代理的。
在使用转发代理时,当代理转发一个请求时,代理必须根据要转发的方向来更改每个数据包,代理可以添加一个代理状态属性(Proxy-State Attribute),而当代理转发一个响应时,如果它已经添加了一个代理状态属性,则必须把这个属性去除掉。代理状态属性总是在其他代理状态属性之后添加或去除,除此之外不存在任何关于属性在属性列表中位置设定。因为接入允许和接入拒绝数据包是对完整数据包的内容进行认证,所以代理状态属性的拆除会使包上的签字无效,所以代理不得不对数据包重新签发。
数据包类型
描述
接入请求是被用来传送给RADIUS服务器的,传送的信息被用来决定一个用户是否被允许接入一个特定的NAS和是否提供用户要求的特定服务器。一个希望对一个用户进行认证的操作必须传送一个编码域值为1的数据包。
一旦收到来自有效客户端的请求,服务器端就必须回复一个适当的数据包。
接入请求应当包含用户名属性,必须包含或者是一个NAS的IP地址属性,或者是一个NAS标识符属性(或者是两者)。
接入请求必须包含或者是用户密码,或者是CHAP密码,或者是一个状态值。接入请求禁止同时包含用户密码和CHAP密码。如果将来的扩展要求传送其他种类的验证信息,可用这些扩展的属性替代接入请求中的用户密码或CHAP密码。
接入请求应该包含一个NAS端口号属性或者是NAS端口类型属性或者是两者同时包含,除非被要求的接入类型不涉及端口,或者是NAS不在它的端口中不区分。
接入请求可以包含附加属性作为服务器的提示信息,但服务器不一定采纳提示信息。
在一个用户密码出现时,使用一种基于RSA实验室的(Message Digest Algorithm MD5)的方法对它进行隐藏。
以下是对接入请求数据包格式的总结。域的传输是从左向右。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 编码 | 标识符 | 长度 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| 请求鉴别码 |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 属性...
+-+-+-+-+-+-+-+-+-+-+-+-+-
编码
1 用于接入请求。
标识符
无论什么时候属性域的内容发生变化,或者收到一个先前请求的有效回复,标识符域也必须随着变化。对中继来说,标识符域一定要保持不变。
请求鉴别码
请求鉴别码值必须在每次使用新标识符时随之改变。
属性值
属性域的长度是可变的,包含一个服务种类所必须的属性列表,和其他任何希望的可选属性。
描述
接入允许数据包是由RADIUS服务器发送的,给开始交付服务的用户提供必需的详细的配置信息。如果一个收到的接入请求数据包中所有属性值都被接受,那么RADIUS操作必须发送一个编码域为2的数据包(接入允许)。
在收到一个接入允许数据包后,标识符域会被拿来与一个尚在审理中的接入请求数据包中的对应域进行比较。响应鉴别码域必须包含对审理中的接入请求的正确响应。不正确的数据包只会被直接丢弃。
以下是接入允许数据包格式的总结。域的传输是从左向右。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 编码 | 标识符 | 长度 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| 响应鉴别码 |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 属性 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-
编码
2 用于接入允许。
标识符
标识符域是引发此数据包的接入请求标识符域的拷贝。
响应鉴别码
响应鉴别码值是由接入请求值计算得来得,如前所述。
属性值
属性域的长度是可变的,可以包含从零到任意多的属性。
描述
如果接收到的任何属性值是不可接受的,那么RADIUS服务器发送一个编码域为3的数据包(接入拒绝)。它可能包含一条和多于一条返回消息属性,此消息是文本信息,NAS可以把这些信息显示给用户。
以下是接入拒绝数据包格式的总结。域是从左到右传输的。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 编码 | 标识符 | 长度 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| 响应鉴别码 |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 属性 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-
编码
3用于接入拒绝。
标识符
标识符域是引发此数据包的接入请求标识符域的拷贝。
响应鉴别码
响应鉴别码值是由接入请求值计算得来得,如前所述。
属性
属性域的长度是可变的,可以包含从零到任意多的属性。
描述
如果RADIUS服务器想要传输一个盘问,来要求用户回复一个响应,那么RADIUS服务器必须通过传输一个代码域是11的数据包(接入盘问)响应用户的接入请求。
域属性可以有一个或多个返回消息属性,而可以有单个状态属性或者一个也没有。具体厂商(Vendor-Specific)、空闲超时(Idle-Timeout)、会话超时(Session-Timeout)和代理状态属性可以包含其中。这篇文档定义的其他属性是不允许出现在接入盘问中的。
在接收一个接入盘问数据包时,标识符域要与审理中的接入请求的标识符域进行对比。另外,响应鉴别码域必须包含对审理中的接入请求的正确响应。无效的数据包会被直接丢弃。
若NAS不支持盘问/响应,它必须把收到的接入盘问看作收到了接入拒绝。
若NAS支持盘问/响应,收到有效的接入盘问意味着NAS应该发送一个新的接入请求。如果有文本信息的话,NAS应该显示给用户,提示用户做出响应。它会接着发送一个原始的接入请求,其中请求ID和请求鉴别码都是新的,用户密码属性被加密的用户响应所代替,如果有的话,还包括来自接入盘问的状态属性。出现在此接入请求的状态属性只能包含0或1两个常量值。
支持PAP的NAS可以发送回复消息给拨号端用户,并应用此客户端的PAP响应于新的接入请求数据包,好像此响应是用户此响应是用户早已输入的。如果NAS不支持,它必须把接入盘问看作为接入拒绝来对待。
以下是接入盘问数据包格式的总结。域是从左向右传输
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 编码 | 标识符 | 长度 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| 响应鉴别码 |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 属性 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-
编码
11 用于接入盘问
标识符
标识符域是引发此数据包的接入请求标识符域的拷贝。
响应鉴别码
响应鉴别码值是由接入请求值计算得来得,如前所述。
属性
属性域的长度是可变的,可以包含从零到多个属性。
RADIUS属性在请求和回复中携带详细的认证、授权、信息和配置细节。
RADIUS数据包的长度域指示了属性列表的结束处。
一些属性可以被包含一次或多次。这样的结果是在特征细节和在每个特征描述中指定。在属性这一节的最后提供了一个总结性的表格。
如出现同一类型的多个属性,则这个同一类型多个属性的顺序必须在代理时保持不变。而不同类型的属性顺序是不需做到这一点。RADIUS服务器和客户端禁止在不同类型的属性间存在依赖关系。RADIUS服务器和客户端也禁止要求同一类型的属性是相邻的。
属性描述限制了属性可以存在于那几类数据包,而所有可用的数据包类仅限制在本文档已经定义的几类数据包中,即接入请求、接入允许、接入拒绝和接入盘问(编码为1、2、3和11)。其他文档定义的其他种类的数据包也可以使用这里描述的属性。要确定哪些属性允许在记账请求(Accounting-Request)和记账回应(Accounting-Response)数据包中使用,可以参考RADIUS记账文档。
就像这儿定义的数据包只允许某一些属性出现在其中,未来备忘录中定义的新的属性也应该指定新的属性可以出现在那些类型数据包中。
以下是属性格式的总结,域的传输是从左向右。
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| 类型 | 长度 | 值 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
类型
类型域是一个字节。更新的RADIUS类型域值是在最近的“已分配号码(Assigned Numbers )”RFC [6]中进行了说明。值192-223为实验用保留,值224-240为应用细节保留,值241-255保留,不应该被使用。
RADIUS客户端可以忽略不可辨识类型的属性。
这个协定涉及以下值:
1 用户名 User-Name
2 用户密码 User-Password
3 CHAP密码 CHAP-Password
4 NAS IP地址 NAS-IP-Address
5 NAS端口 NAS-Port
6 服务类型 Service-Type
7 帧协议 Framed-Protocol
8 分帧IP地址配置 Framed-IP-Address
9 IP网络掩码配置 Framed-IP-Netmask
10 路由方法配置 Framed-Routing
11 筛选器标识 Filter-Id
12 最大传输单元配置 Framed-MTU
13 压缩协议配置 Framed-Compression
14 登录的主机IP 地址 Login-IP-Host
15 登录的服务 Login-Service
16 登录的TCP端口 Login-TCP-Port
17 未分配 (unassigned)
18 回复消息 Reply-Message
19 回叫电话号码 Callback-Number
20 回叫ID Callback-Id
21 未分配 (unassigned)
22 路由配置 Framed-Route
23 IPX网络数字配置 Framed-IPX-Network
24 状态 State
25 类别 Class
26 供应商细节 Vendor-Specific
27 会话时限 Session-Timeout
28 空闲时限 Idle-Timeout
29 终止动作 Termination-Action
30 用户拨打的电话号码 Called-Station-Id
31 用户打出的电话号码 Calling-Station-Id
32 网络接入服务器标识符 NAS-Identifier
33 代理状态 Proxy-State
34 登录的LAT服务 Login-LAT-Service
35 登录的LAT节点 Login-LAT-Node
36 登录的LAT组 Login-LAT-Group
37 AppleTalk链路配置 Framed-AppleTalk-Link
38 AppleTalk网络配置 Framed-AppleTalk-Network
39 AppleTalk区域配置 Framed-AppleTalk-Zone
40-59 为记账保留 (reserved for accounting)
60 CHAP盘问 CHAP-Challenge
61 网络接入服务器端口类型 NAS-Port-Type
62 端口数限制 Port-Limit
63 登录的LAT端口 Login-LAT-Port
长度
长度域是一个字节,它指定了包括类型、长度和值域在内的属性长度。如果在接收到的接入请求中属性的长度是无效的,应该发送一个接入拒绝数据包。如果在接收到的接入允许、接入拒绝和接入盘问中属性的长度是无效的,该数据包必须处理为接入拒绝,或者直接丢弃。
值
值域可以为零或者多个字节,包括属性的详细信息。值域的格式和长度由域的类型和长度决定。
应当注意的是,在RADIUS协议中没有任何数据类型是以NUL(十六进制数的00)结尾。特别是RADIUS中文本类型和字符串类型不是以NUL结尾的。属性有表明长度的长度域,所以不需要使用终止符。文本包含UTF-8编码的ISO10646 [7]字符,字符和字符串包含二进制数值。服务器间和服务器与客户机间必须能处理已嵌入的NUL。在用C语言处理字符串时,RADIUS应用者应当注意不可使用strcpy( )函数。
值域的格式是五个数据类型中的一个。注意文本类型是字符串类型的一个子集。
文本 包含UTF-8编码的ISO 10646 [7]字符的1到253个字节。零长度文本禁止发送,而是忽略整个属性。
字符串 包含二进制数值(值得范围是从十进制数的0到十进制数的255)的1到253个字节。零长度字符串禁止发送,而是忽略整个属性。
地址 32位二进制数值,最重要的字节排第一字节。
整数 32位无符号的二进制数值,最重要的字节排第一字节。
时间 32位无符号的二进制数值,最重要的字节排第一字节。UTC 1970年1月1日零时零分起。标准属性不使用这个数据类型,这个数据类型在这儿出现是因为在将来属性中有可能的使用到它。
描述
这个属性显示用户用来验证的姓名。如果存在的话,用户名必须通过接入请求数据包发送出去。
用户名也可以在接入允许数据包中发送,在这种情况下,客户端应该在会话中所有记账请求数据包中使用接入允许数据包中的用户名。如果接入允许包含服务类型(为Rlogin)和用户名属性,当执行Rlogin功能时,NAS可以使用已返回的用户名。
以下是用户名属性格式的总结。域的传输是从左向右。
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| 类型 | 长度 | 字符串 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
类型
1用于用户名
长度
大于或者等于3
字符串
字符串域是一个或多个字节。NAS可以限制用户名的最大长度,但是推荐处理能力至少因该是63个字节。
用户名形式可以是以下几种中的一个:
文本 仅包含UTF-8编码ISO 10646[7]字符。
网络接口标识符 网络接口标识符是在RFC2486中说明。
专用名称 一个用于公共关键认证系统的ASM.1形式的名字。
描述
这个属性显示的是需要被验证的用户密码,或者是在接入盘问提示下的用户输入。它只能用在接入请求数据包中。
在传输时,密码是被隐藏起来的。首先在密码的末尾用nulls代替填补形成多个十六个字节的二进制数。单向MD5散列是通过一串字节流计算出的,该字节流由共享机密和跟随其后的请求鉴别码组成。这个值同密码的第一个16个字节段相异或,然后将异或结果放在用户密码属性字符串域中的第一组16个字节中。
如果密码长于16个字节,则第二次单向MD5散列对一串字节流进行计算,该字节流由共享机密和跟随其后的第一次异或结果组成。这个散列结果与密码的第二组16个字节段相异或,然后将异或结果放在用户密码属性字符串域中的第二组16个字节段中。
如果需要,这个计算过程可以重复。每一个异或结果被用于和共享机密一道生成下一个散列,再与下一个密码段相异或,但最大不超过128个字节。
这个计算方法是来自《网络安全》的109页到110页,作者是Kaufman,Perlman 和Speciner[9]。以下是这种方法更为精确的解释:
调用共享机密S和伪随机128位请求认证鉴别码RA。把密码按16个字节为一组划分为P1、P2等等,在最后一组的结尾处用用null填充以形成一个完整的16字节组。调用以加密的数据组c(1)、c(2)等,b1、b2等是我们将用到的中间值。
b1 = MD5(S + RA) c(1) = p1 异或 b1
b2 = MD5(S + c(1)) c(2) = p2 异或b2
. .
. .
. .
bi = MD5(S + c(i-1)) c(i) = pi 异或 bi
现在密码字符串包含c(1)+c(2)+...+c(i),其中“+”表示串联。
在接收时,这个过程被反过来,从而生成原始的密码。
以下是密码属性格式的总结。域的传输是从左向右。
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| 类型 | 长度 | 字符串...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
类型
2用于用户密码。
长度
长度值在18到130之间。
字符串
字符串域的长度在16到128个字节之间。
-
-
-
- CHAP密码
-
-
描述
这个属性表示PPP(点对点传输协议)的CHAP(盘问握手认证协议)用户在响应盘问时的响应值。此值只能用在接入请求数据包中。
如果出现在数据包中的CHAP盘问值是出现在CHAP盘问属性(60)中,其他情况可以在请求鉴别码域中找到。(什么意思?)
以下是CHAP密码属性格式的总结。域的传输是从左向右。
0 1 2
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| 类型 | 长度 | CHAP标识 | 字符串 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
类型
3用来表示CHAP密码。
长度
19
CHAP标识
这个域是一个字节,包括来自用户CHAP响应的CHAP的标识符。
字符串
字符串域是十六个字节,包括来自用户的CHAP响应。
描述
这个属性指出了用户正在请求认证的NAS的IP地址,这个属性值对NAS来说在一台指定的RADIUS服务器的范围内应该是唯一的。NAS-IP地址属性只能在接入请求数据包中使用。或者是NAS-IP或者是NAS标识符必须有一个出现在接入请求数据包中。
注意,NAS-IP地址一定不能用来选择认证请求的共享机密。接入请求数据包中的源IP地址必须用来选择共享机密。
以下是网络接口服务器IP地址属性格式的总结。域的传输是从左向右。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 地址
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
地址 (内容) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
4用于NAS-IP地址。
长度
6
地址
地址域是4个字节。
-
-
-
- NAS端口
-
-
描述
这个属性指出了正在认证用户的NAS物理端口号。NAS-IP端口号属性只能在接入请求数据包中使用。需要注意的是,这里使用的“端口”应当理解为与NAS的物理连接,不能理解为TCP或者UDP的端口号。如果NAS对它的端口进行区分,那么或者NAS-Port或者NAS-Port-Type或者是两者同时应该出现在接入请求数据包中。
以下是NAS端口属性格式的总结。域的传输是从左向右。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值 (内容) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
5用于NAS-Port地址。
长度
6
值
这个值域是4个字节。
描述
这个属性指出了用户请求的服务种类,或者是已提供给用户的服务类型。此属性可以在接入请求数据包和接入允许数据包中使用。作为NAS,它不必执行所有的服务类型,所以对于未知的和不支持的Service-Types,就像收到了接入拒绝那样处理。
以下是服务种类属性格式的总结。域的传输是从左向右。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值 (内容) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
6用于Service-Type。
长度
6
值
值域是4个字节。
1 登录
2 配置
3 回叫登录
4 回叫配置
5 出网
6 管理
7 NAS提示
8 只认证
9 NAS回叫提示
10 拨叫检查
11 回叫管理
以下是使用在接入允许中的服务类型的定义。若服务类型用在接入请求中,则认为是给RASIUS服务器的提示,此提示告诉RADIUS,NAS有理由相信这种服务类型是用户更喜欢的,但RADIUS不一定要接受这个提示。
登录 用户应该连接到的主机。
配置[R1] 开始时用户应该为配置的协议,如PPP或SLIP。
回叫登录 用户应该先断开,并回叫,然后连接到一个主机。
回叫配置 用户应该先断开并回叫,然后 应该为用户启动一个Framed Protocol,
如PPP或SLIP。
出站 用户应该被允许访问外部设备。
管理 用户应该被允许有权使用NAS的管理界面,因为该界面能执行特权命令。
NAS提示 用户在NAS的命令提示符下输入指令,来自此命令提示符的指令是不能得到执行的。
认证专用 只有认证被请求,没有任何授权信息需要在请求接收数据包中返回(典型情况是被代理服务器使用,而不是NAS自己)。
NAS回叫提示 用户应该先断开与服务器的连接,然后回叫和在NAS提供的指令提示下执行非特权指令。
拨叫检查 NAS使用在接入请求数据包中表明正在接收一个拨叫请求,RADIUS服务器应该送回一个Access-Accept数据包接受这个拨叫,或者是一个接入拒绝数据包拒绝这个拨叫,典型情况是基于Called-Station-Id和Calling-Station-Id属性。推荐在接入请求数据包中使用Calling-Station-Id的值代替User-Name的值
回叫管理 用户首先应该断开连接,然后回叫,这时允许有权访问NAS的管理界面,因为该界面能执行特权命令。
描述
这个属性表明了被用于配置接入的框架。它可以用在接入请求数据包和接入允许数据包中。
以下是配置协议属性格式的总结。域的传输是从左向右。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值 (内容) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
7用于配置协议。
长度
6
值
值域是4个字节。
1 PPP
2 SLIP
3 AppleTalk Remote Access Protocol (ARAP)
4 Gandalf proprietary SingleLink/MultiLink protocol
5 Xylogics proprietary IPX/SLIP
6 X.75 Synchronous
-
-
-
- IP地址配置
-
-
描述
这个属性表明了为用户配置的地址。它可以使用在接入允许数据包中,或者由NAS使用在接入请求数据包,作为一个给服务器的提示,告诉服务器它推荐该地址,但服务器不一定要接受这个提示。
以下是配置IP地址属性格式的总结。域的传输是从左向右。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 地址
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
地址 (内容) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
8用于配置IP地址。
长度
6
地址
这个地址域是4个字节。值oxFFFFFFFF表明NAS应该允许选择一个地址(例如,已协商好的)。值oxFFFFFFFE表明NAS应该为用户选择一个地址(例如,NAS分配一个由它管理的地址池中的地址)。其他有效值表明NAS用这个值作为用户的IP地址。
-
-
-
- IP网络掩码配置
-
-
描述
当用户是网络的路由器时,这个属性表明对这台路由器的IP网络掩码配置。这个属性可以出现在接入允许数据包。也可以作为一个NAS给服务器的提示用在接入请求数据包,提示推荐的网络掩码,但是服务器不一定要接受这个提示。
以下是配置IP网络掩码属性格式的总结。域的传输是从左向右。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 地址 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
地址(内容) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
9用于配置IP网络掩码。
长度
6
地址
地址域是4个字节,指定用户的IP网络掩码。
描述
当用户是网络的路由器时,这个属性表明了用户的路由方法。它只能用在接入请求数据包中。
以下是配置路由方法属性格式总结。域的传输是从左向右。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值 (内容) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
10用于网络配置方法。
长度
6
值
值域是4个字节。
0 空 none
1 发送路由数据包 Sending routing packets
2 监听路由数据包 Listening for routing packets
3 发送和监听 Send and Listen
描述
这个属性表明了筛选器列表中该用户的筛选器的名字。筛选器编号可以在接入请求数据包中发送,此包中可以拥有零个或多个筛选器编号。
通过名称鉴别一个筛选器列表允许在不同的NAS上使用筛选器,而不考虑筛选器列表的实现细节。
以下是筛选器Id属性格式的总结。域的传输是从左向右。
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| 类型 | 长度 | 文本 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
类型
11用于筛选器编号。
长度
大于或者等于3。
文本
这个文本域是一个或多个字节,它的内容是依赖具体实现的。它的存在是为了提高协议的可读性,而且一定不会影响协议的运作。推荐该消息使用UTF-8编码的10646字符[7]。
-
-
-
- MTU配置
-
-
描述
当这个属性没有与其他的方式(如PPP)进行协商是时,这个属性表明了为用户配置的最大传输单元。这个属性可以用在接入允许数据包中,也可以用在接入请求数据包中,作为一个NAS给服务器的提示,向服务器推荐一个值,但服务器不一定会接受这个提示。
以下是配置MTU属性格式的总结。域的传输是从左向右。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值 (内容) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
12用于配置MTU。
长度
6
值
这个值域是4个字节。不管域的大小,值得范围是从64到65535。
描述
这个属性指出了该连接使用的的压缩协议。这个属性可以用在接入允许数据包中,也可以作为NAS给服务器的提示用在接入请求数据包中,提示服务器这是推荐的压缩率协议,但服务器不一定会接受这个提示。
可以发送多于一种的压缩率协议。在适当的的链路通信中使用合适的压缩协议是NAS的责任。
以下是配置压缩率属性格式的总结。域的传输是从左向右。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值 (内容) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
13用于配置压缩率。
长度
6
值
这个值域是4个字节。
0 空
1 VJ TCP/IP header compression [10]
2 IPX header compression
3 Stac-LZS compression
-
-
-
- 登录IP主机
-
-
描述
当登录服务属性已经被包括时,此属性指出了一个连接用户的系统。也可以作为NAS给服务器的提示用在接入请求数据包中,提示服务器这是推荐使用的主机,但服务器不一定会接受这个提示。
以下是登录IP主机属性格式的总结。域的传输是从左向右。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 地址
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
地址 (内容) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
14用于登录IP主机。
长度
6
地址
这个地址域是4个字节。值oxFFFFFFFF表明NAS应该允许用户选择地址。值0表明NAS应该选择一个与用户连接主机。其他值表明NAS应该连接给用户的地址。
描述
这个属性表明连接到登录主机的用户使用的服务。它只能用于接入允许数据包。
以下是登录服务属性格式的总结。域的传输是从左向右。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值 (内容) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
15用于登录服务。
长度
6
值
值域是4个字节。
0 Telnet
1 Rlogin
2 TCP Clear
3 PortMaster (proprietary)
4 LAT
5 X25-PAD
6 X25-T3POS
8 TCP Clear Quiet (suppresses any NAS-generated connect string )
-
-
-
- 登录TCP端口
-
-
描述
当登录服务属性也出现时,这个属性表明用于连接用户的TCP端口。它只能用于接入允许数据包。
以下是登录TCP端口属性格式的总结。域的传输是从左向右。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值 (内容) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
16用于登录TCP端口
长度
6
值
这个值域是4个字节。不论域的大小,值得范围是从0到65535。
描述
属性类型17还没有被分配。
描述
这个属性指定了可以显示给用户的文本信息。
使用在接入允许数据包中,此消息是一种成功信息
使用在接入拒绝数据包中,是一个失败信息。该信息可以表示为一种对话信息,在用户尝试另一个接入请求之前,它可以以一个对话框消息的形式来提示用户。
使用在接入盘问数据包中,该信息可以以对话框的形式提示用户做出响应。
多个回复信息可以包含在一个数据包中,如果其中的一些需要显示,则它们的显示顺序必须是它们在数据包内的顺序。
以下是回复信息属性格式的总结。域的传输是从左向右。
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| 类型 | 长度 | 文本 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
类型
18用于回复信息。
长度
大于等于3。
文本
文本域可以是一个或多个字节,它的内容是依赖于执行的。它的存在是为了提高协议的可读性,而且一定不会影响协议的运作。推荐在消息使用UTF-8编码的ISO10646字符[7]。
描述
这个属性表明了一个用于用户回叫的拨号字符串。它可以使用在接入允许数据包中,当它使用在接入请求数据包中,是作为一个给服务器的提示出现的,告诉服务器有一个回叫服务希望执行,但是服务器不一定要接受这个提示。
以下是回传数属性格式的总结。域的传输是从左向右。
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| 类型 | 长度 | 字符串 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
类型
19用于回传数。
长度
大于或者等于3。
字符串
字符串域是一个或多个字节。信息的实际格式是站点或应用的细节,而且一个强壮的应用应该支持这个域作为不区分的字节序列。
这个域的允许的使用范围的规划超出了本文档讨论的范围。
这个属性表明了被调用位置的名称,它由NAS解释。它可以使用在接入允许数据包中。
以下是回传编号属性格式的总结。域的传输是从左向右。
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| 类型 | 长度 | 字符串 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
类型
20用于回传编号。
长度
大于或等于3。
字符串
字符串域是一个或多个字节。信息的实际格式是站点或应用的细节,而且一个强壮的应用应该支持这个域作为不区分的字节序列。
这个域的允许的使用范围的规划超出了本文档讨论的范围。
描述
属性类型21没有被分配。
描述
这个属性提供了在NAS上为用户提供配置的路由的信息。它可以用在允许接入数据包中,而且能出现多次。
以下是配置路由属性格式的总结。域的传输是从左向右。
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| 类型 | 长度 | 文本 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
类型
22用于配置路由。
长度
大于或等于3。
文本
文本域是一个或多个字节,文本内容是与实现相关的。它是在不影响协议的运行情况下提高协议的可读性。推荐在消息中包含UTF-8编码的ISO10646[7]字符。
对于IP路由来说,文本应该包含一个以点分四组形式的目标地址前缀,其后可以跟随一个斜杠和十进制长度说明符,长度说明符说明前缀使用了多少个高位字节。在这之后,紧接着一个空格、一个点分四组形式的网关地址、一个空格和一个或多个被空格分割的规格。例如,“192.168.1.0/24 192.168.1.1 1 2 -1 3 400”。长度说明符可以被忽略,在忽略的情况下,默认8位为A类地址前缀,16位为B类地址前缀,24位为C类地址前缀。例如,“192.168.1.0 192.168.1.1 1”。
无论什么时候,网关地址被指定为“0.0.0.0”,用户的IP地址应该被指定为网关地址。
-
-
-
- IPX网络配置
-
-
描述
这个属性表明了分配给用户的IPX网络号码。它可以用在接入允许数据包中。
以下是配置IPX网络属性格式总结。域的传输是从左向右。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值 (内容) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
23用于配置IPX网络。
长度
6
值
值域是4个字节。值0xFFFFFFFE表明NAS应该为用户挑选IPX网络(例如,从NAS管理的一个或多个IPX网络池中分配)。其他值应该被用于与用户连接的IPX网络。
描述
这个属性可以在由服务器发送给客户端的接入盘问数据包中出现,然后,如果有对盘问响应的新接入请求,则此属性应该在接入请求包中不作任何修改地从客户端发送到服务器端。
这个属性也可以在接入允许数据包中由服务器发送给客户端,这个数据包中还包含了有RADIUS请求(RADIUS-Request)值的终止行为属性(Termination-Request Attribute)。如果NAS通过发送一个新的关于终止当前会话的接入请求来执行终止行为(Termination-Action),则在这个接入请求中必须包含没有改变的状态属性。
在状态属性的任何使用中,客户端禁止本地解释属性。一个数据包只能有一个状态属性或一个都没有。状态属性的使用是依赖于实现相关的。
以下是状态属性格式的总结。域的传输是从左向右。
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| 类型 | 长度 | 字符串 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
类型
24用于状态。
长度
大于或等于3。
字符串
字符串域是一个或多个字节。信息的实际格式是站点或应用的细节,而且一个强壮的应用应该支持这个域作为不区分的字节序列。
这个域的允许的使用范围的规划超出了本文档讨论的范围。
描述
这个属性可在接入允许数据包中由服务器发送给客户端,如果支持记账服务,该属性应该作为记账请求数据包的一部分在不作任何修改的前提下,由客户端发送到记账服务器。客户端一定不能在本地解释属性。
以下是状态属性格式的总结。域的传输是从左向右。
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| 类型 | 长度 | 字符串 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
类型
25用于级别属性。
长度
大于或等于3。
字符串
字符串域是一个或多个字节。信息的实际格式是站点或应用的细节,而且一个强壮的应用应该支持这个域作为不区分的字节序列。
这个域的允许的使用范围的规划超出了本文档讨论的范围。
描述
这个属性应用于允许供应商支持不适于常规使用的属性扩展。此属性禁止对RADIUS协议中的操作有影响。
服务器不具备去解释由客户端发送过来的供应商特性信息时,则服务器必须忽略它(虽然这样过程可以被记录下来)[R2]。没有收到预期的供应商特性信息得情况下,客户端应该尝试在没有它的情况下运作,尽管他们这样做(并报告它们正在这样做)是在降级模式中。
以下是具体厂商属性格式的总结。域的传输是从左向右。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 供应商Id
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
供应商Id (内容) | 字符串...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
类型
26用于供应商特征。
长度
大于或等于7。
供应商ID
在网络字节顺序中,高位的字节是0,低3位字节是供应商的(SMI)网络个人管理器编码(Network Management Private Enterprise Code),正如在“已分配号(Assigned Number)”RFC[6]中的定义。
字符串
字符串域是一个或多个字节。信息的实际格式是站点或应用的细节,而且一个强壮的应用应该支持这个域作为不区分的字节序列。
这个域的允许的使用范围的规划超出了本文档讨论的范围。
字符串域应该按照供应商类型/供应商长度/值域的顺序编码,如下面所示。属性特性域依赖于该属性的供应商的定义。以下是一个使用这种方法对供应商特性属性编码的例子。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 卖主Id
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
卖主Id (内容) | 买主类型 | 卖主长度 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 属性特征...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
多个子属性可以被编码在一个具体厂商属性中,虽然不必不得不这样做[R3]。
描述
这个属性设置在会话终止或提示出现前,提供给用户服务的最大秒数。这个属性可以在接入允许数据包和接入盘问数据包中,由服务器发送给客户端。
以下是会话超时属性格式的总结。域的传输是从左向右。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值 (内容) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
27用于会话超时。
长度
6
值
这个域是4个字节,包含一个32位的无符号整数,此数表示了用户被允许通过NAS保持连接的最大秒数。
描述
这个属性设置在会话终止或提示出现前,允许用户空闲连接的连续时间的最大秒数。这个属性可以用在接入允许数据包和接入盘问数据包中,由服务器发送给客户端。
以下是空闲超时属性格式的总结。域的传输是从左向右。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值 (内容) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
28用于空闲超时。
长度
6
值
这个域是4个字节,包含一个32位无符号的整数,该整数说明在由NAS断开连接前,用户被允许的最大连续空闲秒数。
描述
这个属性说明在指定的服务完成后,NAS应该采用什么样的动作。此属性只能用在接入允许数据包中。
以下是终止动作属性格式的总结。域的传输是从左向右。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值 (内容) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
29用于终止动作属性。
长度
6
值
这个值域是4个字节。
0 默认(Default)
1 RADIUS请求(RADIUS-Request)
如果这个值被设置为RADIUS请求,依据指定服务的终止,NAS可以发送一个新的接入请求给RADIUS服务器,如果存在的话,还包括状态属性。
描述
使用被叫号码识别(Dialed Number Identification,DNIS)或者是类似技术,这个属性允许NAS在接入请求数据包中发送被用户拨叫的电话号码。注意,这个电话号码是与打入的电话号码不同。而且,这个属性只能用在接入请求数据包中。
以下是被叫站ID属性格式的总结。域的传输是从左向右。
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| 类型 | 长度 | 字符串 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
类型
30用于拨出号码属性。
长度
大于或者等于3
字符串
字符串域是一个或多个字节,包含用户拨入的电话号码。
信息的实际形式是站点或应用程序细节。推荐使用UTF-8编码的10646 [7]字符,但作为一个强壮的应用应该支持这个域作为一个未区分的字节来。
这个域能被使用的范围的规定是在这篇文档说明的范围之外的。
描述
在使用自动号码标识(Automatic Number Identification,ANI)或者其他相似的技术,这个属性允许NAS在接入请求数据包中发送拨入的电话号码。此属性只能用在接入请求数据包。
以下是呼叫站ID属性格式的总结。域的传输是从左向右。
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| 类型 | 长度 | 字符串 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
类型
31用于呼叫站ID属性。
长度
大于或者等于3。
字符串
字符串域是一个或多个字节,包含用户拨入的电话号码。
信息的实际形式是站点或应用的细节。推荐使用UTF-8的10646字符编码,但作为一个强壮的应用应该把这个域作为不可区分的字节串来支持。
这个域可被使用的范围的划分是在这篇文档说明的范围之外。
-
-
-
- NAS标识符
-
-
描述
这个属性包含一个字符串,此字符串鉴别接入请求数据包是由那个NAS服务器生成的。此属性只能用在接入请求数据包中。在接入请求数据包中必须包含NAS的IP地址或者是NAS标识符。
注意NAS标识符禁止选择用于认证请求数据包的共享机密。接入请求数据包的源IP地址必须用于选择共享机密。
以下是NAS标识符属性格式的总结。域的传输是从左向右。
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| 类型 | 长度 | 字符串 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
类型
32用于NAS标识符属性。
长度
大于或者等于3。
字符串
字符串域是一个或多个字节,而且在RADIUS服务器的有效范围内,这个字符串对于NAS来说应该是唯一的。例如,一个完全合格的域名是适合做NAS标识符的。
信息的实际形式是站点或应用的细节,而且一个强壮的应用应该把这个域作为不可区分的字节串来支持。
这个域可被使用的范围的划分是在这篇文档说明的范围之外。
描述
当转发一个接入请求数据包时,这个属性可以由一个代理服务器发送到另一个服务器,而且在接入允许数据包、接入拒绝数据包和接入盘问数据包中返回的该属性不能做任何修改。在一个代理服务器收到一个对应它的请求的响应时,它必须在转发这个响应给NAS之前,去除它自己的代理状态属性(这个包中最后一个代理状态属性)。
如果在转发数据包时需要添加代理状态属性,则这个属性必须添加在任何一个已存在的属性之后。
除了当前服务器添加的代理状态属性外,其他任何属性内容对当前服务器来说都是不透明的,而且是禁止对协议的运作有任何影响的。
代理状态属性的使用时依赖于应用的。关于此属性的功能描述是在本文档的讨论范围之外的。
以下是代理状态属性格式的总结。域的传输是从左向右。
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| 类型 | 长度 | 字符串 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
类型
33用于代理状态属性。
长度
大于或者等于3。
字符串
字符串域是一个或多个字节。信息的实际形式是站点或者应用的细节,而且一个强壮的应用应该把这个域作为不可区分的字节串来支持。
这个域可被使用的范围的划分是在这篇文档说明的范围之外。
-
-
-
- 登录LAT服务
-
-
描述
这个属性描述了用户通过局域网传输协议(LAT)连接的系统。此属性可以用在接入请求数据包中,但仅仅是当LAT被指定为登录服务时。它也可以用在接入请求数据包中,作为一个给服务器的提示,但是服务器不一定接受这个提示。
当管理员在处理分簇系统时,如,VAX分簇系统或Alpha分簇系统,可以使用这个服务属性。在这样的环境中,几个不同的分时共享主机可以共享相同的资源(磁盘、打印机,等等),管理员给每一个共享主机提供一个共享资源的接口(服务)。在这种情况下,在簇中每一个主机通过LAT广播广告它们的服务。
老练的用户通常知道那一个服务提供者(或那些机器)是更快的,所以更愿意在初始化LAT连接时使用节点名。有的情况下,作为载入平衡的源形式,一些管理员让一些特定的用户使用某部分机器(虽然LAT它自己知道如何做可以载入动态平衡)。
以下是登录局域网传输协议服务属性格式的总结。域的传输是从左向右。
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| 类型 | 长度 | 字符串 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
类型
34用于登录LAT服务属性。
长度
大于或者等于3。
字符串
字符串域是一个或者多个字节。它包含以使用为目的的LAT服务的身份。LAT的结构允许此字符串包含$(美元符)、-(连词符)、.(原点)、_(下划线)、数字、大写字母、小写字母和ISO Latin-1 字符集扩展[11]。所有LAT字符串比较是不区别大小写。
。
-
-
-
- 登录LAT节点
-
-
描述
这个属性指明了通过LAT用户将被自动连接的节点。仅仅当LAT被指定为登录服务时,它可以在接入允许数据包中使用。它也可以作为一个给服务器的提示使用在接入请求数据包中,但是服务器不一定接受这个提示。
以下是登录LAT节点属性格式的总结。域的传输是从左向右。
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| 类型 | 长度 | 字符串 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
类型
35用于登录LAT节点。
长度
大于或者等于3。
字符串
字符串域是一个或多个字节,包含与用户连接的LAT节点的身份。LAT的结构允许此字符串包含$(美元符)、-(连词符)、.(原点)、_(下划线)、数字、大写字母、小写字母和ISO Latin-1 字符集扩展[11]。所有LAT字符串比较是不区别大小写。
描述
这个属性包含一个字符串,此字符串指定了一个用户被授权使用的LAT组编码。仅仅当LAT被指定为登录服务时,它可以在接入允许数据包中使用。它也可以作为一个给服务器的提示使用在接入请求数据包中,但是服务器不一定接受这个提示。
LAT支持256个不同的组编码,LAT把它们当作接入权利表格使用。LAT把组编码按一个256位的位图加密。
管理员可以在LAT服务提供者处分配一个或者多个组编码位,而且LAT服务提供者将只接受那些组编码已经设置在位图中地连接。管理员给每一个用户分配一个有授权组编码的位图,LAT可以从操作系统中得到这些授权的编码组,并在发送给服务提供者的请求数据包中使用它们。
以下是登录LAT组属性格式的总结。域的传输是从左向右。
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| 类型 | 长度 | 字符串 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
类型
36用于登录LAT组属性。
长度
34
字符串
这个字符串域是32个字节位图,第一个字节最重要。一个强壮的应用应该把这个域作为不可区分的字节串来支持。
这个域可被使用的范围的划分是在这篇文档说明的范围之外。
描述
这个属性指明了被用于用户串行连接的AppleTalk网络数目,其中的用户是另一个AppleTalk路由器。它只能用在接入允许数据包中。当用户为另外的路由器时,此属性不被使用。
以下是配置AppleTalk连接属性格式的总结。域的传输是从左向右。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值 (内容) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
37用于配置AppleTalk连接属性。
长度
6
值
值域是4个字节。无论此域的是多大,值得范围都是从0到65535。使用某认得带宽的情况下,特殊值0表明这是一个未编号的串行连接。在1到65535范围中(包括65535)的任何一个值意味着在用户和NAS间的串行线应该被分配那个值作为AppleTalk网络号。
描述
这个属性指明了NAS应该试探分配给用户AppleTalk节点的AppleTalk网络数目。它只能用在接入允许数据包中。当用户为另外的路由器时,此属性不被使用。这个属性多个实例说明NAS可以是试探的使用指定的任何数量地网络。
以下是配置AppleTalk网络属性格式的总结。域的传输是从左向右。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值 (内容) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
38用于配置AppleTalk网络属性。
长度
6
值
值域是4个字节。无论此域的是多大,值得范围都是从0到65535。使用某认得带宽的情况下,特殊值0表明NAS应该分配一个网络给用户。在1到65535范围中(包括65535)的任何一个值表示在AppleTalk网络中,NAS应该试探性的为用户找到一个地址。
描述
这个属性指定了被用户使用的AppleTalk某认区域。它只能用在接入允许数据包中。多个实例在同一个数据包中是不允许的。
以下是配置AppleTalk区域属性格式的总结。域的传输是从左向右。
0 1 2
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| 类型 | 长度 | 字符串 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
类型
39用于配置AppleTalk区域属性。
长度
大于或等于3。
字符串
此字符串是用于这个用户的某认AppleTalk区域的名字。一个强壮的应用应该把这个域作为不可区分的字节串来支持。
这个域可被使用的范围的划分是在这篇文档说明的范围之外。
-
-
-
- CHAP盘问
-
-
描述
这个属性包含了由NAS发送给PPP盘问握手认证协议(PPP Challenge-Handshake Authentication Protocol,CHAP)用户的CHAP盘问。它只能使用在接入请求数据包中。
如果CHAP盘问值是16个字节长,则这个属性可以被请求鉴别码域代替。
以下是CHAP盘问属性格式的总结。域的传输是从左向右。
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| 类型 | 长度 | 字符串...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
类型
60用于CHAP盘问.
长度
大于或者等于7。
字符串
此字符串域包含CHAP盘问。
-
-
-
- NAS端口类型
-
-
描述
这个属性指定了用于鉴别用户的NAS物理端口类型。此属性可以被NAS端口属性代替,或者NAS端口属性附加于此属性之后。它只能用于接入请求数据包中。如果NAS对它的端口进行区别的话,或者是NAS端口类型,或者是NAS端口属性,或者是同时两者应该出现在接入请求数据包中。
以下是NAS端口类型属性格式的总结。域的传输是从左向右。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值 (内容) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
61用于NAS端口类型。
长度
6
值
此值域是4个字节。“虚拟”定义为通过某种传输协议同NAS的连接,而不是通过一个物理端口。例如,如果一个用户远程登录到NAS服务器,把自己作为一个网外设备使用者来验证,接入请求或许包括NAS端口类型等于虚拟,将这作为一个提示给RADIUS服务器,告诉它用户不是在物理端口上。
0 异步 Async
1 同步 Sync
2 ISDN同步 ISDN Sync
3 ISDN异步V.120 ISDN Async V.120
4 ISDN同步V.110 ISDN Async V.110
5 虚拟 Virtual
6 个人手机系统因特网接入论坛标准 PIAFS
7 动态主机控制规程 HDLC Clear Channel
8 X.25
9 X.75
10 G.3传真协议 G.3 Fax
11 对称用户传输协议 SDSL - Symmetric DSL
12 非对称用户传输模式(无载波振幅相位模式)ADSL-CAP - Asymmetric DSL, Carrierless Amplitude Phase Modulation
13 非对称用户传输模式(离散多音频技术) ADSL-DMT - Asymmetric DSL, Discrete Multi-Tone
14 ISDN数字用户线 IDSL - ISDN Digital Subscriber Line
15 以太网 Ethernet
16 未知类型的数字用户线 xDSL - Digital Subscriber Line of unknown type
17 电缆 Cable
18 无线――其他 Wireless - Other
19 无线――IEEE802.11 Wireless - IEEE 802.11
PIAFS是一种通常使用在日本的无线ISDN形式,代表个人手机系统因特网接入论坛标准(Personal Handyphone System(PHS) Internet Access Forum Standard,PIAFS)。
描述
这个属性设置由NAS提供给用户端口的最大数目。这个属性可以在接入请求数据包中由服务器发送给用户。它更多的用在与多连接的PPP[12]或相似的应用有关联的应用上。它也可以使用在由NAS发送给服务器的提示中,此提示告诉服务器有多少端口将被用到,但是服务器不一定要接受这个提示。
以下是端口限制属性格式的总结。域的传输是从左向右。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值 (内容) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
62用于端口限制属性。
长度
6
值
这个域是4个字节,包含一个32位的无符号整数,此无符号整数标识在NAS上用户被允许连接的最大端口数目。
-
-
-
- 登录LAT端口
-
-
描述
这个属性指定通过LAT用户将连接到的端口。在仅仅LAT被指定为登录服务时,此属性可以使用在接入允许数据包中。它也可以作为一个给服务器的提示使用在接入请求数据包中,但服务器不一定接受这个提示。
以下是登录LAT端口属性格式的总结。域的传输是从左向右。
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| 类型 | 长度 | 字符串 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
类型
63用于登录LAT端口属性。
长度
大于或者等于3。
字符串
这个属性域是一个或者多个字节,包含使用中端口的身份。LAT结构允许字符串包含$(美元符)、-(连词符)、.(原点)、_(下划线)、数字、大小写字母和ISO Latin-1字符扩展集。所有LAT字符串比较是不区分大小写的。
以下的表格提供了一个向导,说明属性可以在那些数据包中找到,数量是多少。
请求 |
允许 |
拒绝 |
盘问 |
# |
属性 |
0-1 |
0-1 |
0 |
0 |
1 |
User-Name |
0-1 |
0 |
0 |
0 |
2 |
User-Password[Note 1] |
0-1 |
0 |
0 |
0 |
3 |
CHAP-Password[Note 1] |
0-1 |
0 |
0 |
0 |
4 |
NAS-IP-Address[Note 2] |
0-1 |
0 |
0 |
0 |
5 |
NAS-Port |
0-1 |
0-1 |
0 |
0 |
6 |
Service-Type |
0-1 |
0-1 |
0 |
0 |
7 |
Framed-Protocol |
0-1 |
0-1 |
0 |
0 |
8 |
Framed-IP-Address |
0-1 |
0-1 |
0 |
0 |
9 |
Framed-IP-Netmask |
0 |
0-1 |
0 |
0 |
10 |
Framed-Routing |
0 |
0+ |
0 |
0 |
11 |
Filter-Id |
0-1 |
0-1 |
0 |
0 |
12 |
Framed-MTU |
0+ |
0+ |
0 |
0 |
13 |
Framed-Compression |
0+ |
0+ |
0 |
0 |
14 |
Login-IP-Host |
0 |
0-1 |
0 |
0 |
15 |
Login-Service |
0 |
0-1 |
0 |
0 |
16 |
Login-TCP-Port |
0 |
0+ |
0+ |
0+ |
18 |
Reply-Message |
0-1 |
0-1 |
0 |
0 |
19 |
Callback-Number |
0 |
0-1 |
0 |
0 |
20 |
Callback-Id |
0 |
0+ |
0 |
0 |
22 |
Framed-Route |
0 |
0-1 |
0 |
0 |
23 |
Framed-IPX-Network |
0-1 |
0-1 |
0 |
0-1 |
24 |
State |
0 |
0+ |
0 |
0 |
25 |
Class |
0+ |
0+ |
0 |
0+ |
26 |
Vendor-Specific |
0 |
0-1 |
0 |
0-1 |
27 |
Session-Timeout |
0 |
0-1 |
0 |
0-1 |
28 |
Idle-Timeout |
0 |
0-1 |
0 |
0 |
29 |
Termination-Action |
0-1 |
0 |
0 |
0 |
30 |
Called-Station-Id |
0-1 |
0 |
0 |
0 |
31 |
Calling-Station-Id |
0-1 |
0 |
0 |
0 |
32 |
NAS-Identifier |
0+ |
0+ |
0+ |
0+ |
33 |
Proxy-State |
0-1 |
0-1 |
0 |
0 |
34 |
Login-LAT-Service |
0-1 |
0-1 |
0 |
0 |
35 |
Login-LAT-Node |
0-1 |
0-1 |
0 |
0 |
36 |
Login-LAT-Group |
0 |
0-1 |
0 |
0 |
37 |
Framed-AppleTalk-Link |
0 |
0+ |
0 |
0 |
38 |
Framed-AppleTalk-Network |
0 |
0-1 |
0 |
0 |
39 |
Framed-AppleTalk-Zone |
0-1 |
0 |
0 |
0 |
60 |
CHAP-Challenge |
0-1 |
0 |
0 |
0 |
61 |
NAS-Port-Type |
0-1 |
0-1 |
0 |
0 |
62 |
Port-Limit |
0-1 |
0-1 |
0 |
0 |
63 |
Login-LAT-Port |
Note1:
接入请求数据包必须包含用户密码、CHAP密码或者状态。接入请求数据包禁止同时包含用户密码和CHAP密码。如果将来协议扩展,允许传送其他种类的认证信息,则扩展属性在接入请求数据包中使用时,该属性应该发送用户密码或者CHAP密码。
Note2:
接入请求数据包禁止包含NAS的IP地址或者NAS标识符,或者是同时包含两者。
以下这个表说明说明上个包中记录的意思。
0 这个属性不能出现在这个数据包中
0+ 零个或者多个该属性的实例可以出现在这个数据包中
0-1 零个或者一个个属性的实例可以出项在这个数据包中
1 必须有一个该属性的实例出现在这个数据包中,但只能有一个属性存在
数据包类型
描述
记帐请求包是由客户端(典型的情况是网络接入服务器或者它的代理)送到RADIUS记帐服务器,并将用于为某个用户提供的某种服务提供记帐的信息通知RADIUS记帐服务器。客户端发送一个将编码域置为4(记帐请求)的RADIUS数据包。
一收到记帐请求,如果服务器能够成功的记录下记帐包的话,必须马上发送一个记帐响应应答;如果记录记帐包失败,不得发送任何应答。在RADIUS接入请求和接入许可包中的任何有效属性出了一下的几种属性:用户密码、CHAP密码、应答信息、状态不能出现在RADIUS记帐请求包中之外,其他的属性在RADIUS记帐请求包中都是有效的。在RADIUS记帐请求中必须包含NAS-IP-Address(网络接入服务器的IP地址)或者NAS-Identifer(网络接入服务器标识符)。在请求包中还应当包含NAS-port(网络接入服务器端口号)或者NAS-Port-Type(网络接入服务器端口类型)属性,或者两者都包含;除非该服务不会设计任何端口或者网络接入服务器(NAS)对它的各个端口不作区分。
如果记帐请求包包含了一个Framed-IP-Address,该属性中必须包含用户的IP地址。如果接入许可使用了一个专门的值以告诉网络接入服务器(NAS)为用户分配一个IP地址,记帐请求中的Framed-IP-Address(如果有的话)必须包含实际分配给用户的IP地址。
记帐请求包的格式概况如下所示。各个域是自左向右传输的。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 编码 | 标识符 | 长度 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| 请求鉴别码 |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 属性...
+-+-+-+-+-+-+-+-+-+-+-+-+-
编码
4代表记帐请求
标识符
当属性域的内容发生改变或者是已经收到当前请求的有效的应答,标识符域必须改变。在内容不发生任何改变的情况下的重发,标识符必须保持不变。
需要注意的是,如果记帐请求属性中包括访问延迟时间,该包重发时,访问延迟时间值会被更新。同时也改变了属性域的内容,需要新的新的标识符和请求鉴别码。
请求鉴别码
记帐请求的请求鉴别码是一个占有16个8位字节的MD5哈希值,该值的计算方法已在上述的“请求鉴别码”中给出。
属性
属性域的长度各不相同,其中包含着一系列的属性。
描述
记帐响应包是由RADIUS记帐服务器发给客户端的,用来通知客户端记帐请求已被接收,并且成功的记录下来。如果记帐请求被成功的记录下来,RADIUS记帐服务器必须发送一个编码域被置为5(记帐响应)的数据包。客户端一收到记帐响应,标识符域就会去和一个等待应答的记帐请求相匹配。响应鉴别码域必须含有对等待应答的记帐请求的正确响应。无效的数据包会被直接丢弃。
RADIUS记帐响应不需要任何属性。
响应数据包的格式概况如下所示。各个域是自左向右传输的。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 编码 | 标识符 | 长度 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| 响应鉴别码 |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 属性 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-
编码
5代表记帐响应
标识符
标识符域是对引起这次响应的记帐请求的标识符域的一个拷贝。
响应鉴别码
记帐响应的响应鉴别码是一个占有16个8位字节的MD5哈希值,该值的计算方法已在上述的“响应鉴别码”中给出。
属性
属性域的长度各不相同,它可能包含了一系列的零或者更多的属性。
RADIUS属性包括有请求和响应的鉴别、授权、记帐方面的详细信息。
有些属性可能会不止一次的被包括进去。这样做的结果是该属性在每个属性域中都得到详尽的描述。
属性列表的结束是由RADIUS包的长度来决定的。
属性域格式的概况如下所示。各个域是自左向右发送的。
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
类型域是一个八位字节。到目前为止,RADIUS类型域的值在最新的“Assigned Number”RFC【6】中给出了详细的描述。192-223是留给实验使用的,224-240用于描述执行的细节,241-255是预留的,不能使用。本文中涉及到一下的数值:
1-39 (参考RADIUS document【2】)
40 记帐状态类型
41 记帐延迟时间
42 输入字节数
43 输出字节数
44 会话ID
45 授权
46 会话时间
47 输入包总数
48 输出包总数
49 记帐中止事件
50 多会话ID
51 记帐链路计数
60+ (参考RADIUS document【2】)
长度
长度域占有一个字节,表示包括类型、长度、属性值在内的属性的长度。如果收到的记帐请求属性的长度无效,整个请求必须直接丢弃。
值
属性值域有零个或者更多的字节,包含有属性信息的详细描述。值域的格式和长度是由类型和长度域决定的。
注意,在RADIUS中没有任何的类型是以NUL(十六进制的00)结尾的。在RADIUS中特别是“text”和“string"类型不能以NUL(十六进制的00)结尾。属性具有长度域,因而不必使用中止符号。文本(text)含有用UTF-8编码的10646【7】的特性,字符串(string)含有8位二进制数据。服务器和客户端必须能够处理嵌入的null。
在使用C语言编写RADIUS程序时,注意不要使用strcpy()来处理字符串。
值域的格式是五种数据类型之一。注意:类型“text”是类型“string"的一个子集。
text 1-253个字节,包含UTF-8编码的1046【7】特性。长度为零的文本(text)不必发送;取而代之的是,整个属性域会被直接忽略。
string 1-253个字节,包含二进制数据(数值值从0到十进制数255)。长度为零的字符串(string)不必发送;取而代之的是,整个属性域会被直接忽略。
address 32位的数值,最重要的字节优先。
integer 32位的无符号数,最重要的字节优先。
time 32位的无符号数,最重要的字节优先——seconds since 00:00:00 UTC, January 1, 1970。标准的属性是不使用该数据类型的,但是在这里提到该数据类型主要是以备在将来的属性中使用。
-
-
-
- 记帐状态类型
-
-
描述
该属性表明当前的记帐请求是表示用户服务开始(start)还是结束(stop)。
它可能被客户端通过指出记帐开始的方式来表示开始记帐(例如:在启动之前),或者通过指明记帐完成的方式来结束记帐(例如:在预定的重新启动之前)。
记帐状态类型的格式概况如下所示。各个域是按照自左向右的顺序发送的。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值(cont) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
40表示记帐状态
长度
6
值
值域占有四个字节。
1 Start(开始)
2 Stop(停止)
3 Interim-Update(过渡更新)
7 Accounting-On(开始记帐)
8 Accounting-Off(结束记帐)
9-14 Reserved for Tunnel Accounting(为隧道记帐保留)
15 Reserved for Failed(为记帐失败预留)
-
-
-
- 记帐延迟时间
-
-
描述
该属性表明客户端试图发送该记录所用的时间。用该数据包到达服务器端的时间减去记帐延迟时间就可以知道生成该数据包的大概时间。(网络传输时间被忽略了)。
注意,记帐延迟时间的改变会引起鉴别码的变化;详细资料参见上面关于鉴别码的讨论。
记帐延迟时间的格式概况如下所示。各个域是按照自左向右的顺序发送的。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值 (cont) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
41代表记帐延迟时间
长度
6
值
值域共占有四个字节
-
-
-
- 输入字节数
-
-
描述
该属性表明在提供用户所需的服务的过程中从端口接收到的字节总数。该属性只有在要求停止记帐的记帐请求数据包中才会出现。
输入字节数的基本格式如下所示。各个域是自左向右传送的。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值 (cont) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
42代表输入字节数
长度
6
值
值域所占的空间是四个字节
-
-
-
- 输出字节数
-
-
描述
该属性表明在交付用户所需的服务的过程中发送给端口的字节总数。该属性只有在要求停止记帐的记帐请求数据包中才会出现。
输出字节数的基本格式如下所示。各个域是自左向右传送的。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值 (cont) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
43代表输入字节数
长度
6
值
值域所占的空间是四个字节
-
-
-
- 会话Id
-
-
描述
该属性是便于在日志文件中的开始和停止记录匹配的唯一的记帐ID。对于一个给定的会话,它的开始和停止记录必须有相同的记帐会话Id。记帐请求包必须有一个记帐会话Id。接入请求包可能含有记帐会话Id;如果接入请求包中含有记帐会话Id的话,NAS(网络接入服务器)在为该会话产生的记帐请求数据包中必须使用相同的记帐会话Id。
记帐会话Id应当含有UTF编码的10646【7】字符。
例如:有一种实现方式是使用一个8位的16进制数表示,该数的前两位每次重新启动后加一(重启256次之后循环),后六位数字从0到2^24-1,大约共一千六百万,用来计数重启之后登录的用户的个数,
记帐会话Id的属性的大致格式如下。各个域是自左向右传送的。
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 文字 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
44代表记帐会话Id
长度
>=3
字符串
字符串域应当是一个UTF-8编码的10646【7】字符串
-
-
-
- 授权
-
-
描述
该属性可能包含在记帐请求数据包中,用来说明是怎样给用户授权的:是通过RADIUS、网络接入服务器本身,还是通过另外一个远程授权协议。不需授权就能提供服务的用户不可以生成记帐包。
授权属性的大致格式如下。各个域是自左向右传送的。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值 (cont) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
45表示记帐包的授权属性
长度
6
值
值域占四个字节的空间
1 RADIUS
2 Local
3 Remote
-
-
-
- 会话时间
-
-
描述
该属性表明用户接受服务的时间。这个属性只在记帐状态类型为记帐停止的记帐请求数据包中出现。
该属性的大致格式如下。各个域是自左向右传送的。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值 (cont) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
46代表会话时间
长度
6
值
值域共占四个字节的空间
-
-
-
- 输入数据包
-
-
描述
该属性表明在为某个用户提供服务的过程中从端口接收到的数据包的总数。该属性只能在记帐状态为记帐停止的数据包中出现。
记帐输入数据包的大致格式如下。各个域是自左向右传输的。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值 (cont) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
47代表输入包总数
长度
6
值
值域共占四个字节的空间
-
-
-
- 输出包总数
-
-
描述
该属性表明在给某个定的用户提供服务的过程中给端口发送的数据包的总数。这个属性只能在记帐状态类型为记帐停止的记帐请求数据包中出现。
记帐输出包属性的大致格式如下。各个域是自左向右传送的。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值 (cont) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
48代表输出包
长度
6
值
值域总共占有四个字节的空间
-
-
-
- 记帐中止事件
-
-
描述
该属性表明对话是怎样中止的。这属性只能在记帐状态为记帐停止的记帐请求数据包中出现。
该属性的大致格式如下。各个域是自左向右传送的。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值 (cont) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
49代表记帐中止事件
长度
6
值
值域共占四个字节的空间。包含一个表示记帐中止事件的数字。数字和事件的对应关系如下:
1 用户请求
2 数据丢失
3 服务丢失
4 休息时间到
5 会话超时
6 管理员重置
7 管理员重启
8 端口错误
9 NAS(网络接入服务器)错误
10 NAS请求
11 NAS重启
12 端口不再需要
13 端口被抢占
14 端口挂起
15 服务难以获得
16 回调
17 用户错误
18 主机请求
中止事件描述如下:
用户请求 用户请求中止该项服务。例如:用LCP(连接控制协议)中止或者退出。
数据丢失 DCD(数据载波检测)在端口处丢失。
服务丢失 无法再提供服务;例如:用户与主机之间的连接中断。
休息时间到 休息计数器满。
会话超时 最大会话时间长度已到
管理员重置 管理员从新分配端口或者会话
管理员重启 管理员结束NAS(网络接入服务器)的服务,例如:在重新启动NAS之前。
端口错误 NAS(网络接入服务器)在端口检测到错误,这就要求中止会话。
NAS请求 NAS(网络接入服务器)不是由于故障而要求中止会话,具体原因不在这里另外列举。
NAS重启 NAS(网络接入服务器)结束会话,以进行非管理性的重启(“系统性事故”——“crash”)。
端口不再需要 NAS结束会话是因为资源的使用已经低于最低水平线了。(例如:带宽需求算法判定该端口已经不再需要了)。
端口被抢占 NAS(网络接入服务器)结束会话以便于将端口分配给优先级更高的应用。
端口被挂起 NAS(网络接入服务器)结束对话以便于挂起一个虚拟会话。
服务难以获得 NAS(网络接入服务器)无法提供要求的服务。
回调 NAS(网络接入服务器)中止当前的会话,以便于为新的会话执行回调操作。
用户错误 用户的输入有错,导致中止会话。
主机请求 登录主机正常中止会话。
-
-
-
- 多会话Id
-
-
描述
该属性是唯一的一个便于在同一个日志文件中的多个相关的会话联系起来的记帐ID。连接起来的每个会话都有自己唯一的会话Id,但是它们有相同的多会话Id。强烈建议多会话Id使用UTF-8编码的10646【7】字符。
该数性的大致格式如下。各个域是自左向右传输的。
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 字符串 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
50代表多会话Id
长度
>=3
字符串
字符串域应当使用UTF-8编码的10646字符
-
-
-
- 记帐链路计数
-
-
描述
该属性给出了生成记帐记录是所知道的一个给定的多链路会话的链路总数。NAS(网络介入服务器)在所有的可能含有多条链路的记帐请求中都有可能含有记帐链路计数这个属性。
该属性的大致格式如下。各个域是自左向右传输的。
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 类型 | 长度 | 值
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
值(cont) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
类型
51代表记帐链路数
长度
6
值
值域占四个字节。其内容是在多会话中目前所知道的链路的数目。
它可能会被用来便于记帐服务器知道到何时为止给定的多链路会话的所有记录都已经到了。当记帐服务器收到的记帐请求的状态类型=stop(停止),而且具有相同的多会话Id、唯一的会话Id的会话记录的总数等于目前知道记帐链路计数的最大值时,多链路会话的所有记帐停止请求已经全部收到了。
下面给出一个8个记帐请求的例子,以便于理解。为了清楚起见,只给出了相关的属性,但是,其他的属性也是在记帐请求中存在的。
多会话Id |
会话Id |
状态类型 |
链路计数 |
"10" |
"10" |
start |
1 |
"10" |
"11" |
start |
2 |
"10" |
"11" |
Stop |
2 |
"10" |
"12" |
Start |
3 |
"10" |
"13" |
Start |
4 |
"10" |
"12" |
Stop |
4 |
"10" |
"13" |
Stop |
4 |
"10" |
"10" |
Stop |
4 |
-
-
-
- 属性列表
-
-
下表中给出了在记帐请求包中可能会遇到的属性的概览。除了代理状态以及服务提供商的信息(可能有)之外,没有其他的属性会在响应数据包中出现。
记帐请求 |
# |
属性 |
0-1 |
|
用户名 |
0 |
|
用户密码 |
0 |
|
CHAP密码 |
0-1 |
|
网络接入服务器(NAS)IP地址[Note1] |
0-1 |
|
网络接入服务器(NAS)端口 |
0-1 |
|
服务类型 |
0-1 |
|
帧协议 |
0-1 |
|
帧IP地址 |
0-1 |
|
帧IP子网掩码 |
0-1 |
|
帧路由 |
0+ |
|
过滤器编号 |
0-1 |
|
帧MTU(移动式测试装置) |
0+ |
|
帧压缩 |
0+ |
|
登录主机IP |
0-1 |
|
登录服务 |
0-1 |
|
登录TCP端口 |
0 |
|
应答消息 |
0-1 |
|
回调数值 |
0-1 |
|
回调Id |
0+ |
|
帧路由 |
0-1 |
|
IPX(以太网的一个协议)网络帧 |
0 |
|
状态 |
0+ |
|
类 |
0+ |
|
服务提供商信息 |
0-1 |
|
会话超时 |
0-1 |
|
空闲时间到 |
0-1 |
|
中止动作 |
0-1 |
|
被叫终端的IP |
0-1 |
|
呼叫终端的IP |
0-1 |
|
网络接入服务器(NAS)标识符 |
0+ |
|
代理状态 |
0-1 |
|
登录局域网运输协议(LAT)服务 |
0-1 |
|
登录局域网运输协议(LAT)节点 |
0-1 |
|
登录局域网运输协议(LAT)组 |
0-1 |
|
用AppleTalk协议(mac机所用的一种网络协议)链接的帧 |
0-1 |
|
AppleTalk网络帧 |
0-1 |
|
AppleTalk区域的帧 |
1 |
|
记帐状态类型 |
0-1 |
|
记帐延迟时间 |
0-1 |
|
输入字节总数 |
0-1 |
|
输出字节总数 |
1 |
|
记帐会话Id |
0-1 |
|
授权 |
0-1 |
|
会话时间 |
0-1 |
|
输入数据包 |
0-1 |
|
输出数据包 |
0-1 |
|
记帐中止事件 |
0+ |
|
多会话Id |
0+ |
|
链路计数 |
0 |
|
CHAP难题 |
0-1 |
|
网络接入服务器(NAS)端口类型 |
0-1 |
|
端口局限 |
0-1 |
|
登录局域网运输协议(LAT)接口 |
Note1:记帐请求包中必须含有一个网络接入服务器(NAS)IP地址或者一个网络接入服务器标识符(或者两者都有)。
下表中给出了上面的表格中输入的定义。
0 禁止该属性存在
0+ 可能存在该属性的0个或者更多个实例
0-1 可能有零个或者一个该属性存在
1 刚好有一个属性存在,而且该属性是必须的