Blame doc/opensm-sriov.txt

Packit Service 54dbc3
OpenSM SRIOV (Alias GUID) Support
Packit Service 54dbc3
12/9/11
Packit Service 54dbc3
Packit Service 54dbc3
Overview
Packit Service 54dbc3
Packit Service 54dbc3
In order to support virtualized environments, alias GUID support is added to OpenSM.
Packit Service 54dbc3
This support allows an SA client to add and remove additional port GUIDs based on
Packit Service 54dbc3
SubAdmSet/SubAdmDelete of GUIDInfoRecord. A set with a GUID of 0 in a valid GUIDInfoRecord
Packit Service 54dbc3
index as indicated by the component mask indicates that the additional GUID is to
Packit Service 54dbc3
be SM assigned. The OpenIB OUI (0x001405), along with a configured byte and a
Packit Service 54dbc3
pseudorandom number is currently used for this algorithm (which may be changed in the future).
Packit Service 54dbc3
Packit Service 54dbc3
Most SA queries are updated to handle alias GUIDs as part of any GID specified inside
Packit Service 54dbc3
the query. These include SA path record, multipath record, multicast record, and service record.
Packit Service 54dbc3
There are only a few SA queries (InformInfoRecord, InformInfo) that are not currently updated
Packit Service 54dbc3
for alias GUID support.
Packit Service 54dbc3
Packit Service 54dbc3
In terms of the IBA spec, alias GUIDs are termed additional port GUIDs.
Packit Service 54dbc3
Packit Service 54dbc3
Packit Service 54dbc3
IBA 1.2.1 Volume 1 Changes for Alias GUID Support
Packit Service 54dbc3
Packit Service 54dbc3
The following are MgtWG WG APPROVED spec changes to IBA 1.2.1 volume 1 relative to this support:
Packit Service 54dbc3
Packit Service 54dbc3
RefID 4704
Packit Service 54dbc3
15.2.5.18 GUIDInfoRecord p. 932 line 14
Packit Service 54dbc3
Table 213 GUIDInfoRecord
Packit Service 54dbc3
Packit Service 54dbc3
An entity that wishes to add or remove additional port GUIDs can do so using the SubnAdmSet() and SubnAdmDelete() methods
Packit Service 54dbc3
with the GUIDInfoRecord attribute. This causes the SM to set the updated GUIDs in the specified port via the SM GUIDInfo attribute.
Packit Service 54dbc3
Packit Service 54dbc3
SubnAdmSet() method is used to add additional port GUIDs. SubnAdmDelete() method is used to remove previously added additional
Packit Service 54dbc3
port GUIDs.
Packit Service 54dbc3
Packit Service 54dbc3
o15-0.x.y: If SA supports additional port GUIDs, then both SubAdmSet(GUIDInfoRecord) and SubnAdmDelete(GUIDInfoRecord) are
Packit Service 54dbc3
supported.
Packit Service 54dbc3
Packit Service 54dbc3
o15-0.x.y: If SA supports additional port GUIDs, the component mask for SubAdmSet(GUIDInfoRecord) and
Packit Service 54dbc3
SubnAdmDelete(GUIDInfoRecord) is required to include both LID and block number. If the component mask does not include both of
Packit Service 54dbc3
these, SA shall return an error status of ERR_REQ_INSUFFICIENT_COMPONENTS in its response to the corresponding method.
Packit Service 54dbc3
Packit Service 54dbc3
o15-0.x.y: If SA supports additional port GUIDs, for a SubAdmSet(GUIDInfoRecord), the component mask indicates which GUID indices
Packit Service 54dbc3
are to be set. A GUID can either be added or replaced. A GUID of 0 indicates that the GUID for this index is to be assigned by
Packit Service 54dbc3
the SM.
Packit Service 54dbc3
Packit Service 54dbc3
o15-0.x.y: If SA supports additional port GUIDs, for a SubAdmDelete(GUIDInfoRecord), the component mask indicates which GUID
Packit Service 54dbc3
indices are to be removed.
Packit Service 54dbc3
Packit Service 54dbc3
o15-0.x.y: If SA supports additional port GUIDs, the SA shall return an error status of ERR_REQ_INVALID to any attempt to set
Packit Service 54dbc3
or delete block number 0 index 0.
Packit Service 54dbc3
Packit Service 54dbc3
Packit Service 54dbc3
RefID 4705
Packit Service 54dbc3
p.899 line 26 15.2.4
Packit Service 54dbc3
Table 188 SA-Specific Optional Capabilities
Packit Service 54dbc3
Packit Service 54dbc3
<add table entry:>
Packit Service 54dbc3
IsAdditionalGUIDsSupported | CM2 | 5 | If this value is 1, SA shall support the ability to add and remove additional port GUIDs
Packit Service 54dbc3
                                       via SubAdmSet/SubnAdmDelete(GUIDInfoRecord) as described in
Packit Service 54dbc3
                                       <ref to 15.2.5.18 GUIDInfoRecord>
Packit Service 54dbc3
Packit Service 54dbc3
Packit Service 54dbc3
RefID 4706
Packit Service 54dbc3
p.904 line 21 15.2.5.1
Packit Service 54dbc3
Table 192 Subnet Administration Attribute / Method Map
Packit Service 54dbc3
Packit Service 54dbc3
<Add an "X" to the "Set" and "Delete" columns for GUIDInfoRecord>
Packit Service 54dbc3
<Add footnote "b" to GUIDInfoRecord where footnote "b" is as shown below:>
Packit Service 54dbc3
b: SubAdmSet and SubAdmDelete of GUIDInfoRecord are supported if SA:ClassPortInfo.CapabilityMask2 indicates
Packit Service 54dbc3
IsAdditionalGUIDsSupported.
Packit Service 54dbc3
Packit Service 54dbc3
RefID 4714
Packit Service 54dbc3
Clarify GUID 0 in SA Set GUIDInfoRecord response
Packit Service 54dbc3
p.932 line 14 15.2.18
Packit Service 54dbc3
Packit Service 54dbc3
<change:>
Packit Service 54dbc3
o15-0.x.y: If SA supports additional port GUIDs, for a SubAdmSet(GUIDInfoRecord), the component mask indicates which GUID indices
Packit Service 54dbc3
are to be set. A GUID can either be added or replaced. A GUID of 0 indicates that the GUID for this index is to be assigned by
Packit Service 54dbc3
the SM.
Packit Service 54dbc3
Packit Service 54dbc3
<to:>
Packit Service 54dbc3
o15-0.x.y: If SA supports additional port GUIDs, for a SubAdmSet(GUIDInfoRecord), the component mask indicates which GUID indices
Packit Service 54dbc3
are to be set. A GUID can either be added or replaced. In the request, a GUID of 0 indicates that the GUID for this index is to
Packit Service 54dbc3
be assigned by the SM. In the response, a GUID of 0 indicates that the GUID requested for this index was not accepted by the SA.
Packit Service 54dbc3
Packit Service 54dbc3
RefID 4776
Packit Service 54dbc3
SM GUIDInfo initialization
Packit Service 54dbc3
Packit Service 54dbc3
<change:>
Packit Service 54dbc3
GUIDInfo Description
Packit Service 54dbc3
Packit Service 54dbc3
The requirements for setting additional
Packit Service 54dbc3
Packit Service 54dbc3
GUIDs are beyond the scope of the specification.
Packit Service 54dbc3
Packit Service 54dbc3
Packit Service 54dbc3
<to:>
Packit Service 54dbc3
<none>
Packit Service 54dbc3
Packit Service 54dbc3
Packit Service 54dbc3
OpenSM SRIOV Configuration
Packit Service 54dbc3
Packit Service 54dbc3
Some new options were added for SRIOV configuration of OpenSM.
Packit Service 54dbc3
Packit Service 54dbc3
1. Allow both pkeys
Packit Service 54dbc3
-W or --allow_both_pkeys on the command line or
Packit Service 54dbc3
allow_both_pkeys TRUE
Packit Service 54dbc3
in the options file. Default is false.
Packit Service 54dbc3
Packit Service 54dbc3
allow_both_pkeys indicates whether both full and
Packit Service 54dbc3
limited membership on the same partition is allowed or not.
Packit Service 54dbc3
Packit Service 54dbc3
In order to support allow_both_pkeys, the partition file syntax is
Packit Service 54dbc3
extended with "both" flag (in addition to "full" and "limited").
Packit Service 54dbc3
Packit Service 54dbc3
defmember=full|limited|both
Packit Service 54dbc3
or
Packit Service 54dbc3
[PortGUID[=full|=limited|=both]]
Packit Service 54dbc3
Packit Service 54dbc3
2. SM assigned GUID byte
Packit Service 54dbc3
sm_assigned_guid
Packit Service 54dbc3
in the options file. Default is 0.
Packit Service 54dbc3
Packit Service 54dbc3
An SM assigned GUID byte is added as a configuration option
Packit Service 54dbc3
where an alias GUID is formed from OpenFabrics OUI
Packit Service 54dbc3
followed by 40 bits xy 00 ab cd ef where xy is the SM assigned guid byte
Packit Service 54dbc3
and ab cd ef is an SM autogenerated 24 bits.
Packit Service 54dbc3
Packit Service 54dbc3
The SM assigned GUID byte should be configured as subnet unique.
Packit Service 54dbc3
Packit Service 54dbc3
Also, the algorithm to obtain a "unique" SM assigned GUID is changing from
Packit Service 54dbc3
being based on a static monatomically incrementing counter for the SM
Packit Service 54dbc3
autogenerated part (like SA MCMemberRecord SM assigned MGIDs).
Packit Service 54dbc3
The number of retries to find an unused GUID is currently hardcoded at 1000.
Packit Service 54dbc3
Packit Service 54dbc3
Note that it is not a current requirement to maintain SM assigned GUIDs across OpenSM
Packit Service 54dbc3
failover. Note also that on reregistration, a host may reregister the previously SM
Packit Service 54dbc3
assigned GUID.
Packit Service 54dbc3
Packit Service 54dbc3
Packit Service 54dbc3
Operational Notes
Packit Service 54dbc3
Packit Service 54dbc3
Duplicated alias GUIDs are detected against alias and physical GUIDs and result in
Packit Service 54dbc3
rejection of such registrations.
Packit Service 54dbc3
Packit Service 54dbc3
When a port is dropped, any alias GUID registrations are removed. These are
Packit Service 54dbc3
reregistered by client reregistration mechanism. The exception
Packit Service 54dbc3
to this is service registrations as these are not currently reregistered by
Packit Service 54dbc3
the ULPs/applications that use them.
Packit Service 54dbc3
Packit Service 54dbc3
Futures
Packit Service 54dbc3
Packit Service 54dbc3
1. An alias GUID enforcement feature to which physical ports are allowed to request which
Packit Service 54dbc3
alias GUIDs.