Application control of TCP retransmission on Linux

前端 未结 5 1554
醉话见心
醉话见心 2020-12-02 06:14

For the impatient:

How to change the value of /proc/sys/net/ipv4/tcp_retries2 for a single connection in Linux, using setsockopt()

5条回答
  •  盖世英雄少女心
    2020-12-02 06:34

    int name[] = {CTL_NET, NET_IPV4, NET_IPV4_TCP_RETRIES2};
    long value = 0;
    size_t size = sizeof(value);
    if(!sysctl(name, sizeof(name)/sizeof(name[0]), &value, &size, NULL, 0) {
      value // It contains current value from /proc/sys/net/ipv4/tcp_retries2
    }
    value = ... // Change value if it needed
    if(!sysctl(name, sizeof(name)/sizeof(name[0]), NULL, NULL, &value, size) {
      // Value in /proc/sys/net/ipv4/tcp_retries2 changed successfully
    }
    

    Programmatically way using C. It works at least on Ubuntu. But (according with code and system variables) looks like it influences on all TCP connections in system, not only one single connection.

提交回复
热议问题