Git   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Linux上的UDP和TCP的内核旁路 – 它涉及什么?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

根据http://www.solacesystems.com/blog/kernel-bypass-revving-up-linux-networking :

名为OpenOnload的networking驱动程序使用“内核旁路”技术用户空间中一起运行应用程序和networking驱动程序,并绕过内核。 这允许连接的应用程序端以更低和更一致的等待时间每秒处理更多的消息。

[…]

如果你是一个开发人员或架构师,已经与内核切换进行了多年的内核旁路,可能会觉得自己是在作弊,但幸运的是,它完全在规则之内。

具有多个文件的内核模块 – 未知的符号

内核内存(虚拟地址条目)在TLB?

这是在Ntoskrnl.exe tolower的实施中的一个错误

如何使一个Linux内核函数可用于ftrace function_graph示踪剂?

我的内核模块使用多less内存?

有什么function需要做这样的内核绕过?

有没有办法让Splint或类似的静态检查器与Linux内核模块一起工作?

Linux TCP / IP黑客在哪里生活?

这正是Linux内核中的romfs吗?

用WinDbg设置远程内核debugging器

Linux内核代码覆盖率 – GCOV

好吧,所以如果不知道内核如何处理网络堆栈,问题并不是直截了当的。

在一般情况下,网络堆栈由很多层组成,其中最低的一个是实际的硬件,通常这个硬件通过驱动程序(每个网络接口一个)来支持,NIC通常提供非常简单的接口,认为接收并发送原始数据。

在这个物理连接之上,接收和发送数据的能力是很多的协议,它们也是分层的,在附近是ip协议,它基本上允许你指定信息的接收者,而在顶部你会发现TCP支持稳定的连接。

所以为了回答你的问题,你首先要弄清楚你需要替换哪一部分网络堆栈,以及你需要做什么。 从我对你的问题的理解看来,你似乎希望保持原有的网络堆栈,然后只是有时使用你自己的,在这种情况下,你应该真的只是实施策略模式,并且可以指出哪些数据包应该由网络堆栈的顶层处理。

取决于在linux中如何实现网络堆栈,如果不更改内核,您可能会也可能无法实现这一点。 在微内核体系结构中,网络堆栈的每个部分都是在自己的服务中实现的,这样做很简单,因为您只需将网络堆栈的较低部分分配给策略模式,并将该管道输入到所需的网络顶层。

TCP卸载引擎将“正常工作”,不需要特殊的应用程序编程。 它不会绕过整个内核,只是将一些TCP / IP堆栈从内核移到网卡,所以驱动程序略高一点。 内核API是一样的。

TCP卸载引擎由大多数现代千兆接口支持

或者,如果您的意思是“在SolarFlare网络适配器的嵌入式处理器/ FPGA'应用程序载入引擎'上运行代码”,那么…这是针对卡的。 你基本上是为嵌入式系统编写代码,所以你需要说出你正在使用哪种类型的卡。

你可能想要发送和接收原始IP数据包?

基本上你需要在一个ip-packet中填写标题和数据。 这里有一些关于如何发送原始以太网数据包的例子: http : //ausTinR_79_11845@arton.wordpress.com/2011/09/14/sending-raw-ethernet-packets-from-a-specific-interface-in-c-在Linux的/

要自己处理TCP / IP,我认为你可能需要在一个定制的内核中禁用TCP驱动程序,然后编写你自己的用户空间服务器来读取原始IP。

这可能不是那么高效,但…

大佬总结

以上是大佬教程为你收集整理的Linux上的UDP和TCP的内核旁路 – 它涉及什么?全部内容,希望文章能够帮你解决Linux上的UDP和TCP的内核旁路 – 它涉及什么?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: