flexlm license许可证管理

来源:互联网 发布:网站平台优化方案 编辑:程序博客网 时间:2024/04/26 08:04

为什么采用flexlm

Flexlm支持软件过期日期,软件授权机器数量,软件按模块授权,最重要的是支持浮动的license的管理,在网络的任何地方都可以使用软件许可证,而无需固定绑定在某一台计算机上。通过在网络上共享许可证,用户可以减少许可证使用量,并更有效地使用它们。

 

 

Flexlm license语法

下面是一个简单的浮动license文件

SERVER lulu 17007ea8

VENDOR sampled

FEATURE f1 sampled 1.00 1-jan-2005 2 SIGN=signature1

FEATURE f2 sampled 1.00 1-jan-2005 6 SIGN=signature2

FEATURE f3 sampled 1.00 1-jan-2005 1 SIGN=signature3

SERVER是代表使用FLEXlm的客户的server端,“lulu”是hostname,“17007ea8”是HOSTID,一般采用计算机的MAC地址。

VENDOR是类似供应商开发的软件的名称,因为有很多软件采用flexlm,VENDOR是区分不同软件提供商的,因为一个server上可以有多个采用flexlm的软件(VENDOR),“sampled”是vendor name。

FEATURE是license的核心,我们可以把feature理解为一个软件中的各个模块,f1,f2,f3代表不同的模块,“1.00”是软件版本。“1-jan-2005”是过期日期,而后面的一个字段是代表可以授权的count。最后“SIGN”是对HOSTID和FEATURE行的签名,用来防止HOSTID和FEATURE的各个字段被修改。另外有时候会有USER_SERVER行,这个是指定client的HOST的

以及INCRENMENT行,这个是将多个软件的FEATURE添加到一个license file中时使用的

 

Flexlm的组件分析

Flexlm包括client端和server端,client端上安装要使用的供应商的软件,server端控制此软件的license的分配和管理。

我们把client端上供应商的软件叫做FLEXenable应用程序

Server端包括许可证服务器管理器lmgrd和供应商守护进程vendor deamon

 

因此Flexlm的组件主要包括以下几个部分:

1.FLEXenable应用程序

针对节点锁定的方式,这部分需要license的解析模块,包括license的获取属性接口,license的签名算法。针对浮动许可的方式,需要与server端的获取license授权的通信的功能。

2.Lmgrd

由flexlm提供,处理与FLEXenable软件的初始连接,还用来启动vendor deamon,以及指定使用的license文件路径等。

3.Vendor deamon

处理license的分配管理以及与client端的通信,license的解析

4.License文件

以下是各个组件之间的关系

 

另外还有一些输出的日志文件,调试信息文件,lmutil工具等

Flexlm许可证的请求过程

1.FLEXenable应用程序的许可证模块根据LM_LICENSE_FILE环境变量查找许可证文件,

(LM_LICENSE_FILE可以是一个license文件的完整路径,也可能是包含多个license的目录。还可能是port@host,即在网络上。节点锁定许可证采用前两种,浮动许可证采用port@host

着重讲解浮动许可证)。

2.FLEXenable应用程序通过port@hostlmgrd建立连接,并通知它需要与其对话的vendor deamon

3.Lmgrd确定vendorFLEXenable对话的TCP/IP端口,并将其发送给FLEXenable应用程序。(这个端口可能是licenseVENDOR 字段的端口,如果wendor部分没有端口描述的话,可能lmgrd会指定一个合法端口)

4.FLEXenableVENDOR建立连接,获取lisence请求

5.VENDOR检查是否有可用的license,授权或者拒绝FLEXenable

6.FLEXenable的许可证模块根据接受的授权或者拒绝来启动或者终止FLEXenable应用程序

 

 

 

 

 

 

 

 

 

 

许可证请求流程图

 

 

 

注:vendor在查询是否有空闲license的时候,也会对license文件做数字签名校验和判断过期日期等等。

集成flexlm要做的工作

由于lmgrdlmutil这些可以直接使用,集成flexlm主要要做的工作如下

1.license文件的定制化

2.License生成工具,其中包括对hostidfeature部分的签名算法或者加密算法。

3.集成client端到我们的软件中,主要是与server端通信的接口,获取license属性的接口

4.实现server端的VENDOR部分,主要是license的管理

0 0
原创粉丝点击