CEN/XFS定义的MIB(管理信息库Management Information Base)。 如果你留心的话,可能对MIB有所印象,因为各个行业都在建MIB,在新闻报道上也会见到这个名词。 其实很简单,如果你了解SNMP(简单网络管理协议)最好,MIB是里面一个重要的组成部分。MIB是个类似于数据库的东西,目的是用一种树型结构把某些相关的东西组织在一起。 ATM监控程序是通过报文来获取ATM现在的状态。典型的实现方式是:ATM不断会发送表示自己当前各个设备状态的数据包给前置机(比如打印机状态、钱箱状态、读卡器状态等),这个状态包的格式都已经定义好了,哪一位表示什么都是固定的,ATM监控程序收到数据包后进行相应的解包分析,就知道目前该ATM的状态了。 当然,不同的银行有不同的实现方式,但是目前大部分如此。这里面有个问题是各个银行的包格式不同,导致为一个银行开发的ATMC无法将监控这块直接搬到另外一个银行的环境中,另外,状态包能够定义的状态也不是很够,只能监控很少的内容。 是该考虑统一ATM终端监控软件的时候了。显然,这个责任放到CEN/XFS的头上是最合适不过了。 CEN/XFS换了种方式,将这种状态包的方式抛弃的九霄云外,或者CEN/X FS根本就没想到过还有人在用这种方式。CEN/XFS借鉴了SNMP的协议,实现了一个全新的监控软件架构的设计。 简单的看看CEN/XFS的监控软件设计架构: 每台ATM上放一个叫做SNMP Agent(SNMP 代理)的小软件,前置机(先只考虑在前置机管理)上面放一个叫做SNMP Manager(SNMP 管理器)的软件。有这两个软件就可以完成整个ATM的监控了。 下面看看具体的监控过程。SNMP Agent驻留在每台ATM上,它负责收集ATM的当前状态数据。当需要查看ATM的状态时,管理员在装有SNMP Manager的机器上,开始请求查看某台ATM的状态。则SNMP Manager会通知该ATM上的SNMP Agent程序,让其将以前收集的状态数据发送过来。同样,管理员可以用SNMP Manager主动控制SNMP Agent程序,达到控制ATM的功能。通过这个交互过程,就可以完成监控ATM了。 其实有个地方我们没有提到,这就是SNMP Agent和SNMP Manager之间是通过什么交互的,是ISO8583报文吗?显然不是,它们之间的交互是基于标准TCP/IP中的SNMP协议而来的。如果你想多了解一些,请查看SNMP的相关文章。 对于SNMP来说,其中的MIB是很重要的一块。CEN/XFS向IANA (Internet Assigned Number Authority)申请了一个root代码,为16213。所有的XFS里面提到的设备都在16213下面分配有对应的子树(sub_tree)和节点(node)。在MIB里面,可以通过一串类似于IP地址那样的以点分割的数字串(比如16213.2.2.2.1.3.8.80),唯一的标识某个设备(比如读卡器)的唯一状态(比如设备断电了)。 也就是ATM上每个需要监控的设备信息都在MIB中唯一的编码了,这种 编码叫做OID(Object Identifier)。例如对于读卡器Online状态有个OID的编码,通过该编码就知道读卡器的状态了,并且该编码是全球唯一的一串数字。