我一直在寻找答案,但我找不到明确的答案。
从freebsd手册页,它描述了mbuf如下:
An mbuf is a basic unit of memory management in the kernel IPC subsystem. Network packets and socket buffers are stored in mbufs.
A network packet may span multiple mbufs arranged into a mbuf chain (linked list),
which allows adding or trimming network headers with little overhead.
An mbuf consists of a variable-sized header and a small internal buffer for data.
到目前为止我能理解的环形缓冲区是NIC驱动程序将为数据包接收过程预先分配数据包缓冲区(环形缓冲区)(在这种情况下为Rx)。
我不明白这两种不同缓冲区在linux网络域中的作用。
请回复你的理解。
谢谢
答案 0 :(得分:0)
你有很好的环形缓冲区的基础知识。
就mbuf而言,如果你听说过它们,它们会与pbuf类似,但看起来它们有点复杂。它们只是一个简单的结构,使内存管理更容易(在这种情况下是分组数据)。除非你在处理内核代码,否则我认为你不需要使用mbuf,因为套接字系统应该在用户空间中将它抽象出来。
以下是有关mbuf的更详细信息:https://www.freebsd.org/cgi/man.cgi?format=html&query=mbuf%289%29