Direct Data Placement over Reliable Transports (iWARP-DDP)

The Direct Data Placement protocol provides information to Place the incoming data directly into an upper layer protocol's receive buffer without intermediate buffers.

History

This protocol has been defined in RFC 5041 in October 2007.

Protocol dependencies

Example traffic

Frame 10 (106 bytes on wire, 106 bytes captured)
    Arrival Time: Mar 26, 2008 18:13:03.752539000
    [Time delta from previous captured frame: 0.000043000 seconds]
    [Time delta from previous displayed frame: 0.000043000 seconds]
    [Time since reference or first frame: 0.000355000 seconds]
    Frame Number: 10
    Frame Length: 106 bytes
    Capture Length: 106 bytes
    [Frame is marked: False]
    [Protocols in frame: eth:ip:tcp:iwarp_mpa:iwarp_ddp_rdmap:data]
    [Coloring Rule Name: TCP]
    [Coloring Rule String: tcp]
Ethernet II, Src: Ibm_8d:3c:cd (00:11:25:8d:3c:cd), Dst: Ibm_8d:3b:73 (00:11:25:8d:3b:73)
    Destination: Ibm_8d:3b:73 (00:11:25:8d:3b:73)
    Source: Ibm_8d:3c:cd (00:11:25:8d:3c:cd)
    Type: IP (0x0800)
Internet Protocol, Src: 10.0.0.19 (10.0.0.19), Dst: 10.0.0.18 (10.0.0.18)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
    Total Length: 92
    Identification: 0xbc5d (48221)
    Flags: 0x04 (Don't Fragment)
    Fragment offset: 0
    Time to live: 64
    Protocol: TCP (0x06)
    Header checksum: 0x6a1a [correct]
    Source: 10.0.0.19 (10.0.0.19)
    Destination: 10.0.0.18 (10.0.0.18)
Transmission Control Protocol, Src Port: 35959 (35959), Dst Port: 4210 (4210), Seq: 28, Ack: 69, Len: 40
    Source port: 35959 (35959)
    Destination port: 4210 (4210)
    Sequence number: 28    (relative sequence number)
    [Next sequence number: 68    (relative sequence number)]
    Acknowledgement number: 69    (relative ack number)
    Header length: 32 bytes
    Flags: 0x18 (PSH, ACK)
    Window size: 5888 (scaled)
    Checksum: 0x1ae1 [correct]
    Options: (12 bytes)
iWARP Marker Protocol data unit Aligned framing
    FPDU
        ULPDU length: 34 bytes
        CRC: 0x00000000
iWARP Direct Data Placement and Remote Direct Memory Access Protocol
    DDP header
        DDP control field
            0... .... = Tagged flag: False
            .1.. .... = Last flag: True
            ..00 00.. = Reserved: 0x00
            .... ..01 = DDP protocol version: 1
        Reserved for use by the ULP: 4300000000
        Untagged buffer model
            Queue number: 0
            Message sequence number: 1
            Message offset: 0
    RDMAP header
Data (16 bytes)

0000  00 04 00 00 01 00 00 00 00 b0 05 08 00 00 00 00   ................
    Data: 000400000100000000B0050800000000

Wireshark

The iWARP-DDP dissector is fully functional. Since the headers of iWARP-RDMAP and iWARP-DDP overlap and since iWARP-DDP is in practice never seen without RDMAP on top, we have built a combined dissector that implements both protocols together as iwarp_ddp_rdmap. We discussed this with Guy Harris at the latest Sharkfest.

We assume that it is running on top of iWARP-MPA. SCTP support is not yet implemented since it is not used in practice. The following would have to be added for SCTP support:

#define DDP_SEGMENT_CHUNK_ID 16
#define DDP_STREAM_SESSION_CONTROL_ID 17

static int
dissect_ddp_segment_chunk(...)
{
    /* dissection code for DDP segment chunk carried within SCTP */
}

static int
dissect_ddp_stream_session_ctrl(...)
{
    /* dissection code for DDP stream control carried within SCTP */
}

void
proto_reg_handoff_iwarp_ddp_rdmap(voi)
{
    dissector_handle_t seg_chunk_handle;
    dissector_handle_t str_ses_ctrl_handle;

    seg_chunk_handle = create_dissector_handle(dissect_ddp_segment_chunk, proto_iwarp_ddp_rdmap);
    str_ses_ctrl_handle = create_dissector_handle(dissect_ddp_stream_session_ctrl, proto_iwarp_ddp_rdmap);

    dissector_add("sctp.ppi", DDP_SEGMENT_CHUNK_ID, seg_chunk_handle);
    dissector_add("sctp.ppi", DDP_STREAM_SESSION_CONTROL_ID, str_ses_ctrl_handle);
} 

Preference Settings

No preference settings.

Example capture file

Display Filter

A complete list of iWARP-DDP display filter fields can be found in the display filter reference

Capture Filter

You cannot directly filter iWARP-DDP protocols while capturing. However, if you know the TCP port used (see above), you can filter on that one.

Discussion

iWARP-DDP (last edited 2017-04-07 19:04:42 by DaveGoodell)