system: [SYSTEM]

user: 2. 相关技术研究 2.1. 网络访问控制技术 访问控制技术的提出最早源于70年代，起初的目的是为了解决对大型主机系统上共享数据的访问进行授权和有效管理 [ 5 ]。随着计算机技术的不断发展，网络的应用在各个领域都占据了重要地位，信息系统的安全性让访问控制技术的思想和方法得到了迅速的推广和应用。在这些年的发展过程中，访问控制技术得到了不断的完善，也先后出现了多种形式的访问控制技术，但它们的目的是一致的，都是为了防止未授权用户对网络的非法访问，同时也合法用户对系统资源的非法使用。访问控制通常以对用户的身份认证为基础，在身份认证的基础上实施各种访问控制策略从而达到对合法用户的使用规范和控制。在ISO [ 6 ] (International Organization for Standardization)国际标准化组织的网络安全体系设计标准ISO-7498-2中定义了五大安全服务功能。即身份认证服务、访问控制服务、数据保密服务、数据完整性服务、不可否认服务。访问控制服务作为其中的五大服务之一，在整个网络安全体系中具有非常重要的作用，它不仅可以限制用户对关键资源的访问，而且通过对访问的限制防止非法用户的入侵，避免因合法用户在使用中使用不当和非法操作对系统造成破坏。 2.1.1. 相关概念 网络访问控制作为网络安全体系中必不可少的一个环节，是网络安全和防范的重要策略。有效的网络访问控制能对网络资源起到很好的保护作用，一方面使网络资源只对已授权的合法用户进行开放，合法用户在使用中之能按照授予的权限进行资源的访问和获取；另一方面通过访问控制权限来阻止非法用户的入侵，给网络资源和网络系统造成破坏。首先介绍一下网络访问控制的相关概念。 ● 网络访问控制的主要目标和任务：顾名思义，网络访问控制的目标是为了保护网络资源合法访问和使用，使网络资源保持完整和安全；其主要任务是防止未经授权的访问窃取和破坏网络资源。 ● 网络访问控制的客体：即需要访问的对象，通常也称为目标客体，主要是指网络中需保护的网络资源。如网络中的数据信息、重要的程序进程和各种网络服务等，这些都可以称之为客体。 ● 网络访问控制的主体：通常指一个网络实体，可以主动对网络客体进行访问，网络主体可以是一个用户，也可以是一段程序。 ● 网络访问控制的授权：是指网络主体访问网络客体之前，授予网络主体访问的权限，从而网络主体可以访问相应的网络资源。 2.1.2. 入网访问控制技术 入网访问控制是网络访问控制的重要手段和技术，也是网络访问控制的第一步，其主要目的是对用户的登录进行控制，有效的控制用户的入网方式和时间等。入网访问控制通常包括三个方面：即对用户的用户名进行识别和验证、用户的口令进行识别和验证、以及用户账户的缺省限制检查。所有用户在入网前必须要通过以上三个步骤，用户方可成功接入网络。对用户的用户名和口令验证是入网的第一道关卡，用户在入网时需要进行用户信息的注册，用户在登录时输入相应的用户名和密码，服务器会对用户所输入的验证信息进行验证。首先将对用户的用户名进行验证，只有用户名验证通过后，服务器才会进一步操作，对用户的口令进行验证；验证不通过服务器将拒绝用户的入网访问请求。在整个入网过程中，网络管理员能够对一般用户的账号使用情况进行管控，如用户访问网络的时间、方式等，而用户名以及用户的个人账号构成了计算机系统最基本的安全形式。系统管理员建立相应的用户账号，而用户的口令是用户访问网络的钥匙，是用户访问网络的关键，如同人的身份证件一样。当用户的用户名和口令全部验证通过后，服务器将会进行用户账号的缺省限制检查，网络不仅需要控制用户入网的站点，而且能够对用户的入网时间以及用户访问入网的工作站数量进行限制。此外，网络应该对所有用户的访问进行审查，如果用户在验证时口令多次输入错误，则判定该用户为非法入侵，应该给予用户相应的报警信息。 2.2. SDN技术 2.2.1. SDN基本架构 SDN是针对传统网络的弊端设计时所提出的一个概念，同时也是一种全新的网络架构 [ 7 ]。在传统网络中，网络的传输都是基于网络设备，网络设备在设计时通常依赖市场所需，为了提高生产效率，通常采用集成的设计方式。交换机和控制器是传统网络所必备的设备，他们在设计时都采用了传统的大规模集成设计而成，在设备的性能上存在很大的局限，用户对于网络设备只限于操限性，无法对网络设备进行控制，这对于用户的使用和网络的发展带来很多弊端。与传统网络不同，SDN网络实现了控制与转发的分离。在这种架构下，交换机只负责对数据进行转发，而对数据的控制主要交于控制层面负责，因此网络的整体效率不受网络设备性能的影响。且SDN最突出的优点是控制层面具有可编程性，使得整个的网络结构中，上层应用和底层的网络设备之间的通信，可以通过软件编程的形式来实现，网络将变得更加灵活和便捷。ONF [ 8 ] 是一家致力于SDN研究的组织机构，长期以来一直从事对SDN的研究工作， ONF可以说是当前所有从事SDN研究机构中最大的一个，ONF所提出的SDN架构非常具有代表性，是目前所提出的SDN架构中比较经典的代表。在此阐述一下ONF所提出的SDN架构，具体如图1所示： 图1. SDN基本架构 ONF所提出的SDN经典架构如上图所示，它将SDN分成了三个层级结构，分别为应用层、控制层和基础设施层。 ● 应用层：应用层位于最上一层，应用层存在不同的应用和业务，分布着大量的应用软件，可以通过对应用程序接口的调用，并结合现实业务的需求来实现相应的程序。如网络的运行情况、网络安全、负载均衡以及对网络性能的管理和监测等很多功能和服务都是通过软件应用程序的方式来体现的。 ● 控制层：控制层位于中间层，控制器是控制层的主要构成部件，主要功能是实现对数据平面的资源进行合理的编排，查看并维护网络的拓扑信息等。在SDN网络中可以存有多个控制器，一个控制器可以连接多个设备并对设备进行控制。控制器在SDN网络中相当于一个平台，对下可以与SDN交换机进行会话，对上可以提供应用程序的编程接口。 ● 基础设施层：最下层为基础设施层，基层设施层通常由SDN交换机和OpenFlow协议所组成，主要功能是负责数据的处理、转发和状态收集。 2.2.2. OpenFlow交换机 作为OpenFlow网络的核心部件，OpenFlow交换机是构成OpenFlow网络的重要组件之一 [ 9 ]。OpenFlow交换机通常由三个部分组成：即流表、安全通道和OpenFlow协议。OpenFlow交换机与传统的交换机在功能有所区别，即OpenFlow交换机只负责对数据的转发。在本文中采用的是OpenvSwitch软件交换机，在此对该交换机进行介绍。 OpenvSwitch (OVS) [ 10 ] 是目前SDN网络中应用较多的一款虚拟机，遵守Apache2.0许可证，它是基于软件来实现其功能的。OVS的设计是根据OpenFlow而制定的，OVS是一款开源的多平台化的虚拟交换机，支持OpenFlow协议，与控制器密切相连。如果控制器同样支持OpenFlow协议，用户可以在操作时使用该类型的控制器对OVS进行远程管控。顾名思义，虚拟交换机在进行数据交换时使用的是虚拟平台，其主要部件是通过软件的形式来构成的。OVS虽然是虚拟交换机，与传统的物理交换机有所不同，但在工作原理上相类似。在具体实现中，虚拟机分别与计算机中的物理网卡和对应的虚拟网卡相连接，在进行数据转发时，主要通过虚拟机链路来实现，而虚拟机链路与数据所携带的MAC地址相对应。其具体工作原理如图2所示： 图2. 虚拟交换机工作原理图 当数据包发出后，数据包首先要通过虚拟网卡，虚拟网卡是根据虚拟机而配置的，数据包通过虚拟网卡后，数据包将被转发至虚拟交换机。OVS交换机是根据OpenFlow而设定的，OpenFlow对其提供了支持能力，当数据包到达OVS交换机后，因为OVS交换机自身保存了相应的流表，所以首先会对数据包进行本地流表的查找匹配。如果发现相应的流表匹配，对数据包的处理将会依据流表所对应的指令来进行操作；如果没有相应的匹配项，OVS交换机将会把数据包发送至控制器，由控制器进行处理，控制器将根据数据包的有效数据来制定相应的流表，并将流表下发至交换机。同样，数据包的转发可以通过物理网卡，因为OVS交换机的一端与物理网卡相连，如需通过物理网卡进行转发，则只需将数据包发送至物理网卡上，最终转发给外部与计算机物理网卡相连的网络设备上。 2.2.3. SDN控制器 控制器是整个SDN网络架构中的核心组件，在SDN网络中，控制器也被称为一个小型的网络操作系统(Network Operations System NOS)，网络管理者可以通过控制器提供的编程接口来实现对网络的监控和管控。随着OpenFlow协议在SDN网络中日益成熟的应用，OpenFlow控制器作的SDN网络的核心作用越来越明显，近两年来，OpenFlow控制器的发展也是非常迅速，市场上出现的控制器的种类也是十分的多样，如大家最早开始使用的NOX/POX控制器，都很好的支持了OpenFlow协议，也成为开发其他控制器的参考依据。在专业领域中广泛使用的控制器软件有OpenDaylight控制器，Floodlight控制器，ONOS控制器以及Ryu控制器，前三款都是基于Java语言进行开发设计并实现的，主要应用于商用领域；而Ryu控制器软件是基于Python语言开发的，主要应用在学术领域的研究工作中。本文采用了Ryu控制器，在此对Ryu控制器进行一些相关的介绍。 Ryu是日本NTT公司主导开发的开源项目，其字面意思是日语中“Flow”的意思。Ryu调度目标是提供一个拥有逻辑上集中控制能力的SDN操作系统，该系统具有设计完备的API接口，使网络应用者能够便捷的创建新的管理和控制应用。Ryu用python语言编写，完全遵守Apache许可证，能够支持v1.0、v1.2、v1.3等多个版本的openflow协议。Ryu架构和SDN架构非常契合。控制层主要提供控制能力，通过北向接口的Rest API为SDN apps提供服务，供SDN apps调度和控制流量和网络。通过南向接口的Openflow等协议控制openflow交换机，完成流量交互。其中Ryu控制层起到了承上启下的作用，是北向接口的控制和交换中枢。Ryu的核心架构如下： Ryu内部核心模块如下图所示： 目前Ryu控制器主要实现的功能主要有： 1) 在网络启动之初，对网络中的一些基本构成进行发现和管理，如拓扑结构，设备，交换机和主机等； 2) 通过OpenFlow协议并利用安全通道机制实现控制器和交换机之间的消息通信； 3) 对交换机发送过来的Packet-In消息进行监听和处理，并向交换机下发流表，控制交换机中网络数据的流向； 4) 管理App模块，共享存储、线程、测试等资源； 5) 提供一个web管理界面和调试服务器，用来对整个网络中的信息进行监控和管理。 2.2.4. OpenFlow协议 在网络中通信协议是网络之间传输的标准和规范，OpenFlow协议同样也是一种标准，是基于OpenFlow控制器和OpenFlow交换机之间，二者在进行交互作用时所使用的信息的接口标准。其协议信息的集合是OpenFlow协议的核心。OpenFlow协议主要支持以下三种类型的消息：即controller-to-switch消息、asynchronous消息以及symmetric消息。其中每个消息由多个子消息所构成。具体对消息的描述如表1所示： Table 1 Message list of OpenFlow protoco 类型 名称 说明 Controller-to-switch Features 在进行TLS会话时，控制器发送Feature请求消息至交换机， 交换机应答相应的Feature信息，该信息必须包含交换机所支持的功能 Configuration 控制器设置或查询交换机上配置的相关信息。 交换机只需要应答查询消息 Modify-state 控制器对流表项和交换机端口状态等进行管理 Read-state 控制器对交换机的流表、端口以及流表项等统计信息进行收集 Send-packet 控制器通过交换机向指定端口发数据包 Barrier 控制器确保消息依赖已经被满足或收到完成操作的通知 asynchronous Packet-in 交换机收到的数据包在流表中没有匹配项，或者所匹配的流表项中含有“转发到控制器”动作，则向控制器发送Packet-in消息。如果交换机缓存空间足够，数据包将被临时放在缓存中，数据包中的部分内容(默认128字节)和缓存中的序号一起封装在Packet-in消息中，并将消息发给控制器；如果交换机缓存没有多余空间，则将所有数据包封装在Packet-in消息中发给控制器 Flow-removed 流表中的流表项应超时或修改等原因被删除时， 向控制器发送Flow-removed消息 Port-status 当交换机端口状态改变时，发送Port-status消息给控制器 Error 交换机通过发送Error消息来告知控制器所发生的问题 symmetric Hello 用于检测交换机和控制器之间连接 Echo 交换机和控制器均可发送该消息，主要用来测量时延和TCP链接保持等 表1. OpenFlow协议的消息列表 2.3. 本章小结 本章主要介绍了OpenFlow协议和SDN网络架构的特点，以及虚拟化云计算环境下传统的网络访问控制技术不能充分适用，对适应虚拟化计算环境下的虚拟机访问控制技术的现实需要，同时对虚拟化云计算等相关背景做了介绍。