-->

NDIS 6.x的以太网桥驱动器(NDIS 6.x ethernet bridge driver)

2019-10-29 13:53发布

我想知道什么是最好的选择方式来建立使用NDIS 6.x的以太网网桥 我应该从哪里开始,我应该使用哪一个对于这一点,微型端口,IM,协议或过滤驱动?

试图以自定义WDK可用,顺利地拿到了连接到以太网适配器的协议驱动程序样本。 接下来是什么?

任何帮助深表感谢。

使用Windows 7x64

Answer 1:

让我们来看看可用的NDIS驱动程序类型:微型端口,重量轻的过滤器和协议。

NDIS微型端口不能单独解决这个问题,因为微端口主机操作系统接收数据包。 你想要的东西,从网络接收数据包。

一个NDIS轻型筛选器可以解决这个问题,但解决方案将是一个小klunky。 你得两个不相关的微型端口堆栈之间手动进行同步。 这是难度比它看起来; 其他人谁曾经使用过这个已经得到了这个错误在最初的几个尝试。

一个NDIS协议驱动程序是解决这一问题的最好办法。 的协议驱动器被设计为连接到多个微端口,和协议驱动程序有能力将路由数据包从一个微型端口堆叠到另一个。

但协议驱动程序丢失一个功能。 如果你只写一个协议驱动程序,那么这是驾驶员如何排队:

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

也就是说,主机的TCPIP协议栈看到两个网卡作为单独的网卡。 (@Aczire,你在表明前一个问题 ,这是对你合适,但对于说明目的,这里的故事的其余部分。)

NDIS让你解决这类问题与MUX-IM驱动程序 。 的IM驱动器基本上是胶合到另一个微型端口的协议。 这使您可以准确地控制主机OS看到的是:

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

在此架构下,你可以欺骗的主机操作系统,以为这两个网络都是一样的。 (例如,面向用户的图形用户界面会显示一个网络适配器,而不是两个。)然而,IM司机付出了相当大的复杂性成本:他们很难写的,甚至难以得到正确的。 我不推荐,除非你有丰富的经验和时间,你解决一个IM驱动程序。



Answer 2:

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

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

你应该检测缆循环,这样你就不会充斥网络。

你应该为802,阅读(OK,脱脂)通过IEEE标准802.1和802.3 ,因为它们对桥梁应该做的一些具体规则。 例如,您可能要特殊情况的目的MAC地址01-80-C2-00-00-00。



文章来源: NDIS 6.x ethernet bridge driver