jqklw
驱动牛犊
驱动牛犊
  • 注册日期2005-02-17
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分43分
  • 威望6点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:2378回复:7

问问双网卡的邦定与数据转发的问题

楼主#
更多 发布于:2005-06-25 02:46
  大家好啊 我想问问双网卡的问题 谢谢 下面是我的一些想法 呵呵
                我现在是有两个网卡,一个网卡A连内网,一个网卡B连外网。
                一个IM驱动邦定到这两块卡上。因此pAdapt->isSecondary就不是空的了,对了 关于邦定双网卡的步骤我还不是太清楚,呵呵。
                我的问题是这样的:比如网卡A,它既要接收内网的数据,又要接受外网发给内网的数据,能不能这样,如果网卡调用的是ptreveivepacket,判断pAdapt->isSecondary,如果它不为空,表明我们的网卡已经被邦定上了,然后就 每块网卡分工明确,就去数据转发。
                是这样的吗?这样可以吗?
                还有 在ptbindadapter里面,是系统自动遍历每一个网卡的吗?只要给
pAdapt- >isSecondary附上值就说明已经邦定好啦
                我这样理解对吗?是不是和pAdapt->isSecondary有关的函数里的程序都要改??
                不好意思,说了这么多 抱歉啊  如果你有时间 谢谢指点啊
      

最新喜欢:

cyliucyliu
初学者,正在努力 ! 多谢关照 !
jqklw
驱动牛犊
驱动牛犊
  • 注册日期2005-02-17
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分43分
  • 威望6点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-06-25 08:51
自己顶一下,路过的师兄们,帮忙看看啊 谢谢俄i
初学者,正在努力 ! 多谢关照 !
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2005-06-25 10:16
1.isSecondary是处理LBFO的,和绑定到多网卡没有关系,2k ddk的例子中,有对LBFO的支持,xp ddk把LBFO的支持去掉了,我们这里不谈LBFO,仅谈绑定到多网卡。
2.对于内网卡A,接到内网的数据,要往上送到ip协议处理,由ip协议选择路由,对于目的地不是内网的数据,再通过外网卡B发送到外网去。
3.系统会自动遍历每一个网卡,对每个网卡调用ptbindadapter,生成一个Adapt结构。
这些都和isSencondary没有关系。
可以完全不用考虑isSenondary的情况,除非你要实现LBFO.
tanjer
驱动牛犊
驱动牛犊
  • 注册日期2005-06-20
  • 最后登录2005-09-28
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-06-25 12:44
楼主做NAT吗?/是的话。。
对于zhao版的第二点 如果收到的是内网要送的到外网的数据 应该改下源IP MAC之类的直接send出去吧?有必要送到IP层处理吗
jqklw
驱动牛犊
驱动牛犊
  • 注册日期2005-02-17
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分43分
  • 威望6点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-06-25 14:27
呵呵 刚才写了一堆东西 因为没有登陆 居然都没有了 再写一遍
初学者,正在努力 ! 多谢关照 !
jqklw
驱动牛犊
驱动牛犊
  • 注册日期2005-02-17
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分43分
  • 威望6点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-06-25 14:55
是的,双网卡确实是做NAT,但是只需要改写IP  PORT就够了。MAC地址不需要理会,考虑一下实现细节就是了,我认为 呵呵
   还想问问斑竹 和各位达人,我的IM驱动绑定到两块网卡上,会生成一个PADAPT链表。对连接内网的网卡A来说,他接收到两种类型的包 1〉发送内网发出的包 2〉转发外网发来的包 都要进行IP 和 PORT的转换。
   我的问题是,还用连内网的卡A来说,现在调用那个PtReceivePacket
     1〉因为入口参数是
           IN  NDIS_HANDLE       ProtocolBindingContext,//绑定的上下文
       IN  PNDIS_PACKET       Packet;//数据包
      PADAPT       pAdapt =(PADAPT)ProtocolBindingContext;
pAdapt 是链表的头结点吧,我怎么样判断,哪一个PADAPT和网卡是相互对应的?
   2〉ProtocolBindingContext是也和Packet相互对应的吧,只有知道了ProtocolBindingContext和那一块网卡对应,然后才能知道Packet是内网发来的包还是外网发来的包。然后再做相应的执行。是吗?
   3〉在PtReceivePacket里面可以直接调用NDISSEND吗?需要注意的问题是什么呢?
   4〉我问的是不是很幼稚 ?

    谢谢斑竹 达人指点阿  谢谢谢谢
初学者,正在努力 ! 多谢关照 !
jqklw
驱动牛犊
驱动牛犊
  • 注册日期2005-02-17
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分43分
  • 威望6点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-06-25 16:11
翻看以前的帖子 发现一点线索 和NAT有关的
   就是以前HU版说的使用虚拟网卡来实现
   还说“标准的实现是edust提供的,但那不是一个最好的办法,虽然在linux核心实现中也用了类似的方法,当然,如果你要使用这种方法,可以参考linux中的FTP连接跟踪模块,那样的实现最为标准并且最简单。”
   链接如下 http://bbs.zndev.com/read.php?tid=38538&fpage=146
初学者,正在努力 ! 多谢关照 !
tanjer
驱动牛犊
驱动牛犊
  • 注册日期2005-06-20
  • 最后登录2005-09-28
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-06-26 17:05
我的想法:
主要问题不在PADAPT 主要问题在于存在 PADAPT中的BindingHandle....每次NDISOPENADAPT都会返回这么一个句柄 用来 ndissend 用的 所以 你所要做的 就是保存 每次ndisopenadapt返回的句柄(在第三个参数) 然后选择合适的调用ndissend...
至于判断来自哪的包,应该用目的IP判断。。
游客

返回顶部