路由与交换实验——软件二层交换机的实现
路由与交换实验——软件二层交换机的实现一.实验目的二.实验内容三.实验环境四.实验步骤1 配置环境2 实验步骤五.实验思考一.实验目的1、熟悉基于NetMagic08的Fast架构编程;2、了解在linux环境下的c程序的编写、编译与调试;3、了解软件实现交换功能的代码设计;4、理解自学习二层交换机的工作原理;二.实验内容1、基础要求:虚拟机环境下编写一个基于fast架构工作的软件自学习二层交换机
一. 实验目的
1、熟悉基于NetMagic08的Fast架构编程;
2、了解在linux环境下的c程序的编写、编译与调试;
3、了解软件实现交换功能的代码设计;
4、理解自学习二层交换机的工作原理;
二. 实验内容
1、基础要求:虚拟机环境下编写一个基于fast架构工作的软件自学习二层交换机。
2.扩展要求:通过fast函数,实现交换表的硬件卸载以及通过读取硬件计数器,实现带宽统计以及链路状态的判断,并且制作界面展示。
三. 实验环境
- 1台管理节点主机;3台主机A、B以及C;(分别连接到2口和3口)
- 4根网线;
- NetMagic08开发平台;
- 软件Quartus 16。
- 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地址信息都可以学习到,二层交换机就是这样建立和维护它自己的地址表。
更多推荐
所有评论(0)