周末看了 netmap framework 的介绍后,了解到使用它能够让用户态的应用程序能跳过协议栈直接访问网卡的数据。
但是我有个疑问,如果不经过内核空间协议栈的处理,用户态的应用程序要如何处理经过网络传输的原始数据吗?
难道要自己再解析处理一次吗?那这样的话和不使用 netmap 又有什么性能提升呢?
ps:最近在恶补计算机网络方面的知识(特别是云网络,网络虚拟化方面),恳求大佬们推荐下书籍。 十分感谢!!!
1
Jirajine 2021-07-18 16:59:47 +08:00 via Android
如果用户态实现是 zero copy 的,不久可以减少内存复制了么。
|
2
Srar 2021-07-18 19:58:29 +08:00
是的,需要自己解析,还需要顺便处理整个网络栈。其实网络瓶颈一般在内核内的流程处理,解析带来的成本可以忽略。
|
4
Srar 2021-07-18 23:09:04 +08:00
@Fu4ng 数据包被多次复制只是性能受影响的其中之一,还有别的因素也会影响例如上下文切换、处理流程造成的 Cache Miss 等
|