五月天APP黄版下载安装 -五月天app官网无限观看
0731-84728105
15116127200
二层交流机原型设计与完成 (二)
宣布时间 :2021-05-06
     FAST架构的UA编程很是简朴 ,有其牢靠 的套路,焦点局限 两块,一是在main函数中把情形 初始化好,注册UA的回调函数和设置 硬件默许 规则;二是在回调函数中专心处置赏罚 分组数据,完成 完整 买卖 成效 。
     二层交流的分组吸收 由系统 回调送入处置赏罚 函数,后续交流相关的一切 逻辑均在该函数里完成完成 。
     1)UA示例代码
     百度网盘下载地址:https://pan.baidu.com/s/13zmKXeMnpUMsCiL5GAI7Vg
     提取码:ehd7
     目录:FAST开源社区/教学案例/连载果真课/二层交流机原型设计与完成
     2)代码文件说明
     二层交流代码目录为:/home/hnxs/l2switch/,其下共征求 两个文件,其中一个为main_ul2switch.c主要 征求 UA的平台性处置赏罚 代码和空的callback函数。另一个是C的编译文件Makefile文件,主要 说明 怎样 编译天生 二层交流可执行下令 。
      3)编译文件说明

default:
   gcc -o ul2switch main_ul2switch.c -lua -lreg -lpthread
clean:
   rm -rf ul2switch

     二层交流机编译需求 运用 到FAST的libreg、libua和系统 的libpthread三个库的支持。
     4)编译, 在/home/hnxs/l2switch/目录下输入 以下下令 :

root@HNXS:/home/hnxs/l2switch# make

系统 输入 如下:

gcc -o ul2switch main_ul2switch.c -lua -lreg -lpthread

以后 目录会多发作 一个ul2switch文件

root@HNXS:/home/hnxs/l2switch# ls
main_ul2switch.c Makefile ul2switch

     5)执行验证,在/home/hnxs/l2switch/目录下输入 以下下令 :

root@HNXS:/home/hnxs/l2switch# ./ul2switch
fastU->REG Version:20180827,OpenBox HW Version:2020210329
fastU->Register UA to FAST Kernel! Wait Reply......
fastU->UA->pid:3069,mid:129,Register OK!
fastU->libua version:20180827
fastU->fast_ua_recv......

显示上述效果 说明 系统 平台代码执行正常。
     1)C法式的主函数main

/*UA模块初始化*/
ua_init(mid);
/*设置 硬件默许 规则,将硬件一切 报文送到模块ID为mid的历程 处置赏罚 */
fast_reg_wr(FAST_ACTION_REG_ADDR|FAST_DEFAULT_RULE_ADDR,ACTION_SET_MID<<28|mid);
/*启动线程吸收 分配给UA历程 的报文*/
fast_ua_recv();
/*主历程 进入暂停形状 ,数据处置赏罚 主要 在回调函数*/
pause();

     2)树立 UA,注册callback

void ua_init(u8 mid)
{
int ret = 0;
/*向系统 注册,自己 历程 处置赏罚 报文模块ID为mid的一切 报文*/
if((ret=fast_ua_init(mid,callback)))//UA模块实例化(输入 参数1:吸收 模块ID号,输入 参数2:吸收 报文的回调处置赏罚 函数)
{
perror("fast_ua_init!\n");
exit (ret);//若是 初始化失败,则需求 打印失败信息,并将法式竣事 参与 !
}
}

     3)callback处置赏罚 函数

int callback(struct fast_packet *pkt,int pkt_len)
{
return 0;
}

     1)打印吸收 分组metadata信息
     FAST分组的数据名堂 请参考第一篇文章《二层交流机原型设计与完成 (一)》形貌 。在callback函数一最先 ,打印FAST分组的metadata信息和以太网协议的源和目的MAC地址信息。

xprintf("inport:%d,dstmid:%d,len:%d,dmac:%02X:%02X:%02X:%02X:%02X:%02X,smac:%02X:%02X:%02X:%02X:%02X:%02X\n",
pkt->um.inport,pkt->um.dstmid,pkt_len,pkt->data[0],pkt->data[1],pkt->data[2],pkt->data[3],pkt->data[4],pkt->data[5],pkt->data[6],pkt->data[7],pkt->data[8],pkt->data[9],pkt->data[10],pkt->data[11]);

     2)挪用 发送函数发送分组
     挪用 FAST的分组发送函数,将吸收 到的一个分组从指定端口收回 ,要特殊 注重 metadata字段的设置。

void pkt_send_normal(struct fast_packet *pkt,int pkt_len)
{
xprintf("pkt_send_normal->%p,outport:%d,len:%d\n",pkt,pkt->um.outport,pkt_len);
pkt->um.pktsrc = 1;/*报文泉源 为CPU输入 ,站在硬件角度*/
pkt->um.pktdst = 0;/*报文目的为硬件输入 */
pkt->um.dstmid = 5;/*直接从硬件GOE模块输入 ,不走剖析 、查表等模块*/
fast_ua_send(pkt,pkt_len);/*挪用 FAST API函数发送*/
}

     该函数挪用 之前,必需 将pkt->um.outport字段赋值,指定分组的输入 端口号。
     1)焦点函数callback
     callback函数是整个UA的焦点成效 函数,是用户买卖 完成 的最先 位置 。虽然五月天app官网无限观看明天 只在该函数中做了两件事情,一是打印吸收 到的分组基本 信息,二是将该分组发送到指定端口。可是 ,五月天app官网无限观看明天 已经在该平台上完成 了一个最简朴 的分组转发成效 的原型系统 了。
     2)注释 和备份的主要 性
     重新性不多说,只是在此特此外特此外强调一下。
     3)完成 简朴 交流逻辑成效
     在云云 简朴 的一个平台上,能快速 完成 硬件端口的分组吸收 和指定端口的分组发送,是不是网络成效 的一大局限 效果 均已经处置 ?五月天app官网无限观看只需求 关注五月天app官网无限观看详细 买卖 的逻辑处置赏罚 了,你终究 是 要完成 交流照旧路由?是深刻 二层交流照旧SDN交流?是深刻 三层路由照旧lisp路由或是segment路由,是不是一切均有能够 ?
     不要兴奋得太早,这只是万里长征的第一步,终点 和终点 的距离 必需 由自己 的脚步来丈量,一步也不行 少。以是 五月天app官网无限观看照旧从简朴 的二层交流机最先 ,下一篇文章正式进入分组交流的设计。
      接待您和先生 们参与 FAST开源项目群相反 与讨论 ,一同 体验纷歧样的系统 设计历程。请先加微信号15116127200后约请 入群。

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