您的位置:首页 > 参评方案展示 > 基础设施

首都经济贸易大学:多品牌校园无线漫游的应对方案

  2016年初,首都经济贸易大学建成了覆盖花乡、红庙两大校区,无线接入点超过1100个,无线用户数量过万的大规模复杂无线网。从网络的扩展性和管理的便捷性来看,将大型校园网WLAN分成多个子网是好办法,但是,首都经济贸易大学的无线网现状是:整个校园无线网部署多台无线控制器,且无线控制器非单一品牌,无线客户端根据所在物理位置不同分属不同IP子网和VLAN,无线网采用统一的认证计费网关。当无线客户端物理位置从一个楼宇移动至另一个楼宇,从一个控制器漫游到另一个控制器时,就会出现IP地址发生变化、反复多次登录计费账号的问题,给用户使用带来极大不便。

  现状及必要性

  首都经济贸易大学在校师生20000人左右,校本部由主校区、赛欧公寓园区、华侨学院园区三个部分组成,三个园区距离较近。目前,整个校园网基础设施拥有两个标准机房,交换机500多台,无线网接入点(AP)1000多个,形成了以核心交换机为中心,各楼汇聚交换机为主干,各楼接入交换机为分支节点的校园网。

  校园无线网的网络拓扑图如图1所示,无线网核心交换机与校园网核心交换机、计费认证网关相连,专用的DHCP服务器为无线客户端分配IP地址。当前,校园网无线接入点(AP)有两种品牌,无线控制器(AC)两种品牌。

  无线用户上网时,首先获得由无线DHCP服务器分配到的IP地址,然后登录计费认证系统,认证成功后,由统一的计费认证网关放行,从而可以访问Internet,各个无线控制器不提供认证功能。无线接入点(AP)通过CAPWAP隧道与无线控制器(AC)进行通信。

  改造前的策略

  当无线客户端从物理位置A移动到物理位置B时,客户端在不同控制器下的不同AP间漫游,无线SSID对应的VLAN是不同子网,各个子网根据楼宇划分。例如:学生公寓1号楼用户获得的IP地址所属子网为10.10.0.0/24,学生公寓2号楼用户获得的IP地址所属子网为10.10.1.0/24。

  DHCP服务器配置

  无线客户端获得的IP地址通过DHCP服务器分配,DHCP服务器按照校园楼宇配置多个作用域,每个楼宇分配16个C类IP地址供本楼宇内的客户端使用。例如:赛欧一号楼的作用域是10.16.0.0,该楼宇的客户端获得的IP地址范围为10.16.0.3-10.16.16.254。

  计费认证策略

  无线客户端30分钟之内没有下行流量的情况下,认证计费系统会将客户端进行离线处理,此时客户端若使用校园无线网,则需要再次登录计费账号。

  客户端IP地址策略

  客户端在使用无线网络前,会获得由无线DHCP服务器分配到的IP地址,此IP地址的租期为2小时。

  无线地址池和VLAN策略

  校园无线网建设初期,为了方便管理,考虑扩展性,将无线网按照楼宇分为多个子网,每个控制器上的动态接口(Interfaces)都被分配不同的VLAN和IP地址。例如名称为bonalou的接口,VLAN为915,IP地址为10.16.224.2。

  随着首都经济贸易大学校园无线网规模的进一步扩大,无线信号覆盖区域范围扩大,校园无线网络包含大量无线接入点(AP),单纯使用一个无线控制器已经无法实现大量AP的控制管理工作。在很多情况下,校园网无线客户端需要从一个楼宇移动到另一个楼宇,从一个控制器漫游到另一个控制器,就会出现IP地址分属不同子网,需要再次登录计费账号的现象。

  针对此现象,经测试后,将无线网配置策略做一定调整。目的是为了实现无线客户端在校园园区内进行物理位置移动时,无线网络不中断,客户端实现校园内AP间无缝漫游。

  改造后的策略

  客户端IP地址段选取

  客户端IP地址由无线DHCP服务器负责分配,在校园网私有IP地址段中选取一个B类地址提供给无线客户端使用,出于以下两个方面考虑:

  一是学校在校师生20000人左右,无线网在线用户一般为10000人,每位师生最多允许两个无线终端设备同时在线,共计需要20000个IP地址;

  二是考虑校园无线网未来的发展需要,若当前选用半个B类地址,未来需要扩容至一个B类地址,需要对现有的计费认证系统策略、DHCP作用域、校园网无线核心交换机的路由等多个设备进行多方面的调整。因此,选用一个B类地址提供给无线客户端使用。

  DHCP服务器配置

  新建作用域,分配一个B类地址供全校无线客户端使用,DHCP客户端的租用期限为2小时。停用原来各个楼宇的DHCP作用域。

  当客户端发起控制器间漫游操作时,涉及的两个控制器能够对比分配给它们各自WLAN接口的VLAN号。如果VLANID相同,那么无需进行任何特殊处理,客户端将实现控制器间漫游,并且可以在新控制器上继续使用原有的IP地址。

  计费认证策略

  校区、赛欧公寓园区、华侨学院园区在地理位置上距离较近,经实地测算,步行30分钟时间内可以实现三个园区内的物理位置移动,因此计费流量的在线时间策略可不做任何调整。

  无线核心交换机配置

  新建VLAN951,命名Wireless_Vlan,具体配置如下:

  vlan 951

  name Wireless_HX interface vlan951 description Wireless_Vlan

  ip address 10.10.0.1 255.255.0.0 ip helper-address 10.2.X.X

  这里 helper-address 就是 DHCP 服务 器地址。

  A 品牌无线控制器

  在 AP Groups 设置里,将 WLANs 选 项中的 Interface/Interface Group 都映射到 Vlan951 所对应的 Interface 上。

  B 品牌无线控制器

  将 ap-group 全部映射到 VLAN951 中。

  ap-group B_Group_1

  interface-mapping 2 951 ap-wlan-id 1 ap-group B_Group_2

  interface-mapping 1 951 ap-wlan-id 1 ap-group B_Group_3

  interface-mapping 1 951 ap-wlan-id 1

  客户端在不同控制器下的不同AP间漫游,SSID对应的VLAN是同一个子网,都是VLAN951所对应的子网10.10.0.0/16。此外,各个楼宇的汇聚交换机配置不用额外做任何调整,只需要正确配置option43或者option138命令即可。

  接入交换机

  跨控制器后,无线终端MAC地址上行端口发生变化,即无线终端所连接的AP不同。由于AP上联的POE交换机上只可读到所连接AP的MAC地址,不可看到无线终端的MAC地址。无线终端的MAC地址通过CAPWAP隧道,可以在在无线控制器读到,因此,不会存在因POE交换机MAC表不更新而导致无线终端用户跨控制器的过程中,出现连接中断的现象。

  DHCP服务器基于无线终端的MAC地址分配IP地址,一个MAC地址相应的获得一个IP地址,租期为2小时;跨控制器后,无线终端MAC地址不发生变化,物理位置的改变只要控制在30分钟内,那么该终端将一直占用最初获得的IP地址,计费认证系统不关心该终端是否跨控制器,只要该IP地址30分钟内有下行流量,则不会重新登录计费系统,可保持一直在线状态。

  存在的问题及解决办法

  存在的问题

  改造后的配置策略,选用一个B类地址,一个用户VLAN,存在的弊端是无法避免广播风暴和病毒的扩散。我们通过两种方式来解决以上问题。

  解决办法

  1.WLAN优化手段

  在无线控制器上启用无线用户VLAN内的二层隔离功能。对于没有二层互访需求的网络配置该功能,减少网络攻击和多播报文带宽占用。启用该功能后,核心交换机上无线VLAN下的所有客户端无法实现相互访问,从而减少广播风暴。

  2.无线控制器访问控制列表

  通过配置无线控制器访问控制列表,起到防控病毒的作用。无线控制器上的访问控制列表用于限制或允许无线客户端访问无线局域网内的服务。可以从两个方面进行数据包过滤,一是作用于每个无线控制器上无线客户端VLAN的入站和出站方向;二是在无线SSID的入站方向进行过滤。但是需要注意的是,访问控制列表只能配置在动态的Interface上。进行如上操作后,访问控制列表就会允许或者拒绝校园无线网中使用该动态Interface的数据流量,从而起到保护校园网安全的作用。

  以上两种解决办法都在无线控制器上进行配置,不涉及接入和汇聚交换机,因此,不会给交换机增加负担。同时,从无线控制器CUP和内存使用率曲线图(图2)来看,WLAN优化手段和无线控制器访问控制列表的实施并未对无线控制器带来较大负担。

  经过改造后的配置策略生效后,辅以控制器上的用户二层隔离功能和访问控制列表,校园网无线客户端可以实现校区内物理位置移动,无线网不中断,同时避免了多次登录计费认证系统的麻烦,极大地方便了学校师生的上网行为,得到了广大师生的一致肯定。

  (作者单位为首都经济贸易大学教育技术中心)

来源:中国教育网络作者:庞镭
《中国教育网络》
杂志微信公众号
高校信息化应用
微信公众号
高校网络安全
微信公众号
var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "//hm.baidu.com/hm.js?b841bd73360946ada23db9fa82c9c6ae"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();