Reading is possible with IP_RECVTOS on Linux but requires the use of 
recvmsg, because the TOS field is provided as ancillary data. This wouldn't 
be very portable though. Raw sockets with IP_HDRINCL are a better option if 
portability is a concern.

On Wednesday, August 5, 2020 at 11:33:41 PM UTC+2 ma...@acln.ro wrote:

> 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 <marten...@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...@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/fe7cd943-cbb2-4530-a71a-d0b72100fb67n%40googlegroups.com.

Reply via email to