Blame doc/opensm-sriov.txt

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