(dpdk f-stack)-实现L4代理功能

17 篇文章 22 订阅 ¥59.90 ¥99.00
19 篇文章 10 订阅
本文介绍了如何利用FreeBSD的IPFW机制和DPDK的f-stack实现TCP/UDP代理功能。通过hook函数对数据包进行匹配规则和头部改写,实现了在收包和发包过程中进行代理操作。
摘要由CSDN通过智能技术生成

目的:利用f-stack实现tcp/udp代理功能的一种思路(比如采用snat/dnat方法改写ip头和tcp/udp头信息)。


实现tcp/udp代理思路:
    FreeBSD提供了IPFW机制,即提供了hook函数来对数据包做改写操作; hook函数中利用数据包匹配代理规则,对数据包做改写操作。
    dpdk收到包后,首先执行FreeBSD提供的hook函数处理(可能改写ip/tcp头部信息),再交由FreeBSD协议栈处理(协议栈中不再做hook处理逻辑了,交给上层应用处理,或者路由转发处理)。
    nginx上层发包,经过FreeBSD协议栈后,最终调用dpdk接口将数据包从网卡发送前需调用hook函数(可能改写ip/tcp头部信息),完事交由dpdk将数据包从网卡发出去。

FreeBSD提供的hook函数:

  •     hook函数注册:

        int
        ipfw_attach_hooks(int arg)
        {
            int error = 0;

            if (arg == 0) /* detach */
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ygmdream

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值