Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何区分ZeroMQ数据包与正常流量_Linux_Networking_Zeromq - Fatal编程技术网

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

Linux 如何区分ZeroMQ数据包与正常流量,linux,networking,zeromq,Linux,Networking,Zeromq,我正在模拟以下场景: 有两个路由器,A和B,都可以访问互联网,也可以通过内部专用网络(基本上是它们之间的以太网电缆)相互连接。它们分别服务于N个客户端(每个路由器作为其自己的客户端网络)。路由器通过专用网络通过ZeroMQ发布者-订阅者方案相互发送类似keepalive的消息 此外,当A拥塞时,它必须向其客户端发送流量 到B(反之亦然),这将把流量转发到Internet 从而“帮助”拥挤的路由器(暂时) 考虑到这两个路由器都是Linux,我认为将A的默认网关更改为B的专用网络接口IP足以将流量搅

我正在模拟以下场景:

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

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

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

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

我的问题是:在收到的数据包中,B如何知道并区分来自客户端数据包(来自A)的ZeroMQ消息

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

这都是考虑到B将把连接到专用网络的接口中接收到的所有数据包转发到互联网(up)

注意:我不知道这是否与问题相关,但在订户应用程序中,会对收到的消息应用筛选器。每个以“network_zmq”开头的消息都由订阅者捕获

编辑:我也在AB之间交换ICMP数据包(ping)(这是我的场景中的一个要求)。这意味着从A到B的ICMP请求也不得转发到Internet

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

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

ZeroMQ数据包可以使用(如果通过L3+网络基础设施)几种不同的传输类E
{tcp://pgm://epgm://vmci://}

如果在这种需要下,如果将其配置为设置用于这种标记的活动声明的
-label
.setsockopt(ZMQ_-TOS,aToS_值)

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


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

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

如果来自A的某些客户端数据包具有与用于标记源自ZeroMQ的流量的ToS标签相同的ToS标签,则典型的L3+路由器软件没有机会区分这些情况(它可能会构建一些试探法和“猜测”,但从那时起,L3+路由器软件主要以性能为中心(在I/F之间尽可能快地移动数据包),不是“完全可编程”-用户定义的嗅探平台,也不是自适应策略实施平台)

构建ZeroMQ代理(中间人)可以帮助您解决注入MITM节点不会违反任何具有法律约束力的义务的情况