Download raw body.
update ieee80211_classify() for more responsive SSH
now with DSCP_VA (was Re: update ieee80211_classify() for more responsive SSH)
On 2025 Dec 03 (Wed) at 16:54:33 +0100 (+0100), Stefan Sperling wrote:
:Update ieee80211_classify to RFC8325, applying the recommended mapping
:table from section 4.3.
:
:Most importantly for us, this changes the mapping of DSCP_EF from AC_BE
:(best effort, lowest priority) to AC_VO (voice, highest priority).
:
:ssh uses DSCP_EF ssh to mark interactive sessions. With this patch, ssh
:session over wifi remain responsive while bulk transfers are running.
:
:I started using this a few days ago and I don't want to go back, ever.
:To really see the effect I recommend trying ssh from two systems
:side-by-side, one with the patch applied and one without, while running
:tcpbench or similar benchmarking tools which produce bulk traffic.
:
:Another change is that the values CS7 and CS6, previously known as
:INTERNETCONTROL and NETCONTROL, are now mapped to lowest priority because
:the RFC recommends doing so as part of its security considerations.
:If I understand the RFC correctly, packets of these classes should never
:legitimately originate from wifi networks.
:
:The RFC mentions DSCP_VA, 0x2c, which we do not define yet.
:For now, I have added this value in a comment only.
:
:ok?
:
OK
:
:M sys/net80211/ieee80211_output.c | 15+ 9-
:
:1 file changed, 15 insertions(+), 9 deletions(-)
:
:commit - db26abeeded6dafd2ce6b3e3273cd8927e3a6470
:commit + 17ce08ff227e2db6cc049ee1b51d803bbee4f76b
:blob - 1ffd981a6fe179bc9f0689caaaad2af30277b453
:blob + fc86358d2d2ddb083ad70526b94e1ec806a4ff4a
:--- sys/net80211/ieee80211_output.c
:+++ sys/net80211/ieee80211_output.c
:@@ -452,21 +452,27 @@ ieee80211_classify(struct ieee80211com *ic, struct mbu
: return 0;
:
: /*
:- * Map Differentiated Services Codepoint field (see RFC2474).
:+ * Map Differentiated Services Codepoint field (see RFC8325).
: * Preserves backward compatibility with IP Precedence field.
: */
: switch (ds_field & 0xfc) {
:- case IPTOS_PREC_PRIORITY:
:+ case IPTOS_DSCP_EF:
:+ /* TODO: case IPTOS_DSCP_VA: */
:+ return EDCA_AC_VO;
:+ case IPTOS_DSCP_CS5:
:+ case IPTOS_DSCP_AF41:
:+ case IPTOS_DSCP_AF42:
:+ case IPTOS_DSCP_AF43:
:+ case IPTOS_DSCP_CS4:
:+ case IPTOS_DSCP_AF31:
:+ case IPTOS_DSCP_AF32:
:+ case IPTOS_DSCP_AF33:
:+ case IPTOS_DSCP_CS3:
: return EDCA_AC_VI;
:- case IPTOS_PREC_IMMEDIATE:
:+ case IPTOS_DSCP_CS1:
: return EDCA_AC_BK;
:- case IPTOS_PREC_FLASH:
:- case IPTOS_PREC_FLASHOVERRIDE:
:- case IPTOS_PREC_CRITIC_ECP:
:- case IPTOS_PREC_INTERNETCONTROL:
:- case IPTOS_PREC_NETCONTROL:
:- return EDCA_AC_VO;
: default:
:+ /* unused, or explicitly mapped to UP 0 */
: return EDCA_AC_BE;
: }
: }
:
--
A man wrapped up in himself makes a very small package.
update ieee80211_classify() for more responsive SSH
now with DSCP_VA (was Re: update ieee80211_classify() for more responsive SSH)