liklstar 发表于 2014-05-15 12:47

IEEE 802.3以太网MAC子层为什么不能运行于用户态,而只能运行于内核态?

本帖最后由 liklstar 于 2014-05-15 12:47 编辑

IEEE 802.3以太网MAC子层为什么不能运行于用户态,而只能运行于内核态?同样,为什么TCP/IP要运行于内核态,而不能运行于用户态?

qxhgd 发表于 2014-05-15 13:59

个人理解,不一定非得在内核态,只是基于效率或其他设计上的考虑,将其放到内核态了。

liklstar 发表于 2014-05-15 15:05

我猜:可能是基于“分层”的思想!为了避免用户应用程序过于复杂,通过操作系统向用户屏蔽网络实现,因此才把具体的网络协议实现放入内核,仅向用户进程提供系统调用!

如果是这样,那么在特殊情况下,是否可能由用户进程处理网络协议?也就是说:让网络协议运行于用户态?

__SevenEleven 发表于 2014-05-15 16:51

TCP, IP, MAC, 这些简单点理解就是驱动,它们需要大量的与kernel打交道,如果设计在用户态,不停的使用系统调用会给内核和系统造成很大的负担

mordorwww 发表于 2014-05-17 16:27

Dpdk就是用户态的协议栈

yshwuxian 发表于 2016-06-06 16:32

mordorwww 发表于 2014-05-17 16:27 static/image/common/back.gif
Dpdk就是用户态的协议栈

毛,dpdk离协议栈十万八千里

mordorwww 发表于 2016-06-06 17:52

yshwuxian 发表于 2016-06-06 16:32 static/image/common/back.gif
毛,dpdk离协议栈十万八千里

不太准确

dpdk相当于用户态网卡驱动
网卡驱动都放到了用户态,拉磨协议栈也放用户态了。
一般会把用户态协议栈也随DPDK给你

yshwuxian 发表于 2016-06-06 20:08

mordorwww 发表于 2016-06-06 17:52 static/image/common/back.gif
不太准确

dpdk相当于用户态网卡驱动


自己在上面开发的当然另算

我如果只用dpdk做软交换机,要个毛的协议栈;同样我如果基于dpdk做了个交换机送给客户,也不能说dpdk就包含了软交换机



mordorwww 发表于 2016-06-07 08:43

yshwuxian 发表于 2016-06-06 20:08 static/image/common/back.gif
自己在上面开发的当然另算

我如果只用dpdk做软交换机,要个毛的协议栈;同样我如果基于dpdk做了个交换 ...


你用DPDK做三层交换机的话,你需要支持IP协议的说

yshwuxian 发表于 2016-06-07 08:47

这和协议栈也没多大关系啊,网卡rss,fdir都能读到传输层的数据,协议栈最大的作用是维持网络连接的状态,我只关心单个数据包的数据有必要用协议栈么?华为搞的pof支持任意协议的转发,也没见它用协议栈
页: [1] 2
查看完整版本: IEEE 802.3以太网MAC子层为什么不能运行于用户态,而只能运行于内核态?