1 / 26

NDIS LBFO Miniports

Learn about NDIS LBFO Miniports for load balancing and failover in Windows networking. Discover how to implement and install LBFO miniports for optimized network performance.

sloan
Download Presentation

NDIS LBFO Miniports

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. NDIS LBFO Miniports (Load Balancing And Failover)Larry CleetonProgram ManagerWindows Networking And CommunicationsMicrosoft Corporation

  2. Agenda • Overview of NDIS LBFO Miniports • How to write LBFO miniports • How to install LBFO miniports

  3. Typical LBFO Scenario • Server machine attached to network with multiple links • More total bandwidth • Continue to work on failed NIC or cable cut

  4. Overview • An NDIS LBFO miniport is a normal NDIS miniport driver plus: • Code to use multiple NICs together for load balancing network traffic • Code to manage a primary NIC and secondary NICs and manage a fail-over upon the failure of the primary

  5. Overview • NDIS gives the miniport driver control over the designation of primary and secondary NICs, exposing only a single binding to protocols • Two key NDIS API calls: • NdisMSetMiniportSecondary • NdisMPromoteMiniport

  6. Normal Binding TCP/IP Interface 1 Interface 2 Miniport Adapter 1 Adapter 2

  7. LBFO Binding TCP/IP Interface 1 Second binding not established if Miniport calls NdisMSetSecondary in Adapter 2 MiniportInitialize Miniport Adapter 1 Adapter 2

  8. LBFO Data Flow (Normal) TCP/IP Interface 1 Miniport Adapter 1 Adapter 2

  9. LBFO Data Flow (Failure) TCP/IP Interface 1 Miniport Adapter 1 Adapter 2

  10. How To Implement LBFO • Design your LBFO strategy • Modify your miniport code • Modify your INF file

  11. Design Your LBFO Strategy • Just failover or load balancing too? • How to run multiple ports as one load-sharing bundle? (Network issues) • Coordination with attached switch/router?

  12. Modify Your Miniport Code • MiniportInitialize • MiniportSend/SendPackets • NdisMIndicateReceivePacket • Miniport(Query,Set)Information

  13. MiniportInitialize • Read “BundleId” keyword using NdisReadConfiguraton • Search for other adapters that have the same BundleId value • If no match, do nothing, adapter defaults to primary • If match, set self to secondary using NdisMSetMiniportSecondary

  14. MiniportSend/SendPackets • MiniportAdapterContext is always the primary NIC • Miniport code can redirect send to other NICs with it’s own logic • Always complete Send with original primary MiniportAdapterContext

  15. NdisMIndicateReceivePacket • Regardless of adapter on which received, indicate with primary MiniportAdapterHandle

  16. MiniportQuery/SetInformation • Process Query or Set OID for specific adapter referenced by MiniportAdapterContext • No change from normal behavior

  17. MiniportHalt • Secondary Adapter • Normal halt handling • Primary Adapter • Promote secondary with NdisMPromoteMiniport

  18. Sample • Pass-through sample in DDK implements failover • Although intermediate driver it shows the basic implementation requirements

  19. Installing LBFO Miniports • Create net class INF for miniport • Add additional advanced property key “BundleId” • BundleId property’s existence is the trigger to the miniport to enable LBFO support and the string is the Bundle identifier • BundleId property can be optional

  20. BundleId INF Example AddReg = example.advprop.reg [example.advprop.reg] ; BundleId for support of LBFO HKR, Ndi\params\BundleId, ParamDesc, 0, "LBFO Bundle ID" HKR, Ndi\params\BundleId, type, 0, "edit" HKR, Ndi\params\BundleId, LimitText, 0, "15" HKR, Ndi\params\BundleId, UpperCase, 0, "1" HKR, Ndi\params\BundleId, default, 0, "Bundle1" HKR, Ndi\params\BundleId, optional, 0, "1"

  21. Demonstration

  22. Limitations • Configuration is spread across multiple network connections • If a primary adapter is halted the new primary will have a new interface to IP with a potentially different IP configuration

  23. Call To Action • Implement LBFO in your miniport • Simple, no config code necessary • Valuable feature without high cost • Test your LBFO scenarios with appropriate network devices

  24. Discussion

More Related