ECN bits are represented in the TOS field. I think you can use setsockopt with the IP_TOS option to set the TOS field on a socket. See ip(7). On the Go side, use the SyscallConn method on your UDPConn, then call setsockopt using the Control method. Something like this (untested): https://play.golang.org/p/6_R-zlBSibv
On Wed, Aug 5, 2020 at 9:30 PM <martenseem...@gmail.com> wrote: > I'm working on a Go implementation of the QUIC protocol ( > https://github.com/lucas-clemente/quic-go). QUIC specifies how to use ECN > (Explicit Congestion Notification) to detect and respond to congestion in > the network (see > https://tools.ietf.org/html/draft-ietf-quic-transport-29#section-13.4 for > details on that). > > As far as I can see, there's no way to read (and write) the ECN bits from > the IP header, unless I use a raw socket, which would be a suboptimal > solution for many reasons. > The closest I could get to extracting information from the IP header was > by using *UDPConn.ReadFromUDP* and then using *golang.org/x/net/ipv4 > <http://golang.org/x/net/ipv4>* to parse the *oob* bytes into an > *ipv4.ControlMessage* (or equivalently for IPv6). This at least gives me > access to the TTL field. It seems like this approach is insufficient to get > access to the ECN bits though. > > Can anyone help me with this? > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/3c96ecc4-e507-48d1-a912-9e3caf6ecd11o%40googlegroups.com > <https://groups.google.com/d/msgid/golang-nuts/3c96ecc4-e507-48d1-a912-9e3caf6ecd11o%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- Andrei Călin -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CANnvmN4vuFor-qu9R%3DRZ16TUVX2jxnfdE%3DDNiTGz9mjQYBb%2BjA%40mail.gmail.com.