我们是如何搞定 600+ 设备的初创公司办公室网络环境的

(本文已投稿 36kr :http://www.36kr.com/p/208007.html

 

笔者于日前看了一下豌豆荚的办公室 WiFi 环境的文章(http://www.36kr.com/p/207783.html),文中提到的无线环境与自己的做法相似,然后想扩展一下,分享一下整个办公室网络环境构建的经验。
笔者参与并主导建设了知乎和陌陌办公室的网络环境,非专业人士,也是边做边学,但对于 startup 的网络环境建设还是有一定发言权的。

 

笔者屈指一算,原来陌陌已经两岁多了。一个两岁的小屁孩也已经背起书包上学背英文单词了,两岁的陌陌也正在创业的路上越走越顺。回头看看这一路,不容易啊。
遥想当年那只有四五台电脑,60 平米左右的办公室,再对比现在一人手持四五个移动设备,1000 平的高上大 CBD 写字楼,些许感慨。
当年那个 60 平米的小办公室,大家上网办公依赖的是一条 4M 的不对称企业 ADSL。所谓的不对称,指的是上行下行速率的不相等,也就是,我下载能达到 4Mbps,但上传只有 512Kbps。很多人认为上传不重要,设想一下,一个 10M 的陌陌 app,要上传到服务器去,只能以 64K/秒 的速度上传,这个还是理论一个人单独只用整条线的最快值,需要时间两分半。相信现在家庭用的 xx 光纤入户都比这个要快了,当时整个陌陌的所有员工都在使用这条小水管。
后来,我们的办公室搬到了环境宜人的别墅。同样是 ADSL (当然,带宽是扩大了)陪我们度过了这段温馨的时光。
再后来,也就是现在的办公室,急速增长的员工和比之前大十倍以上的办公室,终于让我们正视这些问题了。我们需要一个能满足数百设备的有线无线办公室网络环境。
我们首先看看一个初创移动互联网公司所面临的问题:
1)众多设备的有线无线上网
2)各类下载加速
3)爬篱笆

然后我们一个一个问题来解决。
1)
陌陌的办公室上网使用的是大厦提供的宽带上网,从大厦端给我们的就是一根普通的网线,我们只要插上网关服务器(关键角色,将在第二部分详细介绍),配置上大厦分配的 ip 即可使用了。
关于有线上网,都是实打实的东西了,有多少个网线口,就得有相应数量的交换机端口。我们选购了一款性价比超高的 N 家的交换机,24 口千兆,只要不到 1000 的价格。这些交换机以级联的方式连起来,然后扩展也比较方便,办公室需要扩工位时,就继续买交换机来级联。

好了,说完有线,我们来说说比较关键的无线。
作为一家有态度的移动互联网公司,一个员工的桌子不放上那么五六个移动设备,都不好意思说在陌陌工作。

笔者作为一个脑残果粉,在这里就不选择 C 家的瘦 AP 了,而是直接选择了 Apple 的 Airport Extreme 。Apple 的 AE 其实是一个路由器,但是笔者将其当做一个 AP 来使用,只是负责建立无线网络,关闭 DHCP ,以 bridge 的方式与网关相连。而之所以不选用 C 家的 AP ,则是考虑到 C 家的 AP 其实也不便宜,能达到和 AE 宣称的理论最多 50 个同时接入的 AP ,甚至比 AE 还贵。

陌陌的办公室并不是一个大开间,而是一个类似“回”字的形状(中间是电梯)。办公室的布局,与路由器的摆放有直接关系。我们当前布置了 11 个 AE ,平均每个 AE 连接了 30+ 个用户。只广播一个 SSID ,2.4G 和 5G 网络都用同一个 SSID ,不让用户选择就是最好的选择。整个办公室就一个 SSID,无缝漫游,即使用户的位置移动了,也会自动寻找最近的接入。用户的设备支持 2.4 的就连接到 2.4,支持 5 的就连接到 5。众所周知,大部分的 PC 和除了 iPhone5 以上的手机,都只支持 2.4G,而 2.4G 基本已经拥挤得无法使用了。所以我们在 Android team 的附近,布置了 3 – 4 个路由,以保证它们还能顺利上网,但速度已经无法保证了。另外,也不能太相信 AE 的自动分配,必须手动指定每个路由广播的信道,以保证相邻的两个路由的信道不要重叠。

Apple 新款的 Airport Extreme ,支持 802.11ac ,理论上可达到 1.3Gbps 的吞吐,比一般配备的有线千兆网卡更快。最近,我们终于也入手了新款 Airport Extreme ,豪华的外型背后,却是一个无奈的事实:英雄无用武之地。现在支持 802.11ac 的设备真是少之又少,连去年的 retina MacBook Pro 都不支持 ac。

在这里稍微吐槽一下 Apple 的无线管理工具 Airport Utility 。6.0 版本不好用吧,Apple 自己也知道,让 5.6 版本可以与 6.0 共存。但新款 AE 不能通过 5.6 进行管理,而且系统升级 Mavericks 以后,5.6 就已经不能用了。Airport Utility 6.0 + 新款 AE 缺少了很多可监控的选项。而 Airport 5.6 + 旧款 AE 是可以通过 snmpd 和 syslog 获取一些信息的。
2)
接着就是加速的事情。
我们这里,有请一位关键角色出场,墨迹。墨迹是陌陌的第十五号员工,我们的卖萌总监。
我们用退役下来的黑苹果,装了一个 Linux 作为我们的办公室网关。为了纪念墨迹,这个机器的名字叫墨迹。

墨迹在我们创业的初期,一路用卖萌来陪伴着我们加班的日子。
终于在某一天遇到了一生中所爱,从此离家出走去追寻自己的幸福了,再也没有回来了。我们没有怪她的不辞而别,而是祝福她,终于找到了一生的归宿。
我们也为此特别做了一个版本来纪念这位永远的卖萌总监。下图就是陌陌 1.9 的开机载入画面:

moji
墨迹上安装了 smokeping, cacti, ntop 等软件,smokeping 可以检测办公网到各个地方的网络情况,cacti 用于监控整个办公室的带宽情况,ntop 用于监控办公室每个人的网络使用情况。

说回来加速。我们主要加速的内容是,iTunes 的 app 更新,和 testflight ipa 的下载。
方法都是,在网关上面安装一个 squid ,用于缓存 ipa,然后用 iptables 把下载的地址,指向 squid,让 squid 缓存住 ipa。只要第一次下载成功后,就会缓存到 squid 上面,办公室的其他人就因此受益了。更新速度都是唰唰的。

iTunes 的更新一直没有使用 CDN ,直到今年初,App Store 的 ipa 下载使用了国内的 CDN ,办公室的 iTunes 加速的作用才没那么大了。
再到后来 iOS 7 发布后,这个就更不是问题了,因为 iOS 的新功能自动下载更新,iOS app 基本所有的更新都可以在大家睡觉时完成了。

但 testflight 的下载仍然没有 CDN 的,而且慢得令人发指,如果没有加速,难以想象还有谁会去使用它。
3)笔者作为一个从来不会使用百度的装逼犯,表示绝对不能忍受一天不能使用 Google 。于是,爬篱笆成为办公室上网的一个必备因素。

同样,网关是一个 Linux 实在太方便了,我们仍然利用它来做这个事情。
原理就是,中国的 ip 走默认的出口,而非中国的 ip 则走 vpn 的出口。
而中国的 ip 怎么获取呢?从 APNIC 下载一份 ip 列表回来,把属于中国的 ip 过滤出来。正如大家所知,全球的 ipv4 地址已经早就分批完毕,所以这份列表的变动性其实已经不大了。即使经常变动,一天更新一次也是没什么问题的。

 

Comments

  1. wwek says:

    routeros 软路由路过。

    多线均衡 策略路由 自动爬篱笆 什么的都有啊。
    我会告诉大家这是nat接入神器么。

    我更不会告诉大家dnspod的办公网关也是 routeros的·

  2. daijie says:

    对我很有用,博主其实应该在明显位置标注下微博什么的,可以跟过去关注下。

  3. 博主的微博太无聊,不值得一提。:-)

  4. lei says:

    友情链接中的阿铭Linux打不开,ming的拼音写错了

  5. 哭,多谢提醒……………………

Submit a Comment