【问题标题】:How to load a different congestion control algorithm in Mac OS X?如何在 Mac OS X 中加载不同的拥塞控制算法?
【发布时间】:2011-12-16 09:48:36
【问题描述】:

我为 Mac OS X[1] 找到了一个替代的开源 TCP 实现,它使用 LEDBAT 作为拥塞控制,而不是 NewReno。

  • 由于我对那个操作系统不太熟悉,能否请您建议我如何构建该源文件并将其加载到系统中?

(例如,我想知道是否有办法像在 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:如果您有偏好,可以将其标记为版主。
  • 旁白:您应该能够安装开发者工具之后构建东西(您有一个DVD 与机器)。
  • 感谢 dmckee 的建议。那我就试试xCode吧!

标签: macos tcp congestion-control ledbat


【解决方案1】:

LEDBAT 拥塞控制算法内置于 OSX Lion (10.7.X) 中,无需单独编译。我认为没有大量工作就不可能在早期版本的 OSX 中使用 LEDBAT。 LEDBAT 提供“后台”传输,可以通过设置以下套接字选项在套接字上选择 - setsocketopt(sock, SOL_SOCKET, SO_TRAFFIC_CLASS, SO_TC_BK, sizeof(int))。似乎套接字的流量类别可能会受到 IP 标头中的 DSCP 值的影响。

此外,一段时间以来,OSX 已经能够使用它们的Network Kernel Extensions (NKE) 为其他网络协议加载内核模块 - 例如,有一个为 SCTP 协议开发的NKE module

【讨论】:

  • 从 macOS 10.15 开始,这些常量不再在系统头文件中定义;可能替换应该是SO_NET_SERVICE_TYPENET_SERVICE_TYPE_BK,但我找不到任何关于它的文档。
猜你喜欢
  • 1970-01-01
  • 2019-02-25
  • 2020-03-01
  • 2011-06-09
  • 2011-02-02
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多