DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] Questions about locating the rte_mbuf payload
@ 2018-07-14  5:41 Sungho Hong
  2018-07-16 12:58 ` Bruce Richardson
  0 siblings, 1 reply; 3+ messages in thread
From: Sungho Hong @ 2018-07-14  5:41 UTC (permalink / raw)
  To: dev

Hello I have sent the packet with the data "hellohellohello*"
in a message struct using DPDK

    struct message{
    data[PKT_SIZE]
    }

I am sending this data from a client to server, and the server receives
this data. the data received in the server can be viewed from the packet
dump provided by DPDK. You can see the data I am sending "hello"s right at
the bottom of the log

    00000000: A0 36 9F 83 AB BC 00 1B 21 A6 D4 D4 08 00 45 00 |
.6......!.....E.
    00000010: 01 49 7C 60 00 00 80 11 C9 37 0A DA 6E 59 0A DA |
.I|`.....7..nY..
    00000020: 6F FF 44 5C 44 5C 01 35 DF 27 7B 22 6E 61 6D 65 |
o.D\D\.5.'{"name
    00000030: 73 70 61 63 65 73 22 3A 20 5B 31 33 37 30 34 36 | spaces":
[137046
    00000040: 36 31 39 33 2C 20 32 39 33 31 32 37 36 38 39 36 | 6193,
2931276896
    00000050: 2C 20 31 33 32 34 30 31 33 30 39 31 2C 20 31 33 | ,
1324013091, 13
    00000060: 35 32 37 38 34 34 35 32 2C 20 31 34 33 33 32 37 | 52784452,
143327
    00000070: 32 31 36 36 2C 20 32 32 30 31 36 38 30 30 31 36 | 2166,
2201680016
    00000080: 2C 20 31 33 35 39 38 30 30 32 37 30 2C 20 31 34 | ,
1359800270, 14
    00000090: 37 31 30 37 33 36 34 39 2C 20 31 39 37 34 38 36 | 71073649,
197486
    000000A0: 31 33 39 32 2C 20 32 32 33 38 33 34 32 39 32 38 | 1392,
2238342928
    000000B0: 2C 20 31 33 37 32 38 31 35 32 32 31 2C 20 33 30 | ,
1372815221, 30
    000000C0: 37 33 32 34 31 37 36 30 2C 20 37 36 32 35 31 36 | 73241760,
762516
    000000D0: 39 35 35 2C 20 31 32 39 34 33 35 36 37 36 34 2C | 955,
1294356764,
    000000E0: 20 31 35 32 30 34 39 31 39 39 35 5D 2C 20 22 64 |
1520491995], "d
    000000F0: 69 73 70 6C 61 79 6E 61 6D 65 22 3A 20 22 22 2C |
isplayname": "",
    00000100: 20 22 76 65 72 73 69 6F 6E 22 3A 20 5B 32 2C 20 |  "version":
[2,
    00000110: 30 5D 2C 20 22 68 6F 73 74 5F 69 6E 74 22 3A 20 | 0],
"host_int":
    00000120: 32 30 39 37 36 33 35 34 38 32 33 39 38 34 38 32 |
2097635482398482
    00000130: 38 34 35 36 30 36 31 34 37 35 30 34 32 32 37 38 |
8456061475042278
    00000140: 33 35 34 37 35 37 32 2C 20 22 70 6F 72 74 22 3A | 3547572,
"port":
    00000150: 20 31 37 35 30 30 7D 68 65 6C 6C 6F 68 65 6C 6C |
17500}hellohell
    00000160: 6F 68 65 6C 6C 6F 68 65 6C 6C 6F 68 65 6C 6C 6F |
ohellohellohello
    00000170: 68 65 6C 6C 6F 68 65 6C 6C 6F 68 65 6C 6C 6F 00 |
hellohellohello.


The problem is I cannot locate the data offset by reading the rte_mbuf
provided by dpdk. I need to extract the "hello"s using the correct method
that is provided by DPDK, but I could not find a good way.

I have tried the size headers and the buf_address pointers to locate the
location of the struct message, but I have no idea how to pin point the
exact address of the data-offset using DPDK structures.


char *rtn = NULL;
rtn = rte_pktmbuf_mtod(m, char *); // points to the start of the data

struct ether_hdr *eth;
eth = rte_pktmbuf_mtod(m, struct ether_hdr *);
// rtn+=sizeof(eth);

rtn = m->buf_addr;


if(rtn!=NULL) {
printf("length hdr: %ld\n", sizeof(struct ether_hdr));
printf("length eth: %ld\n", sizeof(eth));
printf("length m->buf_add: %ld\n", sizeof(m->buf_addr));

printf("length message: %ld\n", sizeof(struct message));

// 336
printf("rte_pktmbuf_mtod: %s\n", rtn);  // lenght of the offset: 456
rte_pktmbuf_dump(stdout, m, 1024);
}


Would anyone familiar with DPDK, have a good answer for this?


Best
Sungho Hong

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [dpdk-dev] Questions about locating the rte_mbuf payload
  2018-07-14  5:41 [dpdk-dev] Questions about locating the rte_mbuf payload Sungho Hong
@ 2018-07-16 12:58 ` Bruce Richardson
  2018-07-16 17:05   ` Sungho Hong
  0 siblings, 1 reply; 3+ messages in thread
From: Bruce Richardson @ 2018-07-16 12:58 UTC (permalink / raw)
  To: Sungho Hong; +Cc: dev

On Fri, Jul 13, 2018 at 10:41:31PM -0700, Sungho Hong wrote:
> Hello I have sent the packet with the data "hellohellohello*"
> in a message struct using DPDK
> 
>     struct message{
>     data[PKT_SIZE]
>     }
> 
> I am sending this data from a client to server, and the server receives
> this data. the data received in the server can be viewed from the packet
> dump provided by DPDK. You can see the data I am sending "hello"s right at
> the bottom of the log
> 

How exactly are you sending this data? What is the code for creating the
packet to send? The code you sent looks ok for reading the packet, but the
position in the mbuf also depends on what the packet being sent looks like,
which is dependent on how the packet is created on the sender side.

Regards,

/Bruce

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [dpdk-dev] Questions about locating the rte_mbuf payload
  2018-07-16 12:58 ` Bruce Richardson
@ 2018-07-16 17:05   ` Sungho Hong
  0 siblings, 0 replies; 3+ messages in thread
From: Sungho Hong @ 2018-07-16 17:05 UTC (permalink / raw)
  To: Bruce Richardson; +Cc: dev

Thanks for the reply Bruce,
I have solved the problem. Just like you have said all I had to know was
the data size that I was sending and the packet size that the DPDK tries to
send. I subtracted them to get the accurate position of the end of the
packet header address and my data.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-07-16 17:06 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-14  5:41 [dpdk-dev] Questions about locating the rte_mbuf payload Sungho Hong
2018-07-16 12:58 ` Bruce Richardson
2018-07-16 17:05   ` Sungho Hong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).