-
-
Notifications
You must be signed in to change notification settings - Fork 44
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
scheduler: react when subflow-level events pop up (ACK/RTO) #343
Comments
How about invoking __mptcp_push_pending() right after mptcp_pm_nl_work() in mptcp_worker(). Something like:
|
I forgot to reply to this one: we talked about that suggestion at the weekly meeting on the 19th of Sept It doesn't seem OK:
|
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: #343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn> Message-Id: <433320c3a9db77bea53a34fc9c43a3c7e3320399.1709693691.git.tanggeliang@kylinos.cn>
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
scheduler: implement a "opportunistic retransmission" The goal of the "opportunistic retransmission" is to quickly reinject packets when we notice the window has just been closed on one path, see the section 4.2 of: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf This is implemented in mptcp.org, see mptcp_rcv_buf_optimization(). With the current API in the Upstream kernel, a new scheduler doesn't have the ability to trigger a reinjection. Currently there are only hooks to initiate reinjection when the MPTCP RTO fires. The packet scheduler should be able to get more info: not just when MPTCP cwnd close or the seq num has increased (max allowed MPTCP level seq num to be sent == last ack + (...)) but also when there is a RTO at subflow level: maybe linked to scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343 Note that the packet scheduler never significantly queue more than what the cwnd of a subflow would accept: currently, the in-kernel only accepts to queue up to the MPTCP level cwnd (a few more bytes due to round-up) Closes: multipath-tcp#332 Signed-off-by: Geliang Tang <geliang@kernel.org>
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
scheduler: implement a "opportunistic retransmission" The goal of the "opportunistic retransmission" is to quickly reinject packets when we notice the window has just been closed on one path, see the section 4.2 of: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf This is implemented in mptcp.org, see mptcp_rcv_buf_optimization(). With the current API in the Upstream kernel, a new scheduler doesn't have the ability to trigger a reinjection. Currently there are only hooks to initiate reinjection when the MPTCP RTO fires. The packet scheduler should be able to get more info: not just when MPTCP cwnd close or the seq num has increased (max allowed MPTCP level seq num to be sent == last ack + (...)) but also when there is a RTO at subflow level: maybe linked to scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343 Note that the packet scheduler never significantly queue more than what the cwnd of a subflow would accept: currently, the in-kernel only accepts to queue up to the MPTCP level cwnd (a few more bytes due to round-up) Closes: multipath-tcp#332 Signed-off-by: Geliang Tang <geliang@kernel.org>
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
scheduler: implement a "opportunistic retransmission" The goal of the "opportunistic retransmission" is to quickly reinject packets when we notice the window has just been closed on one path, see the section 4.2 of: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf This is implemented in mptcp.org, see mptcp_rcv_buf_optimization(). With the current API in the Upstream kernel, a new scheduler doesn't have the ability to trigger a reinjection. Currently there are only hooks to initiate reinjection when the MPTCP RTO fires. The packet scheduler should be able to get more info: not just when MPTCP cwnd close or the seq num has increased (max allowed MPTCP level seq num to be sent == last ack + (...)) but also when there is a RTO at subflow level: maybe linked to scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343 Note that the packet scheduler never significantly queue more than what the cwnd of a subflow would accept: currently, the in-kernel only accepts to queue up to the MPTCP level cwnd (a few more bytes due to round-up) Closes: multipath-tcp#332 Signed-off-by: Geliang Tang <geliang@kernel.org>
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
scheduler: implement a "opportunistic retransmission" The goal of the "opportunistic retransmission" is to quickly reinject packets when we notice the window has just been closed on one path, see the section 4.2 of: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf This is implemented in mptcp.org, see mptcp_rcv_buf_optimization(). With the current API in the Upstream kernel, a new scheduler doesn't have the ability to trigger a reinjection. Currently there are only hooks to initiate reinjection when the MPTCP RTO fires. The packet scheduler should be able to get more info: not just when MPTCP cwnd close or the seq num has increased (max allowed MPTCP level seq num to be sent == last ack + (...)) but also when there is a RTO at subflow level: maybe linked to scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343 Note that the packet scheduler never significantly queue more than what the cwnd of a subflow would accept: currently, the in-kernel only accepts to queue up to the MPTCP level cwnd (a few more bytes due to round-up) Closes: multipath-tcp#332 Signed-off-by: Geliang Tang <geliang@kernel.org>
From the last meeting:
|
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
scheduler: implement a "opportunistic retransmission" The goal of the "opportunistic retransmission" is to quickly reinject packets when we notice the window has just been closed on one path, see the section 4.2 of: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf This is implemented in mptcp.org, see mptcp_rcv_buf_optimization(). With the current API in the Upstream kernel, a new scheduler doesn't have the ability to trigger a reinjection. Currently there are only hooks to initiate reinjection when the MPTCP RTO fires. The packet scheduler should be able to get more info: not just when MPTCP cwnd close or the seq num has increased (max allowed MPTCP level seq num to be sent == last ack + (...)) but also when there is a RTO at subflow level: maybe linked to scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343 Note that the packet scheduler never significantly queue more than what the cwnd of a subflow would accept: currently, the in-kernel only accepts to queue up to the MPTCP level cwnd (a few more bytes due to round-up) Closes: multipath-tcp#332 Signed-off-by: Geliang Tang <geliang@kernel.org>
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
scheduler: implement a "opportunistic retransmission" The goal of the "opportunistic retransmission" is to quickly reinject packets when we notice the window has just been closed on one path, see the section 4.2 of: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf This is implemented in mptcp.org, see mptcp_rcv_buf_optimization(). With the current API in the Upstream kernel, a new scheduler doesn't have the ability to trigger a reinjection. Currently there are only hooks to initiate reinjection when the MPTCP RTO fires. The packet scheduler should be able to get more info: not just when MPTCP cwnd close or the seq num has increased (max allowed MPTCP level seq num to be sent == last ack + (...)) but also when there is a RTO at subflow level: maybe linked to scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343 Note that the packet scheduler never significantly queue more than what the cwnd of a subflow would accept: currently, the in-kernel only accepts to queue up to the MPTCP level cwnd (a few more bytes due to round-up) Closes: multipath-tcp#332 Signed-off-by: Geliang Tang <geliang@kernel.org>
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
scheduler: implement a "opportunistic retransmission" The goal of the "opportunistic retransmission" is to quickly reinject packets when we notice the window has just been closed on one path, see the section 4.2 of: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf This is implemented in mptcp.org, see mptcp_rcv_buf_optimization(). With the current API in the Upstream kernel, a new scheduler doesn't have the ability to trigger a reinjection. Currently there are only hooks to initiate reinjection when the MPTCP RTO fires. The packet scheduler should be able to get more info: not just when MPTCP cwnd close or the seq num has increased (max allowed MPTCP level seq num to be sent == last ack + (...)) but also when there is a RTO at subflow level: maybe linked to scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343 Note that the packet scheduler never significantly queue more than what the cwnd of a subflow would accept: currently, the in-kernel only accepts to queue up to the MPTCP level cwnd (a few more bytes due to round-up) Closes: multipath-tcp#332 Signed-off-by: Geliang Tang <geliang@kernel.org>
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
scheduler: implement a "opportunistic retransmission" The goal of the "opportunistic retransmission" is to quickly reinject packets when we notice the window has just been closed on one path, see the section 4.2 of: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf This is implemented in mptcp.org, see mptcp_rcv_buf_optimization(). With the current API in the Upstream kernel, a new scheduler doesn't have the ability to trigger a reinjection. Currently there are only hooks to initiate reinjection when the MPTCP RTO fires. The packet scheduler should be able to get more info: not just when MPTCP cwnd close or the seq num has increased (max allowed MPTCP level seq num to be sent == last ack + (...)) but also when there is a RTO at subflow level: maybe linked to scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343 Note that the packet scheduler never significantly queue more than what the cwnd of a subflow would accept: currently, the in-kernel only accepts to queue up to the MPTCP level cwnd (a few more bytes due to round-up) Closes: multipath-tcp#332 Signed-off-by: Geliang Tang <geliang@kernel.org>
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
scheduler: implement a "opportunistic retransmission" The goal of the "opportunistic retransmission" is to quickly reinject packets when we notice the window has just been closed on one path, see the section 4.2 of: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf This is implemented in mptcp.org, see mptcp_rcv_buf_optimization(). With the current API in the Upstream kernel, a new scheduler doesn't have the ability to trigger a reinjection. Currently there are only hooks to initiate reinjection when the MPTCP RTO fires. The packet scheduler should be able to get more info: not just when MPTCP cwnd close or the seq num has increased (max allowed MPTCP level seq num to be sent == last ack + (...)) but also when there is a RTO at subflow level: maybe linked to scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343 Note that the packet scheduler never significantly queue more than what the cwnd of a subflow would accept: currently, the in-kernel only accepts to queue up to the MPTCP level cwnd (a few more bytes due to round-up) Closes: multipath-tcp#332 Signed-off-by: Geliang Tang <geliang@kernel.org>
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
scheduler: implement a "opportunistic retransmission" The goal of the "opportunistic retransmission" is to quickly reinject packets when we notice the window has just been closed on one path, see the section 4.2 of: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf This is implemented in mptcp.org, see mptcp_rcv_buf_optimization(). With the current API in the Upstream kernel, a new scheduler doesn't have the ability to trigger a reinjection. Currently there are only hooks to initiate reinjection when the MPTCP RTO fires. The packet scheduler should be able to get more info: not just when MPTCP cwnd close or the seq num has increased (max allowed MPTCP level seq num to be sent == last ack + (...)) but also when there is a RTO at subflow level: maybe linked to scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343 Note that the packet scheduler never significantly queue more than what the cwnd of a subflow would accept: currently, the in-kernel only accepts to queue up to the MPTCP level cwnd (a few more bytes due to round-up) Closes: multipath-tcp#332 Signed-off-by: Geliang Tang <geliang@kernel.org>
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
scheduler: implement a "opportunistic retransmission" The goal of the "opportunistic retransmission" is to quickly reinject packets when we notice the window has just been closed on one path, see the section 4.2 of: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf This is implemented in mptcp.org, see mptcp_rcv_buf_optimization(). With the current API in the Upstream kernel, a new scheduler doesn't have the ability to trigger a reinjection. Currently there are only hooks to initiate reinjection when the MPTCP RTO fires. The packet scheduler should be able to get more info: not just when MPTCP cwnd close or the seq num has increased (max allowed MPTCP level seq num to be sent == last ack + (...)) but also when there is a RTO at subflow level: maybe linked to scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343 Note that the packet scheduler never significantly queue more than what the cwnd of a subflow would accept: currently, the in-kernel only accepts to queue up to the MPTCP level cwnd (a few more bytes due to round-up) Closes: multipath-tcp#332 Signed-off-by: Geliang Tang <geliang@kernel.org>
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
scheduler: implement a "opportunistic retransmission" The goal of the "opportunistic retransmission" is to quickly reinject packets when we notice the window has just been closed on one path, see the section 4.2 of: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf This is implemented in mptcp.org, see mptcp_rcv_buf_optimization(). With the current API in the Upstream kernel, a new scheduler doesn't have the ability to trigger a reinjection. Currently there are only hooks to initiate reinjection when the MPTCP RTO fires. The packet scheduler should be able to get more info: not just when MPTCP cwnd close or the seq num has increased (max allowed MPTCP level seq num to be sent == last ack + (...)) but also when there is a RTO at subflow level: maybe linked to scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343 Note that the packet scheduler never significantly queue more than what the cwnd of a subflow would accept: currently, the in-kernel only accepts to queue up to the MPTCP level cwnd (a few more bytes due to round-up) Closes: multipath-tcp#332 Signed-off-by: Geliang Tang <geliang@kernel.org>
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
scheduler: implement a "opportunistic retransmission" The goal of the "opportunistic retransmission" is to quickly reinject packets when we notice the window has just been closed on one path, see the section 4.2 of: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf This is implemented in mptcp.org, see mptcp_rcv_buf_optimization(). With the current API in the Upstream kernel, a new scheduler doesn't have the ability to trigger a reinjection. Currently there are only hooks to initiate reinjection when the MPTCP RTO fires. The packet scheduler should be able to get more info: not just when MPTCP cwnd close or the seq num has increased (max allowed MPTCP level seq num to be sent == last ack + (...)) but also when there is a RTO at subflow level: maybe linked to scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343 Note that the packet scheduler never significantly queue more than what the cwnd of a subflow would accept: currently, the in-kernel only accepts to queue up to the MPTCP level cwnd (a few more bytes due to round-up) Closes: multipath-tcp#332 Signed-off-by: Geliang Tang <geliang@kernel.org>
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
scheduler: implement a "opportunistic retransmission" The goal of the "opportunistic retransmission" is to quickly reinject packets when we notice the window has just been closed on one path, see the section 4.2 of: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf This is implemented in mptcp.org, see mptcp_rcv_buf_optimization(). With the current API in the Upstream kernel, a new scheduler doesn't have the ability to trigger a reinjection. Currently there are only hooks to initiate reinjection when the MPTCP RTO fires. The packet scheduler should be able to get more info: not just when MPTCP cwnd close or the seq num has increased (max allowed MPTCP level seq num to be sent == last ack + (...)) but also when there is a RTO at subflow level: maybe linked to scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343 Note that the packet scheduler never significantly queue more than what the cwnd of a subflow would accept: currently, the in-kernel only accepts to queue up to the MPTCP level cwnd (a few more bytes due to round-up) Closes: multipath-tcp#332 Signed-off-by: Geliang Tang <geliang@kernel.org>
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
scheduler: implement a "opportunistic retransmission" The goal of the "opportunistic retransmission" is to quickly reinject packets when we notice the window has just been closed on one path, see the section 4.2 of: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf This is implemented in mptcp.org, see mptcp_rcv_buf_optimization(). With the current API in the Upstream kernel, a new scheduler doesn't have the ability to trigger a reinjection. Currently there are only hooks to initiate reinjection when the MPTCP RTO fires. The packet scheduler should be able to get more info: not just when MPTCP cwnd close or the seq num has increased (max allowed MPTCP level seq num to be sent == last ack + (...)) but also when there is a RTO at subflow level: maybe linked to scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343 Note that the packet scheduler never significantly queue more than what the cwnd of a subflow would accept: currently, the in-kernel only accepts to queue up to the MPTCP level cwnd (a few more bytes due to round-up) Closes: multipath-tcp#332 Signed-off-by: Geliang Tang <geliang@kernel.org>
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
scheduler: implement a "opportunistic retransmission" The goal of the "opportunistic retransmission" is to quickly reinject packets when we notice the window has just been closed on one path, see the section 4.2 of: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf This is implemented in mptcp.org, see mptcp_rcv_buf_optimization(). With the current API in the Upstream kernel, a new scheduler doesn't have the ability to trigger a reinjection. Currently there are only hooks to initiate reinjection when the MPTCP RTO fires. The packet scheduler should be able to get more info: not just when MPTCP cwnd close or the seq num has increased (max allowed MPTCP level seq num to be sent == last ack + (...)) but also when there is a RTO at subflow level: maybe linked to scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343 Note that the packet scheduler never significantly queue more than what the cwnd of a subflow would accept: currently, the in-kernel only accepts to queue up to the MPTCP level cwnd (a few more bytes due to round-up) Closes: multipath-tcp#332 Signed-off-by: Geliang Tang <geliang@kernel.org>
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
scheduler: implement a "opportunistic retransmission" The goal of the "opportunistic retransmission" is to quickly reinject packets when we notice the window has just been closed on one path, see the section 4.2 of: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf This is implemented in mptcp.org, see mptcp_rcv_buf_optimization(). With the current API in the Upstream kernel, a new scheduler doesn't have the ability to trigger a reinjection. Currently there are only hooks to initiate reinjection when the MPTCP RTO fires. The packet scheduler should be able to get more info: not just when MPTCP cwnd close or the seq num has increased (max allowed MPTCP level seq num to be sent == last ack + (...)) but also when there is a RTO at subflow level: maybe linked to scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343 Note that the packet scheduler never significantly queue more than what the cwnd of a subflow would accept: currently, the in-kernel only accepts to queue up to the MPTCP level cwnd (a few more bytes due to round-up) Closes: multipath-tcp#332 Signed-off-by: Geliang Tang <geliang@kernel.org>
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
scheduler: implement a "opportunistic retransmission" The goal of the "opportunistic retransmission" is to quickly reinject packets when we notice the window has just been closed on one path, see the section 4.2 of: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf This is implemented in mptcp.org, see mptcp_rcv_buf_optimization(). With the current API in the Upstream kernel, a new scheduler doesn't have the ability to trigger a reinjection. Currently there are only hooks to initiate reinjection when the MPTCP RTO fires. The packet scheduler should be able to get more info: not just when MPTCP cwnd close or the seq num has increased (max allowed MPTCP level seq num to be sent == last ack + (...)) but also when there is a RTO at subflow level: maybe linked to scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343 Note that the packet scheduler never significantly queue more than what the cwnd of a subflow would accept: currently, the in-kernel only accepts to queue up to the MPTCP level cwnd (a few more bytes due to round-up) Closes: multipath-tcp#332 Signed-off-by: Geliang Tang <geliang@kernel.org>
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
scheduler: implement a "opportunistic retransmission" The goal of the "opportunistic retransmission" is to quickly reinject packets when we notice the window has just been closed on one path, see the section 4.2 of: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf This is implemented in mptcp.org, see mptcp_rcv_buf_optimization(). With the current API in the Upstream kernel, a new scheduler doesn't have the ability to trigger a reinjection. Currently there are only hooks to initiate reinjection when the MPTCP RTO fires. The packet scheduler should be able to get more info: not just when MPTCP cwnd close or the seq num has increased (max allowed MPTCP level seq num to be sent == last ack + (...)) but also when there is a RTO at subflow level: maybe linked to scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343 Note that the packet scheduler never significantly queue more than what the cwnd of a subflow would accept: currently, the in-kernel only accepts to queue up to the MPTCP level cwnd (a few more bytes due to round-up) Closes: multipath-tcp#332 Signed-off-by: Geliang Tang <geliang@kernel.org>
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
scheduler: implement a "opportunistic retransmission" The goal of the "opportunistic retransmission" is to quickly reinject packets when we notice the window has just been closed on one path, see the section 4.2 of: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf This is implemented in mptcp.org, see mptcp_rcv_buf_optimization(). With the current API in the Upstream kernel, a new scheduler doesn't have the ability to trigger a reinjection. Currently there are only hooks to initiate reinjection when the MPTCP RTO fires. The packet scheduler should be able to get more info: not just when MPTCP cwnd close or the seq num has increased (max allowed MPTCP level seq num to be sent == last ack + (...)) but also when there is a RTO at subflow level: maybe linked to scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343 Note that the packet scheduler never significantly queue more than what the cwnd of a subflow would accept: currently, the in-kernel only accepts to queue up to the MPTCP level cwnd (a few more bytes due to round-up) Closes: multipath-tcp#332 Signed-off-by: Geliang Tang <geliang@kernel.org>
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
scheduler: implement a "opportunistic retransmission" The goal of the "opportunistic retransmission" is to quickly reinject packets when we notice the window has just been closed on one path, see the section 4.2 of: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf This is implemented in mptcp.org, see mptcp_rcv_buf_optimization(). With the current API in the Upstream kernel, a new scheduler doesn't have the ability to trigger a reinjection. Currently there are only hooks to initiate reinjection when the MPTCP RTO fires. The packet scheduler should be able to get more info: not just when MPTCP cwnd close or the seq num has increased (max allowed MPTCP level seq num to be sent == last ack + (...)) but also when there is a RTO at subflow level: maybe linked to scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343 Note that the packet scheduler never significantly queue more than what the cwnd of a subflow would accept: currently, the in-kernel only accepts to queue up to the MPTCP level cwnd (a few more bytes due to round-up) Closes: multipath-tcp#332 Signed-off-by: Geliang Tang <geliang@kernel.org>
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
scheduler: implement a "opportunistic retransmission" The goal of the "opportunistic retransmission" is to quickly reinject packets when we notice the window has just been closed on one path, see the section 4.2 of: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf This is implemented in mptcp.org, see mptcp_rcv_buf_optimization(). With the current API in the Upstream kernel, a new scheduler doesn't have the ability to trigger a reinjection. Currently there are only hooks to initiate reinjection when the MPTCP RTO fires. The packet scheduler should be able to get more info: not just when MPTCP cwnd close or the seq num has increased (max allowed MPTCP level seq num to be sent == last ack + (...)) but also when there is a RTO at subflow level: maybe linked to scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343 Note that the packet scheduler never significantly queue more than what the cwnd of a subflow would accept: currently, the in-kernel only accepts to queue up to the MPTCP level cwnd (a few more bytes due to round-up) Closes: multipath-tcp#332 Signed-off-by: Geliang Tang <geliang@kernel.org>
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
scheduler: implement a "opportunistic retransmission" The goal of the "opportunistic retransmission" is to quickly reinject packets when we notice the window has just been closed on one path, see the section 4.2 of: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf This is implemented in mptcp.org, see mptcp_rcv_buf_optimization(). With the current API in the Upstream kernel, a new scheduler doesn't have the ability to trigger a reinjection. Currently there are only hooks to initiate reinjection when the MPTCP RTO fires. The packet scheduler should be able to get more info: not just when MPTCP cwnd close or the seq num has increased (max allowed MPTCP level seq num to be sent == last ack + (...)) but also when there is a RTO at subflow level: maybe linked to scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343 Note that the packet scheduler never significantly queue more than what the cwnd of a subflow would accept: currently, the in-kernel only accepts to queue up to the MPTCP level cwnd (a few more bytes due to round-up) Closes: multipath-tcp#332 Signed-off-by: Geliang Tang <geliang@kernel.org>
The current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level. The scheduler should be called when such events happen. ack_update_msk() is invoked when an ACK is received, so it's the right place to call the scheduler by invoking __mptcp_check_push(). mptcp_subflow_timeout() is implemented to call the scheduler when a subflow timeout happens. But I'm not sure where is the right place to invoke it. I mean where is the right place when a RTO is fired. So I temporarily do it in mptcp_worker(). Closes: multipath-tcp#343 Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
scheduler: implement a "opportunistic retransmission" The goal of the "opportunistic retransmission" is to quickly reinject packets when we notice the window has just been closed on one path, see the section 4.2 of: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final125.pdf This is implemented in mptcp.org, see mptcp_rcv_buf_optimization(). With the current API in the Upstream kernel, a new scheduler doesn't have the ability to trigger a reinjection. Currently there are only hooks to initiate reinjection when the MPTCP RTO fires. The packet scheduler should be able to get more info: not just when MPTCP cwnd close or the seq num has increased (max allowed MPTCP level seq num to be sent == last ack + (...)) but also when there is a RTO at subflow level: maybe linked to scheduler: react when subflow-level events pop up (ACK/RTO) multipath-tcp#343 Note that the packet scheduler never significantly queue more than what the cwnd of a subflow would accept: currently, the in-kernel only accepts to queue up to the MPTCP level cwnd (a few more bytes due to round-up) Closes: multipath-tcp#332 Signed-off-by: Geliang Tang <geliang@kernel.org>
When discussing about the packet scheduler API at the last meeting, it sounds very likely the current packet scheduler will not react by queuing more packets if some subflows only events are emitted, e.g. new TCP ACKs are received only acking things at TCP-level but not at MPTCP level.
The scheduler should probably be called when such events happen.
This can be checked with packetdrill: a ACK is received at TCP level and the scheduler might not send anything while it should (there is more room available).
Hints:
The text was updated successfully, but these errors were encountered: