Development of an API Standard in Interoperable Storage Networking Benjamin F. Kuo Troika Networks, Inc. Outline HBA API Overview Architecture The HBA Management Problem Attempts at a Solution The SNIA HBA API Development Timeline API Attributes API Functions More information Conclusion Fibre Channel Network Management Station LAN Servers With HBAs SAN SAN Infrastructure Storage The Host Bus Adapter: Critical Enabler to Storage Networking Component to connect systems and storage over Fibre Channel Consists of hardware, firmware, drivers Located on host system, RAID controllers, storage devices Supports multiple protocols: FCP-SCSI IPFC FC-VI Need for Managing the HBA Information about HBA configuration and operational parameters Information about local port properties Visibility into the list of discovered network devices, WWN and properties Ability to correlate SCSI mappings to Fibre Channel network addresses Access to Fibre Channel network services The HBA Management Problem “The HBA is Unmanageable” Multiple vendors Multiple platforms Lack of standards Lack of industry agreement No consistency between vendors Result Multiple conflicting attempts at a solution Benefits of a Solution Users Software Vendors Increased interoperability Increased availability Simpler administration Reduced development cycle Broader applicability to hardware Wider market FC/SAN Industry Accelerate adoption of FC equipment Enables new applications to grow the market Early Attempts at a Solution HBA Vendor Proprietary Management Vendor Proprietary Interfaces from every management software vendor HBA CIM Modeling Proprietary solutions from every HBA vendor, if available at all Not appropriate at an operational level MIB Definitions Not appropriate for HBA Solution: The SNIA HBA API Broad, industry driven initiative Common HBA information definition C-Level library interface Platform independent Vendor independent Interoperable Across vendors “In the box” API Development Timeline Version 1.0 May – HBA API Subgroup Formed March – Strawman 2000 April – Requirements July – 1.0 Draft Frozen Added to T11 FC-MI Annex Version 2.0 T11 FC-MI Sept – 1.0 Final Now – collecting requirements 2001 HBA API Architecture ISV Applications HBA API OS-specific mechanisms are used to dynamically load libraries All supported host bus adapters are accessed using a single interface to common functions Common HBA API Library Library N Library 3 Library 2 Library 1 … HBA Vendor Implementation HBA vendors provide a common interface to vendor-specific implementations. HBA API Attributes Adapter Attributes Adapter Port Attributes Frames and words sent and received, errors… FC-3 Management Attributes WWPN, WWNN, Speed, FC4 Protocols… Adapter Port Statistics Mfg, Model, Version, Serial Number, WWNN… RNID Port FCP Attributes Mapping of WWN to OS SCSI Bus, Target, LUN HBA API Function Calls General Functions Information Functions FC-3 Management Features FCP Information Functions Control Functions General Functions A single application interface that can manage multiple HBA vendors adapters, even in the same machine. Manages the loading of appropriate HBA vendor specific libraries Identifies installed adapters and their names Information Functions Reports details on installed adapters Manufacturer, driver and firmware versions, model numbers… Fibre Channel Port and Node World Wide Names Traffic statistics for Adapter Ports Frames sent/received, errors, etc… FC-3 Management Functions Allows applications to directly query fibre channel switch services Name and management servers Allows setting and querying of end-node information RNID FCP Information Functions Reports information about what an Operating System knows about SCSI bus and target information for a given LUN (logical device), as well SCSI LUN to FCP LUN bindings. SCSI Inquiry, Report LUNs, Read Capacity Control Functions Provides facilities for reading updated (network) information known by an adapter as well as functions like resetting HBA statistics counters. Example of HBA API Usage Get the list of adapters… number_of_adapters = HBA_GetNumberOfAdapters(); for (i = 0; i < number_of_adapters; i++) { status = HBA_GetAdapterName(i, &adaptername); } Open an adapter… adapterhandle = HBA_OpenAdapter(adaptername); Call HBA function to retrieve information… status = HBA_GetAdapterAttributes(adapterhandle, &adapterattributes); printf("Manufacturer is %s\r\n", adapterattributes.Manufacturer); HBA API Documents Available HBA API Specification Sample code for libraries and applications Common HBA API Library for multivendor loading support Vendor-supplied libraries Conclusion Broad-based, industry supported standard for managing host bus adapters In early availability across multiple vendors Critical enabler to managing storage networks Increases storage network interoperability, reliability, usefulness More information SNW Interoperability Demo SNIA Fibre Channel Working Group http://www.snia.org FCWG Email Reflector T11 FC-MI http://www.t11.org Questions?