littlebot
Published on 2025-04-03 / 1 Visits
0

【源码】基于 CC++ 编程语言的路由器实验框架项目

项目简介

本项目是 2019 年网络原理课程实验采用的框架,使用 C/C++ 语言开发。其目的在于降低实验难度,将与底层打交道的部分抽象成通用接口,减少学习底层 API 的负担;实现代码复用,使程序可在不同平台运行;方便测试,提供文件读写 PCAP 的后端用于黑箱测试。实验最终目标是完成一个具备转发和路由功能的路由器。

项目的主要特性和功能

框架特性

  • 硬件抽象层(HAL):隐藏底层细节,提供统一接口,支持 Linux、macOS、stdio、Xilinx 等多平台运行。
  • 代码复用性:在一个平台编写的程序可直接用于其他平台。
  • 便捷测试:提供文件读写 PCAP 的后端,支持黑盒测试,能在真机调试前解决诸多问题。

路由器功能

  • 转发功能:收到 IP 包后查表确定下一棒,若目的地址直接可达则下一棒为目的地址,然后进行接力转发。
  • 路由功能:通过 RIP 协议学习网络拓扑信息,用于转发以连通网络。

HAL 功能

提供 HAL_InitHAL_GetTicksHAL_ArpGetMacAddress 等函数,可实现软路由,Example 目录下有使用范例。

实验测试

Homework 目录下有多个题目,通过数据测试路由器核心功能,采用黑盒测试方法,使用评分脚本评测。

安装使用步骤

环境准备

若使用 Debian 系列发行版(包括 Ubuntu、Raspbian),执行以下命令安装依赖: bash sudo apt install git make cmake python3 python3-pip libpcap-dev libreadline-dev libncurses-dev wireshark tshark iproute2 g++ pip3 install pyshark 其他发行版使用类似的包管理器安装方法。

复制仓库

shell cd Router-Lab git submodule update --init --recursive

使用 HAL

CMake 方式

bash mkdir build cd build cmake.. -DBACKEND=Linux make router_hal # 编译 HAL 库,生成./HAL/librouter_hal.a make capture # 编译 Example 中的 capture,生成./Example/capture make # 编译 HAL 库和所有 Example

非 CMake 方式

router_hal.h 放到 Header Include Path 中,把对应后端的文件编译并链接进程序,同时在编译选项中写 -DROUTER_BACKEND_LINUX (根据后端修改),可参考 Homework/checksum/Makefile

本地自测

checksum 题目为例,在 Homework/checksum 目录下执行: bash pip install pyshark # 仅第一次,一些平台下要用 pip3 install pyshark make # 编译,得到可以执行的 checksum ./checksum < data/checksum_input1.pcap # 手动运行查看效果 make grade # 运行评分脚本

在线测试

选课同学需在 OJ 上提交代码,将修改的函数所在文件提交到对应题目。建议自行设计测试样例,减少真机调试困难。

实验验收

实验分为三部分:第一部分完成 Homework 下的题目并在 OJ 提交通过;第二部分个人测试,在树莓派上运行软件,检查多项功能;第三部分组队测试,检查连通性,复杂拓扑连通可加分。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】