1IB(3) ib 1.2 IB(3)
2
3
4
6 packet.transport.ib - InfiniBand module
7
9 Decode InfiniBand layer. Reference: IB Specification Vol 1-Re‐
10 lease-1.3-2015-03-03.pdf
11
13 class AETH(baseobj.BaseObj)
14 ACK EXTENDED TRANSPORT HEADER (AETH) - 4 BYTES
15
16 ACK Extended Transport Header contains the additional transport fields
17 for ACK packets. The AETH is only in Acknowledge, RDMA READ Response
18 First, RDMA READ Response Last, and RDMA READ Response Only packets
19 as indicated by the Base Transport Header OpCode field.
20
21 AETH(
22 syndrome = int, # Syndrome indicates if this is an ACK or NAK
23 # packet plus additional information about the
24 # ACK or NAK
25 msn = int, # Message Sequence Number indicates the sequence
26 # number of the last message completed at the
27 # responder
28 )
29
30
31 Methods defined here:
32 ---------------------
33
34 __init__(self, unpack)
35 Constructor
36
37 Initialize object's private data according to the arguments given.
38 Arguments can be given as positional, named arguments or a
39 combination of both.
40
41 class AtomicAckETH(baseobj.BaseObj)
42 ATOMIC ACKNOWLEDGE EXTENDED TRANSPORT HEADER (ATOMICACKETH) - 8 BYTES
43
44 Atomic ACK Extended Transport Header contains the additional transport
45 fields for AtomicACK packets. The AtomicAckETH is only in Atomic
46 Acknowledge packets as indicated by the Base Transport Header OpCode
47 field.
48
49 AtomicAckETH(
50 orig_rem_dt = int, # Original Remote Data is the return operand
51 # in atomic operations and contains the data
52 # in the remote memory location before the
53 # atomic operation
54 )
55
56
57 Methods defined here:
58 ---------------------
59
60 __init__(self, unpack)
61 Constructor
62
63 Initialize object's private data according to the arguments given.
64 Arguments can be given as positional, named arguments or a
65 combination of both.
66
67 class AtomicETH(baseobj.BaseObj)
68 ATOMIC EXTENDED TRANSPORT HEADER (ATOMICETH) - 28 BYTES
69
70 Atomic Extended Transport Header contains the additional transport
71 fields for Atomic packets. The AtomicETH is only in Atomic packets
72 as indicated by the Base Transport Header OpCode field.
73
74 AtomicETH(
75 va = int, # Virtual Address: the remote virtual address
76 r_key = int, # Remote Key that authorizes access to the remote
77 # virtual address
78 swap_dt = int, # Swap/Add Data is an operand in atomic operations
79 cmp_dt = int, # Compare Data is an operand in CmpSwap atomic
80 # operation
81 )
82
83
84 Methods defined here:
85 ---------------------
86
87 __init__(self, unpack)
88 Constructor
89
90 Initialize object's private data according to the arguments given.
91 Arguments can be given as positional, named arguments or a
92 combination of both.
93
94 class BTH(baseobj.BaseObj)
95 BASE TRANSPORT HEADER (BTH) - 12 BYTES
96
97 Base Transport Header contains the fields for IBA transports.
98 The presence of BTH is indicated by the Next Header field of
99 the last previous header (i.e., either LRH:lnh or GRH:nxthdr
100 depending on which was the last previous header).
101
102 BTH(
103 opcode = int, # OpCode indicates the IBA packet type. It also
104 # specifies which extension headers follow the BTH
105 se = int, # Solicited Event, this bit indicates that an event
106 # should be generated by the responder
107 migreq = int, # This bit is used to communicate migration state
108 padcnt = int, # Pad Count indicates how many extra bytes are added
109 # to the payload to align to a 4 byte boundary
110 tver = int, # Transport Header Version indicates the version of
111 # the IBA Transport Headers
112 pkey = int, # Partition Key indicates which logical Partition is
113 # associated with this packet
114 destqp = int, # Destination QP indicates the Work Queue Pair Number
115 # (QP) at the destination
116 ackreq = int, # Acknowledge Request, this bit is used to indicate
117 # that an acknowledge (for this packet) should be
118 # scheduled by the responder
119 psn = int, # Packet Sequence Number is used to detect a missing
120 # or duplicate Packet
121 )
122
123
124 Methods defined here:
125 ---------------------
126
127 __init__(self, unpack)
128 Constructor
129
130 Initialize object's private data according to the arguments given.
131 Arguments can be given as positional, named arguments or a
132 combination of both.
133
134 class DETH(baseobj.BaseObj)
135 DATAGRAM EXTENDED TRANSPORT HEADER (DETH) - 8 BYTES
136
137 Datagram Extended Transport Header contains the additional transport
138 fields for datagram service. The DETH is only in datagram packets if
139 indicated by the Base Transport Header OpCode field.
140
141 DETH(
142 q_key = int, # Queue Key is required to authorize access to the
143 # receive queue
144 src_qp = int, # Source QP indicates the Work Queue Pair Number (QP)
145 # at the source.
146 )
147
148
149 Methods defined here:
150 ---------------------
151
152 __init__(self, unpack)
153 Constructor
154
155 Initialize object's private data according to the arguments given.
156 Arguments can be given as positional, named arguments or a
157 combination of both.
158
159 class GRH(baseobj.BaseObj)
160 GLOBAL ROUTE HEADER (GRH) - 40 BYTES
161
162 Global Route Header contains fields for routing the packet between
163 subnets. The presence of the GRH is indicated by the Link Next
164 Header (LNH) field in the LRH. The layout of the GRH is the same as
165 the IPv6 Header defined in RFC 2460. Note, however, that IBA does not
166 define a relationship between a device GID and IPv6 address
167 (i.e., there is no defined mapping between GID and IPv6 address for
168 any IB device or port).
169
170 GRH(
171 ipver = int, # IP Version indicates version of the GRH
172 tclass = int, # Traffic Class is used by IBA to communicate
173 # global service level
174 flabel = int, # Flow Label identifies sequences of packets
175 # requiring special handling
176 paylen = int, # Payload length specifies the number of bytes
177 # starting from the first byte after the GRH,
178 # up to and including the last byte of the ICRC
179 nxthdr = int, # Next Header identifies the header following the
180 # GRH. This field is included for compatibility with
181 # IPV6 headers. It should indicate IBA transport
182 hoplmt = int, # Hop Limit sets a strict bound on the number of
183 # hops between subnets a packet can make before
184 # being discarded. This is enforced only by routers
185 sgid = IPv6Addr, # Source GID identifies the Global Identifier
186 # (GID) for the port which injected the packet
187 # into the network
188 dgid = IPv6Addr, # Destination GID identifies the GID for the port
189 # which will consume the packet from the network
190 )
191
192
193 Methods defined here:
194 ---------------------
195
196 __init__(self, unpack)
197 Constructor
198
199 Initialize object's private data according to the arguments given.
200 Arguments can be given as positional, named arguments or a
201 combination of both.
202
203 class IB(baseobj.BaseObj)
204 InfiniBand (IB) object
205
206 Usage:
207 from packet.transport.ib import IB
208
209 x = IB(pktt)
210
211 Object definition:
212
213 IB(
214 lrh = LRH, # Local Route Header
215 grh = GRH, # Global Route Header
216 bth = BTH, # Base Transport Header
217 rdeth = RDETH, # Reliable Datagram Extended Transport Header
218 deth = DETH, # Datagram Extended Transport Header
219 xrceth = XRCETH, # XRC Extended Transport Header
220 reth = RETH, # RDMA Extended Transport Header
221 atomiceth = AtomicETH, # Atomic Extended Transport Header
222 aeth = AETH, # ACK Extended Transport Header
223 atomicacketh = AtomicAckETH, # Atomic Acknowledge Extended Transport Header
224 immdt = ImmDt, # Immediate Extended Transport Header
225 ieth = IETH, # Invalidate Extended Transport Header
226 psize = int, # Payload data size
227 icrc = int, # Invariant CRC
228 vcrc = int, # Variant CRC
229 )
230
231
232 Methods defined here:
233 ---------------------
234
235 __bool__(self)
236 Truth value testing for the built-in operation bool()
237
238 __init__(self, pktt)
239 Constructor
240
241 Initialize object's private data.
242
243
244 pktt: Packet trace object (packet.pktt.Pktt) so this layer has
245 access to the parent layers.
246
247 class IETH(baseobj.BaseObj)
248 INVALIDATE EXTENDED TRANSPORT HEADER (IETH) - 4 BYTES
249
250 The Invalidate Extended Transport Header contains an R_Key field which
251 is used by the responder to invalidate a memory region or memory window
252 once it receives and executes the SEND with Invalidate request.
253
254 IETH(
255 r_key = int, # The SEND with Invalidate operation carries with it
256 # an R_Key field. This R_Key is used by the responder
257 # to invalidate a memory region or memory window once
258 # it receives and executes the SEND with Invalidate
259 # request
260 )
261
262
263 Methods defined here:
264 ---------------------
265
266 __init__(self, unpack)
267 Constructor
268
269 Initialize object's private data according to the arguments given.
270 Arguments can be given as positional, named arguments or a
271 combination of both.
272
273 class ImmDt(baseobj.BaseObj)
274 IMMEDIATE DATA EXTENDED TRANSPORT HEADER (IMMDT) - 4 BYTES
275
276 Immediate DataExtended Transport Header contains the additional data
277 that is placed in the receive Completion Queue Element (CQE).
278 The ImmDt is only in Send or RDMA-Write packets with Immediate Data
279 if indicated by the Base Transport Header OpCode.
280
281 Note, the terms Immediate Data Extended Transport Header and Immediate
282 Data Header are used synonymously in the specification.
283
284 ImmDt(
285 imm_dt = int, # Immediate Data contains data that is placed in the
286 # receive Completion Queue Element (CQE). The ImmDt is
287 # only allowed in SEND or RDMA WRITE packets with
288 # Immediate Data
289 )
290
291
292 Methods defined here:
293 ---------------------
294
295 __init__(self, unpack)
296 Constructor
297
298 Initialize object's private data according to the arguments given.
299 Arguments can be given as positional, named arguments or a
300 combination of both.
301
302 class LRH(baseobj.BaseObj)
303 LOCAL ROUTE HEADER (LRH) - 8 BYTES
304
305 The Local Routing Header contains fields used for local routing
306 by switches within a IBA subnet.
307
308 LRH(
309 vl = int, # Virtual Lane that the packet is using
310 lver = int, # Link Version of LRH
311 sl = int, # Service Level the packet is requesting within the subnet
312 lnh = int, # Link Next Header identifies the headers following the LRH
313 dlid = int, # Destination Local ID identifies the destination port
314 # and path (data sink) on the local subnet
315 plen = int, # Packet Length identifies the size of the packet in
316 # four-byte words. This field includes the first byte of
317 # LRH to the last byte before the variant CRC
318 slid = int, # Source Local ID identifies the source port
319 # (injection point) on the local subnet
320 )
321
322
323 Methods defined here:
324 ---------------------
325
326 __init__(self, unpack)
327 Constructor
328
329 Initialize object's private data according to the arguments given.
330 Arguments can be given as positional, named arguments or a
331 combination of both.
332
333 class OpCode(builtins.int)
334 OpCode object, this is an integer in which its informal
335 string representation is given as the OpCode name
336
337
338 Methods defined here:
339 ---------------------
340
341 __str__(self)
342 Return str(self).
343
344 class RDETH(baseobj.BaseObj)
345 RELIABLE DATAGRAM EXTENDED TRANSPORT HEADER (RDETH) - 4 BYTES
346
347 Reliable Datagram Extended Transport Header contains the additional
348 transport fields for reliable datagram service. The RDETH is only
349 in Reliable Datagram packets as indicated by the Base Transport Header
350 OpCode field.
351
352 RDETH(
353 ee_context = int, # EE-Context indicates which End-to-End Context
354 # should be used for this Reliable Datagram packet
355 )
356
357
358 Methods defined here:
359 ---------------------
360
361 __init__(self, unpack)
362 Constructor
363
364 Initialize object's private data according to the arguments given.
365 Arguments can be given as positional, named arguments or a
366 combination of both.
367
368 class RETH(baseobj.BaseObj)
369 RDMA EXTENDED TRANSPORT HEADER (RETH) - 16 BYTES
370
371 RDMA Extended Transport Header contains the additional transport fields
372 for RDMA operations. The RETH is present in only the first (or only)
373 packet of an RDMA Request as indicated by the Base Transport Header
374 OpCode field.
375
376 RETH(
377 va = int, # Virtual Address of the RDMA operation
378 r_key = int, # Remote Key that authorizes access for the RDMA
379 # operation
380 dma_len = int, # DMA Length indicates the length (in Bytes) of
381 # the DMA operation.
382 )
383
384
385 Methods defined here:
386 ---------------------
387
388 __init__(self, unpack)
389 Constructor
390
391 Initialize object's private data according to the arguments given.
392 Arguments can be given as positional, named arguments or a
393 combination of both.
394
395 class XRCETH(baseobj.BaseObj)
396 XRC EXTENDED TRANSPORT HEADER (XRCETH)
397
398 XRC Extended Transport Header contains the Destination XRC SRQ
399 identifier.
400 XRCETH(
401 xrcsrq = int, # XRC Shared Receive Queue indicates the XRC Shared
402 # Receive Queue number to be used by the responder
403 # for this packet
404 )
405
406
407 Methods defined here:
408 ---------------------
409
410 __init__(self, unpack)
411 Constructor
412
413 Initialize object's private data according to the arguments given.
414 Arguments can be given as positional, named arguments or a
415 combination of both.
416
418 baseobj(3), packet.application.rpc(3), packet.application.rpcordma(3),
419 packet.application.rpcordma_const(3), packet.internet.ipv6addr(3),
420 packet.unpack(3), packet.utils(3)
421
422
424 No known bugs.
425
427 Jorge Mora (mora@netapp.com)
428
429
430
431NFStest 3.2 21 March 2023 IB(3)