開源夏令營中期報告

2021-06-23 02:21:35 字數 1149 閱讀 5637

知識總結

通過幾周對於linux kernel和qemu**的深入閱讀,在不斷code和debug過程中總算對於virtio-net以及虛擬機器工作原理有了清晰的認識。

先介紹kvm基本結構,如圖所示:

qemu通過kvm提供的libkvm應用程式介面,借助ioctl系統呼叫建立和執行虛擬機器。原有的linux在使用者模式和核心模式的基礎上,增加了客戶模式。虛擬機器作為host的乙個程序執行。在虛擬機器執行下,三種模式分工為:

客戶模式:執行非i/o客戶**。虛擬機器執行在客戶模式下。

核心模式:實現客戶模式的切換。處理因為i/o或者其他指令引起的從客戶模式的退出。kvm driver執行在這種模式。

使用者模式:代表客戶執行i/o指令,qemu執行在這種模式。

三種模式之間的切換過程如下圖所示:

關於virtio-net,作為guest驅動,關係到如何與host通訊,以及借助host聯網,可從下圖看出:

當資料報到達主機物理網絡卡後,呼叫物理網絡卡的驅動程式,其中利用linux核心中的軟體網橋實現資料**。在軟體網橋這一層,會判斷資料報是發往那個裝置的,同時呼叫網橋的傳送函式,相對應的埠傳送資料報。如果資料報是發往虛擬機器的,則通過tap進行**,tap裝置由兩部分組成,網路裝置和字元裝置。網路裝置負責接收和傳送資料報,字元裝置負責將資料報往核心空間和使用者空間**。

已實現功能

按照預定計畫,為virtio-net編寫ethtool支援,實現selftest,以測試virtio-net網絡卡的各項功能。到目前為止,已初步完成收發包、功能協商和重置功能測試。

後期工作展望

針對以往發現的cve(包括qemu, vhost_net, tun, host kernel network core等其它)的回歸測試例。

能夠用ethtool檢測到virtio-net裝置的故障,例如通過修改qemu的**,在裝置響應中注入錯誤,能夠在ethtool中捕獲到。

開源夏令營中期報告

第一階段乙個月初步完成了專案第一期目標 1.禪知企業門戶系統在sae平台上的安裝。2.禪知企業門戶系統檔案相關部分在sae平台上的執行。3.禪知企業門戶系統sae平台上的資料庫讀寫分離。4.禪知企業門戶系統在sae平台上的安裝手冊初版。近期對原始碼進行了整理,使其符合php編碼規範。整理makefi...

開源夏令營中期總結

第乙個月的實習期,馬上就要結束了,在這裡總結下。本人做的專案是用golang實現帶快取的http 伺服器。第乙個月大致完成以下功能 在這乙個月裡,本人還算是比較空閒的,所以可以有很多時間花在這個專案上,專案的進展也比較快。遇到的問題其實不是很多,因為程式本身寫的比較簡單。在前期主要完成的是對http...

CSDN開源夏令營 中期完成情況

按照上次提交的json格式,產生resource 檔案,資訊來自於wiki和github。上週抽空寫成了多執行緒,資訊採集時間大大減少。search。命令列搜尋模組,通過簡單的字元匹配實現。compile。可以實現自動編譯 靜態和dso fetch。可以從github自動獲取模組原始碼 git zi...