日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

前言

說到互聯網,大家很容易想到的有 CPU、服務器、操作系統、應用程序(App)、小程序、網頁(html)等。然而,還有一個要素是很容易被忽略的,卻是最重要的,那就是網卡。如果沒有網卡,那么所有的主機將會是孤立的,沒法實現相互間通信,也就不存在互聯網了。兩臺主機之間要實現通信,互相收發報文,最底層的基礎設施,除了傳輸鏈路(光纖、網線等),就是安裝在主機上的網卡了,它將主機上應用軟件產生的數據打包,然后從物理鏈路上發送出去,同理,它還可以從物理鏈路上接收報文,送往主機上的應用程序。

在這篇文章中,你將會了解到什么是中斷,什么是 PCIe,什么是 uio,什么是 igb_uio,什么是 pmd,什么是 DPDK 等一系列與網卡相關的概念及網卡工作的原理。

為什么說網卡是互聯網世界的基石?通俗解釋網卡收發包原理

 

物理網卡

這里以 Intel 網卡為例,有 10G、25G、100G 等,表示最大的傳輸速度,單位 Gbit/s。網卡可以有一個端口,也可以有多個端口。

網卡驅動知多少

假如我們從 Intel 買回來一張網卡,是不是直接插到電腦上,就可以用呢?答案是否定的。從一張物理網卡到真正能夠實現收發報文,中間可是有一堆工作要做的。

  1. PCIe

PCIe 是一種高速串行點對點雙通道高帶寬、計算機擴展總線標準,現在已經發展到第四代了。簡單理解,就是計算機主板上用來插網卡的槽位。當網卡插入主板上的槽位時,一塊網卡上的每個端口都對應了一個 PCIe ID,這是網卡端口的物理身份標識。這里提一句,PCI 是 PCIe 的上一個形態。

  1. 中斷

首先,你要明確一點:網卡收發報通過中斷實現。什么是中斷呢?

所謂中斷,就是外部設備向處理器發起的請求事件,但這還不夠本質。更本質的理解是處理器對外開放的實時受控接口。中斷絕對不是硬件代替軟件去輪詢,而是硬件的結構決定了,當某個管腳電平變低(或者變高)的時候,CPU 就會被打斷,并從特定地址開始執行。比如,當 CPU 的 RESET 被拉低的時候一定會復位并從某個特定地址重新開始執行,這是由硬件的結構決定的。

  1. uio

uio,是一個內核框架(操作系統提供的內核模塊),作用就是支持用戶空間的 I/O 技術。而大家所熟知的 DPDK 開源組件就是實現用戶態 I/O 技術,它依賴內核空間的 uio 框架。

為什么說網卡是互聯網世界的基石?通俗解釋網卡收發包原理

 

  1. pmd

pmd(poll mode driver,輪詢模式驅動)是 DPDK 在用戶態實現的網卡驅動程序,準確來說,它應該是個接口,它可以把 Intel 各種網卡的真正驅動程序加載到用戶態。

pmd 有哪些功能呢?比如對網卡硬件進行一些配置,例如設置網卡接收緩沖區,發送緩沖區的大小。所謂對網卡進行配置, 也就是對網卡寄存器進行配置。每個網卡都有自己的配置空間,對應了很多寄存器,每種寄存器各自負責不同的功能。比如接收控制寄存器,用于對網卡收發包的一些設置; 中斷寄存器,用于設置允許哪里產生中斷事件,例如鏈路中斷。

  1. igb_uio

igb_uio(也就是 DPDK 提供的 igb_uio.ko),是 DPDK 用于與 uio 交互的內核模塊,通過 igb_uio 來 bind 指定的 PCI 網卡設備給到用戶態的 pmd 使用。igb_uio 借助 uio 技術來截獲中斷,并重設中斷回調行為,從而繞過內核協議棧后續的處理流程。并且 igb_uio 會在內核初始化的過程中將網卡硬件寄存器映射到用戶態。

  1. i40e、ixgbe 等

i40e 驅動對應 Intel x700 系列網卡,這是由 Intel 提供的,是網卡真正的驅動,需要加載 i40e.ko 到內核,linux 操作系統才能識別這張物理網卡。而 ixgbe 是 Intel 82599 系列網卡驅動。

  1. 虛擬網卡

這個概念是伴隨著 vm(虛擬機)的產生而出現的,就是虛擬機上的網卡。我們可以將它和 host(物理機)上的物理網卡進行綁定。

總結

我們拿到 Intel 的一張網卡時,一般加載其對應的網卡驅動就可以使用了,比如 i40e、ixgbe 等。但如果我們要用 DPDK 實現用戶態網卡收發包,就需要下載 Intel 等開源代碼 - DPDK,內核需要加載 igb_uio,用戶態 pmd 驅動框架需要加載 librte_i40e.so 等。

Linux 系統中 DPDK 編程常用命令

ifconfig
/sys/config/net-scripts/ 下的文件可以用來配置 eth 口的 ip 地址等
ip link show
lspci // 有很多可選參數
lsmod
su modprobe uio
su insmod igb_uio
dpdk主目錄/usrtools/ 下的 dpdk-devbind.py、dpdk-setup.sh 等自帶腳本
linux 用戶空間和內核空間通信通過 sysfs 實現

分享到:
標簽:網卡
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定