日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

网卡驱动收发包过程图解

發(fā)布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网卡驱动收发包过程图解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

網(wǎng)卡

網(wǎng)卡工作在物理層和數(shù)據(jù)鏈路層,主要由PHY/MAC芯片、Tx/Rx FIFO、DMA等組成,其中網(wǎng)線通過變壓器接PHY芯片、PHY芯片通過MII接MAC芯片、MAC芯片接PCI總線

PHY芯片主要負(fù)責(zé):CSMA/CD、模數(shù)轉(zhuǎn)換、編解碼、串并轉(zhuǎn)換

MAC芯片主要負(fù)責(zé):

1. 比特流和幀的轉(zhuǎn)換:7字節(jié)的前導(dǎo)碼Preamble和1字節(jié)的幀首定界符SFD

2. CRC校驗

3. Packet Filtering:L2 Filtering、VLAN Filtering、Manageability / Host Filtering

Intel的千兆網(wǎng)卡以82575/82576為代表、萬兆網(wǎng)卡以82598/82599為代表

收發(fā)包過程圖

ixgbe_adapter包含ixgbe_q_vector數(shù)組(一個ixgbe_q_vector對應(yīng)一個中斷),ixgbe_q_vector包含napi_struct

硬中斷函數(shù)把napi_struct加入CPU的poll_list,軟中斷函數(shù)net_rx_action()遍歷poll_list,執(zhí)行poll函數(shù)


發(fā)包過程


1、網(wǎng)卡驅(qū)動創(chuàng)建tx descriptor ring(一致性DMA內(nèi)存),將tx descriptor ring的總線地址寫入網(wǎng)卡寄存器TDBA

2、協(xié)議棧通過dev_queue_xmit()將sk_buff下送網(wǎng)卡驅(qū)動

3、網(wǎng)卡驅(qū)動將sk_buff放入tx descriptor ring,更新TDT

4、DMA感知到TDT的改變后,找到tx descriptor ring中下一個將要使用的descriptor

5、DMA通過PCI總線將descriptor的數(shù)據(jù)緩存區(qū)復(fù)制到Tx FIFO

6、復(fù)制完后,通過MAC芯片將數(shù)據(jù)包發(fā)送出去

7、發(fā)送完后,網(wǎng)卡更新TDH,啟動硬中斷通知CPU釋放數(shù)據(jù)緩存區(qū)中的數(shù)據(jù)包

Tx Ring Buffer

收包過程

1、網(wǎng)卡驅(qū)動創(chuàng)建rx descriptor ring(一致性DMA內(nèi)存),將rx descriptor ring的總線地址寫入網(wǎng)卡寄存器RDBA

2、網(wǎng)卡驅(qū)動為每個descriptor分配sk_buff和數(shù)據(jù)緩存區(qū),流式DMA映射數(shù)據(jù)緩存區(qū),將數(shù)據(jù)緩存區(qū)的總線地址保存到descriptor

3、網(wǎng)卡接收數(shù)據(jù)包,將數(shù)據(jù)包寫入Rx FIFO

4、DMA找到rx descriptor ring中下一個將要使用的descriptor

5、整個數(shù)據(jù)包寫入Rx FIFO后,DMA通過PCI總線將Rx FIFO中的數(shù)據(jù)包復(fù)制到descriptor的數(shù)據(jù)緩存區(qū)

6、復(fù)制完后,網(wǎng)卡啟動硬中斷通知CPU數(shù)據(jù)緩存區(qū)中已經(jīng)有新的數(shù)據(jù)包了,CPU執(zhí)行硬中斷函數(shù):

  • NAPI(以e1000網(wǎng)卡為例):e1000_intr() -> __napi_schedule() -> __raise_softirq_irqoff(NET_RX_SOFTIRQ)
  • 非NAPI(以dm9000網(wǎng)卡為例):dm9000_interrupt() -> dm9000_rx() -> netif_rx() -> napi_schedule() -> __napi_schedule() -> __raise_softirq_irqoff(NET_RX_SOFTIRQ)

7、ksoftirqd執(zhí)行軟中斷函數(shù)net_rx_action():

  • NAPI(以e1000網(wǎng)卡為例):net_rx_action() -> e1000_clean() -> e1000_clean_rx_irq() -> e1000_receive_skb() -> netif_receive_skb()
  • 非NAPI(以dm9000網(wǎng)卡為例):net_rx_action() -> process_backlog() -> netif_receive_skb()

8、網(wǎng)卡驅(qū)動通過netif_receive_skb()將sk_buff上送協(xié)議棧

Rx Ring Buffer

軟件(SW)向從next_to_use開始的N個descriptor補(bǔ)充sk_buff,next_to_use += N,tail = next_to_use - 1(設(shè)置網(wǎng)卡寄存器RDT)

硬件(HW)向從head開始的M個descriptor的sk_buff復(fù)制數(shù)據(jù)包并設(shè)置DD,head += M

SW將從next_to_clean的開始的L個sk_buff移出Rx Ring Buffer交給協(xié)議棧,next_to_clean += L,向從next_to_use開始的L個descriptor補(bǔ)充sk_buff,next_to_use += L,tail = next_to_use - 1

注意:每次補(bǔ)充完sk_buff以后,tail、next_to_use、next_to_clean三者都是緊挨著的


中斷上下部


do_IRQ()是CPU處理硬中斷的總?cè)肟?#xff0c;在do_IRQ()中調(diào)用硬中斷函數(shù)

netif_rx()

在netif_rx()中把skb加入CPU的softnet_data

RSS + FDIR

FDIR(Flow Director)的優(yōu)先級高于RSS(Receive Side Scaling)

RSS通過計算包的五元組(sip、sport、dip、dport、protocol)的hash并取余,得到隊列的index,然后將包放入這個隊列,實現(xiàn)了數(shù)據(jù)包在各個隊列之間的負(fù)載均衡,不過RSS不能保證回包也落在同一個隊列上

對稱hash(sip/sport和dip/dport交換后hash不變)可以部分解決該問題,但是對于一些需要做NAT的設(shè)備(比如負(fù)載均衡)就失效了,FDIR可以完全解決該問題,參見https://tech.meituan.com/MGW.html

總結(jié)

以上是生活随笔為你收集整理的网卡驱动收发包过程图解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 少妇学院在线观看 | av免费精品 | 91射射| 麻豆视频在线免费观看 | 午夜激情福利视频 | 男女无遮挡免费视频 | 特级淫片aaaaaaa级 | 操欧洲美女| 粉嫩一区| 在线免费观看中文字幕 | 青少年xxxxx性开放hg | 国产午夜精品免费一区二区三区视频 | 1024视频污| 亚洲偷| 永久视频 | 亚洲色图综合在线 | 欧美另类高清 | 国产精品视频合集 | 无码人妻丰满熟妇奶水区码 | 91免费版黄 | 日日狠狠久久偷偷四色综合免费 | 成人国产在线观看 | 国产理论片在线观看 | 一级视频黄色 | 一本色道久久综合无码人妻 | 欧美456 | 视频在线中文字幕 | 国产精品九色 | 视频一区二区三区在线观看 | 国产美女福利 | 成人在线国产精品 | 朝鲜女人性猛交 | 一卡二卡三卡四卡 | 久久久久成人网 | 天天舔天天操天天干 | 粉嫩av.com| 男人和女人日批 | 亚洲涩视频| 91精品一区二区三区在线观看 | 在线观看av片| 肉色超薄丝袜脚交一区二区 | 亚洲网站在线播放 | 男女乱淫视频 | www爱爱 | 欧美成人三级在线播放 | jjzz国产| av看片网站 | 五月综合激情 | 少妇高潮一区二区三区99欧美 | 亚洲欧美一区二区激情 | 亚洲中文在线一区 | 激情综合图区 | 人妻熟人中文字幕一区二区 | 成人激情免费 | 奇米影视久久久 | 亚洲成年人网站在线观看 | 激情国产视频 | 日本wwwxx | 欧美在线你懂的 | 成人网视频 | 日本aa大片 | 2018天天干天天操 | 欧美性受xxxxxx黑人xyx性爽 | 亚洲最大在线视频 | 无码黑人精品一区二区 | 青青草原av在线 | 欧美另类高清videos的特点 | 精品国产一区二区三区无码 | a级片网址 | 久久久久国产精品熟女影院 | 日本黄色动态图 | 国产看真人毛片爱做a片 | 顶级毛片 | 日韩深夜在线 | 日韩精品视频一区二区三区 | 色图av | 91免费视频网 | 国产精品久久久久久久免费看 | 无码专区久久综合久中文字幕 | av毛片基地 | 欧美人妻精品一区二区免费看 | 中文字幕精品一区二 | 靠逼视频免费网站 | 日韩欧美高清一区 | 欧洲一区二区视频 | 欧美黑人一级 | 久久久性 | 日韩精品在线免费观看视频 | 一区二区三区播放 | 日韩亚洲国产精品 | 在线观看网页视频 | 久热99| 亚洲天堂中文字幕在线 | 精品国产精品网麻豆系列 | 天堂久久爱 | 久久资源av| 色翁荡息又大又硬又粗又爽 | 极品白嫩的小少妇 | 国产一区二区三区四区 |