更改内核中的最大虚拟接口数

时间:2016-01-27 14:24:43

标签: linux networking ubuntu-14.04 multicast

我正在运行Ubuntu服务器14.04.3。

我安装了smcroute - 版本0.95,Build 130523.当我尝试启动守护程序时,我收到错误消息:ERRO: addVIF, out of VIF space;,这在尝试添加我的机器的第33个网络接口后发生。

查看mroute.h文件夹中的/usr/include/linux/,我看到MAXVIFS定义为32,因此我将其提升为100并保存了文件。< / p>

重新启动后,我仍然可以看到强加的32限制,但文件仍然显示100。如何强制操作系统读取此文件?

3 个答案:

答案 0 :(得分:1)

您需要使用修改后的配置重建(并重新安装)内核。有特定于Ubuntu的说明here

答案 1 :(得分:1)

首先,你需要理解为什么这个数字是32.而这来自下面定义MAXVIFS的行:

typedef unsigned long vifbitmap_t;      /* User mode code depends on this lot */

在32位机器上(这是古老的废话开始的地方),这将是一个32位的寄存器。当你想要一个比寄存器更大的位图时,事情会变得混乱。 (另请参阅:FD_SET()宏)64在64位计算机上是安全的。

要增加接口数量,您需要更改用户空间定义(您更改的文件) AND 内核中的定义include/linux/mroute.h在内核源代码中。)然后,重建您的内核和每个用户空间应用程序,这些应用程序会混淆多播。

**更改定义会改变ioctl数据结构。 **

答案 2 :(得分:0)

我来晚了,但是只是因为您有许多接口,所以不必重新编译内核。请尝试使用newer version of SMCRoute。您可以从-N开始,并在smcroute.conf中使用phyint指令指定要在哪个接口之间进行路由。请参见手册页以获取更多帮助。