Each port on a switch, CA, or router implements an SLtoVLMappingTable attribute. The SLToVLMappingTableRecord is identified using the General RID. In a switch port's SLToVLMappingTableRecord, the PortNumber indicates the input port and the Enumeration indicates the output port this record references. For more information, refer to “Switch Port SL-to-VL Mapping” on page 623 and “One SLtoVLMappingTable Per Port” on page 667.
The VLArbitrationTableRecord uses the General RID format. In a switch port's VLArbitrationTableRecord, the Portnumber identifies the switch port this record pertains to, and the enumeration identifies the part of the arbitration table (the upper or lower half of the Low- or High-Priority table) stored in this record (using the same values specified in “VLArbitration Attribute” on page 841).
The LinearForwardingTableRecord use the General RID format, but the PortNumber and Enumeration fields act as a single 16-bit field to identify up to 768 possible records for a switch.
The RandomForwardingTableRecord uses the General RID format, but the PortNumber and Enumeration fields act as a single 16-bit field to identify up to 3072 possible records for a switch.
The MulticastForwardingTable attribute is divided into 512 blocks, each consisting of an array of 16, 16-bit entries. The MulticastForwardingTableRecord uses the General RID format, but the PortNumber and Enumeration fields act as a single 16-bit field used as follows:
Each PartitionRecord contains a record of a portion of a port's P_KeyTable attribute and is identified by a 32-bit unique RID. The General RID identifies a NodeRecord that relates the record to a specific CA, switch, or router port. The PortNumber field identifies the port this record is associated with.
When an entity requests a PathRecord from the SA, the SA is only permitted to return path records for which the source port, destination port, and the port the requester used to issue the request all have a P_Key in common. The P_Key match is based on the following rules:
All three of the ports must be in the subnet managed by this SA's SM.
Two ports are considered to share a P_Key when there is at least one valid P_Key in one port's P_KeyTable that matches a P_Key in the other port's P_KeyTable.
P_Key sharing must exist between three pairs of ports:
- The path source and destination ports must have a P_Key in common. The path source and destination ports used to determine sharing are the ones that are implicit in the SGID (or SLID) and DGID (or DLID) of the path.
- The path source port and a port of the requester (see the paragraph that follows this bullet list) must have a P_Key in common.
- The path destination port and a port of the requester (see the paragraph that follows this bullet list) must have a P_Key in common.
The requester port referred to above (“a port of the requester”) may be any port on the device from which the request came (not just the port from which the request MAD came). The requester port that has a P_Key in common with the source port need not be the same port as the requester port that has a P_Key in common with the destination port.
On receipt of a request for information about a device (or devices), the SA only returns information if the requester shares a P_Key (with some exceptions). “Sharing” is defined as follows:
Two ports share a P_Key when there is at least one valid P_Key in one port's P_KeyTable that matches a P_Key in the other port's P_KeyTable.
Sharing is determined using the P_Keys assigned to any port on the requester's device and on the device that is the subject of the inquiry.
All ports involved in this determination must be in the subnet administered by the SA to which the request is directed.
There are some exceptions. PortInfoRecords are always provided with the M_KEY attribute element set to 0, except in the case of a trusted SM (one with the proper SM_Key). If the requester has provided the proper SM_Key, the M_KEY is also provided. Trust of other SMs is implied by an earlier provision of a valid SM_KEY by the requester during the operations leading to the establishment of the current SM master of the subnet.
The following subsections provide a detailed description for each SA RA type.
Refer to Table 33-12 on this page.
Refer to Table 33-13 on page 963.
Refer to Table 33-14 on page 963.
Refer to Table 33-15 on page 963.
Element | Length (in bits) | Description |
---|---|---|
NodeRID | 32 | The record's RID (general RID format). |
NodeInfo | 320 | NodeInfo attribute contents (see Table 29-3 on page 816). |
NodeDescription | 512 | NodeDescription attribute contents. 512-bit (64 byte) UTF-8 encoded string describing the node in text format. |
Element | Length (in bits) | Description |
---|---|---|
NodeRID | 32 | The record's RID (general RID format). |
PortInfo | 432 | PortInfo attribute content (see Table 29-5 on page 825). |
Element | Length (in bits) | Description |
---|---|---|
SLVLRID | 32 | Unique RID of this record |
NodeRID | 32 | RID of NodeRecord this record is associated with. |
SLVLMapping | 64 | One 8-byte block of the SLToVLMappingTable attribute content. |
Element | Length (in bits) | Description |
---|---|---|
NodeRID | 32 | The record's RID (general RID format). |
SwitchInfo | 132 | Contents of SwitchInfo attribute. |
Refer to Table 33-16 on this page.
Refer to Table 33-17 on this page.
Refer to Table 33-18 on page 965. The overall size of the actual MFT defines how many records it takes to store the tables image in the SA database. At a maximum, the MFT is 512 blocks in size, each of containing 64 bytes. In that case, it would takes 512 database records to hold the complete table image.
Element | Length (in bits) | Description |
---|---|---|
LinearFdbRID | 32 | Unique RID of this record. |
NodeRID | 32 | RID of NodeRecord this record is associated with. |
LinearFdbInfo | 512 | 64-byte block of the LinearForwardingTable attribute content. |
Element | Length (in bits) | Description |
---|---|---|
RandomFdbRID | 32 | Unique RID of this record. |
NodeRID | 32 | RID of NodeRecord this record is associated with. |
RandomFdb | 512 | 64-byte block of the RandomForwardingTable attribute content. |
Element | Length (in bits) | Description |
---|---|---|
McastRID | 32 | Unique RID of this record. |
NodeRID | 32 | RID of NodeRecord this record is associated with. |
MulticastForwardingTable | 512 | 64-byte block of the MulticastForwardingTable attribute content. |
Refer to Table 33-19 on this page.
Refer to Table 33-20 on this page.
Element | Length (in bits) | Description |
---|---|---|
VLArbRID | 32 | Unique RID of this record. |
NodeRID | 32 | RID of NodeRecord this record is associated with. |
VLArbitration | 512 | 64-byte block of the VLArbitrationTable attribute. |
Element | Length (in bits) | Description |
---|---|---|
NodeRID | 32 | The record's RID (general RID format). |
SMInfo | 168 | Contents of SMInfo attribute of SM that resides at the port indicated in the RID. |
Refer to Table 33-21 on this page.
Refer to Table 33-22 on this page.
Refer to Table 33-23 on this page.
Element | Length (in bits) | Description |
---|---|---|
PartitionRID | 32 | Unique RID of this record. |
NodeRID | 32 | RID of NodeRecord this record is associated with. |
P_KeyTable | 512 | 64-byte block of P_KeyTable attribute content. |
Element | Length (in bits) | Description |
---|---|---|
InformRID | 32 | Unique RID of this record. |
NodeRID | 32 | RID of NodeRecord this record is associated with. |
Inform | 344 | Content of InformInfo attribute. |
Element | Length (in bits) | Description |
---|---|---|
NoticeRID | 32 | Unique RID of this record. |
NodeRID | 32 | RID of NodeRecord this record is associated with. |
Notice | 512 | Content of Notice attribute. |
Refer to Table 33-24 on this page.
The only statement the specification makes about the LinkRecord is the following:
“Link records are synthesized by the SA to serve as informational topology data for management entities in need of such data.”
For a path defined by its source and destination ports, it seems to relate the port number and LID address of both the source and destination ports.
Element | Length (in bits) | Description |
---|---|---|
LinkRID | 32 | The record's RID (general RID format). |
FromLID | 16 | From InfiniBand address. |
ToLID | 16 | To InfiniBand address. |
FromPort | 8 | From port number. |
ToPort | 8 | To port number. |
Refer to Table 33-25 on page 968.
Service records advertise first level or “bootstrap” basic services that cannot be found prior to query of the SA. These could be services such as boot services, or name or directory services.
ServiceRecords are not intended to do more than to provide a first-level directory to other applications and services normally associated with a network. If there is more than one ServiceLocation associated with a ServiceName, there are multiple Service Records—one for each ServiceLocation.
Element | Length (in bits) | Description |
---|---|---|
ServiceRID | 32 | The record's RID (general RID format). |
ServiceLease | 32 | Lease period remaining for this service, in seconds. FFFFFFFFh is an indefinite lease. When the lease expires, the SA automatically deletes the ServiceRecord. |
Partition | 16 | Partition of this Service. |
ServiceSpecificFlags | 12 | Information related to this service. Content is service specific. |
ServiceGenericFlags | 4 | Generic information related to this service. The interpretation of individual bits in the field is as follows:
|
ServiceName | 992 | Character string identifying what service is being sought (for example “tftp” (Trivial File Transfer Protocol), “CFM.IBTA,” “sendmail,” and so on). This is a 124-byte long, UTF-8 encoded, null-terminated string. |
ServiceGID | 320 | Text representation of the 128-bit port GID for the service (null-terminated). |
ServiceID | 128 | Service identifier. String of 16 hex digits (including any leading zeros). It is not null-terminated. Please note that although the specification shows this field's width as 128 bits, it is only 64-bits wide. |
Refer to Table 33-26 on this page.
Range records specify ranges of LIDs. They exist to allow avoidance of LID conflicts. A Master SM can use them to provide ranges of LIDs to standby SMs, thereby enabling the standby SMs to use known unique ranges if a subnet they control is independently initialized (the author does not know what the specification is referring to here; only the Master SM, not a Standby SM, is permitted to assign unique LIDs to each port in the subnet). A SubnAdmConfig() operation can be used to “push” these records from the Master SM to a Standby SM, and SubnAdmGet() operations can be used by Standby SMs to get ranges from the Master SM.
Element | Length (in bits) | Description |
---|---|---|
RangeRID | 32 | Unique RID of this record. |
NodeRID | 32 | RID of NodeRecord this record is associated with. |
FmAssigned | 64 | GUID of SM-allotted range. |
FromRange | 16 | Value of beginning of range. |
ToRange | 16 | Value of end of range. |
Refer to Table 33-27 on page 970.
A multicast group can be created using either the SubnAdmConfig() or the SubnAdmSet() methods to create a MCGroupRecord.
Using SubnAdmSet(), the edit modifier is set to either:
- Add, to create a multicast group. The Q_Key, MTU, and the P_Key are supplied and all other fields are set to zero. If a particular multicast GID is required, it can be specified; otherwise, the SA will assign a multicast GID to the group.
- Delete, to remove a multicast group, the MCGroupRID is specified. The multicast GID, Q_Key, multicast LID, MTU, and P_Key may also be specified. If a field is set to zero for a delete request, it results in a match for that field in all the MCGroupRecords by the SA.
- A group cannot be edited (modified).
Using SubnAdmConfig(), the edit modifier is set to one of the following:
- Add.
- Modify.
- Delete.
The addition or deletion of a MCGroupRecord requires the SM to reprogram routers and switches with the new multicast information. For a detailed discussion of multicasting, refer to “Multicasting” on page 563.
Element | Length (in bits) | Description |
---|---|---|
McGroupRID | 32 | The record's RID (general RID format). |
MGID | 128 | Multicast GID for this multicast group. When creating a multicast group record, the requester may or may not supply the desired multicast GID address. If the requester desires that the SA select an available multicast GID, the requester sets this field to zero. The SA then assigns an available multicast GID to this field. The assigned multicast GID is returned in the response MAD. |
Q_Key | 16 | The Q_Key supplied by the requester when the record is added to the database. It should be noted that Q_Key is a 32-bit value, not a 16-bit value as indicated in this table. This is almost certainly an error in the 1.0a specification. |
MLID | 16 | Multicast LID for this multicast group. It is automatically generated by the SA when the record is added to the database and is returned in the response MAD. |
MTU | 8 | MTU of this multicast group.
|
TClass | 8 | TClass to be used in the GRH. Specified on a create and distributed to the member record (see “MCMemberRecord” on page 972) on a successful join. |
P_Key | 16 | Partition Key for this Multicast group (must be specified). |
RawTraffic | 1 |
|
Reserved3 | 3 | Reserved (Ignored). |
FlowLabel | 20 | Flow Label to be used in the GRH. Specified on a create and distributed to the member record (see “MCMemberRecord” on page 972) on a successful join. |
HopLimit | 8 | Router Hop Limit to be used in the GRH. Specified on a create and distributed to the member record (see “MCMemberRecord” on page 972) on a successful join. |
Refer to Table 33-28 on this page.
An entity joins a multicast group by creating a MCMemberRecord. The record can be created using either the SubnAdmConfig() or the SubnAdmSet() method.
When using SubnAdmSet(), the edit modifier is set to:
Add for joining a multicast group. The MGID of the group is specified and all other fields are set to zero.
Delete for leaving a multicast group. The MCMemberRID is specified, and the LLID, MGID, Q_Key, MLID, MTU, and P_Key may also be specified. If a field is set to zero for a delete request, it results in a match for that field in all the MCMemberRecords by the SA. One could leave all the multicast groups with one SubnAdmSet() delete request specifying just the LLID with all other fields cleared to zero.
Edit is not permitted and results in a SubnAdmGetResp() with the Status field set to Invalid Attribute.
The addition or deletion of a MCMemberRecord requires the SM to reprogram routers and switches with the new multicast information. For a detailed discussion of multicasting, refer to “Multicasting” on page 563.
Element | Length (in bits) | Description |
---|---|---|
MCMemberRID | 32 | The record's RID (general RID format). Zero specified in a leave request results in a match for all records. |
MGID | 128 | Multicast GID address of the multicast group being joined. Required in the request and returned in the response. |
Q_Key | 16 | Q_Key is supplied by the requester when the member record is added to the database. It is returned in the response. It should be noted that Q_Key is a 32-bit value, not a 16-bit value as indicated in this table. This is almost certainly an error in the 1.0a specification. |
MLID | 16 | Multicast LID address assigned by the SM at creation time. Must be zero when the record is added to the database (it is ignored by the SA). The multicast LID address is automatically assigned by the SA and is returned in the response for a join or a leave. |
LLID | 16 | LID of requester. Returned in the response for a join or a leave. |
TClass | 16 | TClass to be used in the GRH. Specified in the group record and distributed to the member record on a successful join. In a query, zero matches all member records. |
RawTraffic | 1 |
|
Reserved3 | 3 | Reserved (Ignored). |
FlowLabel | 20 | Flow Label to be used in the GRH. Specified in the group record and distributed to the member record on a successful join. In a query, zero matches all member records. |
HopLimit | 8 | Router Hop Limit to be used in the GRH. Specified in the group record and distributed to the member record on a successful join. In a query, zero matches all member records. |
P_Key | 16 | Partition key is supplied by the requester when the member record is added to the database. It must be a non-zero value and is checked by the SA. Note that Multicast groups can't span partitions with a single MLID. |
Reserved | 4 | Reserved and must be set to zero. |
MCSL | 4 | SL to be used for this multicast group. |
Refer to Table 33-29 on this page.
Element | Length (in bits) | Description |
---|---|---|
GuidInfoRID | 32 | Unique RID of this record. |
NodeRID | 32 | RID of NodeRecord this record is associated with. |
GUIDInfo | 512 | Content of GUIDInfo attribute. See “Port's GUID(s) Assignment” on page 156 and “Multiple GUID Assignment Permits Router Multipathing” on page 157 for usage and “GUIDInfo Attribute” on page 823 for programming. |
Refer to Table 33-30 on this page.
The SAResponse record is returned in the Admin Data Area of the first SubnAdmGetBulkResp() response packet response returned in response to a SubnAdmGetBulk() request. This record defines the list of tables that will be provided starting immediately after the SAResponse record in this packet's Admin Data Area and continuing in the Admin Data Areas of the series of SubnAdmGetBulkResp() packets that follow the first response packet.
Element | Length (in bits) | Description |
---|---|---|
EndOfTableRIDs | 32 | Offset from the beginning of this record to the beginning of the bulk data containing the series of tables that comprise the database. |
Current Key | 32 | Current SA key. |
TableRID | variable, each entry is 48 bits | A list of n TableRID entries identifying the order in which the tables will be delivered and the offset (from the beginning of this record) to the end of each table. Each entry has the following format:
|
TableRID | variable, each entry is 48 bits | See the description in the previous row. |
TableRID | ----------- | The SA response record may contain any number of TableRID fields. |
BulkData | The bulk data (consisting of the tables that comprise the database) starts immediately after the TableRID list. |
Refer to Table 33-31 on page 976. The PathRecord RA is used to request information (by issuing a database query) regarding routing between a source and destination port pair. The query results are used to create connections and may be useful in other circumstances as well. The data returned in a PathRecord is usually generated based on the routing algorithm used by the SM. When a PathRecord database query is issued, the SA may respond with a redirect to another service to respond to the request.
The database query for the desired path information is issued using the SubnAdmGetTable() request with the appropriate ComponentMask bit settings and corresponding known PathRecord fields. The SA responds with all PathRecords that match the request template. As an example, the requester could supply just the SGID and DGID fields (with the two, respective ComponentMask bits set to one) to obtain all of the PathRecords for all paths from the SGID to the DGID.
In a typical situation, the DGID is already known (e.g., from a Domain Name Server). During a boot sequence, however, only the SGID might be specified to learn all destination addresses that are reachable from that SGID. In this case, a single path record to each reachable port is returned (in the event of multiple paths from this SGID to a specific destination port, which path is returned for that destination port is indeterminate). The only paths returned are to devices that are visible under the partitioning arrangements in force.
Element | Length (in bits) | Description |
---|---|---|
PathRID | 32 | The PathRecord's RID (general RID format). |
Reserved0 | 32 | Offset for alignment. |
DGID | 128 | Destination GID to establish path to. |
SGID | 128 | Source GID to establish path from. Required for Subn AdmGetTable(). |
DLID | 16 | Destination LID. |
SLID | 16 | Source LID. |
RawTraffic | 1 |
|
Reserved3 | 3 | Reserved (Ignored). |
FlowLabel | 20 | FlowLabel (to be used in the GRH if a GRH is used). |
HopLimit | 8 | Router Hop limit (to be used in the GRH if a GRH is used). |
TClass | 8 | TClass (to be used in the GRH if a GRH is used). |
Reserved1 | 1 | Reserved (Ignored). |
NumbPath | 7 | Maximum number of paths to return in query response. Required for SubnAdmGetTable(). |
P_Key | 16 | Partition Key for this path. |
SL | 16 | Service Level. A single bit is set to one, indicating the SL (0 through 15) supported by this path. |
MtuSelector | 2 | In a query, specifies the relationship of the desired MTU to the MTU specified in the MTU field (see the next row in this table).
|
Mtu | 6 | See the description in the previous row of this table:
|
RateSelector | 2 | Desired transmission rate:
|
Rate | 6 | See the description in the previous row of this table:
|
PacketLifeTimeSelector | 2 |
|
PacketLifeTime | 6 | Accumulated PacketLifeTime (maximum source/destination flight time) for the path specified (in units of 4.096 microseconds X 2PacketLifeTime). The specification does not explain what is meant by “accumulated” in this context. |
Reserved2 | 56 | Offset for alignment. |
In this example scenario, the requester is querying the database for PathRecords defining paths with the following characteristics (see Table 33-32 on this page):
- MTU ≤ 1024 bytes.
- Transmission rate = 2.5 Gb/s.
- The path must be in a partition that the requester belongs to.
- The desired SL = 3.
- Packet Life Time cost = any.
- TClass = any.
- Path supports either raw or IBA traffic.
- FlowLabel = any.
- Number of router hops = any.
Table 33-33 on page 980 contains the example query results.
PathRecord Element | Component Mask Bit | Value | Meaning/Implication |
---|---|---|---|
PathRID | 0 | 0 | PathRID is ignored during query. |
Reserved0 | 0 | 0 | Padding |
DGID | 1 | GID of desired service | GID of the service to communicate with (typically obtained from a name service—DNS). |
SGID | 1 | Source port's GID | Source GID address. |
DLID | 0 | 0 | DLID is ignored during query. |
SLID | 0 | 0 | SLID is ignored during query. |
RawTraffic | 1 | 0 | Only match on paths that carry IBA traffic (rather than raw traffic). Must therefore be a valid P_Key. |
Reserved3 | 0 | 0 | Ignored and set to 0. |
FlowLabel | 0 | 0 | FlowLabel is ignored during query. |
HopLimit | 0 | 0 | Hop limit is ignored during query. |
TClass | 0 | 0 | TClass is ignored during query. |
Reserved1 | 0 | 0 | Ignored and set to 0. |
NumbPath | 1 | 2 | Requesting only 2 paths meeting these specifications. |
P_Key | 1 | 1234h | P_Key to be used for this path = 1234h. |
SL | 1 | 0008h | Only match on paths with SL = 3. |
MtuSelector | 1 | 1 | 1 = Only match on paths with an MTU < the value specified by the Mtu field (= 4, indicating < 2048 bytes). |
Mtu | 1 | 4 | |
RateSelector | 1 | 2 | The RateSelector value of 2 indicates only match on paths with a transmission rate = the rate specified by the Rate value (and a Rate value of 2 indicates 2.5Gb/s). |
Rate | 1 | 2 | |
PacketLifeTime Selector | 0 | 0 | PacketLifeTime is ignored during query. |
PacketLifeTime | 0 | 0 | PacketLifeTime is ignored during query. |
Reserved2 | 0 | 0 | Padding. |
PathRecord Element | Value | Meaning/Implication |
---|---|---|
First returned PathRecord starts here | ||
PathRID | 00000001h | The PathRecord's RID (general RID format). |
Reserved0 | 0 | |
DGID | Service global ID | GID of the service to communicate with (typically obtained from a name service). |
SGID | Source port's GID | Source GID address. |
DLID | 0008h | The LID assigned to the port where this service can be reached. |
SLID | 000Ah | The LID assigned to the local port that can be used to access this service. |
RawTraffic | 0 | This path supports IBA traffic (P_Key will be valid). |
Reserved3 | 0 | Ignored and set to 0. |
FlowLabel | 0 | Default FlowLabel—since this is an intra-subnet DGID (note that the author does not know what is meant by default in this context but it is zero). |
HopLimit | 0 | Default HopLimit—since this is an intra-subnet DGID (note that the author does not know what is meant by default in this context but it is FFh). |
TClass | 0 | Default TClass—since this is an intra-subnet DGID (note that the author does not know what is meant by default in this context but it is zero). |
Reserved1 | 0 | Ignored and set to 0. |
NumbPath | 2 | Two paths are being returned. |
P_Key | 1234h | P_Key to be used for this path. |
SL | 0008h | This path has a SL of 3. |
MtuSelector | 2 | Path's MTU is exactly 1024 bytes. |
Mtu | 3 | |
RateSelector | 2 | Path transmission rate is exactly 2.5Gb/s. |
Rate | 2 | |
PacketLifeTimeSelector | 2 | Path PacketLifeTime = 4.096usec X 22 = 16.384usec exactly. |
PacketLifeTime | 2 | The power that the PacketLifeTimeSelector is raised to in the previous row. |
Reserved2 | 0 | |
Second PathRecord start here | ||
PathRID | 00000003h | The PathRecord's RID (general RID format). |
Reserved0 | 0 | |
DGID | Service global ID | GID of the service to communicate with (typically obtained from a name service). |
SGID | Source port's GID | Source GID address |
DLID | 0009h | The LID assigned to the port where this service can be reached. |
SLID | 000Ah | The LID assigned to the local port that can be used to access this service. |
RawTraffic | 0 | This path supports IBA traffic (P_Key will be valid). |
Reserved3 | 0 | Ignored and set to 0. |
FlowLabel | 0 | Default FlowLabel—since this is an intra-subnet DGID (note that the author does not know what is meant by default in this context but it is zero). |
HopLimit | 0 | Default HopLimit—since this is an intra-subnet DGID (note that the author does not know what is meant by default in this context but it is FFh). |
TClass | 0 | Default TClass—since this is an intra-subnet DGID (note that the author does not know what is meant by default in this context but it is zero). |
Reserved1 | 0 | Ignored and set to 0. |
NumbPath | 2 | Two paths are being returned. |
P_Key | 1234h | P_Key to be used for this path. |
SL | 0008h | This path has a SL of 3. |
MtuSelector | 2 | The path MTU is exactly 512 bytes. |
Mtu | 2 | |
RateSelector | 2 | Path transmission rate is exactly 2.5Gb/s. |
Rate | 2 | |
PacketLifeTime Selector | 2 | Path's PacketLifeTime is 4.096usec X 210 = exactly 4.2ms. |
PacketLifeTime | 0Ah | The power that the PacketLifeTimeSelector is raised to in the previous row. |
Reserved2 | 0 |