基于DWC_ether_qos的以太网驱动开发-MAC帧格式介绍

描述

本文转自公众号,欢迎关注

基于DWC_ether_qos的以太网驱动开发-MAC帧格式介绍 (qq.com)

 

一.前言

在以太网驱动,应用,编写调试等开发时,往往会抓包分析,此时有必要了解MAC帧的格式以便进行分析,我们参考标注文档对其进行一个整理备忘。

《802.3-2000_part1.pdf》的3. Media access control frame structure规定了使用CSMA/CD MAC的数据通信系统的两种帧格式:

基本MAC帧格式

对基本MAC帧格式的扩展,Tagged MAC帧,即携带QTag前缀的帧。

二.基本MAC帧格式

基本MAC帧格式如下,包括9个部分

驱动

其中

OCTETS表示8位,

1.字节的低位先发送,除了CRC31校验域是高位先发送按照bit流x31, x30,…, x1, x0发送,即x0是最后发送字节的最后发送位。

2.多字节数据按照大端解析,高字节在前先发送

各部分详细介绍如下:

序号 字段 大小(字节) 功能 说明
1 PREAMBLE 7 前导字段 用于PLS (PHYSICAL LAYER SIGNALING)实现和接收帧保持同步(前导和SFD发送时有冲突也会发送完全部前导和SFD)
10101010 10101010 10101010 10101010 10101010 10101010 10101010 即0x55序列
2 SFD 1 帧开始定界符 10101011 即0xD5
3 DESTINATION ADDRESS
(DA)
6 目的地址字段 目的站的地址。它可以是单播或多播(包括广播)地址。
全1是广播地址。
见后面MAC地址部分说明。
4 SOURCE ADDRESS
(SA)
6 源地址字段 发送帧站点的地址。CSMA/CD MAC子层不解释源地址字段。
5 LENGTH/TYPE 2 长度/类型字段 如果小于等于maxValidFrame=maxUntaggedFrameSize(1518)-18=1500 则表示MAC CLIENT DATA区域长度
如果大于等于0x0600 则表示帧类型。
6 MAC CLIENT DATA / 数据 MAC+DATA范围 46~1500字节
7 PAD / 填充 填充,使得DESTINATION ADDRESS~FCS满足最小帧长64字节。
8 FRAME CHECK SEQUENCE
(FCS)
4   CRC32校验值,校验DA到PAD区域之间的数据。生成多项式。
G(x) = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1
注意FCS是x31最先发,x0最后发.
9 EXTENSION / 扩展域 0~(slotTime–minFrameSize) bits 长
1000 Mb/s 半双工才有

2.1 MAC地址

48位MAC地址的定义如下

驱动
  位域 功能 说明
1 I/G 地址类型 LSB即最先发出的bit
区分是单播还是组播地址:
0:即I individual  为单播地址,
1:即G group  为组播地址。
注意本位只针对目的地址,对于源地址始终是0.
2 U/L   区分本地或全局地址:
0:即U universal 为全局地址,
1:即L locally 为本地地址。
广播地址该位是1.
3 46-BIT ADDRESSS    

地址类型:

       
1 Individual Address
单播地址
  地址和网络中特定的一个站点对应。
2 Group Address
组播地址
Multicast-Group Address多播地址 通过更高级别的约定与一组逻辑相关的站相关联的地址。
Broadcast Address广播地址 一种可区分的预定义多播地址,它总是表示给定LAN上所有站点的集合。
全1是广播地址

2.2无效帧

满足以下一个以上的条件

1.帧长度与长度/类型字段中指定的长度值不一致。如果长度/类型字段表示类型值,则假定帧长度与该字段一致,在此基础上不应视为无效帧。

2.长度不是八位的整数倍。

3.CRC32校验错误。

4.无效MAC帧的内容不得传递给LLC或MAC控制子层。无效MAC帧的出现可以被传送到网络管理。

三.Tagged MAC 帧格式

带标签的MAC帧是对普通MAC帧的扩展,在原来的基础上SA后添加了4字节的Qtag。见标准IEEE P802.1Q

驱动
序号 字段 大小(字节) 功能 说明
1 PREAMBLE 7 前导字段 同基本MAC帧
2 SFD 1 帧开始定界符 同基本MAC帧
3 DESTINATION ADDRESS 6 目的地址字段 同基本MAC帧
4 SOURCE ADDRESS 6 源地址字段 同基本MAC帧
5 LENGTH/TYPE = 802.1QTagType 2   QTag长度/类型
固定为0x8100 表示802.1Q
Tag Protocol Type。
6 TAG CONTROL INFORMATION 2   QTag 控制信息
a) A 3-bit User Priority field,
b) A Canonical Format Indicator (CFI), and
c) A 12-bit VLAN Identifier.
7 LENGTH/TYPE 2 长度/类型字段 插入QTag之前的MAC帧的原始长度/类型。
同基本MAC帧
8 MAC CLIENT DATA / 数据 同基本MAC帧
9 PAD / 填充 同基本MAC帧
对于填充,最小64字节的帧长可以包含4字节的TAG也可以不包含,不包含TAG则实际帧长是64字节了。
10 FRAME CHECK SEQUENCE 4   同基本MAC帧
11 EXTENSION / 扩展域 同基本MAC帧

四. wireshark中的帧解析

比如如下是一个arp请求包,wireshark可以解析其不同字段,比如左下侧点击Type右边数据0806即高亮。Wireshark抓包中不显示前导,帧开始符和FCS,因为前二者是固定的,FCS错误则收不到,MAC层作为无效帧就丢弃了。

驱动

五. 总结

调试以太网,MAC帧的格式是必须要了解的,使用wireshark可以方便解析,但是有时我们是直接驱动代码中打印原始数据,此时则需要手动去解析。

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分