1、测试环境:
参照把树莓派改造成无线网卡(3)-----共享无线网络,无线网络转换成有线网络,让有线网络设备连上无线网络一文,形成如下测试网络:
+- RPi -------+ +- old pc1----+
| Eth0+----------+ Eth0 |
+- Router ----+ | DHCP server| | 10.0.0.10 |
| Firewall | | 10.0.0.1 | | |
(Internet)---WAN-+ DHCP server +-WLAN AP-+-))) (((-+ WLAN | +-------------+
| 192.168.3.1 | | |
+-------------+ | | +- old pc2----+
| Eth1+----------+ Eth0 |
| | | 10.0.0.4 |
+-------------+ | |
+-------------+

2、实现的功能,使用bpf_redirect直接转发收到的报文到另外一张网卡
在测试环境中,我们让
- eth1把收到的IPv4的目标IP地址为10.0.0.10的直接从eth0转发出去
- eth0把收到的IPv4的目标IP地址为10.0.0.4的直接从eth1转发出去
- 其它报文上送内核TCP/IP协议栈处理
代码如下:
#include <stdio.h>
#include <linux/bpf.h>
#include <net/ethernet.h>
#include <lin

本文介绍了通过BPF_redirect在XDP层实现报文直接从eth1转发到eth0,以及反向转发,以提高网络性能。测试结果显示,使用XDP_BPF程序的数据流量约为70Mbps,较传统方式有所提升。需要注意的是,网卡的index在系统重启后可能会变化,需重新获取。
7418

被折叠的 条评论
为什么被折叠?



