精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

虛擬化之Virtio-Net基礎篇

云計算 虛擬化
系統虛擬化技術是云計算最重要的核心技術之一。云計算平臺的資源池化,資源統一管理以及后續的動態分配都是基于系統虛擬化技術才得以實現的。在計算機系統中,主要有計算資源,存儲資源和網絡資源。

[[397021]]

virtio基礎篇

1. virtio的提出

系統虛擬化技術是云計算最重要的核心技術之一。云計算平臺的資源池化,資源統一管理以及后續的動態分配都是基于系統虛擬化技術才得以實現的。在計算機系統中,主要有計算資源,存儲資源和網絡資源。所以,系統虛擬化技術又可以細分為計算虛擬化,存儲虛擬化和網絡虛擬化。其中存儲設備和網絡設備一般都是以外設的形式和CPU通過I/O總線連接起來的,所以存儲虛擬化和網絡虛擬化又可以統一歸類為I/O虛擬化技術。我們這里介紹的virtio就是當前最流行的I/O虛擬化技術。

I/O虛擬化技術可以分成兩種,一種是全虛擬化,另外一種是半虛擬化。

  • 全虛擬化:Guest OS不知道自己是虛擬機,所以也就不需要修改Guest OS的驅動程序。這樣Guest OS移植性好,但是虛擬機的I/O性能不高。
  • 半虛擬化:Guest OS知道自己是虛擬機,通過前端驅動和后端模擬設備互相配合實現IO虛擬化。和全虛擬化相比,半虛擬化技術可以幫助大幅度提高虛擬機I/O的性能。目前在云計算場景中廣泛使用的就是virtio在Linux上的具體實現,而且virtio已經成為虛擬化I/O技術的抽象接口規范和事實標準,即使非Linux系統也可以適用。

2. virtio總體設計思想

virtio的總體設計思想可以概括為以下四點:直觀,高效,標準化,可擴展。

1) 直觀:virtio設備被設計的和之前的硬件設備一樣,支持常用的總線機制,比如中斷和DMA。這樣的設計使得驅動開發人員能夠快速上手,完成virtio設備驅動的開發。

2) 高效:virtio設備能支持單獨的輸入和輸出通道,在大量數據傳送的時候也能保持高效。

3) 標準化:對硬件架構和操作系統環境沒有依賴,支持多種不同總線的傳輸機制(在virtio規范1.1中支持PCI, MMIO和Channel I/O總線。比如在那些不支持PCI的嵌入式設備還可以通過使用MMIO的方式使用virtio)。

4) 可擴展:在virtio設備發現和設備初始化的時候通過引入特性位(Feature Bits)標識符實現動態適配的協商機制,能夠保證virtio前端驅動和后端模擬設備之間的兼容性。

3. virtio基本原理

接下來,我們以目前使用最廣泛的QEMU/KVM場景為例子進一步解釋virtio的基本原理。虛擬機在物理主機上是一個QEMU的進程,運行在用戶態。虛擬機內部的virtio前端驅動所申請的緩存被映射到設備空間中,也在QEMU的地址空間里,這樣QEMU就可以通過共享內存的方式對這些緩存進行讀寫操作。通過這樣的方式,實現了virtio前端驅動程序(虛擬機Linux內核的驅動)和后端模擬設備(QEMU后端設備模擬程序)之間數據傳輸的零復制,進而大幅度提高了虛擬機的I/O性能。

  1. virtio前后端在QEMU/KVM中的實現

virtio在虛QEMU擬機內核中實現了前端驅動,在QEMU中實現了后端模擬設備,前后端之間通過虛擬隊列(Virtqueue)通信交換數據。針對不同的總線機制,virtio設備有不同的實現方式,因為PCI設備是最廣泛使用的設備,所以我們以virtio的PCI網卡為例子進行講解。virtio-net前后端的實現如圖2所表示。

圖[1]. virtio-net前后端在QEMU/KVM中的實現

  • virtio設備發現和初始化

在虛擬機啟動之后,virtio前端驅動會把自己標識成一個PCI設備,其中包括PCI廠家標識符,PCI設備標識符。這樣虛擬機的內核可以基于這個標識符判斷使用哪種驅動程序。因為虛擬機中的Linux內核已經包括了virtio驅動程序,所以virtio驅動會被調用去初始化這個virtio設備。除了完成PCI設備通常的初始化操作之外,virtio前端驅動還在初始化的過程中和后端設備模擬程序協商特性位(Feature Bits),并把最終的結果記錄在設備狀態(Device Status)中。具體的實現代碼可以參考內核代碼在linux-3.10.0-957.1.3.el7/drivers/virtio/virtio.c中的virtio_dev_probe()函數,如圖2所示。

圖2. virtio設備初始化,協商特性并最終設置設備狀態位

這里有兩個比較重要的數據結構需要介紹一下。

  • 特性位(Feature Bits),用來表示設備所能支持的特性。在virtio設備初始化的時候,驅動會去讀取特性位,并且告訴設備哪些是它能接受特性。如果后端模擬設備升級了,使能了某個新特性,但是虛擬機里面的驅動還不能識別的話,那么兩者就是通過特性進行協商。
  • 設備狀態位(Device Status),用來表示設備的當前狀態。在virtio設備發現,初始化和特性協商的過程中,都可以查看設備狀態位的方式查看virtio設備的狀態。比如,virtio_CONFIG_S_FEATURES_OK表示特性協商成功,virtio_CONFIG_S_DRIVER_OK表示驅動已經配置成功。
  • virtio網卡發送數據處理過程

虛擬隊列(Virtqueue)是被用來在virtio前端驅動和virtio后端模擬設備之間雙向數據傳輸的數據結構。每個virtio設備都維護著一個或者多個虛擬隊列。以virtio網絡設備為例,它至少維護兩個虛擬隊列,一個用來存儲要發送的數據,一個用來存儲接收的收據。每個虛擬隊列數據結構都由三部分組成,分別是descriptor table,available ring和used ring。

  • descriptor table用來描述一組緩存,是virtio前端驅動創建的。和緩存相關的信息主要是物理地址和長度;緩存數組的數量是有隊列大小(Queue Size)決定的;
  • available ring是給virtio前端驅動給virtio后端模擬設備傳輸數據時使用的,比如虛擬機用virtio-net設備發送數據的時候,所發送的數據就會先緩存在這里,再通知virtio后端模擬設備來讀取;也就是說available ring的緩存,只能讓前端寫,后端讀;
  • used ring是給virtio后端模擬設備給virtio前端驅動傳輸數據時使用的,比如virtio后端模擬設備從tap網絡接口收到數據之后,會把收到的數據緩存到這里,再通知virtio前端驅動程序;也就是說used ring的緩存,只能讓后端寫,前端讀;

圖3. Virtio規范中虛擬隊列的定義

圖4. used ring和available ring在virtio規范中的定義

下面我們以虛擬機發送數據為例,結合Linux 3.10和QEMU1.5的代碼實現,詳細說明一下在QEMU/KVM場景下具體的實現過程。

virtio前端驅動填充數據包,并發出通知

QEMU虛擬機內的virtio網卡驅動在初始化的時候,會和其他的網絡驅動一樣注冊發送函數xmit_skb()。具體的實現如圖5,6所示,所以虛擬機內的virtio網卡發送數據的時候,會調用預先注冊的函數xmit_skb()。要發送的數據會調用virtqueue_add_outbuf()放置在available ring中。最終在virtqueue_add_outbuf()函數中,會調用virtqueue_kick()函數,并進一步調用virtqueue_notify()函數。在virtqueue_notify()函數中,如圖7所表示的virtio前端通過I/O寫寄存器的方式通知virtio后端模擬設備。這部分前端驅動的代碼在drivers/virtio/virtio_ring.c中。

圖5. virtio設備發送數據報文

圖6. virtio前端驅動通知QEMU

圖7. virtio通知函數最終會寫寄存器

KVM截獲I/O后通知后端

虛擬機virtio前端驅動程序發送通知的函數最終是執行I/O寫指令。在QEMU/KVM環境中,虛擬機執行I/O指令,會觸發VMExit。在KVM的VMExit代碼中會判斷退出的原因,I/O操作對應的處理函數是handle_io(),具體的代碼在linux-3.10.0-957.1.3.el7/arch/x86/kvm/vmx.c,如圖8所示。最終再經由KVM通知到QEMU中的virtio-net后端模擬設備,其中還涉及到KVM和eventfd等通信機制,因限于篇幅在這里不詳細描述了。

圖8. KVM中處理I/O操作導致的VMExit代碼

virtio后端模擬設備處理通知

如圖8所表示的,在接收到來自KVM的通知之后,QEMU后端設備模擬程序會調用virtio_queue_host_notifier_read()函數,進而調用預先注冊的函數virtio_ioprt_write()處理來自前端驅動的I/O寫操作。在接收到前端發來的通知之后,會調用virtio_queue_notify()函數進行處理。在接收網絡數據包的時候,virtio_queue_notify()會再進一步調用virtio-net網絡設備注冊的數據包接收函數virtio_net_handle_rx()。如圖9所表示的,在qemu_flush_queued_packets()中,QEMU會把數據復制到對應的隊列中(QEMU中對應后端的不同tap都維護著不同的隊列),之后再調用qemu_notify_event()通知virtio前端,最終會調用kvm_set_irq()觸發vCPU的中斷的方式通知virtio前端。

圖9. virtio后端設備接收通知后的處理

圖10. virtio-net預先注冊的數據報接收函數

圖11. virtio后端設備處理前端發送的數據包

參考鏈接:

【1】Deep dive into Virtio-networking and vhost-net(https://www.redhat.com/en/blog/deep-dive-virtio-networking-and-vhost-net)

本文轉載自微信公眾號「Linux閱碼場」,可以通過以下二維碼關注。轉載本文請聯系Linux閱碼場公眾號。

孫雷,曾在聯想研究院和NEC研究院工作10年,任資深研究員,研發經理。

負責云計算底層技術,包括軟件定義網絡(SDN),云網絡(OpenStack),

數據面加速等等。

2020年起開始創業,北京守志科技有限公司創始人。

 

責任編輯:武曉燕 來源: Linux閱碼場
相關推薦

2021-02-14 16:49:22

Linux虛擬化Virtio

2025-02-05 11:43:28

2025-07-14 02:22:00

2013-05-15 14:32:09

虛擬化數據復制

2020-11-25 10:55:56

云計算

2013-05-28 17:30:07

2009-11-06 16:48:03

WCF簡介

2021-09-06 06:45:06

WebpackMindMasterEntry

2021-05-07 06:42:51

Vhost-NetLinux虛擬化

2020-03-10 18:30:06

GPU虛擬化FPGA

2010-05-27 17:41:09

2018-05-08 15:16:59

內存虛擬化處理器

2018-04-17 15:03:40

CPU虛擬化半虛擬化

2012-10-29 13:52:51

應用虛擬化

2009-04-14 19:22:51

Vmware服務器虛擬化虛擬化

2012-06-06 09:36:28

服務器虛擬化

2009-03-24 18:26:58

Vmwareesx服務器虛擬化

2009-09-21 15:11:54

虛擬化基礎知識

2009-08-13 15:49:18

ASP.NET性能優化

2021-08-11 06:34:14

ZabbixDocker運維
點贊
收藏

51CTO技術棧公眾號

国产视频在线观看网站| 国产综合福利在线| 在线免费观看麻豆| 中文在线资源| 亚洲视频一二三区| 国新精品乱码一区二区三区18| 亚洲欧美综合自拍| 亚洲精品国产首次亮相| 精品少妇一区二区三区| 99热成人精品热久久66| 黄色av免费在线| 99精品欧美一区二区蜜桃免费| 国产成人精品日本亚洲| 国产精品国产精品88| 嫩草国产精品入口| 欧美色老头old∨ideo| 日韩一级片免费视频| 成年人视频在线观看免费| 国产一区二区电影| 国产精品久久久久久久久免费看 | 一区国产精品视频| 亚洲熟女一区二区三区| 粉嫩91精品久久久久久久99蜜桃| 亚洲国产成人va在线观看天堂| 日韩资源av在线| 秋霞网一区二区| 激情综合色综合久久| 欧美洲成人男女午夜视频| 国产性xxxx| 日韩av二区| 亚洲精品视频中文字幕| av电影中文字幕| 久久爱.com| 成人免费小视频| 日韩免费电影一区二区| 婷婷色在线视频| 国产精品自拍一区| 国产乱肥老妇国产一区二| 欧美日韩一二三四区| 欧美全黄视频| 久热国产精品视频| 欧美a在线播放| 精品国产乱码久久久久久果冻传媒| 精品国产一区二区亚洲人成毛片| 最新天堂中文在线| 国产a亚洲精品| 欧美三级在线播放| 日韩精品一区中文字幕| 亚洲精品**中文毛片| 午夜久久久影院| 精品国产自在久精品国产| 久久中文亚洲字幕| 国产aⅴ爽av久久久久成人| av影院在线播放| 91精品黄色片免费大全| 欧美一级视频| 无码国产精品一区二区色情男同| 色婷婷激情五月| 午夜精品偷拍| 国产小视频91| 变态另类ts人妖一区二区| 一本色道久久综合亚洲精品酒店| 精品亚洲精品福利线在观看| 国产精品无码网站| 尤物tv在线精品| 亚洲免费影视第一页| 亚洲av无码一区二区三区人 | 国产一区二区三区色淫影院| 午夜精品久久久久久久爽| 国产精品中文字幕一区二区三区| 亚洲xxxxx性| 99久久国产热无码精品免费| 国产成人99久久亚洲综合精品| 高清视频在线观看一区| 国内爆初菊对白视频| 成人午夜伦理影院| 看高清中日韩色视频| 欧美69xxxxx| 国产亚洲欧美激情| 手机看片福利永久国产日韩| 免费在线观看黄色网| 亚洲美女视频在线| 人妻夜夜添夜夜无码av| 欧美一区 二区 三区| 欧美日韩国产天堂| 国产视频精品视频| 欧美日韩爱爱| 欧美大片va欧美在线播放| 国产午夜久久久| 国产精品主播| 成人黄色在线播放| 国产成人三级在线观看视频| 久久久国产一区二区三区四区小说 | 五月激情婷婷在线| 91午夜精品| 亚洲免费一在线| 黄色片子在线观看| 亚洲色诱最新| 91精品中文在线| 日韩一级在线播放| 中文字幕亚洲在| 国产精品久久中文字幕| 成人在线中文| 亚洲国产中文字幕在线观看| 国产白丝一区二区三区| 亚洲美女网站| 91青草视频久久| 丝袜+亚洲+另类+欧美+变态| 亚洲日本在线视频观看| 人妻熟女一二三区夜夜爱| 国产不卡精品| 亚洲欧洲免费视频| 久久激情免费视频| 毛片一区二区三区| 精品一区二区三区国产| 黄色网在线免费观看| 日韩欧美国产激情| 最新版天堂资源在线| 亚洲成人精品| 国产精品成人在线| 亚洲av成人精品一区二区三区在线播放 | 亚洲图区一区| 欧美三级在线视频| 91成人破解版| 国产美女一区| 国产伦精品一区二区三区四区免费 | 999视频精品| 日韩**中文字幕毛片| 日日躁夜夜躁白天躁晚上躁91| 亚洲欧美在线视频| 免费一级特黄录像| 久操国产精品| 欧美一区二区视频97| 国产91免费看| 亚洲一区二区中文在线| 在线视频日韩欧美| 久久免费av| 国产欧美在线看| 尤物网在线观看| 欧美综合欧美视频| 国产jk精品白丝av在线观看 | 亚洲国产人成综合网站| 红桃视频一区二区三区免费| 99久久99视频只有精品| 国产精品久久久久久久久久尿 | 日本a级片免费观看| 国产区精品视频在线观看豆花| 欧美猛交免费看| 99久久精品无免国产免费| 国产精品伦一区二区三级视频| 国产精品入口免费软件| av亚洲免费| 国产精品免费福利| 日韩黄色影院| 7777精品伊人久久久大香线蕉| 永久免费看片直接| 国产在线不卡视频| 97超碰国产精品| 久久香蕉精品香蕉| 人人澡人人澡人人看欧美| 黄色av网站在线| 欧洲国内综合视频| 成年人视频软件| 国产丶欧美丶日本不卡视频| av在线com| 日韩a级大片| 日本aⅴ大伊香蕉精品视频| 激情视频在线观看免费| 欧美日韩黄色影视| 欧美日韩免费一区二区| eeuss鲁片一区二区三区在线观看 eeuss影院一区二区三区 | 天天操天天射天天| 色久综合一二码| 日本成人精品视频| 国产成人午夜99999| 国模无码视频一区二区三区| 国产亚洲电影| 91中文在线观看| 蜜桃视频在线观看免费视频| 亚洲欧美制服综合另类| 一区二区三区免费在线| 亚洲综合一二区| 一级片手机在线观看| 韩国女主播成人在线| 人人妻人人澡人人爽欧美一区双 | 精品国偷自产在线视频| 亚洲精品人妻无码| 欧美性色黄大片手机版| www青青草原| 久久亚洲欧美国产精品乐播 | 最近2019好看的中文字幕免费| 国产人妻精品一区二区三区| 亚洲不卡一区二区三区| 国产激情av在线| 国产传媒欧美日韩成人| 国产日韩成人内射视频| 自拍偷拍欧美| 日韩精品无码一区二区三区| 中文一区二区三区四区| 国产精品第七十二页| 97caopor国产在线视频| 亚洲日本欧美中文幕| 国产黄a三级三级三级| 色综合天天做天天爱| 麻豆精品一区二区三区视频| 国产午夜精品一区二区三区视频 | 欧美夫妻性生活视频| 欧美日韩国产中文字幕在线| 日韩精品自拍偷拍| 伊人网av在线| 欧美日韩亚洲系列| 男人操女人的视频网站| 国产欧美久久久精品影院| 国产高潮失禁喷水爽到抽搐| 免费日本视频一区| a√天堂在线观看| 欧美黄色免费| 一区二区免费电影| 国产欧美一区二区精品久久久| 国产精品一区二区三区不卡| 在线高清欧美| 国产精品久久久久久久久久尿 | 91精品国产综合久久香蕉| 高清av不卡| 久久免费福利视频| 污污的网站在线免费观看| 尤物九九久久国产精品的特点| 人妻少妇精品无码专区| 日韩一级片在线播放| 一级片视频播放| 在线视频你懂得一区| 欧美bbbbbbbbbbbb精品| 亚洲午夜成aⅴ人片| 成人在线观看小视频| 国产精品欧美久久久久无广告| 免费一级做a爰片久久毛片潮| 成人av第一页| 久久久久久久人妻无码中文字幕爆| 国产在线麻豆精品观看| 99re6在线观看| 麻豆91小视频| 黄色永久免费网站| 久久成人18免费观看| 亚洲这里只有精品| 六月丁香婷婷色狠狠久久| 日韩av手机版| 久久99久久久久| 国内自拍第二页| 国产精一区二区三区| 成年人性生活视频| 国产精品一区二区男女羞羞无遮挡 | 中文字幕在线免费观看视频| 午夜精品在线视频| 鲁鲁在线中文| 日本欧美精品在线| 成人mm视频在线观看| 国产精品中文在线| **欧美日韩在线| 97久草视频| xxxxxhd亚洲人hd| 精品国产_亚洲人成在线| 亚洲精品小区久久久久久| 欧美亚洲国产免费| 日韩电影免费网址| 国产精品久久成人免费观看| 欧美日韩一区自拍 | a级片在线观看免费| 亚洲一区在线视频| 国产一级在线播放| 欧美日韩美女在线| 最新中文字幕第一页| 欧美二区三区的天堂| 亚洲男人天堂久久| 精品一区二区亚洲| 欧美人xxx| 欧美激情一区二区久久久| 国产丝袜精品丝袜| 日本成人激情视频| 韩国三级成人在线| 国产日韩欧美综合精品| 国产精品入口久久| 超碰97免费观看| 国产欧美一区二区三区国产幕精品| 日韩欧美xxxx| 韩日av一区二区| 国产 中文 字幕 日韩 在线| 国产精品女同一区二区三区| 欧美精品一级片| 一本色道久久综合狠狠躁的推荐| 91久久国语露脸精品国产高跟| 亚洲成人在线网| yiren22亚洲综合伊人22| 欧美激情小视频| 欧美成a人片在线观看久| 粉嫩精品一区二区三区在线观看 | jizz18女人| 成人a免费在线看| 美国黄色片视频| 欧美色道久久88综合亚洲精品| 国产精品视频在线观看免费| 日韩精品日韩在线观看| 成人福利网站| 国产精品成久久久久三级| 99ri日韩精品视频| 亚洲欧美日本国产有色| 一本色道久久综合亚洲精品高清 | 国产情侣激情自拍| 亚洲三级 欧美三级| 成人超碰在线| 91九色露脸| 日韩在线综合| 欧美极品欧美精品欧美图片| 国产成人精品免费| 5566中文字幕| 欧洲一区在线电影| 天天射,天天干| 久久噜噜噜精品国产亚洲综合| 日韩专区视频| 日韩精品久久一区| 欧美亚洲一区二区三区| 中文字幕天堂网| 亚洲欧美国产三级| 中国黄色一级视频| 亚洲美女自拍视频| 日本在线啊啊| 国产精品一区二区三区在线| 你懂的视频一区二区| 亚洲欧美日本一区二区三区| 国产亚洲成年网址在线观看| 精品国产免费观看| 亚洲国产日韩欧美在线图片| 欧美大片黄色| 999在线免费观看视频| 香蕉国产精品| 九九九九九伊人| 中文字幕亚洲不卡| 91丨porny丨在线中文 | 成人av网站免费| 免费无遮挡无码永久在线观看视频| 91精品国产综合久久久久久久 | 国产伦一区二区三区| jizzjizzxxxx| 久久久国产精品不卡| 久久夜色精品国产噜噜亚洲av| 日韩电影大片中文字幕| а√在线天堂官网| 韩国一区二区三区美女美女秀 | 欧美伦理影院| 国产免费又粗又猛又爽| 国产精品热久久久久夜色精品三区| 中国黄色一级视频| 日韩一区二区欧美| 高清不卡一区| www.日本少妇| 91丨国产丨九色丨pron| 综合激情网五月| 国产亚洲精品91在线| 久久av影院| 国产精品无码乱伦| 国产精品99久久久久久久女警| 免费人成年激情视频在线观看| 亚洲国产精久久久久久久| 韩日毛片在线观看| 日本一区不卡| 精彩视频一区二区三区| 国产一二三四区| 亚洲电影免费观看高清完整版在线观看 | 日韩人妻一区二区三区| 在线一区二区观看| 久久久久久国产精品免费无遮挡| 99re热精品| 久久久999| 亚洲欧美卡通动漫| 亚洲国产精品高清久久久| 成人香蕉视频| 一区二区免费在线观看| 盗摄精品av一区二区三区| 国产精品21p| 久久精品国产成人| 果冻天美麻豆一区二区国产| 亚洲色图38p| 一区二区三区在线免费视频 | 中文字幕无线精品亚洲乱码一区 | 亚洲精品一区二区在线观看| 亚洲黄色免费看| 中文字幕一区二区三区乱码| 国产99精品国产| 中文字幕 亚洲视频| 久久6免费高清热精品| 免费视频一区三区| 伊人色在线视频| 欧美午夜片在线免费观看| 欧美jizzhd69巨大| 波多野结衣成人在线| 丝袜诱惑亚洲看片| 69精品久久久| 日韩在线高清视频| 久久99影视| 欧美一级片在线免费观看| 欧洲精品视频在线观看|