更改每个连接的拥塞控制算法

Linux中的命令'sysctl'现在改变了整个系统的拥塞控制算法。但是,TCP窗口大小和其他类似参数变化的拥塞控制通常是根据TCP连接完成的。所以我的问题是: 是否存在可以更改每个TCP连接使用的拥塞控制算法的方法? 或者我在这里错过了一些小事?如果是这样,它是什么?     
已邀请:
这是在iperf中使用-Z选项完成的 - 补丁就在这里。 这是它的实现方式(PerfSocket.cpp,第93行):
    if ( isCongestionControl( inSettings ) ) {
#ifdef TCP_CONGESTION
    Socklen_t len = strlen( inSettings->mCongestion ) + 1;
    int rc = setsockopt( inSettings->mSock, IPPROTO_TCP, TCP_CONGESTION,
                 inSettings->mCongestion, len);
    if (rc == SOCKET_ERROR ) {
        fprintf(stderr, "Attempt to set '%s' congestion control failed: %sn",
            inSettings->mCongestion, strerror(errno));
        exit(1);
    }
#else
    fprintf( stderr, "The -Z option is not available on this operating systemn");
#endif
其中mCongestion是一个包含要使用的算法名称的字符串     
看来这可以通过get / setsockopt来实现。我找到的唯一文件是: http://lkml.indiana.edu/hypermail/linux/net/0811.2/00020.html     
在较新版本的Linux中,可以使用ip route ... congctl为特定目标设置拥塞控制。 如果有人熟悉这种方法,请编辑这篇文章。     
Linux具有可插拔的拥塞算法,可以改变动态使用的算法,但这是一个系统范围的设置,而不是每个连接。     

要回复问题请先登录注册