如何区分ZeroMQ数据包与正常流量

我正在模拟以下情况:

  

有两个路由器 A B ,它们都可以访问Internet,并且还通过内部专用网络(基本上是它们之间的以太网电缆)相互连接。它们每个服务N个客户端(每个路由器作为其自己的客户端网络)。路由器通过 ZeroMQ 发布者-订阅者方案通过专用网络互相发送类似keepalive的消息。

     

此外,当 A 拥塞时,它必须向其客户发送流量   到 B (反之亦然),它将把该流量转发到Internet   从而“暂时”“帮助”拥塞的路由器。

考虑到两个路由器都是Linux,我想将 A 的默认网关更改为 B 的专用网络接口IP足以将流量引入 B (通过公共内部专用网络)。

但是,当 B A 的客户端接收流量时,必须小心不要将包含消息的软件包转发到Internet(外部网络)在ZeroMQ应用程序之间交换。

我的问题是 B 如何在接收到的数据包中了解并区分来自客户端数据包(来自 A 的ZeroMQ消息) )?

用iptables / nfqueue捕获然后分析数据包?如果是这样,将如何识别发往ZeroMQ应用程序的数据包?

这都是考虑到 B 会将在连接到专用网络的接口中收到的所有数据包转发到Internet(上)。

注意::我不知道这是否与问题有关,但是在订阅者应用程序中,过滤器应用于收到的消息。订户捕获以“ network_zmq”开头的每条消息。

编辑:我还在 A B 之间交换ICMP数据包(ping)(这是我的要求)。这意味着从A到B的ICMP请求也不能转发到Internet。

zl69301 回答:如何区分ZeroMQ数据包与正常流量

  

Q 如何区分ZeroMQ数据包与正常流量?

回答一个简单的问题并不容易。 ZeroMQ不仅仅是发送一些数据包。

ZeroMQ数据包可能会使用(如果通过L3 +网络基础结构)几种不同的传输类 { tcp:// | pgm:// | epgm:// | vmci:// }

如果有此需要,可以将这样的数据包流量引入应用程序的弱标签,如果将其配置为设置 TOS 标签以进行有效声明这样的标记.setsockopt( ZMQ_TOS,aToS_VALUE )

  

设置IP标头的ToS字段(区分服务(DS)和显式拥塞通知(ECN)”


  

Q B如何在收到的数据包中知道并区分来自客户端数据包(来自A)的ZeroMQ消息?

这部分比较难。如上所述,基于弱的 ToS 的检测是可能的,其余的数据包处理取决于L3 + ROUTER软件的功能,而不取决于ZeroMQ本身。>

如果来自A的某些客户端数据包将具有与旨在标记源自ZeroMQ的流量相同的ToS标签,则典型的L3 + ROUTER软件将没有机会区分此类情况(它可能会建立一些启发式和“ “恕我直言”,但恕我直言,L3 + ROUTER软件此后一直主要关注性能(在I / F中尽可能快地移动数据包),而不是“完全可编程的”用户定义的嗅探器平台或自适应-Policy-Enforcement-Platform)

如果没有通过注入MITM节点违反任何具有法律约束力的义务的情况,则构建ZeroMQ代理(中间人)可能会为您提供帮助。

本文链接:https://www.f2er.com/3162975.html

大家都在问