一. 实验目的

1、熟悉基于NetMagic08的Fast架构编程;
2、了解在linux环境下的c程序的编写、编译与调试;
3、了解软件实现交换功能的代码设计;
4、理解自学习二层交换机的工作原理;

二. 实验内容

1、基础要求:虚拟机环境下编写一个基于fast架构工作的软件自学习二层交换机。
2.扩展要求:通过fast函数,实现交换表的硬件卸载以及通过读取硬件计数器,实现带宽统计以及链路状态的判断,并且制作界面展示。

三. 实验环境

在这里插入图片描述

  1. 1台管理节点主机;3台主机A、B以及C;(分别连接到2口和3口)
  2. 4根网线;
  3. NetMagic08开发平台;
  4. 软件Quartus 16。
  5. NetEXP虚拟机运行环境
    主机及网络详细配置参照附带的实验环境拓扑及软件配置文档。

四. 实验步骤

1 配置环境

在这里插入图片描述

导入NetEXP虚拟机(netesp.ova文件);
在这里插入图片描述

配置网络,连接方式为桥接,并且使用PCIe GbE Family Controller,打开虚拟机:
在这里插入图片描述

2 实验步骤

Step.1打开终端,输入命令:

sudo

Step.2输入密码:123123,即可进入root账户模式
在这里插入图片描述
Step.3随后输入命令:

ifconfig

查看当前的以太网接口名称,如图为“eth0”
在这里插入图片描述
Step.4配置以太网接口的IP地址以及子网掩码

ifconfig eth0 136.136.136.137/24 up

在这里插入图片描述

Step.5将enp0s25的IP地址设置为136.136.136.137之后,输入如下命令、切换至驱动程序目录:

cd fast-l2switch-08/fast/driver/netmagic08

Step.6按下回车执行命令,切换至netmagic08目录下,然后输入并执行命令开始编译驱动程序:

make clean && make

在这里插入图片描述

Step.7编译完成之后,输入并执行命令(其中ctlif_name=后接的参数为以太网接口的名称):
insmod nm08.ko ctlif_name=eth0在这里插入图片描述

Step.8加载驱动之后,确保已经连接了netmagic08,输入执行如下命令:

cd ../../l2switch

在这里插入图片描述

输入如下命令执行基本io输出功能:

./fastio

或者输入如下命令执行2层交换功能:

./l2switch

Step.9观察结果:
在这里插入图片描述

五. 实验思考

在实验报告中回答本实验环境的ubuntu系统内核修改了什么部分,为什么要做修改?
在这里插入图片描述

从该文档说明看出Ubuntu需要支持FAST架构以及net Magic08的虚拟驱动。

本次实验由于在虚拟机中已经有实现了的fast程序因此较为简单。但该实验涉及到的知识点很广,包括Ubuntu中的软件实现交换机的代码设计以及基于Fast架构编程方法和二层交换机等等。
二层交换机是指只支持OSI第二层(数据链路层)交换技术的交换机,可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。 当交换机从某个端口收到一个数据包,它先读取包头中的源MAC地址,这样它就知道源MAC地址的机器是连在哪个端口上的;再去读取包头中的目的MAC地址,并在地址表中查找相应的端口;如表中有与这目的MAC地址对应的端口,把数据包直接复制到这端口上;如表中找不到相应的端口则把数据包广播到所有端口上,当目的机器对源机器回应时,交换机又可以学习一目的MAC地址与哪个端口对应,在下次传送数据时就不再需要对所有端口进行广播了。不断的循环这个过程,对于全网的MAC地址信息都可以学习到,二层交换机就是这样建立和维护它自己的地址表。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐