




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Skb分配和释放流程 2010-12-9 1 /5 本文档的Copyleft归wwwlkk所有,使用GPL发布,可以自由拷贝、转载,转载时请保持文档的完整性,严禁 用于任何商业用途。 E-mail: 来源:http:/ Skb分配和释放流程 Skb的分配释放流程涉及到的主要内容有:网卡环的实现, skb在协议栈的传送流程,slab的 实现。每个部分的内容都很多,本文档忽略实现的细节,目的是给出一个基本的流程。 首先从网卡驱动层开始分析,以 e1000e驱动为例,如图1所示: 图1网卡对skb分配和释放 R1:内核分配skb,并将其加入rx_ring,用丁接收数据包; R2:网卡接收网络数据,并
2、将数据写云 R1中分配的skb; R3:内核接收R2中的skb,此时R2中的skb已经脱离rx_ring ,最后内核会执行R1操作,以补 充 skb。 T1 :内核将要发送的skb写入环tx_ring; T2:网卡发送T1中写入的skb; T3 :内核释放已经发送的skb。 补充说明:Skb分配和释放流程 2010-12-9 2 /5 1) 其中 _alloc_skb( e1000_receive_skb() dev_kfree_skb(郝是在软中断中执行, e1000e网卡驱动在e1000_clean(M行以上3个函数。 2) 这里的_alloc_skb(诉日dev_kfree_skb(并没
3、有分配和释放的对应关系。 图2说明内核正skb分配和释放流祁。一 K1 :从skbuff高速缓存中获得一个 skb,但是skb并不是用来存储数据包的,数据包存储在 skb-data指向的内存块,这个内存块是在通用高速缓存中获取的; K2:从通用高速缓存中获取一个内存块; K3:得到K1, K2分配的两个内存块; K4:进入内核的处理流程; K5:内核发送一个数据包; K6:由丁某种原因,内核将会释放从 K4中传入的skb,此时调用kfree_skb()释放skb; K7 :网卡驱动调用 dev_kfree_skb释放已经发送的skb,函数实现上与 kfree_skb()本一样; K8:将skb
4、释放回skbuff高项缓存; K9:将内存块释放回通用高速缓存。 补充说明: 1) skbuff高速缓存和通用高速缓存的逻辑结构如图 3,图4所示,图2所示的skb和内存块 内核处理流程 c 10DOxmitframeO kfree skb(kb) clOOO receive skb( skh-dLin head enche ODKSI: struct kmem iist3 sentet lisr_huad s!abs_paiiiai; sinter bsr head slabs full; sinter Hsr head slabs unsigned long t?ce_ unsigned
5、int frcclimii; unsigned int colour next; spinkxjk t lir lock; utrucr arraycache *shaied; struct array_cache f lien: unsigned long next reap; int Iree touched; colours T 2rtglpor(ie r个连续个连续 的页的页 IriLikext struct sk buff struct sk bull 5tr uet sk bull struct hk bull 和用字廿 IrtLprev struct slab struct li
6、st head list; unsigned long colouroff; unsigned in I inuse; kmemhufctlt free; unsigned short nodcid; knicmbufctlt krncmbiifctlt num个 所有 knicmhulctlt struct p 哗掘 struct list Jiead Iru: 图5 skbuff高速缓存详细结构 1) 内核通过free和num个kmem_bufctl_t标志位找到空闲的 skb。 2) 通过skb可以得到对应的page结构,通过page的lru可以找到对应的slab和kmem_cache
7、这样只要知道skb的首地址就可以回收这个skbo 3) kmalloc()和kfree是通用高速缓存的分配和释放函数。 Skb分配和释放流程 2010-12-9 6 /5 Figure 18-L Core functions of the IP kernel stack L4 pritocds TrftSpOiVU prOCOlS (TUJLPP/RAWIPA.J n 十 E 史 HKine riiv v4 ni|krt-+ .-AHW ,rw defrag ip_catl_rrt_chaill detrjg ip local ddher O000O NF i NF IP LOCAL , turw dst input fistard in NFJPPOSLROUn 幅 ip 浦即趴 I finish NfTFItTER ipjwwaid- rp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 强化基本医疗卫生服务的重要性
- 粮食等重要农产品稳产保供的重要性
- 工业企业挥发性有机物排放控制的政策支持与激励措施
- 圆柱施工方案
- 三级人力资源管理师-企业人力资源管理师(三级)《理论知识》考前冲刺卷4
- 专题08应用文写作
- 安徽省安庆一中江西省南昌二中等五省六校(K12联盟)高三上学期期末联考英语试题
- 福建省莆田市第二十四中学2017-2018学年高一上学期期末考历史试题
- 工会组织在企业文化建设中的独特作用
- 九年义务教育全日制初级中学英语教学大纲( 试用修订版)
- 发电机日常巡查表(完整版)
- 北师大版二年级数学下册各单元测试卷
- 水厂反恐培训教材
- 原发性肝癌护理小讲课
- 2025届湖北省三校高三第三次测评数学试卷含解析
- 护肤课件教学课件
- 《店铺人员管理》课件
- 《物料管理》课件
- GB/T 12996-2024电动轮椅车
- T-JYBZ 020-2022《校园急救设施设备配备规范(试行)》
- 向电网申请光伏容量的申请书
评论
0/150
提交评论