HBA API FAQ
Benjamin F. Kuo <benk@troikanetworks.com> TROIKA Networks, Inc.
Dixon Hutchinson <dhutchin@legato.com> Legato Systems, Inc.
DRAFT VERSION 1.0.7, January 30, 2002 

CONTENTS
1. Introduction
2. What's New
3. General Questions

3.1 What is the HBA API?
3.2 What is the history of the HBA API?
3.3 Where can I get some general high level information on the HBA API?
3.4 How real is this standard? Specifically, when can I see this working?
3.5 How can I get a copy of the HBA API specification?
3.6 What development resources are available for the HBA API?
3.7 Is the HBA API an in-band or out-of-band mechanism?
3.8 How can I get involved in developing the HBA API?
3.9 Does the HBA API support SCSI adapters?
3.10 Does the HBA API support iSCSI adapters?
3.11 How secure is the HBA API? Can a rogue program disrupt my SAN through the HBAAPI?

4. Installation and usage

4.1 Where is the latest version of the HBA API code examples?
4.2 What files are installed to use the HBA API?
4.3 Where does the HBA API common library get installed?
4.4 Can I issue any arbitrary SCSI command with the HBA API?
4.5 What's the difference between a platform WWN and a node WWN?
4.6 What is persistent binding?

5. Development Questions

5.1 What is the common HBA library?
5.2 What operating systems are supported by the HBA API common library?
5.3 Does the HBA API support asynchronous event notification?
5.4 What is the maximum buffer size that can be passed to the common HBA function
HBA_SendCTPassThru?

5.5 Why was the HBA_ResetStatistics call removed?
5.6 Where do I get more information about the low level CT commands I can send through the HBA API?
5.7 What permissions should be given to the HBA API in unix?
5.8 What is an ELS, and how is it used in the HBA_SendRNID call?
5.9 Where does HBA_GetRNIDMgmtInfo get its information from? The HBA or a switch?
5.10 I can't get HBA_SendScsiInquiry working with the libraries I have because it can't find the symbol? How can I fix this?

6. CIM

6.1 What is CIM?
6.2 How is CIM supported by the HBA API?
6.3 I heard that there is a translation layer between the HBA API and CIM, where can I get more information?

7. Resources

7.1 Who is behind the HBA API standard?
7.2 What HBA vendors support the HBA API?
7.3 Which HBA manufacturers/models have HBA API libraries available?
7.4 Which management vendors are using the HBA API?
7.5 Are there any test or validation suites available to test by HBA API implementation?
7.6 Is there an equivalent of an Internet News (NNTP) server for HBA API discussions?


1.0 Introduction

This FAQ is intended to address frequently asked questions about the HBA API. This FAQ is maintained by Benjamin F. Kuo at TROIKA Networks, Inc. <benk@troikanetworks.com> and Dixon Hutchinson at Legato Systems, Inc. <dhutchin@legato.com> and is not endorsed or sponsored by the Storage Networking Industry Association (SNIA).


2.0 What's New

A little more information on iSCSI API's and the support Matrix.

Version history:

Version Date Description
DRAFT Version 1.0.0 June 29, 2001 Initial draft.
DRAFT Version 1.0.1 July 10, 2001 Resolved initial comments, added support matrix.
DRAFT Version 1.0.2 August 16, 2001 Reformat, remove copyright.
DRAFT Version 1.0.3 - 1.0.7 9/15/2001 - 1/30/2002 Update vendor support matrix.


3.0 General Questions

3.1 What is the HBA API?

The SNIA Common HBA API is an industry standard, programming interface for accessing management information in Fibre Channel Host Bus Adapters (HBA). Developed through the Storage Networking Industry Association (SNIA), the HBA API has been overwhelmingly adopted by Storage Area Network vendors to help manage, monitor, and deploy storage area networks in an interoperable way.

The HBA API is implemented as a set of 'C' level APIs, which allow access to low level, Fibre Channel HBA information in a platform- and vendor- independent way. The API depends on vendor supplied, vendor specific code for the vendor's HBAs.  The API does not support any vendor's HBA without a vendor specific library.

3.2 What is the history of the HBA API?

The HBA API effort began in March of 2000 in the SNIA Fibre Channel working group. In May of 2000, the HBA API subgroup was formed. In July of 2000 the 1.0 feature set was frozen and the initial draft submitted to the T11 FC-MI standards group. Version 1.0 was approved by the SNIA Fibre Channel working group in September of 2000 and is currently undergoing review as part of the T11 FC-MI Letter Ballot process.

Version 2.0 efforts have been ongoing since December of 2000, with version 2.0 expected by Q2 2002.

3.3 Where can I get some general high level information on the HBA API?

The following papers may be useful in understanding the HBA API.

Development of an API Standard in Interoperable Storage Networking Presentation (PowerPoint)
SNW Fall 2000 Technical Tutorial
Benjamin F. Kuo, Troika Networks, Inc.

http://hbaapi.sourceforge.net/HBA_SNW_Fall2000.ppt

Common HBA API White Paper (PDF)
SNIA FC Working Group
Mark Woithe, JNI Corp.

http://hbaapi.sourceforge.net/Common%20HBA%20API%20White%20Paper%20v012801.pdf

3.4 How real is this standard? Specifically, when can I see this working?

The HBA API is in deployment today, and was first demonstrated at the Fall 2000 Storage Networking World in Orlando.

3.5 How can I get a copy of the HBA API specification?

The most current version of the HBA API 1.0 specification is part of the T11 FC-MI.

T11/01-004v2 dpANS - Fibre Channel- Methodologies for Interconnects Technical Report (Annex A)

This can be found on the T11 web site at http://www.t11.org under "Drafts".

The latest version of the HBA API 2.0 specification is still in development. The latest version of this document will be added to the Fibre Channel working group FTP site shortly.

3.6 What development resources are available for the HBA API?

You should work directly with your HBA vendor for development support for the HBA API. However, most questions about the HBA API specification can be answered by getting involved in the SNIA Fibre Channel working group or by sending your questions to the group at large through the email reflector at snia-snmwg-fc@snia.org.

3.7 Is the HBA API an in-band or out-of-band mechanism?

The HBA API is neither. Information from the HBA API can be usually found through an out-of-band mechanism for management, however can also be accessed in-band through a IP over Fibre Channel connection.

3.8 How can I get involved in developing the HBA API?

You should join the SNIA Fibre Channel working groups, which hold in-face meetings, conference calls, and discusses issues over the email reflector. More information about the SNIA can be found at http://www.snia.org.

If you are already a member of the SNIA, you can get the browse the current mail archives of the Fibre Channel working group at:

http://www.snia.org/mo/mail/?l=snmwg-fc&r=1&w=2

3.9 Does the HBA API support SCSI adapters?

No, the HBA API is limited to supporting Fibre Channel HBAs.

3.10 Does the HBA API support iSCSI adapters?

Not yet, however there has been discussion on adding iSCSI support in the future. There is a separate working group (IPS TWG) within SNIA working on an API for iSCSI

3.11 How secure is the HBA API? Can a rogue program disrupt my SAN through the HBA API?

There are no calls in the current HBA API which are able to read or write data from storage, or otherwise affect SAN operation. All current SCSI calls in the HBA API are informational (read-only) calls. However, the CT passthrough command does allow read and write of information from a switch, if allowed.


4.0 Installation and Usage

The HBA API is implemented as a common library which depends on vendor-specific libraries for specific HBA model support.

4.1 Where is the latest version of the HBA API code examples?

The latest version of the common library and example code is dated January 9, 2001 and can be found at:

http://prdownloads.sourceforge.net/hbaapi/hbaapi-src-2001JAN09.zip

4.2 What files are installed to use the HBA API?

The HBA API consists of three major parts (vendor library, common library, and registration) that are installed on a system to operate.

On Windows systems:

On Unix systems:

4.3 Where does the HBA API common library get installed?

On Windows systems:

On Unix systems:

4.4 Can I issue any arbitrary SCSI command with the HBA API?

No. The scope of the HBA API is limited to discovery of Fibre Channel components. Generic SCSI pass through has been discussed but has been deemed generally dangerous, as it bypasses the operating system protections and also causes several SCSI-related issues (including problems with breaking reservations, potentially corrupting data, or interrupting I/O). As such it is not included in the API.

4.5 What's the difference between a platform WWN and a node WWN?

platform WWN - unique world-wide identifier for a computer system, used to tie together in software the association between many components within that system

node WWN - unique world-wide identifier used to associate many port world wide names within a system. This is used currently in two ways: first, to specify the relationship between ports on a common device (one node WWN and several port WWNs on a HBA), secondly to identify ports on a system (one node WWN and many port WWNs on a system with many HBAs). Unfortunately the use of this is not consistent within currently deployed hardware.


4.6 What is persistent binding?

Persistent binding is a feature of HBAs which remembers the last SCSI address a particular Fibre Channel target has been mapped to. For example, that a port on a physical disk (world wide name 01:02:03:04:05:06:07, LUN 0) was last seen at SCSI address (bus=0,target=3,lun=0) on the operating system. Persistent binding ensures that this is consistent from reboot to reboot unless changed by the user.

Some HBA vendors automatically persistently bind devices, while others require manual configuration. Persistent binding is most important in the case of operating systems which remember devices by SCSI address, or in the case of raw volumes used by databases.


5. Development Questions

5.1 What is the common HBA library?

The common library is a component of the HBA API, typically called HBAAPI.DLL or libHBAAPI.so which loads vendor specific library support for HBAs.

5.2 What operating systems are supported by the HBA API common library?

The initial work on the HBA API was done on Windows NT, Windows 2000, and Solaris 2.6, 2.7, and 2.8. Other operating systems are also planned for support.

5.3 Does the HBA API support asynchronous event notification?

Version 1.0 of the spec does not support asynchronous event notification, however this capability is a central part of Version 2.0 of the spec (currently in development.)

5.4 What is the maximum buffer size that can be passed to the common HBA function
HBA_SendCTPassThru?

This is a vendor specific limitation and depends on the vendor of your HBA.

5.5 Why was the HBA_ResetStatistics call removed?

The HBA_ResetStatistics call was removed because it was decided that resetting statistics counters is an undesirable function. Because any application accessing the HBA API could reset statistics, this could potentially confuse other software monitoring statistics counters.

5.6 Where do I get more information about the low level CT commands I can send through the HBA API?

More information about CT commands can be found in the T11 specifications for FC-GS-3.


5.7 What permissions should be given to the HBA API in unix?

This depends on your application. It is recommended that permissions be limited to trusted logins only or root access.

5.8 What is an ELS, and how is it used in the HBA_SendRNID call?

An ELS is a low level Fibre Channel primitive. It is used by the HBA_SendRNID call to send an RNID request across the Fibre Channel network and retrieve the response.


5.9 Where does HBA_GetRNIDMgmtInfo get its information from? The HBA or a switch?

The information returned by HBA_GetRNIDMgmtInfo is obtained from the HBA, and does not trigger any network activity.

5.10 I can't get HBA_SendScsiInquiry working with the libraries I have because it can't find the symbol. How can I fix this?

This was a bug in the original version of the HBA API libraries made available to the public. The latest version fixed this and is dated January 9, 2001.


6.0 CIM

6.1 What is CIM?

CIM stands for Common Information Model, and is a high level management standard used to manage computer systems and components. CIM is being developed by the DMTF (Desktop Management Task Force) and regularly worked on by the Fibre Channel community through the SNIA.

6.2 How is CIM supported by the HBA API?

The HBA API does not directly support CIM. However, the HBA API exposes information which can be exported to CIM providers.

6.3 I heard that there is a translation layer between the HBA API and CIM, where can I get more information?

As part of the SNIA Interoperability labs, a Java Native Interface (JNI) provider and corresponding CIM provider modeling the Fibre Channel adapter CIM model was created. This can be found as part of the SNIA CIM efforts. This can be found on the SourceForge site at http://sourceforge.net/projects/hbaprovider/


7.0 Resources

7.1 Who is behind the HBA API standard?

During the first Storage Networking World conference with the HBA API demo the following vendors endorsed the HBA API Interoperability Theme: Adaptec, Agilent, BMC Software, Brocade, Connex, EMC, Emulex, FCIA, FibreAlliance, HP, Highground, Hitachi Data Systems, Interphase, InterSAN, JNI, Legato, McData, NCITS, Prisa, Qlogic, StorageNetworks, SNIA, Tivoli, TROIKA Networks, Veritas, and Vixel. Other vendors also have announced their support since that time.

7.2 What HBA vendors support the HBA API?

Agilent, Emulex, Interphase, JNI, and Qlogic, TROIKA Networks have all publicly announced their support for the HBA API. You should check with your individual vendor if they are not listed here.

7.3 Which HBA manufacturers/models have HBA API libraries available?

You'll need to contact the vendors directory to get the specific information about
which models are available. You can reach HBA vendors at:

  • Adaptec (www.adaptec.com)
  • Agilent (www.agilent.com)
  • ATTO (www.attotech.com)
  • Emulex (www.emulex.com)
  • Interphase (www.interphase.com)
  • JNI (www.jni.com)
  • LSI Logic (www.lsilogic.com)
  • Qlogic (www.qlogic.com)
  • TROIKA Networks (www.troikanetworks.com)
  • Hewlett-Packard (http://docs.hp.com/hpux/onlinedocs)
  • Vendor Support Matrix

    Vendor Name HBA Supported OS Status Contact
    Emulex Corp. http://www.emulex.com/ts/dds.html   Windows NT
    Windows 2000
    Solaris
    Linux
    Fully available. Bill Bostick (Bill.Bostick@Emulex.com)
    JNI Corp.
    http://www.jni.com/Drivers

    Long List Solaris Fully available Tim Lustig
    tlustig@jni.com
    LSI Logic
    http://adapters.lsilogic.com
    LSI44929O
    LSI44929LO
    LSI44929H
    LSI44929LH
    LSI40919O
    LSI40919LO
    LSI40919H
    LSI40919LH
    ITI7004G2-LC
    LSI7202CP-LC
    Windows NT
    Windows 2000
    Linux
    Solaris
    Fully Available JoLyn Reith
    (jolyn.Reith@lsil.com)
    TROIKA Networks, Inc.
    http://www.troikanetworks.com
    Zentai Z-2400 Windows NT
    Windows 2000
    Fully available.
    Peter Jones (peterj@troikanetworks.com)
    Qlogic Corp. QLA-22XX Solaris
    Windows 2000
    Linux (Redhat)
    Fully Available Arun Mittal
    arun.mittal@qlogic.com
    ATTO Techology
    http://www.attotech.com/software
    ExpressPCI FC 3300
    ExpressPCI FC 3305
    ExpressPCI FC 2600
    ExpressPCI FCSW
    Windows NT
    Windows 2000
    Fully Available Peter Donnelly (pdonnelly@attotech.com)
    Agilent Technologies HHBA-5101C
    HHBA-5121A
    HHBA-5221A
    HHBA-5220A
    Windows NT
    Windows 2000
    Fully Available Jerry Wong (jerry_wong@agilent.com)
    Hewlett-Packard
    http://docs.hp.com/hpux/onlinedocs
    All Tachyon HBAs, rev B.11.00.10 or higher (except A3591B, A3404A, A3636A, A3740A) HPUX 11.00, 11i and newer Fully Available Brian Lee (brian_lee4@hp.com)
             

    7.4 Which management vendors are using the HBA API?

    CA Unicenter, Highground, InterSAN, Legato, Tivoli, SANavigator, Sun Microsystems, Prisa Networks, Veritas, and
    others.

    7.5 Are there any test or validation suites available to test by HBA API implementation?

    No tests are currently publicly available, although test and validation efforts are underway in the SNIA Interoperability committee with intent to add these as part of the FCIA SANmark process. In addition, test programs may be available from your HBA vendor.

    7.6 Is there an equivalent of an Internet News (NNTP) server for HBA API discussions?

    Not yet.