【发布时间】:2019-11-05 10:10:19
【问题描述】:
我正在模拟以下场景:
有两个路由器,A 和 B,都可以访问 Internet,并且还通过内部专用网络(它们之间基本上是以太网电缆)相互连接.它们每个都服务于 N 个客户端(每个路由器都作为自己的客户端网络)。路由器通过私有网络通过 ZeroMQ 发布者-订阅者方案相互发送类似 keepalive 的消息。
此外,当 A 拥塞时,它必须向其客户端发送流量 到 B(反之亦然),这会将流量转发到互联网 从而“帮助”拥塞的路由器(暂时)。
考虑到两个路由器都是Linux,我想将A的默认网关更改为B的私有网络接口IP足以将流量搅动到B(通过公共内部专用网络)。
但是,当B接收来自A的客户端的流量时,必须注意不要将包含消息的包转发到Internet(外部网络)在 ZeroMQ 应用程序之间交换。
我的问题是:B如何知道和区分在收到的数据包中,来自客户端数据包(来自A )?
用 iptables/nfqueue 捕获然后分析数据包?如果是这样,什么会识别发往 ZeroMQ 应用程序的数据包?
这都是考虑到 B 会将连接到私有网络的接口接收到的所有数据包转发到 Internet(向上)。
注意:我不知道这是否与问题相关,但在订阅者应用程序中,对收到的消息应用了一个过滤器。每条以“network_zmq”开头的消息都被订阅者捕获。
编辑: 我还在 A 和 B 之间交换 ICMP 数据包(ping)(这是我的场景中的要求)。这意味着从 A 到 B 的 ICMP 请求也不得转发到 Internet。
【问题讨论】:
标签: linux networking zeromq