两个节点之间的非对称通信

网络工程 网络
2022-02-13 06:14:02

是否存在两个节点的实际场景,其中一个(比如 A)可以完美地将数据包发送到另一个(比如 B),但是从 B 发送到 A 的数据包容易丢包?

对于节点之间的通信通道,可以是两个节点之间的直接通信,也可以是通过接入点。所以,我不是在谈论 Internet 网络。

我的脑海中没有任何实际场景,但我认为这种情况可能会发生,因为

  1. 节点的输出缓冲区大小不同:如果 B 的缓冲区大小较小,则它要发送的数据包可能会被丢弃(网络拥塞)。
  2. 节点的发射功率不同:每个通信通道的特征在于可容忍的 SNR(信噪比)。如果发射功率低于阈值,则比特可能会错误地到达目的地,从而导致数据包校验和失败。在这种情况下,数据包被接收方丢弃。现在,如果节点 B 电池有限且只能以低功率传输,则可能会发生丢包。
  3. 通信通道容易受到攻击:节点 A 有足够的预算来保护通道,而 B 没有。

我上面说的对吗?任何人都可以帮我编辑上述案例吗?这些案例是否有任何实际场景?

2个回答

您没有提到节点之间存在的那种通道,而是做了一些猜测:

如果通信发生在整个互联网上,那么两点之间的通信不需要走同一条路线。尽管通常情况下,我们假设一个来回使用的固定路由,但路由决策是针对每个数据包单独做出的。

在宏观层面,¹如果 A 在阿根廷,B 在巴西,数据包 A→B 可以通过玻利维亚,但返回 B→A 的数据包会通过巴拉圭。

¹(同样的情况发生在较小的级别,例如甚至在同一个 CPD 内,但在全国范围内显示它更加图形化)

这可能是由于他们对网络拓扑的不同看法,或者是由于运输公司之间的不同协议而有意识地决定(例如 A 通过玻利维亚发送更便宜 - 甚至可能检测到它不是最优的 - 而 B 有不同的偏好)。

显然,拥有不同的路由意味着要经过不同的硬件,这些硬件可能具有不同的拥塞级别和优先级,从而导致单个路径上的包被丢弃。

如果我们谈论的是无线连接之类的东西,那么您在 #2 中提供了一个很好的示例,尽管除了功率级别之外还有更多选项,因为天线模型也与节点可以实现的程度有关。即使在节点上使用相同的硬件,一个常见的情况是节点 A 位于 AP 附近,并且与它(以及网络的其余部分)通信没有问题,但节点 B 相对较远,使他的数据包更容易被丢弃。

  1. 你的最后一个场景当然是有道理的。即使是非常繁忙的网络也可能导致网络设备上的 CPU/RAM 不足。来自配置错误的设备的广播风暴可能会使网络交换机瘫痪。(我见过这种情况发生在一个节点被意外配置为从同一个交换机桥接两个 VLAN 并最终放大第 2 层 PDU 直到网络完全崩溃)

  2. 它也可能发生在本地 10GbE 网络中。考虑将节点配置为在 MLAG 环境中使用 LACP 的场景。有可能一个节点成功地对两条链路和两台交换机的流量进行负载平衡,但连接的另一端可能更喜欢一个链路而不是另一个链路,并且由于某种原因,可能首选的链路不是最佳的。有缺陷的硬件、错误的配置、网络某处的 cpu/ram 不足、节点本身的 cpu/ram 不足、硬件性能不佳(缓冲区超速运行等)

               /---[sw1, load 5%]----\
              /      |         |      \
    [A:bond0]-       |mlag pair|       -[B:bond0]
              \      |         |      /
               \---[sw2, load 99%]---/
    

    这甚至不需要异步流量模式,因为主机使用 LACP 并且不知道流量正在采用多条路径。因此,在这种情况下,我们可以让 sw1 传递它的所有流量,而 sw2 由于负载而丢弃数据包。您仍然会在 TCP 会话中看到非常重要的重传。哎呀,这可能是一个单独的攻击。

  3. 我在过去看到过使用有效的单向 NIC 配置服务器的情况。例如,在物理层,从 Host-A-tx -> Host-B-rx 出来的线对是完整的,但从 Host-A-rx <- Host-B-tx 出来的线对是不完整的,而是伪造了一半的连接,以使 NIC 认为它具有完整的双向链接。这是在网络设备通过单向链接登录到 SIEM 的环境中完成的。因此,攻击无法跨越该平面,因为完全双向连接在物理上是不可能的。