Raw packets do not include the IBA transport headers, so a raw datagram packet may have a payload greater than the PMTU. Table 21-1 on this page summarizes the maximum payload (and corresponding value for LRH:PktLen) for the two raw datagram types. PktLen indicates the payload size as a number of dwords, so the packet payload must always be divisible by four. If the encapsulated payload size is not a multiple of four, the payload must be padded so as to be a multiple of four. The smallest allowed value for Packet Length is five (5 X 4 = 20 bytes) including the LRH (which is eight bytes in length). The 124-byte maximum packet header/CRC byte count does not include the VCRC.
The largest possible raw IPv6 packet payload = PMTU + 124 (the largest packet header/CRC size) – 8 (LRH size) – 40 (IPv6 header size).
The largest possible raw EtherType packet payload = PMTU + 124 (the largest packet header/CRC size) – 8 (LRH size) – 4 (RWH header size).
MTU | IPv6 Raw Datagram | Raw EtherType Datagram | ||
---|---|---|---|---|
Largest possible packet payload | Corresponding PktLen value | Largest possible packet payload | Corresponding PktLen value | |
256 | 332 bytes | 95 dwords | 368 bytes | 95 dwords |
512 | 588 bytes | 159 dwords | 624 bytes | 159 dwords |
1024 | 1100 bytes | 287 dwords | 1136 bytes | 287 dwords |
2048 | 2124 bytes | 543 dwords | 2160 bytes | 543 dwords |
4096 | 4172 bytes | 1055 dwords | 4208 bytes | 1055 dwords |
No Q_Key is carried in a raw packet and no Q_Key check is performed upon packet receipt. Partitioning (P_Keys) do not apply to raw QPs or to raw packets.
In a multicast operation, upon a request packet's arrival at a switch or a router, the switch or router examines the destination address and, if it's a multicast address, the packet is replicated and transmitted through one or more ports to all destinations that belong to the multicast group identified by the destination address.
Switches examine the LRH:DLID address, determine if it is a multicast address (see “LID Address Space” on page 133), and if it is, the packet is replicated and transmitted through one or more switch ports to all destinations that belong to the multicast group identified by the destination address.
Routers use the raw packet's IPv6 Routing Header's DGID address, or its EtherType field, to determine if the address is a multicast address, and, if so, the packet is replicated and transmitted through one or more router ports to all destinations that belong to the multicast group identified by the destination address. IPv6 applications target a multicast group using an IPv6 multicast address (see “IPv6 Multicast Addressing” on page 152). All other protocols use protocol-specific addressing and resolution. Routers may vary in their ability to support multicast packets and thus may have implementation-specific scheduling, resource management, and congestion/drop policies that are outside the scope of the IBA specification.
Two types of multicast operations are identified in the IBA specification:
UD multicast operations (covered in “Multicasting” on page 563).
Raw datagram multicast operations.
Raw packet multicast is an optional feature for an HCA. The HCA's ability can be discovered by executing the Query HCA verb.
Raw multicast packets are transmitted using any LRH:SL value (i.e., the desired QoS within the local subnet). The SL is specified in the WR. Raw multicast packets are transmitted on any data VL (never over the SMP VL,VL15).
Raw QPs are not attached to multicast groups in order to receive raw packet multicast messages:
If an HCA supports one raw IPv6 QP per port, all raw IPv6 multicast messages received on a port are delivered to that port's raw IPv6 QP.
If multiple raw IPv6 QPs are supported within a CA, an inbound raw IPv6 multicast message packet is delivered to a subset (or all) of those QPs based on an implementation-defined policy outside the scope of the IBA specification. The selection of the QPs to whom the packet is delivered may, for example, be based on the IPv6 Routing Header's NxtHdr value (i.e., the Internet Protocol Number).
If an HCA supports one raw EtherType QP per port, all raw EtherType multicast messages received on a port are delivered to that port's raw EtherType QP. Otherwise, the distribution of those messages to some (or all) raw EtherType QPs within the CA is implementation-defined.
Loopback for raw packet multicast within a CA depends on the number of raw QPs (of the same type) implemented per port. If a raw packet Send operation is performed and the HCA supports one raw QP of each type per port, then no loopback is performed. That is, although the request packet is transmitted through the CA port to the fabric, it is not internally looped back and delivered to the RQ Logic of the same QP.
If the HCA supports multiple raw QPs of each type per port, however, then a multicast message packet sent using the SQ Logic of one raw QP may or may not be internally looped back and received on another QP (or multiple QPs) of the same type. Whether or not this is permitted and, if so, to which QPs the packet is internally routed, is implementation-specific and is outside the scope of the IBA specification.
When the receipt of an inbound Raw packet is completed, a CQE is created on the CQ associated with the raw QP's RQ. In addition to the information typically deposited in a CQE (see “CQE Contents” on page 287), the information found in Table 21-2 on this page is also deposited in the CQE.
Raw IPv6 | Raw EtherType |
---|---|
16-bit SLID | 16-bit SL ID |
4-bit SL | 4-bit SL |
16-bit Ethertype | |
DLID Path Bits | DLID Path Bits |
Since no responses are returned to the SQ Logic, it has no way of knowing if the Send operation completed without error at the remote destination. The only types of errors that the SQ Logic can detect are those that are locally detected by the SQ Logic. Assuming that a local error is detected, the SQ Logic immediately stops the message transmission. The additional actions taken by the SQ Logic are defined by the error type (see Table 21-3 on page 551). It should be noted that the state of the memory at the responder is unknown.
Error | Description | Handling |
---|---|---|
Locally Detected Memory Protection Error | As an example, the Gather Buffer List specified in a WQE for a Send may have one or more entries with invalid L_Key values. | Class B error handling:
|
Implementation-Specific Error Associated With a WQE | An implementation-specific error occurred in the requester's local CI that can be associated with a certain WQE. | Class B error handling:
|
Implementation-Specific Error With No WQE Association | The error can be associated with a specific QP, but not with a specific WQE on that QP's SQ. | Class C error handling:
|
Good Transfer But Can't Post CQE | The current message transfer completed without error, but the CQE could not be written to the CQ due a failure internal to the CA. The CQ is in-accessible or full and an attempt was made to retire a WQE and create a CQE. | Class F error handling:
|
Table 21-4 on page 553 details the types of errors that may be detected by the QP's RQ Logic and how each is handled. Note that when some error types are detected, it is not possible to guarantee the state of local memory. Some or all of a given packet may have been committed to the local memory before the error is detected.
Error | Description | Handling |
---|---|---|
Malformed WQE | The RQ Logic detected a malformed RQ WQE while processing the packet. These errors are not caused by the sender. | Class A error handling:
|
Unsupported or reserved opcode | Inbound request packet's Opcode was either reserved or was for a function not supported by this QP (any opcode other than Send Only). | Class D error handling:
|
No RQE available | An inbound Send request packet has been received, but there is no RQ WQE posted, and therefore no Scatter Buffer List to define where the message is to be written in local memory. | The request is invalid and is silently dropped by the RQ Logic. |
Local QP Error | RQ Logic detected a local QP-related error while executing the request packet. The error prevented the RQ Logic responder from successfully executing the request. | Class A error handling:
|
Packet Header Violation | RQ Logic detected a header violation that requires a silent drop. See Figure 17-25 on page 438. | See Class D error handling earlier in this table. |
Length errors | Inbound Send request packet's data payload exceeded the buffer space specified by the RQ WQE's Scatter Buffer List. | See Class D error handling earlier in this table. |
CQ overflow | The inbound Send message transfer completed with no error, but the CQE could not be written to the CQ. The CQ is inaccessible or full. | Class G error handling:
|
Table 21-5 on this page defines the content of the raw IPv6 packet's NxtHdr field (aka Internet Protocol Number). It should be stressed that this is a snapshot in time (on 5/12/02) and new assignments are made periodically.
Decimal | Keyword | Protocol | References |
---|---|---|---|
0 | HOPOPT | IPv6 Hop-by-Hop Option | [RFC1883] |
1 | ICMP | Internet Control Message | [RFC792] |
2 | IGMP | Internet Group Management | [RFC1112] |
3 | GGP | Gateway-to-Gateway | [RFC823] |
4 | IP | IP-in-IP (encapsulation) | [RFC2003] |
5 | ST | Stream | [RFC1190, RFC1819] |
6 | TCP | Transmission Control Protocol | [RFC793] |
7 | CBT | CBT | [Ballardie] |
8 | EGP | Exterior Gateway Protocol | [RFC888, DLM1] |
9 | IGP | any private interior gateway (used by Cisco for their IGRP) | [IANA] |
10 | BBN-RCC-MON | BBN RCC Monitoring | [SGC] |
11 | NVP-II | Network Voice Protocol | [RFC741, SC3] |
12 | PUP | PUP | [PUP, XEROX] |
13 | ARGUS | ARGUS | [RWS4] |
14 | EMCON | EMCON | [BN7] |
15 | XNET | Cross Net Debugger | [IEN158, JFH2] |
16 | CHAOS | Chaos | [NC3] |
17 | UDP | User Datagram | [RFC768, JBP] |
18 | MUX | Multiplexing | [IEN90, JBP] |
19 | DCN-MEAS DCN | Measurement Subsystems | [DLM1] |
20 | HMP | Host Monitoring | [RFC869, RH6] |
21 | PRM | Packet Radio Measurement | [ZSU] |
22 | XNS-IDP | XEROX NS IDP | [ETHERNET, XEROX] |
23 | TRUNK-1 | Trunk-1 | [BWB6] |
24 | TRUNK-2 | Trunk-2 | [BWB6] |
25 | LEAF-1 | Leaf-1 | [BWB6] |
26 | LEAF-2 | Leaf-2 | [BWB6] |
27 | RDP | Reliable Data Protocol | [RFC908, RH6] |
28 | IRTP | Internet Reliable Transaction | [RFC938, TXM] |
29 | ISO-TP4 | ISO Transport Protocol Class 4 | [RFC905, RC77] |
30 | NETBLT | Bulk Data Transfer Protocol | [RFC969, DDC1] |
31 | MFE-NSP | MFE Network Services Protocol | [MFENET, BCH2] |
32 | MERIT-INP | MERIT Internodal Protocol | [HWB] |
33 | SEP | Sequential Exchange Protocol | [JC120] |
34 | 3PC | Third Party Connect Protocol | [SAF3] |
35 | IDPR | Inter-Domain Policy Routing Protocol | [MXS1] |
36 | XTP | XTP | [GXC] |
37 | DDP | Datagram Delivery Protocol | [WXC] |
38 | IDPR-CMTP | IDPR Control Message Transport Protocol | [MXS1] |
39 | TP++ | TP++ Transport Protocol | [DXF] |
40 | IL | IL Transport Protocol | [Presotto] |
41 | IPv6 | IPv6 | [Deering] |
42 | SDRP | Source Demand Routing Protocol | [DXE1] |
43 | SIP-SR | IPv6-Route Routing Header for IPv6 | [Deering] |
44 | SIP-FRAG | IPv6-Frag Fragment Header for IPv6 | [Deering] |
45 | IDRP | Inter-Domain Routing Protocol | [Sue Hares] |
46 | RSVP | Reservation Protocol | [Bob Braden] |
47 | GRE | General Routing Encapsulation | [Tony Li] |
48 | MHRP | Mobile Host Routing Protocol | [David Johnson] |
49 | BNA | BNA | [Gary Salamon] |
50 | ESP | Encapsulating Security Payload | [RFC1827] |
51 | AH | Authentication Header | [RFC1826] |
52 | I-NLSP | Integrated Net Layer Security TUBA | [GLENN] |
53 | SWIPE | IP with Encryption | [JI6] |
54 | NARP | NBMA Address Resolution Protocol | [RFC1735] |
55 | MOBILE | IP Mobility | [Perkins] |
56 | TLSP | Transport Layer Security Protocol | [Oberg] |
57 | SKIP | SKIP | [Markson] |
58 | IPv6-ICMP | ICMP for IPv6 | [RFC1883] |
59 | IPv6-NoNxt | No Next Header for IPv6 | [RFC1883] |
60 | IPv6-Opts | Destination Options for IPv6 | [RFC1883] |
61 | Any host internal protocol | [IANA] | |
62 | CFTP | CFTP | [CFTP, HCF2] |
63 | Any local network | [IANA] | |
64 | SAT-EXPAK | SATNET and Backroom EXPAK | [SHB] |
65 | KRYPTOLAN | Kryptolan | [PXL1] |
66 | RVT | Remote Virtual Disk Protocol | [MBG] |
67 | IPPC | Internet Pluribus Packet Core | [SHB] |
68 | Any distributed file system | [IANA] | |
69 | SAT-MON | SATNET Monitoring | [SHB] |
70 | VISA | VISA Protocol | [GXT1] |
71 | IPCV | Internet Packet Core Utility | [SHB] |
72 | CPNX | Computer Protocol Network Executive | [DXM2] |
73 | CPHB | Computer Protocol Heart Beat | [DXM2] |
74 | WSN | Wang Span Network | [VXD] |
75 | PVP | Packet Video Protocol | [SC3] |
76 | BR-SAT-MON | Backroom SATNET Monitoring | [SHB] |
77 | SUN-ND | SUN ND PROTOCOL-Temporary | [WM3] |
78 | WB-MON | WIDEBAND Monitoring | [SHB] |
79 | WB-EXPAK | WIDEBAND EXPAK | [SHB] |
80 | ISO-IP | ISO Internet Protocol | [MTR] |
81 | VMTP | VMTP | [DRC3] |
82 | SECURE-VMTP | SECURE-VMTP | [DRC3] |
83 | VINES | VINES | [BXH] |
84 | TTP | TTP | [JXS] |
85 | NSFNET-IGP | NSFNET-IGP | [HWB] |
86 | DGP | Dissimilar Gateway Protocol | [DGP, ML109] |
87 | TCF | TCF | [GAL5] |
88 | EIGRP | EIGRP | [CISCO, GXS] |
89 | OSPFIGP | OSPFIGP | [RFC1583, JTM4] |
90 | Sprite-RPC | Sprite RPC Protocol | [SPRITE, BXW] |
91 | LARP | Locus Address Resolution Protocol | [BXH] |
92 | MTP | Multicast Transport Protocol | [SXA] |
93 | AX.25 | AX.25 Frames | [BK29] |
94 | IPIP | IP-within-IP Encapsulation Protocol | [JI6] |
95 | MICP | Mobile Internetworking Control Protocol | [JI6] |
96 | SCC-SP | Semaphore Communications Sec. Pro. | [HXH] |
97 | ETHERIP | Ethernet-within-IP Encapsulation | [RDH1] |
98 | ENCAP | Encapsulation Header | [RFC1241, RXB3] |
99 | Any private encryption scheme | [IANA] | |
100 | GMTP | GMTP | [RXB5] |
101 | IFMP | Ipsilon Flow Management Protocol | [Hinden] |
102 | PNNI | PNNI over IP | [Callon] |
103 | PIM | Protocol Independent Multicast | [Farinacci] |
104 | ARIS | ARIS | [Feldman] |
105 | SCPS | SCPS | |
106 | QNX | QNX | |
107 | A/N | Active Networks | [Braden] |
108 | IPComp | IP Payload Compression Protocol | [RFC2393] |
109 | SNP | Sitara Networks Protocol | [Sridhar] |
110 | Compaq-Peer | Compaq Peer Protocol | [Volpe] |
111 | IPX-in-IP | IPX in IP | |
112 | VRRP | Virtual Router Redundancy Protocol | [Hinden] |
113 | PGM | PGM Reliable Transport Protocol | [Speakman] |
114 | Any 0-hop protocol | [IANA] | |
115 | L2TP | Layer Two Tunneling Protocol | [Aboba] |
116 | DDX | D-II Data Exchange (DDX) | [Worley] |
117 | IATP | Interactive Agent Transfer Protocol | [Murphy] |
118 | STP | Schedule Transfer Protocol | [JMP] |
119 | SRP | SpectraLink Radio Protocol | [Hamilton] |
120 | UTI | UTI | |
121 | SMP | Simple Message Protocol | [Ekblad] |
122 | SM | SM | |
123 | PTP | Performance Transparency Protocol | [Welzl] |
124 | ISIS over IPv4 | [Przygienda] | |
125 | FIRE | ||
126 | CRTP | Combat Radio Transport Protocol | [Sautter] |
127 | CRUDP | Combat Radio User Datagram | [Sautter] |
128 | SSCOPMCE | ||
129 | IPLT | ||
130 | SPS | Secure Packet Shield | [McIntosh] |
131 | PIPE | Private IP Encapsulation within IP | [Petri] |
132 | SCTP | Stream Control Transmission Protocol | [Stewart] |
133 | FC | Fibre Channel | [Rajagopal] |
134 | RSVP-E2E-IGNORE | [RFC3175] | |
135–254 | Unassigned | [IANA] | |
255 | Reserved | [IANA] |