Chinaunix

标题: 关于内核网络子系统vlan的问题 [打印本页]

作者: jasonsungblog    时间: 2013-12-23 14:00
标题: 关于内核网络子系统vlan的问题
今天在内核源码的时候在vlan_skb_recv中看到这个注释
/* If the VLAN device is defined, we use it.
* If not, and the VID is 0, it is a 802.1p packet (not
* really a VLAN),
*/
这句话什么意思呢?是没有创建vlan,报文也会带有优先级,用的是默认的vlan 0吗?还是要怎么设置才能在没有创建vlan的情况下报文带有优先级?
作者: 瀚海书香    时间: 2013-12-23 16:00
回复 1# jasonsungblog
今天在内核源码的时候在vlan_skb_recv中看到这个注释
/* If the VLAN device is defined, we use it.
* If not, and the VID is 0, it is a 802.1p packet (not
* really a VLAN),
*/
这句话什么意思呢?是没有创建vlan,报文也会带有优先级,用的是默认的vlan 0吗?还是要怎么设置才能在没有创建vlan的情况下报文带有优先级?


具体的代码没看,但从注释里面已经很清楚了啊。

802.1p协议时802.1q协议的扩展,而且这个两个协议的ETH type都是0x8100。所有要想区分是802.1p还是802.1q就只能通过注释的方式来区分了。




参考:
___________________________________________________________________________________
|     7   |  1  |  6  | 6  |  2   |  2  |     2        | 42-1496 bytes   | 4 bytes |
|---------|-----|-----|----|------|-----|--------------|-----------------|---------|
|Preamble | SFD |  DA | SA | TPID | TCI | Type Length  |    Data         |   CRC   |
----------|-----|-----|----|------|-----|--------------|-----------------|---------|

Preamble(Pre) - 7字节。Pre 字段中1和0交互使用,接收站通过该字段知道导入帧,并且该字段提供了同步化接收物理层帧接收部分和导入比特流的方法。
Start-of-Frame delimiter(SFD) - 1字节。字段中1和0交互使用,结尾是两个连续的1,表示下一位是利用目的地址的重复使用字节的重复使用位
Destination Address(DA) - 6字节。DA 字段用于识别需要接收帧的站。
Source Addresses(SA) - 6字节。SA 字段用于识别发送帧的站。
TPID - 值为8100(hex)。当帧中的 EtherType 也为8100时,该帧传送标签 IEEE 802.1Q/802.1P。
TCI - 标签控制信息字段,包括用户优先级(User Priority)、规范格式指示器(Canonical Format Indicator)和 VLAN ID。


3  1 12 bits
User Priority CFI Bits of VLAN ID (VIDI) to identify possible VLANs

User Priority:定义用户优先级,包括8个(2^3)优先级别。IEEE 802.1P 为3比特的用户优先级位定义了操作。
CFI:以太网交换机中,规范格式指示器总被设置为0。由于兼容特性,CFI 常用于以太网类网络和令牌环类网络之间,如果在以太网端口接收的帧具有 CFI,那么设置为1,表示该帧不进行转发,这是因为以太网端口是一个无标签端口。
VID:VLAN ID 是对 VLAN 的识别字段,在标准 802.1Q 中常被使用。该字段为12位。支持4096(2^12) VLAN 的识别。在4096可能的 VID 中,VID=0 用于识别帧优先级。 4095(FFF)作为预留值,所以 VLAN 配置的最大可能值为4,094。
Length/Type - 2字节。如果是采用可选格式组成帧结构时,该字段既表示包含在帧数据字段中的 MAC 客户机数据大小,也表示帧类型 ID。
Data - 是一组 n(46=< n =<1500)字节的任意值序列。帧总值最小为64字节。
Frame Check Sequence(FCS) - 4字节。该序列包括32位的循环冗余校验(CRC)值,由发送 MAC 方生成,通过接收 MAC 方进行计算得出以校验被破坏的帧。

   
作者: jasonsungblog    时间: 2013-12-23 17:48
谢谢你的回答。我不是要区别是什么报文,我只是想知道如果我不配置vlan,发出去的报文能不能带有优先级?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2