PPPOE代拨接口 COA方式

来自Panabit维基
跳到导航 跳到搜索

为了和计费配合做整体方案, Panabit 的代拨提供了 RADIUS 接口, RADIUS 标准协议 里是没有代拨之类的操作的,所以我们就利用“万能药”COA 命令来提供创建代拨线路以 及捆绑的操作。

代拨上线

计费向 Panabit 发送 COA(code=0x2b)数据包, COA 数据包中包含如下属性:

1) User-Name(0x01):代拨帐号名称; 【必须】

2) User-Password( 0x02) :代拨帐号密码,需要注意的是, RADIUS 规范里 User-Password 是加密的,但是 Panabit 要求这里的 User-Password 不能加密; 【必须】

3) Filter-Id(0x0b) :这个属性的值为“__PAIPPXY__“,这个值表示这是一个需要 Panabit 执行代拨的 COA 指令; 【必须】

4) Framed-IP-Address(0x08):这个属性里存储的是要捆绑的内网 IP 地址;【必须】

5) Framed-Pool(0x58):存放的是地址池名称, Panabit 会根据这个地址池名称来 寻找外拨接口和 VLAN 参数, 地址池需要事先在 Panabit 上设置好,如果没有这个属性, Panabit 使用代拨模块默认配置的代拨信息拨号; 【可选】

6) Connect-Info(0x4d):这个参数里存储的是内网用户帐号名称,如果没有这个属性, Panabit 使用 User-Name 作为内网 IP 的账号名称; 【可选】

7) Port-Id(0x57): 这个参数里存储的是代拨帐号对应的 VLAN 信息 ,格式 为”10/20“或”10“,其中 10 为外层 VLAN, 20 为内层 VLAN;这个参数优先于 Framed-Pool 指向的地址池对象里设置的 VLAN 参数; 【可选】

8) Called-Station-Id( 0x1e) or Calling-Station-Id( 0x1f) :这个参数的格式 为”xx:xx:xx:xx:xx:xx” 或”xx-xx-xx-xx-xx-xx” ,存放要捆绑的 IP 的 MAC 地址,这个MAC 地址只是描述作用,如果计费和用户之间有三层交换机不能获取到真实的 MAC 地址, 也可以用三层交换的 MAC;【可选】


Panabit 收到 COA 请求后:

1) 如果成功拨号,返回 COA ACK(0x2c);

2) 如果拨号失败,返回 COA NAK(0x2d),失败的原因会放到 Reply-Message 属性 里,这个属性是一个字符串; 如果是认证错误, Panabit 会将 BRAS 返回的错误信息放在 Reply-Message 里传递给 AAA;


常见的 Reply-Message 值:

1)”POOLNEXIST”:指定了 Framed-Pool 属性,但是该属性指定的地址池在 Panabit 上没有找到;

2) “IPOBJ_INSTALL_FAIL” :创建内网 IP 对象失败,可能是授权不够,也可能是指 定的 IP 不在合法 IP 范围内;

3) “IPOVERFLOW” :代拨账号关联的内网 IP 数超过设定的最大值;

4) “IPPXY_NOOUTINTERFACE” :没有指定代拨外出网口;

5)其它信息:拨号认证失败后, BRAS 返回的信息;


代拨下线

计费发送 DM 给 Panabit, DM 消息中包含下面属性:

1) User-Name:代拨帐号名;

2) Framed-IP-Address:要解除捆绑关系的内网 IP 地址;

Panabit 收到 DM 请求后:

1) 成功下线,给 AAA 发送 DM ACK(0x29);2) 失败,给 AAA 发送 DM NAK(0x2a),并通过 0x65(101, ErrCause)属性告诉失 败原因;

ErrCause 属性:

1) 402: COA 请求中没有 Framed-IP-Address 属性;

2) 503: Framed-IP-Address 属性指定的 IP 地址未上线或已经下线;

3) 504:其它错误;

当外拨线路关联的所有内网 IP 都下线后,外拨 PPPOE 线路会自动结束。


代拨线路变化通知

Panabit 会通过 DM(Disconnect Message)给计费发送通知,通知的 DM 消息中包 含下面的属性:

1) User-Name:代拨帐号名;

2) Framed-IP-Address:最后一次绑定的内网 IP 地址;

3) Filter-Id : 值 为 “__PAIPPXY__:AUTHOK” 表 明 代 拨 线 路 拨 号 成 功, ”__PAIPPXY__:AUTHFAIL“,表示代拨线路拨号失败, ”__PAIPPXY__:TERMINATE“, 表明线路被对方中断;

4) Reply-Message(0x12): 存放的是拨号认证失败时上级 BRAS 返回的错误描述信 息;


终端状态查询

使用 COA 请求,请求中的属性:

1) Filter-Id:值为“__PAIPSTAT__” ,表示查询状态;2) Framed-IP-Address: 终端用户的 IP 地址; 如果用户在线并且代拨线路处于连接状态, Panabit 会返回 COA ACK,否则返回 COA NAK, Err-Cause 均为 506, 并且在 Reply-Message 属性里指定如下值:

1) “IPNEXIST” : IP 不在线, Panabit 在自己的 IP 在线表里没有找到该 IP 地址;

2) “IPNIPPXY” : IP 在线,但是没有代拨线路关联;

3) “IPPXYING” : IP 在线并且关联代拨线路,但是代拨线路在拨号中,处于非连接 状态;

4) “NOFRAMEIP” :请求中没有 Framed-IP-Address 属性或者属性值为 0.0.0.0;


终端下线通知

代拨线路的终端下线后, Panabit 会向 AAA 发送 Accounting Stop 数据包, 数据包中 包含如下字段:

1) Filter-Id:值为“__PAIPPXY__” , 和其它的 Accounting Stop 报文区分开;

2) Framed-IP-Address: 终端的 IP 地址;

3) User-Name: 终端的账号名称, 这个账号是 AAA 在 COA 代拨请求中发送过来的 Connect-Info 字段的值;

4) Reply-Message: 一个字符串, 告诉下线的原因;


Reply-Message 的值:

1)“KICKOFF”: AAA 使用 DM 将用户踢下线;

2)“FORCERMV”: 管理员在 Panabit 的 WEBUI 上将用户踢下线;

3)“DIALFAIL”: 代拨线路拨号失败导致下线;

4)“TIMEOUT”: 终端 IP 长时间没有流量被 Panabit 老化而下线;

5)“OTHER_N”: 其它不知名下线原因, N 是一个整数值;

需要注意的是, 终端下线通知功能默认是关闭的, 使用 floweye ippxy config offline_notify=1 打开, 0 表示关闭。