Skip to content
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

Retransmit notify #438

Closed
mirjak opened this issue Jan 16, 2020 · 7 comments
Closed

Retransmit notify #438

mirjak opened this issue Jan 16, 2020 · 7 comments
Assignees

Comments

@mirjak
Copy link
Contributor

mirjak commented Jan 16, 2020

" Name: :retransmit-notify

This property specifies whether an application considers it useful to
be informed in case sent data was retransmitted more often than a
certain threshold. The default is to Ignore this option."

I guess we then also need an option to set this threshold?

Or we make this option of type Integer and say 0 is ignore.

@mirjak mirjak added the API label Jan 16, 2020
@mwelzl
Copy link
Contributor

mwelzl commented Jan 16, 2020

If you say "yes" to this Selection Property, then (depending on the outcome of racing), the Generic Connection Property retransmit-notify-threshold (sec. 11.1.1.) will be the one to use. I guess this just needs a reference to this section.

@mirjak
Copy link
Contributor Author

mirjak commented Jan 16, 2020

Ah, thanks, still reviewing... yes all we need is a reference!

@mwelzl mwelzl self-assigned this Jan 25, 2020
@gorryfair
Copy link
Contributor

Is this useful? - Lower layers may duplicate, protocols may retransmit for various reasons (apart from loss - timer issues, robustness concerns, etc. So what utility does this bring?
If we need it then we should explain and define a threshold. Can we live without these being a specified part of the API?

@mwelzl
Copy link
Contributor

mwelzl commented Mar 4, 2020

It's a minset thing. So, backtracking:

  • Appendix: this maps to "Notification of Excessive Retransmissions (early warning below abortion threshold)"

  • Minset A.1 points back at ERROR.TCP in RFC 8303, and classifies this as: "Optimizing because it is an early warning to the application, informing it of an impending functional event."

  • In RFC 8303, it gets clear that ERROR.TCP is about soft errors from ICMP, including at least "ICMP error message arrived and excessive retransmissions", and there is a pointer to Section 4.2.4.1 of RFC 1122.

  • There, we find: "However, the conditions that are reported asynchronously to the application MUST include (..) Excessive retransmissions (see 4.2.3.5) (..) ". In Section 4.2.3.5, we have: "Excessive retransmission of the same segment by TCP indicates some failure of the remote host or the Internet path. This failure may be of short or long duration. The following procedure MUST be used to handle excessive retransmissions of data segments [IP:11]:", followed by text that talks about a configurable threshold for early notification (in addition to having a higher abortion threshold).

So: I agree that this may not be super useful - but it's a case where we have a MUST regarding notifying the application, and a MUST for configuring a threshold. Hence we couldn't simply make it a part of the soft error notification, because then wouldn't get to configure the threshold. As stated above, we currently do have a configurable threshold: the Generic Connection Property retransmit-notify-threshold.

@mwelzl
Copy link
Contributor

mwelzl commented Apr 2, 2020

I added the reference, which was needed as @mirjak and I agreed above.
If someone wants to discuss this even more, shout - before the end of this week. If noone shouts, I'll close this next week.

@gorryfair
Copy link
Contributor

Adding the reference seems like the correct thing to do. If we were to discuss the usefulness - I have doubts - but we don't need to have that discussion.

@mwelzl
Copy link
Contributor

mwelzl commented Apr 2, 2020

Closing now in this case :)

@mwelzl mwelzl closed this as completed Apr 2, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants