XDP入门--eBPF程序如何转发报文到其它网卡

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

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
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值