如何在linux分布式系统中监听-any-端口上的广播

时间:2012-10-13 23:00:27

标签: network-programming distributed-computing

我正在开发一个分布式应用程序,其中一组逻辑节点相互通信。

在初始发现阶段,每个逻辑节点启动并向网络发送UDP广播数据包,以通知其余节点存在。

使用不同的物理主机,可以通过同意端口号并跟踪从其他主机收到的UDP广播来轻松处理。

我的问题是 - 我需要能够在同一台机器上处理多个逻辑节点的情况。

所以在这种情况下,我似乎无法两次绑定到同一个端口。如果同一个盒子上有两个逻辑节点,我该如何处理节点发现案例?非常感谢提前!!

1 个答案:

答案 0 :(得分:0)

您的选择是:

  1. 创建一个RAW套接字并监听特定NIC上的所有数据包,这样,通过查看每个数据包的内容,该进程将识别该数据包是否用于自己的目的地。这个问题是你需要处理大量数据包。这就是为什么我们的操作系统的内核将套接字绑定到进程,因此流量以最佳方式分布。

  2. 创建一个专门的服务,即一个守护程序,它将处理可用于执行工作的新进程的通知。启动时,该过程必须向服务公布其端口号。这通常是如何完成的。

  3. 为要运行的每个进程使用虚拟IP地址,每个进程绑定到不同的IP地址。如果您在本地网络上运行,这是最简单的方法。

  4. 定义端口范围并在您定义的所有IP地址上扫描此范围。