免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3385 | 回复: 13
打印 上一主题 下一主题

请教一个问题,关于网络协议栈的 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-15 18:02 |只看该作者 |倒序浏览
就是驱动在把一个包送给kernel之后,kernel是如何来处理这个包的?
从整体来看协议栈的话,协议栈是以一个内核线程的方式运行于内存之中随时等待封包的来临还是以什么方式呢?
是以一个线程还是多个线程的方式执行呢?

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
2 [报告]
发表于 2009-12-15 18:42 |只看该作者
本版块有一个帖子《网络子系统在链路层的收发过程剖析》,LZ搜一下。

论坛徽章:
0
3 [报告]
发表于 2009-12-15 18:42 |只看该作者

回复 #1 ConquerorLiu 的帖子

老的驱动是用中断处理的方式,新的驱动是NAPI的方式

论坛徽章:
0
4 [报告]
发表于 2009-12-16 16:47 |只看该作者
个人觉得,不管是老的还是新的NPAI方式收包;都是通过NIC中断才开始收包的,上半部处理激活软中断
进行下半部操作(报文的处理),, 所以整个收包和处理包都是在中断上下文中处理的。应该没有
其他的内核线程去处理报文的哦!!

论坛徽章:
0
5 [报告]
发表于 2009-12-24 09:48 |只看该作者
谢谢,多向先闻道者学习!


原帖由 Godbach 于 2009-12-15 18:42 发表
本版块有一个帖子《网络子系统在链路层的收发过程剖析》,LZ搜一下。

论坛徽章:
0
6 [报告]
发表于 2009-12-24 10:01 |只看该作者
那就是说整个内核里面的稍微上层点的协议栈,如TCP/IP的处理都是在这个中断上下文执行的对吧?那中断处理例程是不能被打断的,会不会耗时很久啊?
另外是在封包出协议栈的时候它的数据是以什么方式来丢给用户空间的进程的呢?是在把封包丢给进程之后返回这个中断上下文才算是执行完毕吗?


原帖由 wmmy2008 于 2009-12-16 16:47 发表
个人觉得,不管是老的还是新的NPAI方式收包;都是通过NIC中断才开始收包的,上半部处理激活软中断
进行下半部操作(报文的处理),, 所以整个收包和处理包都是在中断上下文中处理的。应该没有
其他的内核线程去处理 ...

论坛徽章:
0
7 [报告]
发表于 2009-12-24 10:22 |只看该作者

回复 #6 ConquerorLiu 的帖子

软中断,可以被中断打断,linux有专门处理网络数据包的软中断,软中断的处理是靠一些内核核线程来完成的,
中断只是在驱动层完成接收的数据包的任务,剩下的给软中断。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
8 [报告]
发表于 2009-12-24 10:28 |只看该作者
原帖由 ConquerorLiu 于 2009-12-24 10:01 发表
那就是说整个内核里面的稍微上层点的协议栈,如TCP/IP的处理都是在这个中断上下文执行的对吧?那中断处理例程是不能被打断的,会不会耗时很久啊?
另外是在封包出协议栈的时候它的数据是以什么方式来丢给用户空 ...


记得LDD3上讲解网卡驱动的时候提到中断和NAPI了,可以参考一下

论坛徽章:
0
9 [报告]
发表于 2009-12-24 12:33 |只看该作者
也就是说软中断本身的机制是由内核线程来实现的,那么就是说软中断的优先级和内核线程是同等地位的,统一由内核来进行线程调度,对吧?
硬中断里面其实就是使能了一下软中断,就返回了,没做任何别的事情。 底半部都由软中断来做事。那这样说来的话,就是说协议栈本质上是
以内核线程的方式在被执行的?
原帖由 cskyrain 于 2009-12-24 10:22 发表
软中断,可以被中断打断,linux有专门处理网络数据包的软中断,软中断的处理是靠一些内核核线程来完成的,
中断只是在驱动层完成接收的数据包的任务,剩下的给软中断。

论坛徽章:
0
10 [报告]
发表于 2009-12-24 12:36 |只看该作者

回复 #8 Godbach 的帖子

那里面稍微带过了一下,没有很详细的介绍啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP