|
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.
|