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

问题描述 投票:1回答:3

我正在运行Ubuntu服务器14.04.3。

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

mroute.h文件夹中查看/usr/include/linux/,我看到MAXVIFS定义为32,所以我将它升级为100并保存文件。

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

linux networking ubuntu-14.04 multicast
3个回答
1
投票

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

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

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

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

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


1
投票

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


0
投票

我迟到了,但只是因为你有很多接口你不必重新编译你的内核。尝试使用newer version of SMCRoute。您可以使用-N启动它,并在smcroute.conf中指定您打算使用phyint指令路由的接口。有关更多帮助,请参见手册页。

© www.soinside.com 2019 - 2024. All rights reserved.