Download presentation
Presentation is loading. Please wait.
Published byMaud Griffin Modified over 9 years ago
1
NDIS LBFO Miniports (Load Balancing And Failover) Larry Cleeton Program Manager Windows Networking And Communications Microsoft Corporation
3
Agenda Overview of NDIS LBFO Miniports How to write LBFO miniports How to install LBFO miniports
4
Typical LBFO Scenario Server machine attached to network with multiple links More total bandwidth Continue to work on failed NIC or cable cut
5
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
6
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
7
Normal Binding Miniport TCP/IP Adapter 2 Adapter 1 Interface 2 Interface 1
8
LBFO Binding Miniport TCP/IP Adapter 2 Adapter 1 Interface 1 Second binding not established if Miniport calls NdisMSetSecondary in Adapter 2 MiniportInitialize
9
LBFO Data Flow (Normal) Miniport TCP/IP Adapter 2 Adapter 1 Interface 1
10
LBFO Data Flow (Failure) Miniport TCP/IP Adapter 2 Adapter 1 Interface 1
11
How To Implement LBFO Design your LBFO strategy Modify your miniport code Modify your INF file
12
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?
13
Modify Your Miniport Code MiniportInitialize MiniportSend/SendPackets NdisMIndicateReceivePacket Miniport(Query,Set)Information
14
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
15
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
16
NdisMIndicateReceivePacket Regardless of adapter on which received, indicate with primary MiniportAdapterHandle
17
MiniportQuery/SetInformation Process Query or Set OID for specific adapter referenced by MiniportAdapterContext No change from normal behavior
18
MiniportHalt Secondary Adapter Normal halt handling Primary Adapter Promote secondary with NdisMPromoteMiniport
19
Sample Pass-through sample in DDK implements failover Although intermediate driver it shows the basic implementation requirements
20
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
21
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"
22
Demonstration
23
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
24
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
25
Discussion
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.