忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
12下一页
最近访问板块 发新帖
查看: 7456 | 回复: 11

[网络子系统] 路由器实现 vlan 透传 [复制链接]

论坛徽章:
0
发表于 2014-08-05 11:23 |显示全部楼层
路由器怎么实现 vlan 透传,就是打上 vlan tag 的封包,经过路由器之后,vlan tag 还保持原样?通过 ebtables 实现?

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
发表于 2014-08-05 14:09 |显示全部楼层
回复 1# trackoftime

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

论坛徽章:
0
发表于 2014-08-05 14:15 |显示全部楼层
回复 2# Tinnal
就是打上 vlan tag 的封包,经过路由器之后,vlan tag 还保持原样,万能透传!

   

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
发表于 2014-08-05 14:44 |显示全部楼层
感觉路由器上应该也需要配vlan才行,具体没整过。。。

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
发表于 2014-08-05 19:33 |显示全部楼层
回复 4# humjb_1983

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

   

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
发表于 2014-08-05 19:53 |显示全部楼层
Tinnal 发表于 2014-08-05 19:33
回复 4# humjb_1983

配vlan不要紧。就一个vconfig 给一个网口添加子端口就行了。内核打开8021q支持就可 ...

个人理解,那路由器端也应该需要配置相应的vlan端口,否则包肯定丢了。。。

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
发表于 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相关功能的,标准的东西建议你还是先掌握再自己做非标的。


   

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
发表于 2014-08-05 20:50 |显示全部楼层
本帖最后由 Tinnal 于 2014-08-05 20:53 编辑
humjb_1983 发表于 2014-08-05 19:53
个人理解,那路由器端也应该需要配置相应的vlan端口,否则包肯定丢了。。。


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

但说实在我到现在还搞不清楚他想干什么,他也不详细描述一个所谓的透转是什么。按我理解,目前内核Vlan的处理方式就是标准的处理方式,也是我能和实际应用场景联系得上的唯一的场景。
  1.                                   
  2.    +------------------------+     
  3.    |       IP FORWARD       |     
  4.    |                        |     
  5.    |  ethx.1         ethx.2 |     
  6.    |     +-----+------+     |     
  7.    |           |            |     
  8.    +------------------------+     
  9.                |ethx              
  10.                |                  
  11.                +vlan trunk        
  12.     +----------++-----------+     
  13.     |                       |     
  14.     |      Switch           |     
  15.     +-+------------------+--+     
  16.       |                  |        
  17.    +--+--+            +--+---+    
  18.    |     |            |      |    
  19.    |Vlan1|            |Vlan2 |    
  20.    +-----+            +------+       
复制代码

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
发表于 2014-08-06 10:23 |显示全部楼层
Tinnal 发表于 2014-08-05 20:50
他现在就是想在路由端把Vlan包按正常包给转发。目前内核处理Vlan是通过vconfig命令以及Vlan模块处理的, ...

应该就是这个意思。。。,在路由器端vconfig应该就可以。。

论坛徽章:
0
发表于 2014-08-14 16:29 |显示全部楼层
非常感谢各位的回复,具体的应用场景和需求还不是很清楚,给的需求就是:WIFI 支持 VLAN 全透传!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP