0

我想知道使用 NDIS 6.x 构建以太网桥的最佳选择和方法是什么。我应该从哪里开始,我应该使用哪个,Miniport、IM、协议或过滤驱动程序?

尝试自定义 WDK 中可用的协议驱动程序示例并成功连接到以太网适配器。接下来是什么?

任何帮助深表感谢。

使用 Windows 7x64

4

2 回答 2

1

让我们看看可用的 NDIS 驱动程序类型:微型端口、轻量级筛选器和协议。

单独的NDIS 微型端口无法解决此问题,因为微型端口主机操作系统接收数据包。您想要从网络接收数据包的东西。

NDIS 轻量级过滤器可以解决这个问题,但解决方案会有点笨拙。您必须在两个不相关的微型端口堆栈之间手动同步。这比看起来更难;之前尝试过的其他人在最初的几次尝试中都犯了这个错误。

NDIS 协议驱动程序是解决此问题的最佳方法。协议驱动程序旨在附加到多个微型端口,并且协议驱动程序能够将数据包从一个微型端口堆栈路由到另一个。

但是协议驱动程序缺少一项功能。如果您只是编写一个协议驱动程序,那么这就是驱动程序的排列方式:

[TCPIP]  [YourProtocol]
    | \  / |
    |  \/  |
    |  /\  |
    | /  \ |
 [NIC0] [NIC1]

也就是说,主机的 TCPIP 堆栈将两个 NIC 视为单独的 NIC。(@Aczire,您在上一个问题中表示这对您来说没问题。但出于说明目的,这是故事的其余部分。)

NDIS 允许您使用MUX-IM 驱动程序解决此类问题。IM 驱动程序基本上只是粘在另一个微型端口上的协议。这使您可以准确控制主机操作系统看到的内容:

    [TCPIP]
       |
       |
       |
       |
 [YourMiniport]
 [YourProtocol]
    |      |
    |      |
    |      |
    |      |
 [NIC0] [NIC1]

使用这种架构,您可以欺骗主机操作系统,使其认为这两个网络是相同的。(例如,面向用户的 GUI 将显示一个网络适配器,而不是两个。)然而,IM 驱动程序需要付出相当大的复杂性成本:它们很难编写,甚至更难正确。除非您有丰富的经验和时间,否则我不建议您处理 IM 驱动程序。

于 2013-04-04T21:32:17.783 回答
0

现在您已经有了协议驱动程序:下一步是什么?

  1. 确保您的协议绑定到您关心的两个适配器。
  2. 在两个适配器上设置混杂数据包过滤器(您想接收所有流量,甚至不是发往本地主机的流量)
  3. 当在一个接口上接收到数据包时,克隆 NBL 并在另一个接口上发送克隆。确保您阅读了克隆规则。

您应该检测布线周期,这样就不会淹没网络。

您应该阅读(好的,略读)IEEE 标准的802、802.1802.3,因为它们对网桥应该做什么有一些特定的规则。例如,您可能希望将目标 MAC 地址特例化为 01-80-C2-00-00-00。

于 2013-04-04T21:40:58.260 回答