五月天视频app下载无限看iOS -五月天app官网无限观看
0731-84728105
15116127200
二层交流机原型设计与完成 (五)
宣布时间 :2021-05-24
     MAC地址的学习是指运用 分组中的源MAC地址举行 查表,最后 添加或更新到MAC转揭晓 中。目的MAC搜索 是指运用 分组中的目的MAC举行 查表,取得 该MAC在学习中生涯 的端口号信息。两个历程都需求 对表举行 遍历职掌 ,凭证 逻辑成效 的分别 ,其输入 输入 参数也纷歧样。二层交流的焦点逻辑就是这两个成效 函数。
     1)源MAC提取
     首先,源MAC地址获取要凭证 MAC层协议来剖析 ,从其对应的位置 提取照应 的数据。其次,源MAC的提取有多种方式,主要 取决于对MAC地址的职掌 方式,如相等竞赛 。因为 MAC地址是不规整的数据类型,通常可使 用内存块的竞赛 方式或拆分红 几局限 的方式竞赛 ,拆分一样往常 可分为2+2+2;两种方式都要运用 指针转达 参数。

/*分组源MAC指针获取*/
&pkt->data[MAC_LEN]/*MAC_LEN宏界说为6,表现 MAC地址占6个字节*/
/*判别 两个MAC地址能否 相等*/
int ether_addr_equal(u8 *addr1,u8 *addr2)
{
u16 *a = (u16 *)addr1;
u16 *b = (u16 *)addr2;
return ((a[0] ^ b[0]) | (a[1] ^ b[1]) | (a[2] ^ b[2])) != 0;
}

      2)学习历程
     前面 剖析 过,在学习历程中其实不 明晰 原MAC转揭晓 中能否 存在原表项,若是 先查一次能否 存在,再查一次哪有空位用作存储,则需求 做两次全表遍历。以是 ,针对MAC学习的处置赏罚 方式就是不论 有无 ,都当做是新增的方式处置赏罚 。若查表不存在则存储在一个空缺 表项位置 ,若查表存在,则刷新端口信息。

void learn_smac(u8 inport,u8 *smac)
{
int i = 0,j = -1;
u64 zero_mac = 0;/*界说一个全零MAC地址*/
xprintf("learn_smac->\n");
for(;i {
if(!ether_addr_equal(smac,obx_mac_tbl->row[i].mac))
{
/*MAC转揭晓 以后 i行的MAC地址与输入 参数smac相等*/
if(obx_mac_tbl->row[i].port != inport)
{
/*这个MAC地址发作 了端口迁移 */
}
obx_mac_tbl->row[i].port = inport;
return;/*学习历程完成,赶忙 前往 */
}
else if(j == -1 && !ether_addr_equal((u8 *)&zero_mac,obx_mac_tbl->row[i].mac))
{
j = i;/*纪录第一个找到为空缺 表项位置 */
}
}
/*j==-1说明 既没有婚配 上MAC,也找不到闲暇 位置 存储*/
if(j == -1)
{
xprintf("learn_smac->Table overflow!\n");
return;
}
/*将该MAC存储到j的位置 */
memcpy(obx_mac_tbl->row[j].mac,smac,MAC_LEN);
obx_mac_tbl->row[j].port = inport;
xprintf("learn_smac->add new MAC,port:%d,index:%d\n",inport,j);
}

     1)目的MAC提取
     目的MAC提取与源MAC相似 ,在参数转达 历程中均用指针方式,故其表现 方式为:

/*分组目的MAC指针获取*/
pkt->data/*数组名即为指针*/

     2)查表历程
     查表历程就是一个简朴 的全表搜索,找到的婚配 的MAC地址,则前往 其学习到的端口号。若是没有找到婚配 的MAC,则需求 用个特此外数字(-1)来区分正常的端口号。

int find_dmac(u8 inport,u8 *dmac)
{
int i = 0,ret = -1;/*婚配 不到相反 MAC,则前往 -1*/
for(;i {
if(obx_mac_tbl->row[i].port != inport
&& !ether_addr_equal(dmac,obx_mac_tbl->row[i].mac))
{
ret = obx_mac_tbl->row[i].port;
break;
}
}
xprintf("find_dmac->ret = %d\n",ret);
return ret;
}

     1)表的搜索
     表的搜索 与表的设计相关,如上五月天app官网无限观看设计的是一种简朴 的数组结构 ,故也只能举行 顺序搜索 的方式举行 遍历。这种查表方式在理想 运用 场景下一样往常 不会运用 ,但在设计原型系统 时却很利便 。顺序查表凭证 表的巨细和运用 条数增添 会招致 查表速率 愈来愈 慢,上述在源MAC学习历程中,会顺带把闲暇 位置 也找出来,镌汰 一次表的遍历。那么查目的MAC时也需求 遍历一次表,五月天app官网无限观看是不是也可以 都放在这一次表的遍历中完成呢?虽然是可以的,只是这样完成 对买卖 的逻辑明白 没有那么好,但对表的遍历只需求 一次即可,从执行速率 下去 说确实 会提升。
     另外,在对表的高效性处置赏罚 方面,一样往常 不会接纳全表项婚配 或多字段婚配 的要领,在表设计时会运用 一个有用 位字段,经过 有用 位的简朴 竞赛 就可确定表项能否 为空或存在有用 数据。这种要领普遍存在于硬件逻辑设计中,硬件的查表方式也八门五花 ,通常运用 基于内容可寻址存储器(CAM)方式查表,既简朴 又高效。
     2)分组输入
     二层交流的分组输入 主要 凭证 查目的MAC的效果 来处置赏罚 ,当盘诘 到照应 的输入 端口后,即可从指定的端口输入 ;当查不到该MAC的端口信息时,则只能经过 泛洪的方式转发,这是在交流机层面确保数据不丢包的一种措施,宁愿 多发包,也不丢包。虽然,广播 地址也是需求 泛洪的,多播地址则需求 凭证 其组信息举行 端口组发送。下一篇文章五月天app官网无限观看来说一下分组输入 的单播和多播。
      接待您和先生 们参与 FAST开源项目群相反 与讨论 ,一同 体验纷歧样的系统 设计历程。请先加微信号15116127200后约请 入群。

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