Open merterdemir opened 4 years ago
Hello,
at this stage in the output path the TCP/IP-headers haven't been written yet, because the scheduler needs to make the decision on which subflow to choose before the TCP/IP headers can be written.
What is your intention of using the TCP-header fields? Is it more like the receiver in the TCP-ACK sends those bits to the sender so that the sender uses these bits to steer the traffic?
Assuming that we can generate the traces manually in a scenario that we have oracle access to the sizes of a set of full webpage loads, I would like to send the packets to the predecided/precomputed paths in the scheduler. To do so, I though embedding that information in the packets and reading it in the scheduler makes the implementation in the kernel-side a lot easier. Generating the traces and computing which packets go where can be done in application layer in this experimental setup.
But how would the application pass this information down to the kernel? The application can't write things into a TCP/IP-header.
Embedding such an information to payload as a part of the data and parse & filter in the scheduler is the only way of transferring it to MPTCP scheduler in such an environmental setup, then? I am just trying to make it easier on the kernel-side. I think there is no other way of precomputing traces for a set of websites in MPTCP kernel. Do you have any suggestions about how to construct this workflow? I just want to say which path to choose to MPTCP scheduler from application layer.
Hi all,
I would like to write an experimental scheduler that decides on which subflow to sent the current segment according to “some”, currently undecided, fields on transport layer header (it can be TCP Options) by parsing the TCP Header in the scheduler. To do so, I planned to parse TCP Header with
tcp_hdr(skb)
in the default scheduler. Then, I should be able to read those “some” fields in the TCP header and decide on one of the paths in the scheduler. Finally, choosing the path should be trivial by iterating overmpcb
and looking for the correctpath_index
.However, I cannot see the correct Source, Destination addresses and ports. Both IPv4 and TCP headers doesn’t seem correct on
printk
output even though endiannes is changed from network to host. What could be the main problem with that? Here is the debugging code I have inget_available_subflow
function in default scheduler, (right after the first variable declarations). I will also append a part of the kernel log for a full load of http://multipath-tcp.org webpage at the end of this comment.Let me know if you need any more information.
My system specs:
Here is the kernel log (none of the ports, addresses or field values seems correct to me, except the payload (weird)):