2024年4月11日发(作者:)

LDAP开源库与服务器技术可行性调研报告

 LDAP开源库与服务器资源调研

1 LDAP协议简介

1.1 LDAP起源及概况

轻权目录访问协议LDAP(Light weight Directory Access Protocol)是从对X.500

协议简化的基础上演变而来,所以称为轻量级的目录服务。X.500协议由CCITT和ISO两大

国际组织各自对目录服务的开发成果融合而产生,它于1988年被认可,1990年初由CCIT

发布,以后曾数次更新,目前仍在发展中。X.500协议的早期设计人员由于过于注重其通用

性和可扩展性,导致X.500协议内容庞杂,开发和部署都极其复杂而且性能不高。特别一点,

X.500协议是基于OSI网络模型。随着TCP/IP的流行并成为事实上的标准,X.500协议未能

获得广泛应用也在情理之中。

LDAP从以下几方面对X.500协议做了简化和发展:(1)功能方面,缩减了X.500中冗

余的和使用频率较小的功能,可以说以极低的代价可完成X.500协议90%的功能;(2)数据

表示方面,统一采用文本字符串形式,避免数据解释时可能导致的二义性;(3)编码上,仅

采用X.500协议的一个子集——简单编码规则BER,节约了空间,而且大大简化了其实现;

(4)传输上,直接运行于传输层TCP之上,减少了在OSI通信协议中的高昂开销,不但提

高了性能,而且使目录服务部署简单了。

第一个LDAP规范于1993年发布(RFC1487),到第二版本问世,LDAP已获得广泛应用,

LDAPv2发布为RFC1777。到1997年,随着LDAPv3的发布(RFC2251),LDAP进入一个更加

成熟的阶段。

在LDAP中目录是按照树型结构组织,目录由条目(Entry)组成,条目相当于关系数据

库中表的记录;条目是具有区别名(Distinguished Name,DN)的属性(Attribute)集合,

DN相当于关系数据库表中的关键字(Primary Key);属性由类型(Type)和多个值(Values)

组成,相当于关系数据库中的域(Field)由域名和数据类型组成,只是为了方便检索的需

要,LDAP中的Type可以有多个Value,而不是关系数据库中为降低数据的冗余性要求实现

的各个域必须是不相关的。LDAP中条目的组织一般按照地理位置和组织关系进行组织,非

常的直观。LDAP把数据存放在文件中,为提高效率可以使用基于索引的文件数据库,而不

是关系数据库。LDAP协议集还规定了DN的命名方法、存取控制方法、搜索格式、复制方法、

URL格式、开发接口等。

LDAP主要优点如下:简单而通用;普遍存在,LDAP已广泛用于各种主流和非主流的计

算平台;LDAP目录易于理解;由于LDAP高可靠性和良好性能,LDAP目录服务能满足绝大部

分重要的目录服务需求。如今,LDAP已经成为目录服务的事实上的标准。

1.2 LDAP协议框架模型

LDAP定义了四个基本模型以描述它的工作机制,描述什么样的数据可以存于LDAP目录

中,以及如何操作这些数据。

(1)LDAP信息模型:定义了目录中存放信息的基本单位和数据的类型。目录中信息的

基本单位是条目(Entry),每个条目为一个属性集合,每个属性含有一个属性类型和一个或

几个值。条目相当于现实世界的一个对象,属性则从某一方面反映对象的特征。另外,目录

大纲(Directory Schemas)规定了哪些属性是必须具有的,哪些只是允许存的。

(2)LDAP命名模型:定义了目录的组织和查询方式。LDAP指定目录条目(Entry)应

被组织成倒转的树型层次结构——目录信息树(Directory Information Tree, DIT)。树

根(Root)是虚根,树的每个节点都存储信息,每个节点都有一个属性作为相对名Rdn。将

某个节点回溯到根,所有Rdn一起组成该节点的区分名Dn。

如图1所示DIT的一个示例,虚线所围节点有几个属性:cn=RenJun,objectclass:

person,sn=Ren, telephoneNumber:123。其中cn=RenJun是相对区别名Rdn,Rdn在其父

节点容器内将该节点与其兄弟节点区分开。从该节点回溯到根得到该节点的区分名dn:

cn=RenJun, ou=nhpcc, dc=hust, dc=edu。

(3)LDAP函数模型:定义了访问和更新目录的操作。这些操作分为三类:查询操作,

查询某个条目并返回结果,LDAP既支持根据区分名查询,又支持根据某一属性检索;更新

操作,进行条目或其属性的增加、删除及重命名;认证及控制操作,对客户端认证,控制某

些交互行为。

(4)LDAP安全模型:定义了如何保护目录信息,防止未授权用户对目录信息的访问和

修改。

2 LDAP目录服务

2.1 功能模块

LDAP是运行于TCP/IP之上的应用层协议。LDAP的目录服务功能建立在Client/Server

模型之上,有的目录信息数据存储在LDAP服务器中。独的一个LDAP服务器可能无法存储完

整的目录信息树,时需要将目录信息树分布到多个LDAP服务器中。一个或多个LDAP服务器

组成LDAP目录树,每个LDAP服务器由目录服务模块、复制服务模块和管理模块三个模块组

成,如图2所示。

目录服务模块主要由两部分组成:前端部分负责通常的客户机与服务器之间的网络通

信, 完成协议解析和分析;后端部分负责目录数据库的管理。

复制服务模块负责LDAP服务器之间的目录数据的复制,保证目录服务的一致性。

管理模块负责目录信息管理,以确保用户在期望的反应时间、完整性、安全及一致性层

次上取得准确的目录信息。

2.2 工作过程

LDAP是一种面向连接的,基于消息的协议。其工作流程如下:

(1)客户机根据自身需求向 LDAP服务器发送查询或操作请求。

(2)服务器负责对目录树中条目进行必要的操作。

(3)服务器向客户机返回一个应答。这个应答可能包含查询结果, 或包含操作出错信

息,或者是一个引用。引用(Re-ferral)是一种重定向机制,表明客户所需目录服务不在

本地服务器,则向客户机返回一个更适宜服务器的URL。

(4)当客户机收到引用时,向更适宜的LDAP服务器发送请求。

 主要服务器性能比较分析

在应用中部署目录服务,必须先安装并且运行一个或多个目录服务器。目录服务器就是

一系列实现目录协议并管理存储目录数据的数据库的程序,通常目录服务器还包含有管理目

录的软件。目前绝大多数目录服务器都支持 LDAP,还有一些是完全基于 LDAP协议的。

(1)NDS (Novell Directory Services)

NDS是随着Netware 4一起发布的,属于比较早的面向企业网络的目录服务产品。它有

效地将网络系统的各种资源组织到一起,也将各种应用软件集成到同一个资源管理平台上。

NDS曾经为处于低谷的Novell公司带来了希望和生机。到了Netware 5的时候,NDS从中分

离出来,以便支持不同的系统平台,这就是eDirectory。NDS可以支持各种规模的网络环境,

当然也支持LDAPv3。由于NDS是从系统软件中剥离出来的,所以软件的可靠性较高,也支

持多个目录服务器之间的复制。

(2)Microsoft Active Directory (活动目录)

在Microsoft Windows 2000操作系统发布之际,呼声最高、影响最大的当属Active

Directory(活动目录)了。活动目录成了Windows2000网络系统的核心,它存储了当前网

络环境中所有资源的信息,包括基本的个人账户信息和各种系统服务。另外,活动目录本身

与系统的安全服务紧密地集成在一起,每个用户的安全信息被保存在活动目录中,而用户对

系统资源的访问也是受活动目录控制的。操作系统通过活动目录控制用户的登录,活动目录

与 Kerberos认证协议结合起来,实现了单点登录(Single Sign-on)特性。

同时,活动目录与Microsoft Exchange Server有一种特殊的关系:在Windows 2000

发布之前,Microsoft的企业群件软件Exchange Server已经提供了目录服务功能,并且支

持 LDAP协议;在Windows 2000发布以后,Exchange Server 2000则自然地转移到活动目

录之上,利用活动目录作为它的用户信息管理设施。

(3)OpenLDAP

OpenLDAP是一个通过Internet进行集体开发的项目(1998年8月发布1.0版本)。它

的目标是提供一个稳定的、商业级的、功能全面的 LDAP套件,其中包括LDAP服务器和一

些开发工具。由于OpenLDAP是源码开放的,所以它在Linux平台上受到广泛的欢迎,当然

也可以移植到其他的系统平台上,甚至Windows平台上。OpenLDAP 2.x版本支持LDAPv3,

最新的版本(2.1版)可以支持LDAPv3协议的绝大部分特性,包括一些扩展功能。

尤其值得一提的是,著名的网格项目Globus中就采用了OpenLDAP作为其资源管理中的

目录服务器。

 实验结果分析

本实验选择OpenLdap2.1.22,鉴于OpenLdap是一个正在得到日益普遍应用的开源软件.

它的完全开放性使我们可以对独立的服务器进行详细的配置,并且对其基本的实现代码进行

一些修改,以提高它的服务性能。OpenLdap通过slapd进程来实现目录服务,而slapd进

程包括两个部分:前端处理与客户机的协议通信。后端进行数据库操作,其中我们安装

Berklev db4.1.25作为后端操作数据库,BDB有一个重要的配置参数cachesize,调整该参

数的值可用来改善服务器的性能。本测试的目的是研究LDAP服务器的性能及可扩展性,我

们对客户机与服务器的连接也做了限制。

当服务器负载变化时,LDAP处理时间变化如图3中实线所示。负载由1个客户端连续

性地向存储了10000条Entry的目录发出查询请求获得。在负载量达到280ps时,处理时间

基本稳定在12ms,LDAP服务器的执行效率为每秒钟78次查询即达到了效率的最高峰。而建

立一次连接的时间约为120ms左右,当负载量超出280ps后,处理时间逐渐增长,平均响应

时间也开始增长,整个响应时间中建立连接时间占了大部分约140ms。而随着负载量的进一

步增大.响应时间也迅速增加。

 结论

总的来说,实验结果表明在分布式服务系统及其他需要动态访问数据库的网络环境中

OpenLDAP都可以算是一个性能优良的服务器。

目录服务被视为网络应用发展的下一个核心技术。随着Internet的飞速发展,网络上

的资源正以指数方式增加,对资源的管理和查找问题日益突出。目录服务正好提供了这样一

种统一而简便的网络资源管理和组织技术。无论对信息提供者、管理者或是访问者,以LDAP

为代表的目录服务因其简单、高效、低成本,皆是一个很好的解决方案。随着网格热潮的兴

起,目录服务渐渐成为研究热点,其重要性正逐渐为大家所认同。根据网络应用和社会信息

化发展的趋势,我们预测目录服务将朝着专业化、标准化两个方向发展。随着网络技术与各

专业、各领域的融合,各个专业领域的各种特殊资源种类和各种对资源的特殊要求必然需要

在目录中反映出来,因此目录服务需要相应扩展其功能,以满足这些领域的要求。另一方面,

随着网格计算技术的蓬勃发展,要求全球共享信息资源,一个全球资源的目录服务正在形成

中,为了方便地访问目录信息,目录服务标准化是必然选择。