最近青岛大学在部分教学楼中部署了 IPv6 实验网 (学生宿舍区以及 WLAN 暂时未覆盖)。 IPv6 的部署有一些独特的挑战,从老旧设备无法支持到 IPv6 动态路由协议需要单独配置以及地址规划与 IPv4 的方式迥异,一切都带来了较大的挑战。

好消息是,这是一个有零技术债的平台,至少可以从零开始,把 IPv4 部署中的教训吸取并采用。

最根本的挑战,是 IPv6 的地址规划方法。 CERNET 分配了一个 /48 的地址空间,因此实际的分配必须要进行精细化——为了使用 SLAC 功能,每个交换机上最小为 /64,因此只有 2^16 个 /64 可以分配。为了考虑今后的扩展性,规定每个楼宇/楼宇交换机独占一个 /60,以备在接下来三十年中的地址需求。

关于每个楼的地址需求,可以简单的进行估算。考虑到今后的传感器、物联网设备需求,每个楼层可能会有上百到上千个此类设备。在楼层满载时,每个教室大约可容纳 80 人,每个楼的容量在万人以内。假设每人携带十部联网设备,每个楼的地址需求量为十万到几十万级别。当然,一个 /64 现在看起来依然足够,但是为了避免犯“预测未来”的愚蠢错误,多分配一些又何妨?

分配 IPv6 地址的核心考虑便是如何最大程度确保地址利用率以及可扩展性。这里,考虑到青岛大学的实际情况,首先分配成几个大的区域——核心网、西院、东院、师范学院、东校区、中心宿舍区、东校区宿舍区。

在 IPv6 地址分配中,另一个考虑点便是为了容易阅读以及管理,地址应对其到单个字母。因此,从 /48 开始,分配对齐到字母时, prefix 长度应为 52, 56, 60, 64;分别对应第 9、10、11、12 位地址。

为了更好的扩展性,分配地址时,先把地址均等分为 4 或 8 或 16 份,粗略的将每个功能对应的地址数量需求进行整理,并进行分配。结合青岛大学的实际情况,将地址分为八扇区、每扇区为两个 /52 时,可以得到较好的利用。这八个扇区分别为核心网、西院、东院、师范学院、东校区、其他小型园区、宿舍区、互联区。

这种规划方式的好处是,即使当前情况下该功能区域不会用到这么多地址,在之后需要更多地址时,此区块拥有接下来的一部分连续未分配预留地址,也会更方便路由的 summarization. 接下来的楼宇分配也类似。下图为西院的分配表。

Screen Shot 2016-01-10 at 02.20.21

为了帮助追踪以及计算,使用电子表格是个不错的主意。这里,我使用了 =CONCAT(CONCAT('总分配'!$C$19, CONCAT(A6, "::")), CONCAT("/", C6))公式用于计算地址,你可以以它为基础构建你的电子表格。

在部署方面,首先的挑战是 IPv6 本身的支持。这对于我校使用的核心层设备并无任何挑战,华三也类似。

下一个挑战,其实来自于接入层。青岛大学拥有上百台接入层设备,大部分接入层设备的 IOS 版本老旧,因此作为前提条件,自动化升级变成了必要的。解决这个问题的方法有很多,常见的是使用网管软件,但由于没有购买带有这类高级功能的网管软件,因此使用 expect 来进行升级变成了次优解。

由于青岛大学也没有一份权威的接入层交换机列表,因此使用了 snmp 先扫描获取得到了所有的接入层设备列表。

下面的脚本展示了如何登陆交换机并执行命令:

#!/usr/bin/expect

set timeout 5
set hostname [lindex $argv 0]

set username "username"
set password "yourpassword"
set enablepassword "yourenablepassword"

spawn telnet $hostname

expect "Password:" {
  send "$password\n"

  expect ">" {
    send "en\n"
    expect "Password:"
    send "$enablepassword\n"
  }
}

expect "#" {
  send "show version\n"
  send "q\n"
}
interact

可以使用 for host in `cat hosts`; do ./upgrade $host; done 的方式进行处理。

除此之外,遇到的问题还包括互联地址的划分问题。这里的解,目前是使用地址中编码进去 VLAN ID 的。例如 Vlan 1234 = 0x4d2,因此 Vlan 1234 对应 2001:250:5823:04d2,由于 Vlan ID 最大为 4096,因此三位十六进制数正好足够编码 Vlan ID。

graph

目前,运行了一段时间的 IPv6 网络情况正常。

MMSEG 是一个开源的中文分词项目。在我们的应用开发中,我们使用了 mmseg 完成中文分词的任务。本程序是用 C++ 编写的,但是不提供 UNIX 下的 Makefile。
在 Coreseek 项目中包含了一个 mmseg,并提供了 Python 试验程序以及 mmseg 的 GNU Autotools 脚本,可以方便的进行 configure – make – make install 形式的安装。但是,其 Python 绑定并没有提供相应的脚本。为了解决这个问题,我写了一些 Python 脚本辅助进行这项编译过程。
首先,从 Coreseek 项目中下载回 Coreseek,并解包,进行 mmseg 的编译。注意应当先执行./bootstrap
其次,进入 src/css 目录,编译 libcss。这里,我使用的编译脚本如下:
Continue reading

青岛大学校园网用户,
OSQDU美国总部和中国支部所有成员祝大家新年快乐,万事如意。
从2008年6月创办至今,OSQDU一直致力于推广开源/自由软件和开源文化,培养了一批有开放精神和探索能力的新成员。与网络中心等部门合作,部署和开发了一批校园网基础设施和应用软件。使所有校园网用户直接或间接地从开源软件中收益。
2010年,是OSQDU各项事业蓬勃发展的一年。
在中国支部负责人的协调、沟通和努力下,校信息网络中心的基础设施(包括DNS和DHCP服务)由过去的Windows的平台逐步迁移到 Linux和Solaris上,显著提高了可靠性和安全性。增设了反向代理和DNS管理服务器等服务,简化了校园网相关服务的管理,提高了紧急响应速度。
3P下载系统的开发也告一段落,预计2011年3月份正式上线运行。
在2011年,OSQDU的主要任务有:
一、完成校园网相关服务的交接,确保服务稳定运行;
二、人才培养方面坚持远程培训与自学相结合的方针,加快培养一批合格的网络工程师和系统工程师;
三、完成校园网配置信息的集中化管理,实现学校用户的集中认证和单点登录服务;
四、加大宣传力度,在校园网内推广开源软件使用,培养用户良好使用习惯;
五、完成服务的虚拟化迁移,节能的同时提高资源利用率和服务可靠性。

我们清醒的看到,OSQDU的长期发展,和人才的培养是分不开的,然而过去的一年里,人才培养的强度和范围远远不够,给OSQDU的发展提了一个很大的难题。2011年,我们要把人才培养当成大事来抓,在主动发掘优秀人才的同时注重人才培养机制的建设,形成长效机制,扩大OSQDU在校园技术圈子的影响力,为先进技术和先进文化的传播做出自己的贡献。

感谢大家的支持,有关技术支持信息和人才培养计划,请发送邮件至osqdu@qdu.edu.cn