我正在运行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
。如何强制操作系统读取此文件?
答案 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
指令指定要在哪个接口之间进行路由。请参见手册页以获取更多帮助。