- 论坛徽章:
- 9
|
回复 1# eaglec83
对于那些不支持vlan的网卡,如果收到带vlan tag的报文,则直接丢弃。
如果内核支持vlan,是不会丢弃的,硬件不做软件可以做。
如果网卡不支持vlan,是在哪段代码里决定丢掉的?
802.1q的协议号和IP协议号不一样,如果内核没有按装VLAN的模块,找不到对应的上层协议就被内核丢弃罗。
如果网卡支持vlan,那么刚才的处理函数中并没有对skb->data的指针处理,也就是说报文还是完整的,送到kernel去的报文还是带了vlan tag?
这个没法答你。因为没有接触过这类网卡,不过理论上,应该是网卡送上来的报文已经没有VLAN标记了,最起码协议号应该已变回IP的协议号了。
那岂不是意味着内核是默认能接收带vlan tag的报文,而且默认会把tag剥掉?
是的,只要打开内核的802.1q模块,内核本身可以通过软件去处理。
还有,vlan_tx_tag_present这个函数到底代表了什么意思? 按照这个函数的字面意思,应该是去检查CFI/DEI这个bit,可是这个bit的意思是说mac是否是标准格式或者要不要丢弃这个报文(DEI, 802.1AD),但是看代码里用它来判断要不要做vlan处理,这是怎么回事?
硬件处理流程相关的,我没法答你。
网络经验不多,有什么疑问,请其它网友补充吧。
|
|