Multihoming and PGM

Special consideration must be given to multihomed PGM senders or receivers. This page describes the considerations, and provides guidelines for best programming practices.

Multihomed PGM Sender

When an application fails to specify an interface upon calling the connect function, the first available interface is used. If no interface is available, connect fails.

When an application specifies an interface using the RM_SET_SEND_IF socket option, a bind attempt is made implicitly to that interface using TCP/IP, and fails if TCP/IP fails the bind request. If the interface is set using RM_SET_SEND_IF multiple times, only the last interface set successfully is applicable.

Windows Sockets maintains which interface is set, and if that interface disappears, the session is disconnected.

Multihomed PGM Receiver

When an application fails to specify an interface upon calling the listen function, the default interface is used. If no interface is available, bind fails.

When an application specifies one or more interfaces on which to listen, using RM_ADD_RECEIVE_IF, Windows Sockets attempts to bind to the requested interface or interfaces using TCP/IP. Any error from TCP/IP causes this request to fail. Unlike the PGM sender case, adding a receive interface multiple times result in the listens being posted on all the successfully added interfaces. Use the RM_DEL_RECEIVE_IF socket option to stop listening on an interface.

Windows Sockets does not maintain state about multiple specified listening interfaces, and instead relies on TCP/IP to do so. Once a session is in progress, however, Windows Sockets track the incoming interface for that session, and if that interface disappears, Windows Sockets disconnects the session.