multipath-tcp / mptcp

⚠️⚠️⚠️ Deprecated 🚫 Out-of-tree Linux Kernel implementation of MultiPath TCP. 👉 Use https://github.com/multipath-tcp/mptcp_net-next repo instead ⚠️⚠️⚠️
https://github.com/multipath-tcp/mptcp_net-next
Other
889 stars 335 forks source link

How to measure MPTCP out-of-order packets? #460

Closed pak-ji closed 2 years ago

pak-ji commented 2 years ago

I tried to collect MPTCP out-of-order packets with wireshark, but it failed.

Wirehark provides out-of-order packet analysis for tcp, but not MPTCP out-of-order packet analysis.

Can anyone tell me how to analyze MPTCP out-of-order packet?

matttbe commented 2 years ago

Hi @pak-ji

I think mptcptrace can report this:

git clone https://bitbucket.org/bhesmans/mptcptrace.git
cd mptcptrace
git checkout dvlp_branch
 ./autogen.sh
./configure --prefix=whatever/
make CPPFLAGS="-DUSE_HASHTABLE -DENDCONN"
make install

Then please check the man page: https://bitbucket.org/bhesmans/mptcptrace/src/dvlp_branch/

But maybe other tools can also do that? https://github.com/nasa/multipath-tcp-tools/tree/master/network-traffic-analysis-tools https://github.com/teto/mptcpanalyzer

vandit86 commented 2 years ago

Then please check the man page: https://bitbucket.org/bhesmans/mptcptrace/src/dvlp_branch/

Hi @matttbe. The last commit to this repository were made in 2015.

matttbe commented 2 years ago

Hi @vandit86

MPTCPv0 (RFC 6824) has been finalised in January 2013 ;-) In other words, yes that's a "development" branch but the tool works and give correct analysis.

pak-ji commented 2 years ago

@matttbe,

I installed mptcptrace in my system. However, mptcptrace could not be executed.

The following error. image

The error content is so simple that I don't know how to solve it.

Please help me.

pak-ji commented 2 years ago

When the MPTCP receive buffer status is as follows:

figure1 Orange is the packet that arrived and ACKed. White is a packet that has not yet arrived. Dark grey is a packet that arrived quickly.

Then, can I think about dark gray as an Out-of-Order? If this is correct, should I use MPTCP level ACK and subflow DSN? (for get the Out-of-Order Packets)

matttbe commented 2 years ago

The error content is so simple that I don't know how to solve it.

Please next time share the error in text instead of a screenshot. Here, the error seems to say you don't have myDudmp.pcap file in ~/git dir → typo? wrong path?

If this is correct, should I use MPTCP level ACK and subflow DSN? (for get the Out-of-Order Packets)

Yes you can, exactly the same principle as with TCP.

pak-ji commented 2 years ago

Here, the error seems to say you don't have myDudmp.pcap file in ~/git dir → typo? wrong path?

I followed the mptcptrace man page. but, this has failed.

// mptcptrace man page

...
SYNOPSIS
       mptcptrace [options] -f filename
...


Yes you can, exactly the same principle as with TCP.

I found OFO packet. And I calculated by adding all of the OFO packet size to get the OFO-queue-size. But it doesn't seem to be the result I want.

I need OFO-queue size. How do you calculate the OFO-queue size presented in the two papers?

matttbe commented 2 years ago

Here, the error seems to say you don't have myDudmp.pcap file in ~/git dir → typo? wrong path?

I followed the mptcptrace man page. but, this has failed.

Yes but you need to put the full path to the file otherwise I don't know how mptcptrace can know where it is located.

Yes you can, exactly the same principle as with TCP.

I found OFO packet. And I calculated by adding all of the OFO packet size to get the OFO-queue-size. But it doesn't seem to be the result I want.

You need to monitor all interfaces on the receiver side and for each subflow, compute Data Sequence Number + Data-Level Length and compare that to Data Acks sent by the receiver. You also need to take into account wrap around and other corner cases but for simple and small connections, that should not be difficult, like the image you shared.

I need OFO-queue size. How do you calculate the OFO-queue size presented in the two papers?

* BLEST : https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7497206

* OLS : https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9440790

Maybe in these papers, they modified the code of the packet scheduler in the kernel to report the OFO-queue size.

Do you mind if I close the ticket here? I think you have everything in your hand to get what you need, no?

pak-ji commented 2 years ago

Thank you. @matttbe, :)


Maybe in these papers, they modified the code of the packet scheduler in the kernel to report the OFO-queue size.

Through your answer, I sent mail to the authors who wrote the document myself and finally learned how to get the OFO-queue-size.

It was to use out_of_order_queue of struct tcp_sock.

I referred to tcp_input.c and finally, I was able to get the result(mptcp OFO queue size).