五月天APP黄下载免费 -五月天app官网无限观看
0731-84728105
15116127200
二层交流机原型设计与完成 (四)
宣布时间 :2021-05-17
     MAC转揭晓 是二层交流机原型中的焦点内容,一切 的数据职掌 都是围绕这张表而来。前一篇文章中讲到了该表触及 的两个焦点字段:端口号与MAC地址。本篇文章专门解说 一下该MAC转揭晓 的设计与表的职掌 要领。
     MAC转揭晓 的设计五月天app官网无限观看照旧遵照 渐进式的要领,从最基本 的字段最先 ,凭证 需求 再逐渐 增添 。
     1)字段设计
     以前 一篇文章剖析 ,关于 MAC转揭晓 来说,其焦点字段就2个:端口号和MAC地址,故五月天app官网无限观看对其字段的设计也就接纳此二元数据。交流机的端口号一样往常 不凌驾64,故用char(8位)类型界说即可,MAC地址的位宽为48位,可界说为6个字节数组。一样往常 在协议字段中或以协议字段作为字段的表结构 界说中,接纳无符号类型做界说,这样利便 数据与或运算,也利便 硬件移植。字段数据类型的界说一样往常 也建议重界说为简写方式,在读写代码时,更好明白 和掌握数据能否 溢出、越界等。

     数据类型重界说如下:

typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned int u32;
//typedef unsigned long u64;/*64位系统 */
/*请特此外注重 !!!在32位系统 下,long的数据位宽只要 32位,64位的数据类型必需 运用 long long的方式界说*/
typedef unsigned long long u64;/*32位系统 ,实验平台OpenBox-S4为32位系统 */

      2)表结构 设计
     数据存储结构 的设计有许多方式可选,如数组、多维数组、单向链表、双向链表和树结构 等。在原型系统 的设计中,因为 表结构 界说会浸染 到整个代码完成 ,且需求 思量 未来 硬件卸载的单纯 性,以是 五月天app官网无限观看一样往常 建议接纳较为简朴 的表存储结构 。又因为 每条表项的巨细是牢靠 空间,以是 接纳数组的方式 是较优的选择。
     先界说一条表项的数据结构 如下:

struct row_port_mac
{
u8 port;
u8 pad;/*为了对齐做的增补*/
u8 mac[MAC_LEN];
};

     增补对齐:上述表项一条宽度为7个字节,云云 按数组方式 组织的话,则会让mac字段在非内存对齐位置 泛起,招致 数据竞赛 时需求 两次对比 。若是跨了CacheLine,则会招致 更长的时间 消耗 。详细 缘故原由 请网上搜索“内存对齐”深化 学习。五月天app官网无限观看建议在界说数组项的时间 一定凭证 8字节倍数对齐方式来界说,若小于8字节,则增补为8;若多于8,则再多增补直到成为8的倍数(特殊 说明 ,这是针对数组界说要求,分别 数据结构 凭证 剖析 会有分别 的优化界说要领)。
     再界说整张表的数据结构 如下:

#define OBX_MAC_MAX 128/*系统 最多支持128条MAC表项*/
struct table_port_mac
{
struct row_port_mac row[OBX_MAC_MAX];
};

     3)表职掌 要领设计
     表的要领主要 是指对表的职掌 ,通常征求 表项的增、删、改和查四个举动 。这些表举动 的设计与表的结构 界说和表的数据职掌 要领相关,可使 用 对表数据的职掌 举行 优化和精简。如在二维数据中举行 任何职掌 ,都得先把表遍历一次,找到空位才干 增添 ,找到对应的内容项才干 修正 和删除。
     凭证 二层交流的数据处置赏罚 流程剖析 ,在源MAC的学习历程中,学习到一个新MAC地址需求 举行 增添 表项职掌 ,若已经学习到的MAC地址发作 了端口迁移 ,则需求 更新其端口信息。在目的MAC查表历程中是一个单纯的MAC地址搜索 历程。MAC表项的删除一样往常 发作 在MAC表老化的时间 ,前面 文章独自 讲。
     勾搭 前面 的表要领设计和二层交流的数据处置赏罚 逻辑,五月天app官网无限观看暂将MAC转揭晓 的要领界说为两个:一是源MAC学习;二是目的MAC搜索 。
     1)源MAC学习
     源MAC学习是指将一个输入 分组的源MAC地址学习并生涯 到MAC转揭晓 中。若MAC转揭晓 中不存在该源MAC地址信息,则找一个空缺 位置 存储。若MAC转揭晓 中已有该地址信息,则刷新(掩盖 )其端口号信息。在搜索 源MAC地址能否 存在时,同时搜索 闲暇 表项位置 ,这样只用遍历一次表,即可完成两件事情。另外就是搜索 到源MAC地址后,赶忙 刷新其端口号,可以判别 并打印显示,该MAC地址能否 发作 了端口转移。
     2)目的MAC搜索
     目的MAC的搜索 ,其目的是为了取得 搜索 MAC对应的端口号,查表效果 有两种情形 ,一是搜索 到了,前往 对应的端口号信息;二是没有搜索 到,则不行 前往 正常端口数据,需求 运用 特殊前往 值表现 ,如-1。
     1)查表设计
     MAC转揭晓 的要领设计为何 把二层交流的成效 和表职掌 混在了一同 ?因为 在二层交流中,其焦点数据处置赏罚 流程就是针对MAC转揭晓 举行 的一系列数据搜索 、存储和更新举动 。凭证 其逻辑处置赏罚 方式来设计可让 先生 更好明白 MAC表的职掌 流程与细节。
     在逻辑设计的历程中,五月天app官网无限观看需求 针对一些特定成效 举行 笼统 、模块化,好比表的四职掌 。但在详细 完成 历程中,其自己 的逻辑处置赏罚 也就是对表的内容举行 处置赏罚 ,以数据流程为主线举行 设计比纯模块化的分层设计更容易让先生 掌握交流的处置赏罚 历程。模块化和分层可以放到前期 优化阶段。
     表职掌 的要领也并纷歧定要马上一切 完成 ,凭证 逻辑的需求 逐一 完成 ,在完成 历程中也会不时 修正 完善。
     2)MAC地址学习与查表完成
     MAC地址的学习与搜索 是二层交流的焦点,特殊 是MAC地址学习,怎样 设计快速 、高效的学习要领,取决于五月天app官网无限观看对系统 数据处置赏罚 流程的深度明白 与优化迭代。下一篇文章中会给出一种详细 的完成 要领供各人参考。
      接待您和先生 们参与 FAST开源项目群相反 与讨论 ,一同 体验纷歧样的系统 设计历程。请先加微信号15116127200后约请 入群。

关注FAST开源社区
FAST逐一 开源、开放、高速、高效、可编程、可界说!软硬件协同并行处置赏罚 。