linux 网卡vlan子接口,Linux下的Vlan子接口

Linux下的Vlan子接口

1.Vlan子接口依赖的模块和配置程序

Vlan子接口实现依赖模块8021q,通过vconfig程序调研8021q的ioctl处理函数来添加Vlan子接口设备和配置Vlan优先级等属性。

2.Vlan子接口数据包接收

2.1. 网卡驱动支持Vlan

以E1000驱动为代表,这类网卡驱动(或硬件本身)支持Vlan。在接收到到Vlan的数据包后会自动去除Vlan头部,并在软中断接收处理(e1000_clean_rx_irq)中将sk_buff的dev指针指向Vlan子接口。然后调用netif_receive_skb将数据包上传给协议栈处理。

从以上过程可以看出,在这种情况下,在实网口用tcpdump是抓不到带Vlan的数据包的。

2.2. 网卡驱动不支持Vlan

如果网卡驱动不支持Vlan则带Vlan的数据包被驱动调用netif_receive_skb后会进入8021q模块注册的数据包类型ETH_P_8021Q(0x8100)处理函数所截获,在该函数中会将Vlan头部去掉并修改sk_buff的dev指向Vlan子接口,最后调用netif_rx将数据包交给系统协议栈处理。如果sk_buff已经被引用或被克隆(一般出现在使用tcpdump在实网口上抓包的情况),则将数据包复制一份再将Vlan头部去掉。

Note:可以通过配置要求不将数据包的Vlan头部4字节去除,Linux内核默认配置是去除Vlan头部的。调用vconfig set_flag [interface_name] [flag-num] [0 | 1 ]

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值