Hi Bob,

so having iperf2 actually check and report this information, obviously is the 
end game here (especially reporting, the DSCP and ECN pattern send, the 
patterns recswivec by the other side and what the receiver saw in the response 
packets would be really helpful).

But one can use tcpdump as a crude hack to get the desired information:

Here are my GOTO tcpdump invocations for that purpose...

# ECN IPv4/6
tcpdump -i pppoe-wan -v -n '(ip6 and (ip6[0:2] & 0x30) >> 4  != 0)' or '(ip and 
(ip[1] & 0x3) != 0)' # NOT Not-ECT
tcpdump -i pppoe-wan -v -n '(ip6 and (ip6[0:2] & 0x30) >> 4  == 1)' or '(ip and 
(ip[1] & 0x3) == 1)' # ECT(1)
tcpdump -i pppoe-wan -v -n '(ip6 and (ip6[0:2] & 0x30) >> 4  == 2)' or '(ip and 
(ip[1] & 0x3) == 2)' # ECT(0)
tcpdump -i pppoe-wan -v -n '(ip6 and (ip6[0:2] & 0x30) >> 4  == 3)' or '(ip and 
(ip[1] & 0x3) == 3)' # CE

# TCP ECN IPv4/6: (for IPv6 see see 
https://ask.wireshark.org/question/27153/i-am-trying-to-capture-tcp-syn-on-ipv6-packets-but-i-only-get-ipv4/)
tcpdump -i pppoe-wan -v -n '(tcp[tcpflags] & (tcp-ece|tcp-cwr) != 0)' or 
'((ip6[6] = 6) and (ip6[53] & 0xC0 != 0))' # TCP ECN flags, ECN in action
tcpdump -i pppoe-wan -v -n '(tcp[tcpflags] & tcp-ece != 0)' or '((ip6[6] = 6) 
and (ip6[53] & 0x40 != 0))' # TCP ECN flags, ECE: ECN-Echo (reported as E)
tcpdump -i pppoe-wan -v -n '(tcp[tcpflags] & tcp-cwr != 0)' or '((ip6[6] = 6) 
and (ip6[53] & 0x80 != 0))' # TCP ECN flags, CWR: Congestion Window Reduced 
(reported as W)


# IPv4/6 everything decimal DSCP 45 0x2D
tcpdump -i pppoe-wan -v -n '(ip and (ip[1] & 0xfc) >> 2 == 0x2D)' or '(ip6 and 
(ip6[0:2] & 0xfc0) >> 4  == 0x2D)'


Sure this is not super convenient, but they can help a lot in quick and dirty 
debugging...

Note: pppoe-wan is my OpenWrt router's wan interface.



> On 9. Mar 2024, at 19:43, rjmcmahon via Nnagain 
> <nnagain@lists.bufferbloat.net> wrote:
> 
> I should note that I haven't evaluated ECN marks, just that 45 gets passed 
> to/fro
> 
> Bob
>>> [JL] Quite true: each network tends to use DSCP marks on a
>>> private/internal basis and so will bleach the DSCP marks on ingress
>>> from peers. This will, however, change with the upcoming IETF RFC on
>>> Non-Queue-Building (NQB) Per Hop Behavior -
>>> https://datatracker.ietf.org/doc/html/draft-ietf-tsvwg-nqb. And I can
>>> report that we at Comcast now permit DSCP-45 inbound for NQB packets,
>>> in case developers would like to experiment with this (we just
>>> finished updating router configs last week for residential users on
>>> DOCSIS; FTTP and commercial are still in process).
>> iperf 2 now supports a --dscp option as a convenience (vs setting the
>> --tos byte.) I can confirm --dscp 45 is being passed over my xfinity
>> hop to my linodes (now Akamai) servers in both directions at multiple
>> colo locations.
>> The --dscp is in the master branch.
>> https://sourceforge.net/p/iperf2/code/ci/master/tree/  Older versions
>> require --tos and setting the byte, e.g. 180
>> Bob
>> _______________________________________________
>> Nnagain mailing list
>> Nnagain@lists.bufferbloat.net
>> https://lists.bufferbloat.net/listinfo/nnagain
> _______________________________________________
> Nnagain mailing list
> Nnagain@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/nnagain

_______________________________________________
Nnagain mailing list
Nnagain@lists.bufferbloat.net
https://lists.bufferbloat.net/listinfo/nnagain

Reply via email to