当前位置: 技术问答>linux和unix
跪求高手指点:如何在kernel中实现数据包的转发
来源: 互联网 发布时间:2015-10-20
本文导语: 各位老大,小弟现在有一问题,描述如下: 原来的程序是一cs网络通信程序,server和client建立socket连接后进行数据通信,然后server再将数据解析后转发到另外的client端。现在想提高程序的性能,将原来在server端的数据...
各位老大,小弟现在有一问题,描述如下:
原来的程序是一cs网络通信程序,server和client建立socket连接后进行数据通信,然后server再将数据解析后转发到另外的client端。现在想提高程序的性能,将原来在server端的数据转发功能直接用server端的linux kernel实现。这就是说client发数据到server的系统后,server上的linux kernel直接劫取此数据,不用再转发到用户空间,而是kernel自己决定将数据转发到另外的client上去(或原来的client),这个转发过程最好是在数据链路层,别的层也可以。请问如何实现啊。各位老大不要见笑,实在是小弟太菜了。
原来的程序是一cs网络通信程序,server和client建立socket连接后进行数据通信,然后server再将数据解析后转发到另外的client端。现在想提高程序的性能,将原来在server端的数据转发功能直接用server端的linux kernel实现。这就是说client发数据到server的系统后,server上的linux kernel直接劫取此数据,不用再转发到用户空间,而是kernel自己决定将数据转发到另外的client上去(或原来的client),这个转发过程最好是在数据链路层,别的层也可以。请问如何实现啊。各位老大不要见笑,实在是小弟太菜了。
|
man iptables
或则在网上搜
或则在网上搜
|
直接用Iptables 的内部命令怕是很难实现,规则:server将数据解析后转发到另外的client端 这里至少提出了两个需求 1,解析数据;2,转发规则 所以你得把这两个需求转化为程序然后嵌入到 Iptables 的转发链,具体可以这样做,用insmodule 将这两个子程序装载到内核,然后在iptables 的
FORWARD 链上注册。
FORWARD 链上注册。
|
iptables的重定向功能不行吗?