五月天视频苹果版下载软件 -五月天app官网无限观看
0731-84728105
15116127200
二层交流机原型设计与完成 (三)
宣布时间 :2021-05-10
     二层交流机的主要 成效 就是在端口之间搬移分组,虽然是要凭证 准确 的目的 地址来搬移,触及 到以太网帧名堂 的剖析 、源和目的MAC地址的提取,MAC表的设计、搜索 和老化等等一系列的系统 成效 完成 。五月天app官网无限观看最先 设计交流机其实不 思量 那么多,从简朴 入手 ,轻装上阵,你也许会走得更好。
     上一篇文章五月天app官网无限观看学会了打印分组的基本 信息和将分组发送到指定端口输入 。明天 五月天app官网无限观看就可以 来完成 一个简朴 的交流成效 ,完成两台主机之间的正常通讯 了。
     1)端口交流
     望文生义 ,就是只识别 判别 端口号就将分组举行 交流转发,先完成 一个基于端口的交流成效 。牢靠 逻辑只能完成 牢靠 的两个端口交流,五月天app官网无限观看可以将要交流的两个端口从法式启动时作为参数输入 ,这样就可以 在启动下令 时按需求 指定要交流的两个端口参数了。
     增添 两个端口变量的全局界说,并在main函数的参数输入 中获取输入 的值,如:

/*端口交流要运用 的两个全局端口号变量*/
int port1 = 0,port2 = 0;

/*main函数中添加如下代码*/
else if(argc == 5)
{
debug = atoi(argv[1]);
mid = atoi(argv[2]);
port1 = atoi(argv[3]);
port2 = atoi(argv[4]);
}

/*callback函数中添加如下代码*/
if(pkt->um.inport == port1)
pkt->um.outport = port2;
else
pkt->um.outport = port1;

      2)验证
     编译代码并执行天生 文件下令 ,视察打印旧事 。

root@HNXS:/home/hnxs/l2switch# make
gcc -o ul2switch main_ul2switch.c -lua -lreg -lpthread
root@HNXS:/home/hnxs/l2switch# ./ul2switch 1 130 0 2
fastU->REG Version:20180827,OpenBox HW Version:2020210329
fastU->Register UA to FAST Kernel! Wait Reply......
fastU->UA->pid:2132,mid:130,Register OK!
fastU->libua version:20180827
fastU->fast_ua_recv......
inport:2,dstmid:130,len:92,dmac:FF:FF:FF:FF:FF:FF,smac:B8:27:EB:C1:D1:39
pkt_send_normal->0xb5500470,outport:0,len:92
inport:0,dstmid:130,len:92,dmac:B8:27:EB:C1:D1:39,smac:B8:27:EB:D8:83:20
pkt_send_normal->0xb5500470,outport:2,len:92
inport:2,dstmid:130,len:130,dmac:B8:27:EB:D8:83:20,smac:B8:27:EB:C1:D1:39
pkt_send_normal->0xb5500470,outport:0,len:130
inport:2,dstmid:130,len:130,dmac:B8:27:EB:D8:83:20,smac:B8:27:EB:C1:D1:39
pkt_send_normal->0xb5500470,outport:0,len:130

     同时,在一个实验 主机上ping另一台实验 主机的IP,发现已经ping通了。

64 bytes from 192.168.2.117: icmp_seq=10 ttl=64 time=2.02 ms
64 bytes from 192.168.2.117: icmp_seq=11 ttl=64 time=0.742 ms
64 bytes from 192.168.2.117: icmp_seq=12 ttl=64 time=0.597 ms

     3)思索
     从上述交流打印剖析 ,前两个报文应当 是ARP分组,32字节metadata加60字节以太帧数据。第1个是广播 请求,第2个是单播应对 。第3和第4个报文就是第1组ping的交互数据了,尺度ping的98字节(130-32=98)。
     先不往大了说,至少 五月天app官网无限观看前面 添加了几行代码就完成 了五月天app官网无限观看的一个最基本 的原型交流了,若是 要换端口实验 ,只需求 在启动下令 时更改照应 的端口号参数就行了 。那交流机端口多了,用户多了之后呢?五月天app官网无限观看岂不是要不时 回来的启动法式和设置端口来保险 他们通讯 呢?这是不是跟束缚 前的电话接线员事情有点相似 ?接线员接到电话后,先要讯问 打电话的人要打给谁,然后再把线给连已往。虽然,原来的电话通讯 与分组交流照旧有些较大区别,只是类比一下,不扩展细说。
      在分组交流的头部携带有该分组要去往的目的地址,五月天app官网无限观看管他叫目的MAC地址。在以太网网络中,恣意 一个通讯 终端都必需 具有 一个独一 的MAC地址,用作通讯 内容标志 。在基于端口交流的基础 上,五月天app官网无限观看也可以 很容易的完成 一个基于MAC地址的简朴 交流成效 。至于为何 选目的MAC作为交流判别 参数,各人细想一定 能明白 。
      1)MAC交流
     凭证 以太网帧名堂 界说,从分组头部位置 提取目的MAC作为判别 参数,完成 一个基于MAC地址的交流成效 。既然要凭证 目的MAC地址来做转发,五月天app官网无限观看需求 知道 哪个 MAC地址的主机毗邻 在交流机的哪个 端口下面 ,假定 五月天app官网无限观看已经获取了这些信息如下:

主机MAC地址:B8:27:EB:D8:83:20,交流机端口:0
主机MAC地址:B8:27:EB:C1:D1:39,交流机端口:2

交流 原来端口交流的逻辑代码,交流 代码如下:

/*新增两个MAC的内存名堂 界说,与S4平台(ARM)相关哦*/
u64 mac1 = 0x2083D8EB27B8,mac2 = 0x39D1C1EB27B8;

/*注释 原来端口转发逻辑,添加MAC转发逻辑*/
if(!ether_addr_equal(pkt->data,(u8 *)&mac1))
pkt->um.outport = 0;
else if(!ether_addr_equal(pkt->data,(u8 *)&mac2))
pkt->um.outport = 2;

     ether_addr_equal函数是判别 两个MAC地址能否 相等,概略 参阅代码。
     两个MAC地址的界说准确 来说要凭证 MAC的顺序方式表现 后再做网络序转换,为简化逻辑和利便 验证,直接界说成了小端平台下反序方式,这样正好跟网络序的MAC地址对比 相等。关于平台数据的巨细端的效果 或主机序与网络序效果 ,请网上搜索学习。
     2)验证
编译代码并执行天生 文件下令 ,视察打印旧事 。

root@HNXS:/home/hnxs/l2switch# make
gcc -o ul2switch main_ul2switch.c -lua -lreg -lpthread
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:2255,mid:129,Register OK!
fastU->libua version:20180827
fastU->fast_ua_recv......
inport:0,dstmid:129,len:92,dmac:FF:FF:FF:FF:FF:FF,smac:B8:27:EB:D8:83:20
pkt_send_normal->0xb5400470,outport:0,len:92
inport:0,dstmid:129,len:92,dmac:FF:FF:FF:FF:FF:FF,smac:B8:27:EB:D8:83:20
pkt_send_normal->0xb5400470,outport:0,len:92
inport:0,dstmid:129,len:92,dmac:FF:FF:FF:FF:FF:FF,smac:B8:27:EB:D8:83:20
pkt_send_normal->0xb5400470,outport:0,len:92

     同时,在2端口实验 主机上ping另一台实验 主机的IP,发现ping欠亨 哦。这是因为 五月天app官网无限观看如今 的逻辑没有思量 ARP广播 MAC地址的处置赏罚 逻辑,招致 其无法正常转发。本节暂不处置赏罚 广播 的泛洪转发成效 ,后续文章中与组播一同 讨论。
     那怎样 让双方 主机不发ARP广播 直接发ping的分组呢?相识 网络通讯 原理的人都知道 ,这个广播 是在ping之前收回 的MAC地址学习分组,若是 没有学习到对端的MAC地址,则ping的分组无法完成二层协议的封装,无法从协议栈收回 。运用 如下下令 划分在两台主机上举行 对端IP与对端MAC的静态绑定设置,ping的分组便能正常收回 了。

/*192.168.2.115主机执行*/
#arp –s 192.168.2.117 b8:27:eb:d8:83:20
/*192.168.2.117主机执行*/
#arp –s 192.168.2.115 b8:27:eb:c1:d1:39

     如今 ,在恣意 一台主机上执行ping均能可以看到ping通了。
     3)思索
     五月天app官网无限观看如今 终于可以凭证 主机的MAC地址来举行 分组交流转发了,但这只是两台主机的牢靠 交流转发,若是 机械MAC多了怎样 办?若是 机械毗邻 交流机的端口变了怎样 办?五月天app官网无限观看需求 有一张纪录表,可以 纪录哪个MAC地址在哪个端口就行了 ,经过 每个分组的目的MAC来搜索 其对应的输入 端口,这样就很容易完成 分组交流了。
     1)交流历程的焦点数据字段
     从上述实验可以看出,如今 交流内里 用到的就两个字段,一个是端口号,另一个是MAC地址。那目的MAC地址与输入 端口号从哪取得 ?着实 就是从分组头的源MAC地址和输入 端口转换酿成目的MAC和输入 端口。故在交流历程中,其焦点数据就2个:端口号和MAC地址。
     2)MAC转揭晓 设计与验证
     MAC转揭晓 就是五月天app官网无限观看前面 提到的纪录表,这张表纪录了一个MAC地址与其对应端口号的绑定关系,这一关系要从输入 分组数据中提取而来,由分组的输入 端口与源MAC地址组成这一绑定关系,在查表中即可 经过 目的MAC来获取其准确 的输入 端口了。下一篇文章五月天app官网无限观看聊一下MAC转揭晓 的设计。
      接待您和先生 们参与 FAST开源项目群相反 与讨论 ,一同 体验纷歧样的系统 设计历程。请先加微信号15116127200后约请 入群。

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