构建一个 3 端口网络分路器(100mbps 半双工)

网络工程 以太网 包分析 硬件 轻敲 自动协商
2021-07-08 08:04:33

我尝试构建一个只有三个端口的网络分路器:两个通信方和一个分路器端。我知道这会迫使通信双方最多使用 100mbps 的半双工,但检测不是问题(我正在利用我自己的硬件来更好地了解它是如何工作的)。我以前做过 4 端口抽头,但一次仍然只能抽头一侧,因为我的笔记本电脑只有一个网络端口,而且我没有 USB NIC。

问题是我在 3 端口分接头上的尝试不起作用。

我使用一根普通的 cat5e 电缆连接两个通信方和半根电缆(只有一个 RJ45 连接器)作为分接头。我将 TX+ 和 TX-(针脚 3 和 6)从主电缆连接到抽头电缆上的 RX+ 和 RX-(针脚 1 和 2),就像使用普通的 4 端口抽头一样。这奏效了。(除了我不知道我正在窃听哪一侧的流量,因为自动 MDIX 会自动选择哪一侧使用引脚 1 和 2 进行传输,哪一侧使用引脚 3 和 6(除非连接到交换机),但这是意料之中的。)

然后我将主电缆的针脚 1 和 2 也连接到分接头电缆上的针脚 1 和 2。这会导致引脚 1 & 3 和 2 & 6 突然处于同一冲突域中,因此当一方开始发送时,另一方将在接收和发送引脚上接收它,并且在那段时间内将无法发送(或如果不小心,CSMA/CD 就会启动)。

至少这是理论。自动协商应检测共享冲突域并将双方切换到 100mbps 半双工以太网。除非这从未奏效……双方只是变得无法传输任何数据。

为什么是这样?我构建像这样的网络分路器的逻辑可能在某处有问题,但我真的不知道为什么。如果这不起作用,为什么还存在“半双工以太网”一词?有半双工以太网连接时,您还能遇到什么其他情况?

或者,有什么方法可以告诉我的 NIC 它应该将引脚 1&2 和 3&6 都视为接收?我正在使用 Linux,但恐怕我必须超越工具并修改驱动程序,对吗?

如果我在构建中犯了一些愚蠢而明显的错误,我很抱歉,但我真的想不出一种方法来完成这项工作。我也看过一个类似的问题,关于为什么网络分接头有 4 个端口,但答案是分接头侧需要 200mbps 才能同时接收两端(这不是标准,因此需要 1gbps,因此需要两个以上的接收引脚)。但是在半双工的情况下,只有一侧可以同时发送,所以比特率仍然是 100mbps,速度不是问题。

2个回答

你的思考过程是基于错误的假设。通过拼接 1 到 3 和 2 到 6(这是您所做的),这不会将它们放在同一个冲突域中。这也不会导致设备自动协商进入半双工模式。仅将主电缆的一侧连接到一个设备,您现在创建的基本上是一个“环回”。

查看集线器 10BaseT 或 100BaseTX 环境。虽然它们在同一个冲突域中,但它们仍然具有单独的 TX 和 RX 对,它们不会在同一对上双向传输。

冲突域的原因是集线器最终是一个转发设备,它在一个端口接收信号并将其转发到所有其他端口。如果它在两个端口上接收流量并将其转发到其他端口,则转发的信号将是两个信号的“冲突”,从而产生不可用的信号。因此需要CSMA/CD和半双工操作。

通过以这种方式将三个设备全部拼接在一起,您只是创建了一个无法工作的环境。如果您想这样做,只需在您的两个设备之间放置一个集线器,然后将一个“侦听”设备连接到它即可。无需水龙头。

因为它仅供您自己使用,所以我想一个简单的 hack 会起作用。您可以使用旧的 100mbps 集线器构建一个常规的 4 路分接头并将侦听端口桥接到您的笔记本电脑。