项目简介
本项目实现了基于Linux内核模块编程的虚拟网络设备接口(VNI)。VNI模块位于Linux内核IP模块与以太网络设备之间,借助Netfilter框架截获并处理IP数据包,创建了虚拟的vni0接口,还在MAC帧头与IP头部之间填充VNI头部。项目旨在验证在Linux内核中增加虚拟网络设备接口的实现,且具备简单的统计功能。
项目的主要特性和功能
主要特性
- 虚拟网络设备接口:于Linux内核中新增虚拟的vni0接口,用以处理特定网络数据包。
- 数据包封装与解析:自定义VNI头部,在MAC帧头与IP头部间添加信息。
- 发送与接收处理:模块处理数据包的封装、解析、发送和接收操作。
- 动态定时器监控:利用定时器定期更新数据包统计信息。
功能
- 发送功能:将IP数据包封装在VNI帧中,调用以太网络设备发送。
- 接收功能:将接收到的数据帧解封后交给内核IP模块。
- 统计功能:统计VNI工作状态信息,如发送与接收的数据帧数目。
安装使用步骤
- 环境准备:确保在Ubuntu16.04.1环境下,Linux内核版本为4.15.0。
- 编译源文件:使用提供的
vni.c
源文件进行编译,生成vni.ko
模块文件。 - 加载模块:使用
insmod
命令将VNI模块加载到内核中。 - 测试:使用ping命令在两台虚拟机之间发送和接收数据,并观察结果。
- 结果分析:使用
dmesg
命令查看内核输出信息,分析VNI模块的工作状态。 - 卸载模块:使用
rmmod
命令从内核中卸载VNI模块。
注意:因本项目涉及内核模块编程,需具备相应系统知识和编程经验,且要在正确环境中开发和测试。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】