Required Socket Grouping Behavior

For providers that support socket groups, the following functionality is required as a minimum. The provider must be able to allocate new group IDs which need only be unique for a given service provider. At socket creation time, it must be possible to add the newly created socket to the membership of an existing group or to create a new group. If group quality of service is supported, the provider should remember which socket was the creator (i.e. originating member) of a group, and allow only that socket to specify group quality of service parameters.

There are two types of socket groups: constrained and unconstrained. Constrained groups have the property that all sockets which are members of the group must be connection-oriented and may only be connected to the same host address. The service provider should disallow a socket creation/group join operation to a constrained group if the new socket is not connection-oriented. Similarly, the service provider should disallow the connect operation if the destination address is not identical to the group's destination address. A constrained group's destination address is established when the first socket in the group becomes connected.

The only attribute that may be specified individually for grouped sockets is relative priority. Priority is only a hint. The service provider should record the assigned priority and allow this value to be retrieved, but is otherwise free to ignore it if there is no reasonable way to honor priority. Note that this specification does not define the priority relationship between grouped and ungrouped sockets, or between sockets that are members of different groups. Grouping may be (but is not required to be) a completely local mater. There is no requirement that grouping impact in any way the on-wire protocol of a transport.

It is not required for service providers that support grouping to also support group quality of service. However, a service provider is encouraged to enable this feature whenever it is supported by the underlying network technology. If group quality of service is supported, the minimum requirement is that a client must be able to set and query QOS requests. There is no requirement that the provider implement anything more than best effort service.