trackoftime 发表于 2014-08-05 11:23

路由器实现 vlan 透传

路由器怎么实现 vlan 透传,就是打上 vlan tag 的封包,经过路由器之后,vlan tag 还保持原样?通过 ebtables 实现?

Tinnal 发表于 2014-08-05 14:09

回复 1# trackoftime

vlan tag是二层的的标签呀。Linux收到后就扔了呀。不明白你的场景是怎么样的。
   

trackoftime 发表于 2014-08-05 14:15

回复 2# Tinnal
就是打上 vlan tag 的封包,经过路由器之后,vlan tag 还保持原样,万能透传!

   

humjb_1983 发表于 2014-08-05 14:44

感觉路由器上应该也需要配vlan才行,具体没整过。。。

Tinnal 发表于 2014-08-05 19:33

回复 4# humjb_1983

配vlan不要紧。就一个vconfig 给一个网口添加子端口就行了。内核打开8021q支持就可以。不理解的是楼主的那个”透传“。

   

humjb_1983 发表于 2014-08-05 19:53

Tinnal 发表于 2014-08-05 19:33 static/image/common/back.gif
回复 4# humjb_1983

配vlan不要紧。就一个vconfig 给一个网口添加子端口就行了。内核打开8021q支持就可 ...
个人理解,那路由器端也应该需要配置相应的vlan端口,否则包肯定丢了。。。

Tinnal 发表于 2014-08-05 20:33

回复 3# trackoftime

你这种做法有具体的应用场景??

我对Linux的协议栈不熟,只能大概给个想法,具体还得你自己去研究。还是我之前一个贴那句话,要自己去研读代码,别什么去先问。

1.Vlan的报文ID号为ETH_P_8021Q,并不是IP报文的ETH_P_IP, 你要像Vlan模块一样自己注册一个协议处理模块(插入你的模块,标准的Vlan模块就不能再插入了)。
2.把Vlan的信息存起来,可先的方式有1)就让它躺在sk_buf里;2)转化为mark标识存储;3)存在自己管理的结构里并和sk_buf建立关联。这里要注意的是,我没有研究过整个转发流程对数据包的处理,你要自己去研读,确定那种方式可能把Vlan的信息最后保持到发送。这个可以看看转发的核心函数ip_forward。


可以上面流程的缺失或有问题。但我只能想到这了。你这个是非标用法,只能自己去改代码实现。你要把数据包转发的过程先掌握了,掌握了我觉得这个事情期实不难,只是重在细节的处理。
同时,内核标准vlan模块(net/8021q目录)是一个非常好的参考。结构非常清晰。既然你是做VLAN相关功能的,标准的东西建议你还是先掌握再自己做非标的。


   

Tinnal 发表于 2014-08-05 20:50

本帖最后由 Tinnal 于 2014-08-05 20:53 编辑

humjb_1983 发表于 2014-08-05 19:53 static/image/common/back.gif
个人理解,那路由器端也应该需要配置相应的vlan端口,否则包肯定丢了。。。

他现在就是想在路由端把Vlan包按正常包给转发。目前内核处理Vlan是通过vconfig命令以及Vlan模块处理的,但经那样处理后,Vlan包会解开,路由,然后重新生成新的Vlan包。如果不进行Vlan的配置就会像你说的那样,内核去和丢弃这个包,因为找不到相应的Vlan处理协议(这个协议在Vlan的内核处理模块里头会注册)。因此,要做这个事情,必须自己注册Vlan的处理协议。

但说实在我到现在还搞不清楚他想干什么,他也不详细描述一个所谓的透转是什么。按我理解,目前内核Vlan的处理方式就是标准的处理方式,也是我能和实际应用场景联系得上的唯一的场景。                                  
   +------------------------+     
   |       IP FORWARD       |     
   |                        |     
   |  ethx.1         ethx.2 |     
   |     +-----+------+     |     
   |           |            |     
   +------------------------+     
               |ethx              
               |                  
               +vlan trunk        
    +----------++-----------+     
    |                       |     
    |      Switch           |     
    +-+------------------+--+     
      |                  |        
   +--+--+            +--+---+    
   |     |            |      |    
   |Vlan1|            |Vlan2 |    
   +-----+            +------+       

humjb_1983 发表于 2014-08-06 10:23

Tinnal 发表于 2014-08-05 20:50 static/image/common/back.gif
他现在就是想在路由端把Vlan包按正常包给转发。目前内核处理Vlan是通过vconfig命令以及Vlan模块处理的, ...
应该就是这个意思。。。,在路由器端vconfig应该就可以。。

trackoftime 发表于 2014-08-14 16:29

非常感谢各位的回复,具体的应用场景和需求还不是很清楚,给的需求就是:WIFI 支持 VLAN 全透传!!
页: [1] 2
查看完整版本: 路由器实现 vlan 透传