拨云见日:企业网络准入策略小议

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享

近来有机会接触了一些企业网络准入的项目,感触颇深。针对这个复杂的市场有一点自己的心得,没有结论,意在抛砖引玉,为大家的思考和讨论铺路。

本文只关注企业用户,而且是具备一定用户规模的国内企业用户,不是学校、不是小区宽带;其次,范围是用户对网络资源的访问,包括有线、无线、VPN等等。之所以要这么规定一下,是为了后面的讨论更准确、更有针对性,企业用户有自己的特点和需求,适合其它环境的思路在企业网中很可能玩儿不转,任何一种技术方案只有在立足的环境中才存在讨论的意义。

一. 缘起

网络准入是一个由来已久的话题,但一直以来并不是IT安全的重点,直到近年来,才逐渐成为炙手可热的话题。无线接入、智能移动终端和云计算的兴起共同催生了这一波热潮。

随着云计算的不断深入,越来越多的企业业务系统由传统的C/S架构向B/S架构迁移,以往访问后台数据需要安装专用软件,IT部门控制客户端软件的许可发放,就能够大致控制访问用户的范围。而在B/S架构中,用户只需要一个WEB浏览器即可登录系统,加上智能手机、智能平板和WiFi的流行,以往的限制条件消失了,任何人手中的设备都成了可能访问后台数据库的平台,IT部门突然一下子失去了对局面的控制,因此,对网络的准入控制被重新提上日程。只有合法的用户才能够接入网络,通过对接入用户的控制,IT部门开始试图重新夺回对数据访问的控制权。

二.  几种思路

控制用户接入网络的技术伴随网络本身的诞生和发展已经衍生出五花八门的派别,每种方式都有自己的特点和适用场景,很难说那种方式在技术和最终效果上技高一筹取得了绝对的领先地位。

在新形势下,接入技术本身并没有发生翻天覆地的变化,其演进更多地是从满足需求的前提出发,将现有的方式进行重新的优化、组合,从而推出一个满足新需求的解决方案。在实际环境中常见的认证方式包括二层认证、三层认证和基于客户端方式的认证。

二层认证

二层认证就是用户在获得IP地址之前必须通过的认证,大型企业往往利用DHCP进行IP地址分发,用户在接入网络之初同网络侧通过二层连接进行认证数据的交互,只有成功通过认证才能向DHCP服务器申请IP地址,从而收发数据。

二层认证的代表实现方式就是802.1X。802.1X是IEEE 802.1协议集的一部分,定义了EAP在以太网环境中的实现方式,而EAP是IETF在RFC3748中制定的在数据链路层中进行认证行为的一种机制,以满足在不同的二层环境下进行统一、一致的认证的需求。这个逻辑连起来就是,IETF首先制定了在数据链路层也就是二层上进行验证的EAP机制,然后IEEE给出了EAP在以太网环境中的运行方式,这个方式就是大家熟知的802.1X。现在,我们可以回答两个常常被混淆的问题:

1)802.1X是802.11的子集吗?

No,802.1X不但可以工作在无线环境中,同样能够工作在有线环境中,并且在WiFi被大规模部署之前,802.1X就已经是有线网络中一种重要的认证方式。

2)EAP是802.1X专用的认证方式吗?

No,理论上EAP可以被运用在任何一种数据链路层之上,例如PPP或以太。

基于802.1X的二层认证基本工作方式如下图所示:

image

上图中的三个元素,分别是客户端(Supplicant)、认证方(Authenticator)和认证服务器(Authentication Server)。客户端就是支持802.1X功能的终端设备,如笔记本、智能手机;认证方是将客户端接入网络的接入设备,在有线网络中是接入交换机,无线网络中是无线AP和控制器,在VPN连接中,认证方则是VPN服务器,认证方负责接受客户端的认证请求,但本身并没有处理这些请求的能力,它会将获得的信息转发到认证服务器,由认证服务器辨别客户端的合法性;认证服务器通常是集中部署在网络内的一台安全设备,当收到转发来的用户请求后,认证服务器将请求信息同已有的用户资料做比对,并将结果返还给认证方,如用户合法,认证方便会将客户端接入网络,否则予以屏蔽,或放入特殊VLAN,至此,一个标准的二层认证流程才结束。

在这个过程中,认证方和认证服务器之间通过特定的协议通信,目前采用最普遍的两个协议是RADIUS和TACACS+,总体说来,TACACS+的稳定性、安全性和灵活性更高,但TACACS+是思科私有协议,因此,在一般的用户接入场合,RADIUS更加常见。

通过多年的发展,802.1X+RADIUS的实现方式已经发展成为一个功能非常强大的准入方案,RADIUS丰富的字段使得认证可以不仅仅针对用户名与密码,还可以根据接入设备的MAC地址、IP地址、交换机端口等信息来进行认证。

之所以解释这么多二层认证的细节,是想说明基于802.1X的二层接入是一个非常成熟的方案,市场接受程度很高,不管认证方还是认证服务器,都不难找到多家厂商的产品,客户端的支持方面也不是问题,主流的桌面操作系统和智能手机终端大都支持802.1X。用户的接受与市场的成熟,对于安全策略的长期部署是非常重要的,802.1X在这方面的优势异常明显,其他方案不一定有这么幸运。

总体说来,802.1X的二层模式具备了以下三个特点:

1)完全公开的架构,每一个部分都有相应的国际标准,便于企业客户自由选择软硬件、搭建一个灵活的安全架构,不会受制于特定厂家;

2)成熟的技术标准,802.1X已经部署在全球成千上万的园区网,本身是一个非常成熟的技术,实施风险和成本低;

3)包含完善的认证和授权机制,能够满足企业用户的大部分需求。

如果仔细揣摩这三点,你会发现802.1X同以太网非常相似–公开、成熟、实用,这其实就是企业客户的核心需求,企业的IT部门在做任何选择时首先考虑的都是技术的可延续性以及成熟性,如果某项技术大家都在用,本身功能又实现得七七八八,这个方案就是最优方案,华而不实的新鲜玩意反而难以得到企业用户的垂青。

三层认证

说了这么多,传统的二层方案是个完美的方案了?如果放在五年前,也许是这样,但随着网络的发展,接入环境越来越复杂,802.1X在某些方面渐渐显得力不从心了。例如,某些企业需要为访客提供无线网络接入,但不可能每次有来访人员时临时在笔记本电脑上配置802.1X策略,这就需要一个快捷的办法将没有经过认证的第三方设备接到网络中。

三层认证就在这种背景下应运而生了。

三层认证又被称为WEB认证,顾名思义,认证过程是通过一个WEB页面完成的。当有新的设备需要接入时,网络设备不会默认屏蔽它,而仅仅为其提供一些基本数据的转发能力,如DHCP、DNS等,客户端可以通过DHCP拿到地址,但他还没有办法获得完全的网络权限,比如上个QQ啥的;此时,用户需要发起一个HTTP请求(在浏览器中访问任意一个WEB页面),交换机或者无线控制器从中截取到用户的这个HTTP请求,并将用户重定向到一个预先写好的认证页面上(这个页面可以存放在任意一个IP可达的WEB服务器上),用户在在这个页面使用用户名/密码完成认证,从而获得全面的网络访问权限。

image


同传统的二层认证比较,WEB最大区别就是去除了对客户端的要求,用户端设备无需进行配置,只要有一个浏览器就OK了,而这个条件基本上所有的个人设备都能够满足。因此,近年来WEB认证的发展非常快,特别是在无线、大型园区等环境中得到了大规模的部署,而主流网络厂家也纷纷将WEB认证作为无线控制器和接入交换机的一项默认内置功能。

三层认证凭借其自身的特点获得了市场的认可,但在现阶段毕竟还是一个补充方案,难以作为企业环境的主力认证方式。首先,每次上网通过WEB页面登录的方式对大多数企业用户来说都“土”了一点儿,而且WEB认证检查的内容也比较简单,大部分时候仅有用户名和密码,在高安全级别的环境中仍显单薄。

客户端方式

除了三层认证和二层认证,还有一种很有意思的思路,即通过客户端对接入用户进行认证。这里所说的客户端是指安装在用户设备的上的软件,其表现形式五花八门,以杀毒软件起家的厂商会做成杀软的功能子集、以桌面控制立足的厂家会做成控制软件的一部分、而传统的网络设备厂家则会将这部分功能集成到VPN\无线接入的用户端软件中。不管是什么路子,这类软件一般只干两件事情:1)从操作系统接手802.1X的认证流程;2)对操作系统的健康状况做检查,如是否安装了最新版补丁、杀毒软件是否更新到最新病毒库等等,若操作系统处于可靠的状态则允许接入网络,否则拒绝。

这种方式有一点像一个加强版的360软件,它不但帮你检查身体,还基于你的身体状况决定你是否能获得一张游泳证。由于健康状态的检查内容包含了系统的补丁安装、应用软件安装、杀毒软件更新等情况,因此,必须在客户的设备上安装一个系统权限非常高的客户端软件才能完成所有的检查工作。

很明显,客户端方式完全是从企业IT部门的视角出发,对最终用户采取更多的限制。通常,这种方式都会和厂家进行紧密的绑定,通过在每台终端设备上安装客户端,用户的IT流程和安全规范也紧密地同厂家能够提供的功能选项结合在一起。

三种方式的对比表格

image

三.  延伸思考

用户需要什么样的方案?

企业网的准入是一项非常特殊的技术,最终用户的体验是决定一个项目成败的关键。有的方案从技术上评估非常完美,但实施之后发现最终用户根本接受不了,过多挑战用户的使用习惯,最终被行政层面废掉。

有的客户在被厂家忽悠过后决定在整个公司范围内推广严格的网络准入控制,在所有PC终端上安装安全客户端软件。结果,客户端装上后频频告警,因为不少人在自己的电脑上安装的下载软件强行修改了系统的下载线程限制,还有的员工干脆卸载了原有杀毒软件,自己重新安装了互联网上的免费杀软。这些被折腾过的电脑,在安全客户端内置的严格的策略规则前统统被亮了红灯,上线测试第一周就有不少员工无法正常接入网络。结果IT部门啥都顾不上,成天到各处救火,最后这个系统被大领导一句话下了马。

即使是最通行的802.1X方式,也不一定适应每个地方的水土。当一台配置了802.1X接入的PC机刚开机时需要一定时间同网络侧交互认证信息,如果用户接受程度不高,很可能会认为网络接入效率低,从而投诉,给IT部门造成很大压力。

因此,对于最用用户来说,最好的方案就是用户体验最友好的方案,只有对原有使用流程影响最小的技术方案才能得到上下一致的支持,从而推动最终的全面部署。另一方面,业务部门对准入的支持也至关重要。

IT部门需要什么样的方案

对于IT部门来说,网络准入是一个非常笼统、模糊的概念,什么样的用户能够接入网络?什么样的安全检查才是足够安全?同企业的其他安全策略该如何整合?这些问题在业界都没有统一的结论,而且安全防护是一场没有终点的拉锯战,IT部门不可能无限制地投入资源去追求极致的安全级别。

准入控制的实施过程是非常复杂的,是一个惊动全局的工程,因此,IT部门在上马准入时无不希望是一个循序渐进的过程,先从最基本的二层准入或三层准入开始,逐渐推进到设备健康状态检查等复杂的机制,这在准入项目的实施过程中尤其重要。

其次,准入控制的最终对象是企业内部的人员,而大部分企业往往已经具备了用户数据库,且用户的合法性以此数据库的实时数据为准,比如供人力部门使用的微软Active Directory。新的准入系统要能够方便地与原有数据库集成,特别是将准入系统内复杂的策略直接绑定到已有的用户帐号上。例如有的用户希望对PC机的MAC地址进行认证,而在原有的Active Directory内是没有MAC地址这一个字段的,且这个数据库的管理权不一定在IT部门手里,那么新添加的MAC地址信息如何同原有的用户帐号绑定,并实现帐号信息的定期自动更新就是一个挑战。

最后,准入控制系统一定要有一个清晰、简洁的管理流程和界面。

什么是完美的产品?

综上所述,一个优秀的准入控制技术方案需要具备以下特点:

1)可延续性

所谓可延续性是指采用的技术方案要具有长期的发展路线和支持力度,或者是被广泛应用的公开标准,或者是强大厂商的主流产品。准入机制一旦部署将延伸到网络的各个角落,并同企业今后的安全策略紧密结合起来,如果基础平台不稳定,后期变更将是迁一发动全局的麻烦事;

2)可用性

准入策略的顺利实施一定是以最终用户的接受为基础,因此,准入系统对最终用户的使用流程不能有太大的影响,要提供一个足够友好的用户体验;

3)灵活性

准入策略的内涵非常广泛,企业IT部门在实施时一定是一个逐渐完善的过程,为了应对这种需求,准入系统要具备一定灵活性,各个功能模块的实现不能有冲突;

4)整合性

准入系统要能够方便地同主流的企业数据库系统整合,并将安全策略绑定到相应的用户帐号之上,实现自动化的用户数据更新。

虚拟桌面的机会

网络环境的变化,带来的是访问方式的变化。一方面,网络准入技术开始快速发展,另一方面,很多人开始询问“是否一定需要在网络边界做这么严格的控制,还有没有其他方法?”。

也许是有的。

虚拟桌面在企业内部的应用开始逐渐铺开,员工对数据库的访问全部通过虚拟桌面完成,而硬件本身可能是一个简单的瘦客户端,不具备复杂的功能。在企业网络内部对虚拟桌面流量设置高优先级QoS策略,对其余流量以及网络接入采取从简的思路,在未来,这并非不会是一种解决方案。

总之,随着云计算、智能手机、WiFi等新应用的快速发展,传统的企业网络不得不开始主动变化,这种变化将如何发生,往哪里去,得出怎样的结果,现在都还不明晰,但有一点是明确的,那就是有意企业数据网络和安全的厂家现在就必须开始重视这股潮流,未雨绸缪,才能从容应对未来的新一代企业网络的发展。

(7个打分, 平均:3.29 / 5)

弯曲推荐:下一代互联网体系结构研究

(5个打分, 平均:4.60 / 5)

无锁编程简介

(1个打分, 平均:1.00 / 5)

云计算数据中心网络技术

Sorry to delete

(16个打分, 平均:4.25 / 5)

OpenFlow技术及应用模式发展分析

近来OpenFlow的话题比较多,INFOCOM上清华土著又给上了一课,就找了些资料学习了一下,顺带编写了这篇科普文章。感谢许多朋友在撰写过程中的帮助和启发,另外yeasy兄发在弯曲的系列文章也非常有价值。很喜欢LiveSec团队的开放心态,希望能帮他们的产品和理念做尽量广泛的传播。

原文发于《计算机世界》。顺带说下,最近要做NFGW的选题了,感兴趣的朋友来找我吧,Email和GTalk是hanxu0514 aT gmail dOt com。

4月10日至15日,第30届IEEE计算机通信国际大会 (INFOCOM 2011)在上海国际会议中心隆重举行。本次会议吸引了国内外1000多名计算机和通信领域的专家、学者和企业的科研人员到场,重点围绕云计算、网络安全、数据中心网络、移动互联网、物联网等一系列研究领域的前沿问题进行了深入的探讨。在倍受关注的现场展示环节中(Live Demo),来自清华大学信息技术研究院网络安全实验室的师生们展示了基于OpenFlow的网络安全管理系统LiveSec,引起了与会者的普遍关注。该系统的成功运行,是国内通信领域的研发团队对前沿技术跟踪、创新工作的完美诠释,在科研成果转化为可用产品的道路上占据了先机。

OpenFlow扬帆起航

OpenFlow技术最早由斯坦福大学提出,旨在基于现有TCP/IP技术条件,以创新的网络互联理念解决当前网络面对新业务产生的种种瓶颈,已被享有声望的《麻省理工科技评论》杂志评为十大未来技术。它的核心思想很简单,就是将原本完全由交换机/路由器控制的数据包转发过程,转化为由OpenFlow交换机(OpenFlow Switch)和控制服务器(Controller)分别完成的独立过程。转变背后进行的实际上是控制权的更迭:传统网络中数据包的流向是人为指定的,虽然交换机、路由器拥有控制权,却没有数据流的概念,只进行数据包级别的交换;而在OpenFlow网络中,统一的控制服务器取代路由,决定了所有数据包在网络中传输路径。OpenFlow交换机会在本地维护一个与转发表不同的流表(Flow Table),如果要转发的数据包在流表中有对应项,则直接进行快速转发;若流表中没有此项,数据包就会被发送到控制服务器进行传输路径的确认,再根据下发结果进行转发。

OpenFlow网络的这个处理流程,有点类似于状态检测防火墙中的快速路径与慢速路径的处理,只不过转发与控制层面在物理上完全分离。这也意味着,OpenFlow网络中的设备能够分布部署、集中管控,使网络变为软件可定义的形态。在OpenFlow网络中部署一种新的路由协议或安全算法,往往仅需要在控制服务器上撰写数百行代码。加州大学伯克利分校的Scott Shenker教授对此有着很到位的评价:“OpenFlow并不能让你做你以前在网络上不能做的一切事情,但它提供了一个可编程的接口,让你决定如何路由数据包、如何实现负载均衡或是如何进行访问控制。因此,它的这种通用性确实会促进发展。”

在得到学术界的普遍认可后,工业界也开始对这项新技术表达出浓厚的兴趣。OpenFlow已经在美国斯坦福大学、Internet2、日本的JGN2plus等多个科研机构中得到部署,网络设备生产商思科、惠普、Juniper、NEC等巨头也纷纷推出了支持OpenFlow的有线和无线交换设备,而谷歌、思杰等网络应用和业务厂商则已将OpenFlow技术用于其不同的产品中。就在半个月前,以OpenFlow为产品核心设计理念的初创企业Big Switch Networks成功完成了总额1375万美元的第一轮融资,标志着资本市场对这项新技术及其发展前景的充分认可。目前,OpenFlow的推广组织开放网络基金会(Open Networking Foundation)的成员基本涵盖了所有网络及互联网领域的巨头。

好用才是硬道理

使用新技术的代价往往十分高昂,好在OpenFlow具有足够的开放性,给在传统网络中的融合实现带来可能。清华大学信息技术研究院网络安全实验室在本届INFOCOM大会上现场展示的部署在清华大学信息楼内的LiveSec网络安全系统,就是一个非常好的范本。该系统在传统的以太网之上,通过无线接入技术和虚拟化技术引入了基于OpenFlow协议的控制层,显著降低了构建成本。

LiveSec网络安全系统包含三层架构:

  • 以太网交换层: LiveSec基于传统的以太网络进行物理交换,所有的执行OpenFlow协议的接入设备通过传统以太网互联。
  • OpenFlow控制层: LiveSec使用支持OpenFlow协议的虚拟交换机(Open vSwitch)和无线路由器构成接入网络层。OpenFlow控制层构成LiveSec的逻辑拓扑,并由LiveSec控制器进行集中控制。
  • 网络用户和服务节点: 网络用户通过无线路由器接入,服务节点通过虚拟交换机接入。所有接入流量在接入层受到LiveSec控制器的全局策略控制。

基于上述架构,LiveSec相对传统的安全部署模型具有多重优势。首先,该系统解决了安全设备的可扩展问题。通过全局细粒度的负载均衡,LiveSec支持安全设备在网络的任意位置进行增量式部署。新部署的节点会按照OpenFlow协议自行入网,并自动将控制权交由LiveSec控制器。所有的用户和服务节点均可在LiveSec网络内动态迁移,包括无线接入和虚拟机的无缝迁移。记者在展示现场尝试进行了基于虚拟机的服务节点动态加入网络的实验,当具有安全检测能力的虚拟机加入网络中时,LiveSec的可视化界面会显示出该虚拟机在网络中的拓扑及其具备的业务能力(如杀毒功能,协议识别功能等)。LiveSec控制器会依据新增节点的处理能力将需要安全处理的网络流量均衡到新的节点上,从可视化界面中也可以看到新增节点引起的链路流量变化。

传统网络中,安全设备一般被部署在边缘,对进出流量进行访问控制。这种方式虽然成熟有效,对内网中的安全问题却无能为力。LiveSec创新的交互式访问控制特性则能很好地解决这一难题,由于系统提供了安全节点到控制器的信息交换通路,并针对安全事件设计了一套信息交换协议,LiveSec可以根据安全节点传来的安全事件,在用户接入层实施访问控制。这意味着,该系统做到了全网的点到点安全控制,任何攻击流量在不离开接入交换机的情况下就被扼杀在萌芽状态,内网安全的顽疾可以从根本上得到解决。

在OpenFlow网络中,控制服务器管控着所有的数据流,又能实时感知其他节点的状态,为可视化提供了足够的基础。记者在展示中看到,LiveSec结合OpenFlow协议以及应用层业务识别服务节点,将网络中所有的拓扑、流量、应用、安全变化都按照统一格式写入中央数据库,并在动态界面中实现了包括当前状态及历史事件回放在内的全网业务可视化。当使用无线设备的用户通过OpenFlow无线路由器接入后,立即会显示在系统的可视化界面中。该用户上网所涉及的应用层协议,也会实时显示在用户图标一侧。当用户访问不良网站或者进行攻击时,图标上会出现红色警示,LiveSec也会依据安全策略在用户接入端实时阻止用户的部分或所有流量。历史回放功能也相当实用,可以回放特定时间段内LiveSec的所有事件,攻击发起者包括地理位置在内的所有信息均可以通过数据库查找获取。

图4. 在清华大学信息楼部署的LiveSec系统

商业模式定成败

虽然OpenFlow网络从根本上解决了传统网络存在的很多问题,却也因标准化过程刚刚起步,缺乏大众化的、实用的落地方案,至今仍然多被用于各类实验性质的网络。在其发展的道路上,势必还要经历扩大用户规模和商业模式创新两大阶段。而纵观近年来IT行业巨头们的发展情况,缔造一个成功的商业模式,其重要性显然远远超过了技术创新。

在记者看来,LiveSec在某些技术以外环节上的创新,对OpenFlow的推广有着十分积极的意义。该系统将传统安全网关的数据平面拓展到整个网络之中,以全网内的OpenFlow交换设备作为数据转发平面。并且为了保证可扩展性并降低成本,保留了传统的以太网交换设备,仅通过引入支持OpenFlow协议的接入层网络来实现逻辑拓扑的全网可控。这意味着,有着一定研发能力的用户可以利用廉价的硬件平台和开源软件,自行搭建低成本的OpenFlow网络。据LiveSec团队负责人亓亚烜博士介绍,该校信息楼内实验网络的建设大量采用了传统的以太网交换机和无线接入点,OpenFlow控制层则由运行着开源的Open vSwitch模块的电脑和支持OpenFlow协议的第三方无线接入点固件DD-WRT实现,从而建立了一个低成本、高性能的OpenFlow网络。

未来的数据中心网络越来越趋向于由虚拟机和服务器群所组成,数据中心的交换架构则趋向扁平,使用高性能交换机群组或clos 网络甚至可以支持百万个节点的无阻塞互联。在这种情况下,网络服务质量及高可用性成为用户最为关心的问题。以LiveSec为代表的基于OpenFlow的网络操作系统支持网络设备的分布式部署,有效避免了单点失效问题。控制服务器的分布式部署,则可以利用分布式哈希技术同步全网拓扑和策略。当网络出现局部故障时,系统可以利用OpenFlow协议迅速构建全新的互联拓扑,甚至可以为不同的业务和应用分别构建不同的拓扑,以满足安全和服务质量的需求。这又是新的商业机会,试想一下,在OpenFlow网络的支持下,IaaS提供商可以为用户交付一个独一无二的网络,用户甚至可以自行设定数据流在本网内的路径和安全策略,而不仅仅是几个虚拟设备的控制权。

从系统实现模式的角度看,LiveSec的模式是构建网络操作系统(基于开源项目Nox),这个发展方向已经被许多业内人士所认同。不管对象是桌面还是网络,操作系统存在的根本意义都是管理设备和提供编程接口。众所周知,想发挥一块高性能显卡的处理能力,必须先安装该硬件的驱动。基于OpenFlow的网络操作系统也是如此,仍以LiveSec为例,所有OpenFlow交换设备和安全服务节点都可看作网络系统中的硬件设备,安全业务的实现则通过服务节点上的软件完成。当新的服务节点加入网络时,LiveSec控制器首先要知道这个节点能处理什么业务,以及如何与设备建立通信机制,才能让安全处理的执行者和决策者有效地互动起来。出于商业层面的考虑,这种机制的建立往往由服务提供者主动告知控制器,需要一个与电脑安装硬件驱动十分相似的过程。对网络管理者来说,这个步骤简化了部署及使用难度;而对设备制造商而言,这种方式也有利于将现有针对传统网络的产品快速移植到OpenFlow网络中。

受当前流行的运营模式影响,基于OpenFlow的网络操作系统也在加入更多的应用发行元素。当用户在控制台中添加服务如同在App Store获取应用般便捷时,OpenFlow网络的建设必然会步入高速发展阶段。实际上,这种发行模式与当前许多云安全服务的商务模式是可以无缝对接的,为云安全的落地提供了绝佳的渠道。以抗DDoS需求为例,在用户购买对象大量地由专用设备转向清洗服务的今天,供应商可以通过系统内置的发行体系为用户提供自助服务,然后按次数或处理能力收取费用;用户完全不必考虑现实中令人头疼的部署问题,只需通过“软件商店”下载安装相应服务,就能为OpenFlow网络添加抗DDoS的能力。

(8个打分, 平均:4.38 / 5)

3-D and III-V Transistors will be mass production,Moore’s Law Will Go on

Intel宣布革命性3-D晶体管 22nm Ivy Bridge尝鲜

摘要:5月4日,英特尔宣布在晶体管发展上取得了革命性的重大突破–被称为三栅极(Tri-Gate)的世界上首款3-D晶体管进入生产技术阶段。使用3-D三栅极晶体管的22纳米英特尔芯片(代号为Ivy Bridge)将在2011年底进行批量生产。

标签:英特尔  3-D三栅极晶体管 Ivy Bridge

5月4日,英特尔宣布在晶体管发展上取得了革命性的重大突破–被称为三栅极(Tri-Gate)的世界上首款3-D晶体管进入生产技术阶段。使用3-D三栅极晶体管的22纳米英特尔芯片(代号为Ivy Bridge)将在2011年底进行批量生产。

3-D三栅极晶体管续写摩尔神话

晶体管是现代电子设备的基石。自五十多年前硅晶体管发明以来,我们使用的一直是2-D平面晶体管。3-D三栅极晶体管则代表着晶体管结构的根本性转变:传统”扁平的”2-D平面栅极被超级纤薄的、从硅基体垂直竖起的3-D硅鳍状物所代替。电流控制是通过在鳍状物三面的每一面安装一个栅极而实现的(两侧和顶部各有一个栅极),而不像2-D平面晶体管那样,旨在顶部有一个栅极。更多的控制可以使晶体管在”开”的状态下让尽可能多的电流通过(为了获得更高性能),而在”关”的状态下尽可能让电流接近零(为了获得更低能耗),同时实现在这两种状态之间的迅速切换(也是为了获得更高性能)。

32nm平面与22nm立体对比

22nm 3-D Tri-Gate晶体管结构简图

就象通过盖高楼大厦而获得更多使用空间一样,这种3-D三栅极晶体管结构提供了一种管理晶体管密度的方式。由于这些鳍状物本身是垂直的,晶体管也可以更加紧密地封装起来。而且,未来设计师还可以不断增加鳍状物的高度,从而获得更高的性能和能效。

Intel声称,与32纳米平面晶体管相比,22纳米3-D 三栅极晶体管可带来最多37%的性能提升,而且同等性能下的功耗减少一半,这意味着它们更加适合用于小型掌上设备。

很多人都听说过著名的摩尔定律,即晶体管密度大约每18个月便会增加一倍,同时其功能和性能将提高,成本则会降低。40年来,摩尔定律已经成为半导体行业的基本商业模式。然而,随着处理器制程的不断提高,延续摩尔定律也变得越来越困难。

事实上,英特尔的科学家早在2002年就发布了三栅极晶体管设计,接着是单鳍片晶体管展示(2002年)、多鳍片晶体管展示(2003年)、三栅极SRAM单元展示(2006年)、三栅极后栅极(RMG)工艺开发(2007年),直至今日方才真正成熟。这一突破的关键之处在于,Intel可将其用于大批量的微处理器芯片生产流水线,而不仅仅停留在试验阶段。摩尔定律也有望继续保持活力。

不过,在英特尔高级院士马博(Mark Bohr)看来:”3-D三栅极晶体管实现了前所未有的性能提升和能耗节省,这一里程碑的意义要比单纯跟上摩尔定律的步伐更深远。低电压和低电量的好处,远远超过我们通常从一代制程升级到下一代制程所得到的好处。它将让产品设计师能够更加灵活地将现有设备创新的更智能,并且有可能开发出全新的产品。”

ARM王位难保?

在记者看来, 尽管3-D 三栅极晶体管在性能上实现了惊人的37%的提升,但其在能耗上的提升,可能对英特尔的未来的影响更深远,甚至可能改变整个移动互联处理器市场格局。

当前,在手持设备和平板电脑处理器领域,ARM占据了90%的市场,可谓当之无愧的老大,而ARM芯片的主要优势就是低能耗。英特尔一直借凌动处理器来进攻该市场,但效果并不是特别理想。主要的理由也就是能耗逊色于ARM芯片。如今,3-D 三栅极晶体管实现了前所未有的低能耗,势必对ARM芯片的王者地位造成巨大挑战。在发布会现场,记者曾经向英特尔半导体(大连)有限公司柯必杰(kirby Jefferson)求证过基于3-D 三栅极晶体管的22奈米芯片与ARM芯片之间能耗孰优孰劣的问题。柯必杰回答说:”我还不能给你具体数据,但我们英特尔内部有实验比对数据,我只能说我们的处理器无论是性能还是能耗都有极大的优势。”

不过,英特尔表示,会优先生产基于3-D 三栅极晶体管的服务器和台式机芯片。柯必杰表示那毕竟是目前英特尔的主要领域,无疑,3-D 三栅极晶体管将使得英特尔在22纳米甚至14纳米时代保持巨大的领先优势。

可以预见的是,不久的将来,我们将迎来更轻更薄更高性能也更加环保的各种电子设备。总之,这将又是一场可能影响我们整个社会的技术革命。

本文转载自企业级IT信息服务平台-网界网-CNW.com.cn
原文地址:http://www.cnw.com.cn/server-x86/htm2011/20110505_224000_2.shtml

更多图片见:http://tech.163.com/digi/11/0505/10/739JUKFF00162OUT_2.html

(1个打分, 平均:5.00 / 5)

谁才是真正的Scale-Out?

本文摘自即将于2011年4月份出版的《大话存储2》的第15章-集群存储系统,著作权所有,转载请注明出处与作者

IBM自从亮相了XIV之后,EMC接着出了V-Max,接着HDS也推出了VSP。这三者都宣称自己是Scale-Out架构,在业界也引发了一些讨论,有人认为只有XIV才是真正的Scale-Out,而V-Max与VSP则不算Scale-Out。对于这个问题,我是这么看的。

大家知道服务器多CPU架构变迁过程,一开始是单CPU,后来发展到双CPU或者多CPU的SMP架构,也就是多CPU共享相同的内存、总线、操作系统等资源,每个CPU访问全局内存任何地址耗费的时间都是相等的。还有一类AMP架构,即不同CPU做的事情是不同的。但是由于共享访问冲突,SMP架构扩展性-效率曲线已经达到瓶颈。为了消进一步提高CPU数量的同时保证效率,NUMA架构出现了,也就是将多个SMP进行松一点的耦合,多个SMP之间通过CrossBar Switch高速交换矩阵互联,每个SMP都有各自自己的内存,一个SMP内部的CPU访问自己的内存时与之前没什么两样,但是要访问其他SMP处的内存,就需要走交换矩阵,导致延迟增加,所以,NUMA通过牺牲了内存访问的时延来达到更高的扩展性,比如可以将数百个CPU组成NUMA架构。SMP和NUMA架构对于软件程序方面的影响不大,同一台主机内都使用单一操作系统。但是由于NUMA访问远端内存时的时延问题,导致NUMA架构下的效率也不能随着CPU数量的增加而线性增长,只是比SMP要好罢了。此时,MPP架构就出现了。MPP可以说已经与CPU已经关系不大了,MPP说白了就是将多台独立的主机使用外部网络来组成一个集群,显然MPP架构下,每个节点都有各自的CPU、内存、IO总线和操作系统,属于最送的耦合,而且运行在MPP集群中的软件程序的架构也需要相应改变,变为大范围并行化,并尽量避免节点之间的消息传递。由于软件程序发生了变化,那么MPP的效率随节点数量的增长就可以呈线性关系了。其实,如果在NUMA架构下,软件也可以避免尽量少读取远端内存的话,那么NUMA效率也会线性增长,但是NUMA架构下的操作系统仍然是同一个,内存仍然是全局均匀的,而程序架构又尽量保持不变,那么就不可避免的时不时访问远端内存了。MPP相当于把内存强制分开,把操 作系统强制分开,把程序架构也强制改变从而保持海量计算下的效率线性增长。

那么再说回到存储系统。与服务器CPU架构演进相同,可以把存储系统的控制器类比为CPU,而后端磁盘柜类比为一条条的内存。一开始的单控,后来的双控互备份(传统双控存储),一直到双控并行处理(目前只有HDS的AMS2000存储系统为双控并行架构),到这个阶段就类似于AMP(双控互备)和SMP(双控并行)架构,后来则有多控并行对称处理架构,Oracle的RAC集群也可以视作一种多点SMP,各种共享底层存储的集群文件系统及基于这种文件系统所构建的存储系统也属于多点对称SMP。同属多点对称SMP架构的还有华为赛门铁克的VIS以及S8100和N8000存储系统。

同样,由SMP到NUMA的过度也出现在了存储系统中,比如EMC的V-Max,相当于多个SMP(一对控制器组成一个Director等价于一个SMP矩阵)利用高速交换矩阵(RapidIO)来共享访问每个SMP上掌管的内存。

由NUMA到MPP的过度一样也出现在存储系统中,IBM的XIV就属于松耦合MPP架构,多个节点之间彻底松耦合,各自都有各自的CPU/内存/总线/磁盘/IO接口,使用外部以太网交换机,使用TCPIP协议互相通信。而HDS的VSP则更像是一个紧耦合的MPP,MPP对软件架构变化很大,所以传统存储厂商很难将之前的架构演变到MPP上来。另外一种属于MPP架构的存储系统就是各种分布式文件系统(注意,并非共享存储的集群文件系统)。

至于谁才是真正的Scale-Out,这个是个无定论的问题了。SMP/NUMA/MPP其实都算Scale-Out,只不过程度和形态都不同罢了。有人说MPP才是真正的Scale-Out,可能是基于MPP流行的原因。但是不能一概而论。MPP架构的存储,例如XIV,由于特定场景下,由于单路IO就可能导致整个MPP集群中的磁盘资源全部牵动(每磁盘同一时刻只能执行一个IO),在多路大块连续IO并发的情况下,反而效率很差(比如多流大块连续地址IO);而某些特定场景下,多路IO之间牵制很少,则表现出线性增长的性能(比如小块高随机IO)。这也可以类比为将一个程序并行分解成多个执行颗粒(类比为高随机IO),颗粒间的关联性越少,则并行执行的效率越高,一个道理,所以MPP自身为Share-Nothing架构,那么运行在它上面的程序颗粒之间最好也Share-Nothing。SMP、NUMA和MPP各有各的好处,也各有各的应用场景。比如SMP适用于扩展性要求不太高而又不想对程序改变太大的场景,而MPP则使用海量数据下的高扩展性需求场景,需要对程序有较大改变才能获得良好性能。同样对于存储也是这样,比如一旦决定用MPP架构的存储,那么就需要面对多流大块连续IO场景下性能不佳以及效率-扩展曲线的线性不佳这2个事实。或者你去修改上层应用,将大块连续IO改为高随机IO,而这显然荒唐。并且为了适应存储去修改应用,这一般是不可能被接受的。而MPP架构却被广泛用于互联网运营商的底层Key-Value分布式数据库,其高随机小块读访问场景下能获得巨量的性能以及线性的效率-扩展曲线。

本文摘自即将于2011年4月份出版的《大话存储2》的第15章-集群存储系统,著作权所有,转载请注明出处与作者

(3个打分, 平均:3.00 / 5)

NOX – 现代网络操作系统

[注]本系列前面的三篇文章中,介绍了软件定义网络(SDN)的基本概念和相关平台。按照SDN的观点,网络的智能/管理实际上是通过控制器来实现的。本篇将介绍一个代表性的控制器实现——NOX。

现代大规模的网络环境十分复杂,给管理带来较大的难度。特别对于企业网络来说,管控需求繁多,应用、资源多样化,安全性、扩展性要求都特别高。因此,网络管理始终是研究的热点问题。

从操作系统到网络操作系统

早期的计算机程序开发者直接用机器语言编程。因为没有各种抽象的接口来管理底层的物理资源(内存、磁盘、通信),使得程序的开发、移植、调试等费时费力。而现代的操作系统提供更高的抽象层来管理底层的各种资源,极大的改善了软件程序开发的效率。

同样的情况出现在现代的网络管理中,管理者的各种操作需要跟底层的物理资源直接打交道。例如通过ACL规则来管理用户,需要获取用户的实际IP地址。更复杂的管理操作甚至需要管理者事先获取网络拓扑结构、用户实际位置等。随着网络规模的增加和需求的提高,管理任务实际上变成巨大的挑战。

而NOX则试图从建立网络操作系统的层面来改变这一困境。网络操作系统(Network Operating System)这个术语早已经被不少厂家提出,例如Cisco的IOS、Novell的NetWare等。这些操作系统实际上提供的是用户跟某些部件(例如交换机、路由器)的交互,因此称为交换机/路由器操作系统可能更贴切。而从整个网络的角度来看,网络操作系统应该是抽象网络中的各种资源,为网络管理提供易用的接口。

实现技术探讨

模型

NOX的模型主要包括两个部分。

一是集中的编程模型。开发者不需要关心网络的实际架构,在开发者看来整个网络就好像一台单独的机器一样,有统一的资源管理和接口。

二是抽象的开发模型。应用程序开发需要面向的是NOX提供的高层接口,而不是底层。例如,应用面向的是用户、机器名,但不面向IP地址、MAC地址等。

通用性标准

正如计算机操作系统本身并不实现复杂的各种软件功能,NOX本身并不完成对网络管理任务,而是通过在其上运行的各种“应用”(Application)来实现具体的管理任务。管理者和开发者可以专注到这些应用的开发上,而无需花费时间在对底层细节的分析上。为了实现这一目的,NOX需要提供尽可能通用(General)的接口,来满足各种不同的管理需求。

架构

组件

下图给出了使用NOX管理网络环境的主要组件。包括交换机和控制(服务)器(其上运行NOX和相应的多个管理应用,以及1个Network View),其中Network View提供了对网络物理资源的不同观测和抽象解析。注意到NOX通过对交换机操作来管理流量,因此,交换机需要支持相应的管理功能。此处采用支持OpenFlow的交换机。

操作

流量经过交换机时,如果发现没有对应的匹配表项,则转发到运行NOX的控制器,NOX上的应用通过流量信息来建立Network View和决策流量的行为。同样的,NOX也可以控制哪些流量需要转发给控制器。

多粒度处理

NOX对网络中不同粒度的事件提供不同的处理。包括网包、网流、Network View等。

应用实现

NOX上的开发支持Python、C++语言,NOX核心架构跟关键部分都是使用C++实现以保证性能。代码可以从http://www.noxrepo.org获取,遵循GPL许可。

系统库

提供基本的高效系统库,包括路由、包分类、标准的网络服务(DHCP、DNS)、协议过滤器等。

相关工作

NOX项目主页在http://noxrepo.org

其他类似的项目包括SANE、Ethane、Maestro、onix、difane等,有兴趣的同学可以进一步研究参考。

(4个打分, 平均:5.00 / 5)

弯曲评论荣誉推荐–颜开 。《NOSQL数据库笔谈》

综观Google,Facebook,Twitter,似乎都抛弃了经典的SQL数据库。为什么?其中的技术原因是什么?

为什么说SQL更适合Transaction Based的Enterprise服务,但不适合Web 3.0, Social Network的服务?

弯曲评论隆重推出颜开同学的《NOSQL数据库笔谈》【点击下载PDF文件】


日前国内没有一套比较完整的NoSQL数据库资料,有很多先驱整理发表了很多,但不是很系统。不材
尝试着将各家的资料整合一下,并书写了一些自己的见解。
本书写了一些目前的NoSql的一些主要技术,算法和思想。同时列举了大量的现有的数据库实例。读完
全篇,相信读者会对NoSQL数据库了解个大概。
另外我还准备开发一个开源内存数据库galaxydb.本书也是为这个数据库提供一些架构资料。
思想篇
CAP,BASE和最终一致性是NoSQL数据库存在的三大基石。而五分钟法则是内存数据存储了理论依
据。这个是一切的源头。

——————-
请下载:《NOSQL数据库笔谈》

(5个打分, 平均:5.00 / 5)

Mininet – “懒惰”网络研究者的福音

【摘要】在本系列前两篇文章里,我们分别介绍了软件定义网络的两大利器——OpenFlow和Open vSwitch。不少研究者可能很有兴趣尝试一下,却拿不出太多的时间。本文将介绍一套强大的轻量级网络研究平台——mininet,通过它相信大家可以很好地感受到软件定义网络的魅力。

概述篇

作为研究者,你是否想过,在自己的个人笔记本上就可以搭建一套媲美真实硬件环境的复杂网络,并轻松进行各项实验?无论是用专业级的硬件实验平台,还是用传统的虚拟机,都显得太过昂贵,且十分不方便进行操作。如果你有类似的需求,不妨试试mininet,绝对是“懒惰”却又追求效率的研究人员的福音。
stanford大学Nick McKeown的研究小组基于Linux Container架构,开发出了这套进程虚拟化的平台。在mininet的帮助下,你可以轻易的在自己的笔记本上测试一个软件定义网络(software-defined Networks),对基于Openflow、Open vSwitch的各种协议等进行开发验证,或者验证自己的想法。最令人振奋的是,所有的代码几乎可以无缝迁移到真实的硬件环境中,学术界跟产业界再也不是那么难以沟通了。想想吧,在实验室里,一行命令就可以创建一个支持SDN的任意拓扑的网络结构,并可以灵活的进行相关测试,验证了设计的正确后,又可以轻松部署到真实的硬件环境中。
mininet作为一个轻量级软定义网络研发和测试平台,其主要特性包括
  • 支持Openflow、OpenvSwitch等软定义网络部件
  • 方便多人协同开发
  • 支持系统级的还原测试
  • 支持复杂拓扑、自定义拓扑
  • 提供python API
  • 很好的硬件移植性(Linux兼容),结果有更好的说服力
  • 高扩展性,支持超过4096台主机的网络结构

实战篇

获取镜像

官方网站已经提供了配置好相关环境的基于Debian Lenny的虚拟机镜像,下载地址为http://openflowswitch.org/downloads/OpenFlowTutorial-081910.vmware.zip,压缩包大小为700M左右,解压后大小为2.1G左右。虚拟机镜像格式为vmware的vmdk,可以直接使用vmware workstation或者virtualbox等软件打开。如果使用QEMU和KVM则需要先进行格式转换。后面我们就以这个虚拟os环境为例,介绍mininet的相关功能。

登录镜像

默认用户名密码均为openflow,建议通过本地利用ssh登录到虚拟机上使用(可以设置自动登录并将X重定向到本地),比较方便操作。

简单测试

创建网络

mininet的操作十分简单,启动一个小型测试网络只需要下面几个步骤。
登录到虚拟机命令行界面,打开wireshark,使其后台运行, 命令为sudo wireshark &
启动mininet,命令为sudo mn,则默认创建如下图所示的网络拓扑。
此时进入以mininet>引导的命令行界面
好了,从现在开始,我们就拥有了一个1台控制节点(controller)、一台交换(switch)、两台主机(host)的网络,并且用wireshark进行观测。下面进行几项简单的测试。

查看信息

查看全部节点:
mininet> nodes
available nodes are:
c0 h2 h3 s1
查看链路信息:
mininet> net
s1 <-> h2-eth0 h3-eth0
输出各节点的信息:
mininet> dump
c0: IP=127.0.0.1 intfs= pid=1679
s1: IP=None intfs=s1-eth1,s1-eth2 pid=1682
h2: IP=10.0.0.2 intfs=h2-eth0 pid=1680
h3: IP=10.0.0.3 intfs=h3-eth0 pid=1681
对节点进行单独操作
如果想要对某个节点的虚拟机单独进行命令操作,也十分简单,格式为 node cmd。例如查看交换机s1上的网络信息,我们只需要在执行的ifconfig命令前加上s1主机标志即可,即 s1 ifconfig,同样,如果我们想用ping 3个包的方法来测试h2跟h3之间连通情况,只需要执行 h2 ping -c 3 h3 即可。得到的结果为
mininet> h2 ping -c 3 h3
PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data.
64 bytes from 10.0.0.3: icmp_seq=1 ttl=64 time=7.19 ms
64 bytes from 10.0.0.3: icmp_seq=2 ttl=64 time=0.239 ms
64 bytes from 10.0.0.3: icmp_seq=3 ttl=64 time=0.136 ms
— 10.0.0.3 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2006ms
rtt min/avg/max/mdev = 0.136/2.523/7.194/3.303 ms
在本操作执行后,可以通过wireshark记录查看到创建新的流表项的过程,这也是造成第一个ping得到的结果偏大的原因。更简单的全网络互ping测试命令是pingall,会自动所有节点逐对进行ping连通测试。

常用功能

快捷测试

除了cli的交互方式之外,mininet还提供了更方便的自动执行的快捷测试方式,其格式为sudo mn –test cmd,即可自动启动并执行cmd操作,完成后自动退出。
例如 sudo mn –test pingpair,可以直接对主机连通性进行测试,sudo mn –test iperf启动后直接进行性能测试。用这种方式很方便直接得到实验结果。

自定义拓扑

mininet提供了python api,可以用来方便的自定义拓扑结构,在mininet/custom目录下给出了几个例子。例如在topo-2sw-2host.py文件中定义了一个mytopo,则可以通过–topo选项来指定使用这一拓扑,命令为
sudo mn –custom ~/mininet/custom/topo-2sw-2host.py –topo mytopo –test pingall

使用友好的mac编号

默认情况下,主机跟交换机启动后分配的MAC地址是随机的,这在某些情况下不方便查找问题。可以使用–mac选项,这样主机跟交换机分配到的MAC地址跟他们的ID是一致的,容易通过MAC地址较快找到对应的节点。

使用XTerm

通过使用-x参数,mn在启动后会在每个节点上自动打开一个XTerm,方便某些情况下的对多个节点分别进行操作。命令为
sudo mn -x
在进入mn cli之后,也可以使用 xterm node 命令指定启动某些节点上的xterm,例如分别启用s1跟h2上的xterm,可以用
xterm s1 h2

链路操作

在mn cli中,使用link命令,禁用或启用某条链路,格式为 link node1 node2 up/down,例如临时禁用s1跟h2之间的链路,可以用
link s1 h2 down

名字空间

默认情况下,主机节点有用独立的名字空间(namespace),而控制节点跟交换节点都在根名字空间(root namespace)中。如果想要让所有节点拥有各自的名字空间,需要添加 –innamespace 参数,即启动方式为 sudo mn –innamespace

其他操作

执行sudo mn -c会进行清理配置操作,适合故障后恢复。

总结篇

除了使用mn命令进行交互式操作以外,mininet最为强大之处是提供api可以直接通过python编程进行灵活的网络实验。在mininet/example目录下给出了几个python程序的例子,包括使用gui方式创建拓扑、运行多个测试,在节点上运行sshd,创建多个节点的tree结构网络等等。运行这些程序就可以得到令人信服的结果,而且这些程序大都十分短小,体现了mininet平台的强大易用性。
另外,限于篇幅,本文仅对mininet做了较简略的介绍,更全面的版本可以从这里找到。此外,也建议有兴趣做深入研究的朋友通过阅读参考文献,进一步了解更多有趣内容。
参考
<1> A Network in a Laptop : Rapid Prototyping for Software-Defined Networks, Bob Lantz,  Brandon Heller, Nick Mckeown, ACM Hotnets 2010;
(2个打分, 平均:4.50 / 5)