0
点赞
收藏
分享

微信扫一扫

Cisco ASR9000 BNG与Radius字段调整

一、相关介绍

在工作中有时候会碰到客户有不同的需求,对PPPOE和DHCP业务的用户的相关信息进行精细化的区分调整。该文章主要介绍如何定义Radius相关的字段来进行业务的划分。

Cisco ASR9000 BNG与Radius字段调整_ip地址


二、Radius与BASE之间信息传递

RADIUS Interface—Access Request

Cisco ASR9000 BNG与Radius字段调整_ip地址_02

Cisco ASR9000 BNG与Radius字段调整_cisco ASR9000_03

RADIUS Interface—Accounting Request

Cisco ASR9000 BNG与Radius字段调整_ip地址_04

三、ASR9000支持的私有属性和公有属性

包括厂商编号,私有属性编号,格式类型定义,含义说明

cisco 的厂商编号是9, cisco VSA的格式如下

Cisco ASR9000 BNG与Radius字段调整_ip地址_05

现网中将会用到的大部分cisco的私有属性(VSA),都采用Cisco-AVpair的格式表达。 Cisco AV-pair即是vendor type是1的Cisco VSA。其格式及举例如下:

Cisco ASR9000 BNG与Radius字段调整_ip地址_06

在这同一格式下(type 26, vendor-Id 9, vendor type 1),在attribute-specific的部分用不同的string(只能是string), 则该Cisco-AVpair可为某一特定的属性, 赋予特定的值, 其含义是直观易懂的。attribute-specific部分的string分为三个部分:

​Cisco-Avpair = "protocol:attribute=value"

比如:

Cisco-avpair = "ip:ipv4-mtu=1480"   ---定义ipv4 mtu为1480

Cisco-avpair = "ip:addr-pool=pppoe_pool2"--定义ip地址池采用名为pppoe_pool2的地址池。

需要注意的是:

1, 在一个radius message中,通常会包含多个Cisco-Avpair(具有相同的type 26, vendor-Id 9, vendor type 1),需要RADIUS server支持此功能。

2, Cisco-AVpair中内容部分冒号之前的protocol部分,当BRAS是运行IOS XR系统的ASR9000时, 可以省略或者不计较其内容, 因为ASR9000在解析Cisco-AVpair的时候会忽略冒号之前的部分。(但是在IOS操作系统下, 冒号前面的部分是有意义的)。举例说明:Cisco-avpair += "ip:ipv4-unnumbered=Loopback222"中的ip:是可以省略的, 或者说, 对于ASR9K来说,以下三个格式的Avpair是相同的

· Cisco-avpair += "ip:ipv4-unnumbered=Loopback222" 

· Cisco-avpair += "ipv4-unnumbered=Loopback222"

· Cisco-avpair += "ipv4:ipv4-unnumbered=Loopback222"


3, 部分Cisco-AVpair与一些IETF的标准attribute是可以互换的, 换言之, 为了实现某些相同的功能, 可以用Cisco-AVpair,也可以用IETF的标准attribute。 在这种情况下, cisco建议采用标准的IETF属性实现。

Cisco Avpair在RADIUS server中的users文件中的写法:

以freeradius为例,下面的user profile中,三个VSA都是cisco Avpair。

​​User@domain.com​​ Auth-Type := Local, User-Password == "cisco"

        Cisco-avpair = "ip:ipv4-mtu=1480",

        Cisco-avpair += "ip:ipv4-unnumbered=Loopback222",

        Cisco-avpair += "ip:addr-pool=pppoe_pool2"

对应的抓包文件显示如下:

Cisco ASR9000 BNG与Radius字段调整_cisco ASR9000_07

除了Vendor type是1的Cisco-AVpair以外,cisco还有其他的私有属性,vendor type从2到其他整数, 但基本上很少或者不会使用。具体的cisco VSA的完全格式说明, 请参见:

​​​​http://www.cisco.com/c/en/us/td/docs/routers/asr9000/software/asr9k_r5-1/bng/configuration/guide/b_bng_cg51xasr9k/b_bng_cg51xasr9k_appendix_01001.html​​

Cisco支持的Cisco-Avpair的列表及所以用方法说明见附件

在现网中, 如果只需要对用户根据其所属的业务类型做区别化对待, 建议采用radius 下发单独一个service名字, 对应在ASR9K上本地配置service内容的方式实现对不同用户提供不同的业务。

具体做法是在access-accept中下发

cisco-avpair=”subscriber:sa=service1

本地定义的dynamic-template type service service1中,可包含QoS, ACL, 地址池等等信息。如果需要对用户做区别化对待, 比如某个特定的用户, 要分配特定的IP地址,或者要指定分配特定的MTU , 则可以考虑在access-accept中下发具体的定义不同特性的AVpair或者ietf属性。

配置案例:

比如,在pppoe拨号中,为了指定用户的IP地址,可以采用下面两种方式实现:

Radius 配置(在用户不同的速率模板下配置新的字段):

· IETF标准属性方式: “Framed-IP-Pool”=“”pppoe_pool2”

· Csico-AVpair方式:“Cisco-avpair ”= "ip:addr-pool=pppoe_pool2"

Base配置如下(添加新的地址池):

pool vrf default ipv4 pppoe-pool100

network 10.76.128.0/20


四、是否支持CoA和DM

如不支持COA和DM(即RFC3576协议),radius不下发CoA包。

答复:支持COA和DM。

COA和DM必须在COA request中包含session identifier。ASR9K支持的session identifier为。

IETF标准属性44. acct-session-id 

或者VRF+用户地址信息, 由以下两个属性表示:

 Framed-IP-Address=X.X.X.X

 Cisco-Avpair="vrf-id=VRF_NAME"

ASR9K 期待的DM(PoD)报文格式如下(此处用acct-session-id作为session identifier)

Cisco ASR9000 BNG与Radius字段调整_cisco ASR9000_08

除了采用DM来踢掉一个session以外, 也可以采用COA的某个专用的command account-logoff来踢掉一个用户(此处用Framed-IP-Address作为session identifier, vrf是default vrf, 没有定义)

Framed-IP-Address=12.1.26.2,

Cisco-Avpair=”subscriber:command=account-logon"

举报

相关推荐

0 条评论