如何在Mac OS X中加载不同的拥塞控制算法?

3
我找到了一个针对 Mac OS X 的开源 TCP 实现的替代方案[1],它使用 LEDBAT 作为拥塞控制,而不是 NewReno。
  • 由于我对这个操作系统不是很熟悉,您能否建议一下如何构建该源文件并将其加载到系统中?

(例如,我想知道是否有像 Linux 那样的方法进行操作,对于 Linux,有一些实现[2]可以轻松构建,然后作为模块插入内核并在运行时加载:

make; make install
modprobe tcp_ledbat
sysctl -w net.ipv4.tcp_congestion_control=ledbat

)

[1] http://opensource.apple.com/source/xnu/xnu-1699.22.81/bsd/netinet/tcp_ledbat.c

[2] http://perso.telecom-paristech.fr/~valenti/pmwiki/pmwiki.php?n=Main.LEDBAT#howtokernel

谢谢


我看到有人投票迁移到SuperUser,但这似乎更像是IT专业人员需要的东西,这表明应该是ServerFault。另一方面,它是针对Mac的,因此可能是Apple.SE。@Dynamiq:如果您有偏好,可以向管理员标记它。 - dmckee --- ex-moderator kitten
附注:安装开发工具(您已经获得了一张随机附带机器的DVD)后,您应该能够轻松构建东西。 - dmckee --- ex-moderator kitten
谢谢 dmckee 的建议。我会尝试使用 xCode! - Dynamiq
1个回答

3
LEDBAT拥塞控制算法已经内置于OSX Lion(10.7.X)中,不需要单独编译。我认为如果要在早期版本的OSX中使用LEDBAT,需要付出很多艰辛的努力。通过设置以下socket选项setsockopt(sock, SOL_SOCKET, SO_TRAFFIC_CLASS, SO_TC_BK, sizeof(int))可以在套接字上选择LEDBAT进行“后台”传输。同时,套接字的流量类别似乎会受到IP头部DSCP值的影响。
此外,OSX已经有一段时间可以使用网络内核扩展(NKE)加载其他网络协议的内核模块 - 例如已经为SCTP协议开发了NKE模块

这些常量在 macOS 10.15 中不再在系统头文件中定义;可能替代方案应该是 SO_NET_SERVICE_TYPENET_SERVICE_TYPE_BK,但我找不到任何相关文档。 - the paul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接