發(fā)出管理控制信號對物理緩沖區(qū)模塊300和物理網卡模塊400進行管理和控制。在多內核多操作系統(tǒng)平臺中,負載操作系統(tǒng)一般至少有一個。在本實例中,負載操作系統(tǒng)有N個。
[0034]物理緩沖區(qū)模塊300對網卡傳輸數據的緩沖。該模塊向上連接負載操作系統(tǒng)200網卡驅動向下連接網卡模塊400。
[0035]網卡模塊400所示為多內核多操作系統(tǒng)所管理的網卡的集合。在本發(fā)明實例中,網卡模塊可以為多個物理網卡集合,也可以為多個虛擬網卡和物理網卡的集合。
[0036]應注意,虛擬網卡與物理網卡間切換較物理網卡間的切換更為復雜,本領域技術人員在理解了虛擬網卡和物理網卡的切換后,在不做出創(chuàng)造性勞動的前提下,同樣可以獲得物理網卡間切換的方法和系統(tǒng)。因此,在本發(fā)明實例中,將重點介紹物理網卡與虛擬網卡間切換的系統(tǒng)和方法。
[0037]應理解,多內核多操作系統(tǒng)在處理網絡數據的優(yōu)勢是該系統(tǒng)可以根據網絡數據量的大小靈活調整網卡模塊400中工作網卡的數量和模式。當待處理網絡數據量超過當前工作網卡的處理能力時,負載操作系統(tǒng)可以調用更多的閑置物理網卡進行高性能的網絡傳輸和處理;當待處理網絡數據量小于工作網卡的處理能力時,為了節(jié)約系統(tǒng)資源,負載操作系統(tǒng)釋放物理網卡而通過虛擬網卡的方式傳輸數據。
[0038]為了滿足以上所述需求,對于單個負載操作系統(tǒng)而言,就必須具備高速高效地進行網卡切換的能力。但如【背景技術】介紹,現(xiàn)在的技術方案由于存在待調用網卡預熱問題和數據丟失問題,導致目前的方案切換速度慢和切換效率低。本發(fā)明的實施例方案正是基于這樣的技術背景和現(xiàn)實需求而提出的。
[0039]以上是對網卡驅動前后端和多內核多操作系統(tǒng)這兩個重要概念的介紹,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明的一部分實施例,而不是全部實施例。在本實例中,僅示例管理操作系統(tǒng)管理控制第一負載操作系統(tǒng)進行網卡切換的系統(tǒng)和方法,應理解管理操作系統(tǒng)可以以類似的方式控制管理其他負載操作系統(tǒng)進行類似的網卡切換?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都應屬于本發(fā)明保護的范圍。
[0040]圖2示出了根據本發(fā)明實施例的多操作系統(tǒng)中源網卡與目標網卡的切換系統(tǒng)的示意性框圖,該系統(tǒng)包括:
[0041]管理操作系統(tǒng)100,該系統(tǒng)包含一個管理操作系統(tǒng)資源管理模塊110 ;
[0042]管理操作系統(tǒng)資源管理模塊110,該模塊與負載操作系統(tǒng)的資源管理模塊相連,用于接收和發(fā)送管理操作系統(tǒng)100與負載操作系統(tǒng)200間的信號。在本附圖中,展示了管理操作系統(tǒng)資源管理模塊100與第一負載操作系統(tǒng)資源管理模塊212的連接狀態(tài);
[0043]第一負載操作系統(tǒng)210,該系統(tǒng)包含了負載操作系統(tǒng)資源管理模塊212和雙模式網卡驅動211 ;
[0044]負載操作系統(tǒng)資源管理模塊212,該模塊分別與管理操作系統(tǒng)資源管理模塊110和雙模式網卡驅動211相連,用于接收和發(fā)送這他們的輸入和輸出信號;
[0045]雙模式網卡驅動210,用于根據管理操作系統(tǒng)發(fā)送的網卡切換信號將圖中的目標網卡420進行初始化,使目標網卡420能夠使用圖中源網卡當前用的共享緩沖區(qū)120。并在初始化完成后停止源網卡驅動并啟動目標網卡驅動;
[0046]物理緩沖區(qū)模塊300,該模塊包含多個共享緩沖區(qū),用于對負載操作系統(tǒng)與網卡間傳輸數據的緩沖。在本附圖中,展示了第一負載操作系統(tǒng)210所分配和管理的共享緩沖區(qū)120 ;
[0047]共享緩沖區(qū)120,用于對目標網卡420和源網卡410所傳輸數據進行緩沖。應注意,該共享緩沖區(qū)120,并不是同時對目標網卡420和源網卡410所傳輸數據進行緩沖。具體而言,在雙模式網卡驅動110初始化開始前,共享緩沖區(qū)120與源網卡410相連,對源網卡410所傳輸數據進行緩沖;該初始化完成后,共享緩沖區(qū)120仍與源網卡410相連,對源網卡410所傳輸數據進行緩沖。目標網卡420在初始化完成后與共享緩沖區(qū)120僅建立初始化的連接,并沒有對共享緩沖區(qū)120執(zhí)行讀寫;在初始化完成后且雙模式網卡驅動211停止源網卡驅動并啟動目標網卡驅動后,源網卡410停止對共享緩沖區(qū)120讀寫同時目標網卡420開啟對共享緩沖區(qū)120讀寫。
[0048]以上是對圖1中各組成模塊功能和連接關系的介紹,下面將結合源網卡410到目標網卡420的切換過程對雙模式網卡驅動211和共享緩沖區(qū)120做進一步詳細介紹。
[0049]應理解,雙模式網卡驅動211在接收到網卡切換信號后并不立即進行源網卡410向目標網卡420的切換,而是在保證源網卡410繼續(xù)工作的同時對目標網卡420進行初始化。這樣一方面用來保證目標網卡420在啟動前進行必要的預熱,另一方面用來配置目標網卡420參數,保證目標網卡420在啟動后能直接使用源網卡410對應的物理內存緩沖區(qū),即本發(fā)明的實施例所示的共享緩沖區(qū)120。當這種初始化(即目標網卡預熱和目標網卡參數配置)完成后,雙模式網卡驅動211就可以在停掉源網卡410的同時立即開啟目標網卡420的運行??梢姡@個雙模式網卡驅動211和共享緩沖區(qū)120的設計可以有效的保證源網卡向目標網卡切換前必要的初始化過程,從而提高網卡間切換的速度和效率。
[0050]還應理解,共享緩沖區(qū)120是多操作系統(tǒng)所管理的一段物理內存緩沖區(qū),這段緩沖區(qū)在切換前后能被源網卡410和目標網卡420分別調用,使雙模式網卡驅動211能在切換前后讀取到同一段內存數據,以使所傳輸數據不因網卡切換而丟失。要達到所述功能效果,可以通過雙模式網卡驅動211在切換前后使用同一全局變量的方式來實現(xiàn)。例如,當共享緩沖區(qū)的接收和發(fā)送數據結構采用兩個環(huán)形鏈表形式,那么,雙模式網卡驅動211需要在切換前后均使用如下8個全局變量:
[0051]static unit8_t rx—buf[RX—BUF—SIZE+1500];
[0052]static unit8_t tx_buf[4][TX_BUF_SIZE]_attribute_((aligned(4)));
[0053]static unit32_t_cur_tx;
[0054]static unit32_t_cur_rx;
[0055]static unit32_t tx_start;
[0056]static unit32_t tx_end;
[0057]static unit32_t rx_start;
[0058]static unit32_t rx_end。
[0059]其中,staticunit8_t rx_buf[RX_BUF_SIZE+1500]和 static unit8_t tx_buf [4] [TX_BUF_SIZE]_attribute_((aligned(4)))用于分別表示接收緩沖區(qū)和發(fā)送緩沖區(qū)在共享緩沖區(qū)120內的實際物理地址。static unit32_t_cur_tx和static unit32_t_cur_rx是指向接收和發(fā)送環(huán)形隊列的當前讀取位置的指針,隨著數據讀取而動態(tài)移動,用于表示接收緩沖區(qū)和發(fā)送緩沖區(qū)數據讀取的位置。static unit32_t tx_start、staticunit32_t tx_end、static unit32_t rx_start 和 static unit32_t rx_end 分別表不接收和發(fā)送緩沖區(qū)的起始地址和結束地址。以上8個全局變量可以表示出在環(huán)形鏈表形式下共享緩沖區(qū)120的數據結構。在網卡切換中,將這8個全局變量從源網卡驅動傳遞給目標網卡驅動,目標網卡驅動就可以利用這些變量實現(xiàn)對源網卡物理內存的尋址和調用。應理解,共享緩沖區(qū)數據結構的實現(xiàn)方式有多種,對數據的起始地址、結束地址和當前位置的定義方式也有多種,在實現(xiàn)中保證雙模式網卡驅動211使用相同全局變量對共享緩沖區(qū)數據結構進行描述即可。
[0060]在圖2所示實施例中,目標網卡和源網卡可以分別為物理網卡或虛擬網卡,也可以均為物理網卡或均為虛擬網卡。在現(xiàn)實應用中,物理網卡和虛擬網卡相互切換的場景多需求大,因此,下面將在目標網卡和源網卡分別為物理網卡或虛擬網卡的情況下,對雙模式網卡驅動211的組成和連接方式進行進一步的說明。
[0061 ] 如圖3所示,當相互切換的網卡為物理網卡和虛擬網卡時,雙模式網卡驅動211包括:
[0062]解析模塊2111,用于對接收的網卡切換信號進行解析,確定源網卡的類型信息和目標網卡的類型。
[0063]初始化模塊2112,用于:
[0064]當所述解析模塊2111確定所述源網卡的類型為物理網卡401且所述目標網卡的類型為虛擬網卡402時,將虛擬網卡402進行初始化;
[0065]當所述解析模塊2111確定所述源網卡的類型為虛擬網卡402且所述目標網卡的類型為物理網卡401時,將物理網卡401初始化。
[0066]應理解,解析模塊2111接收來自負載操作系統(tǒng)資源管理模塊212的網卡切換信號,并通過解析模塊的邏輯函數進行判斷:如果切換信息為物理網卡401切換為虛擬網卡402,則該模塊向初始化模塊2112發(fā)出對虛擬網卡402進行初始化的信號;如果切換信號為虛擬網卡402切換為物理網卡401,則該模塊向初始化模塊2112發(fā)出對物理網卡401進行初始化的信號。還應理解,解析模塊2111可以接收來自于負載操作系統(tǒng)資源管理模塊212發(fā)送的切換信號,也可以接收來自于管理操作系統(tǒng)資源管理模塊110發(fā)送的切換信號。
[0067]舉例,管理操作系統(tǒng)的資源管理模塊110向負載操作系統(tǒng)發(fā)送切換信號的方法可以通過現(xiàn)有的智能外圍接口( Intelligent Peripheral Interface,簡稱“IPI”)實現(xiàn),也可以通過其他操作系統(tǒng)間的通訊策略完成。在解析模塊2111接收到切換信息后,解析模塊2111可以通過邏輯判斷函數實現(xiàn)對切換信息的判斷,如使用C語言中的if ()函數,網卡切換模式可以采用整型變量int mode表示:int mode=l表示虛擬網卡向物理網卡的切換;int mode=0表示物理網卡向虛擬網卡的切換。當if ()語句