一種實現主/備pci設備切換的裝置和方法
2023-06-12 12:14:26 1
專利名稱:一種實現主/備pci設備切換的裝置和方法
技術領域:
本發明涉及數據傳輸技術,具體涉及一種實現主/備PCI設備切換的裝置和方法。
背景技術:
隨著網絡通訊技術的日益廣泛應用,對數據傳輸性能的需求也多種多樣,這樣在很多場合下,對數據傳輸的可靠性提出了很高的要求,需要網絡設備系統能夠長期不間斷運行,為了滿足上述對數據傳輸系統的要求,對數據傳輸系統中的主要模塊設計成熱備份,以此來保證數據可靠的傳輸。
PCI(Peripheral Component Interconnect,周邊元件擴展接口)總線作為一種共享總線,由於其支持突發傳輸、多設備等特點,故廣泛應用於網絡設備系統上,但是也正由於PCI總線是一種共享總線,多個網絡設備同時連接在一個總線上,決定了這種總線在網絡設備系統中不能直接支持主/備數據處理模塊的切換。
為了使PCI總線支持網絡設備系統實現主/備數據處理模塊的切換,需要增加外圍設備。目前傳統的做法是將主/備數據處理模塊上的PCI設備和其他所有PCI設備連接在同一個總線上,利用外部PCI總線仲裁器處理PCI總線上所有設備的總線交易請求。
正常情況下,主用數據處理模塊完成對PCI總線上所有設備的初始化和維護,備用數據處理模塊將網絡設備系統內的PCI設備與PCI總線上的其他PCI設備隔離開來,不參與總線的任何交易,主用數據處理模塊的包括配置信息在內的信息通過專用的網絡與備用數據處理模塊進行同步。
上述處理方式,對於用戶主動發起且能接收並處理的主備切換能夠迅速反應並做出相應的處理,將主用數據處理模塊的現場信息同步到備用數據處理模塊,退出對PCI總線的控制,備用數據處理模塊接管對整個PCI總線的控制,處理PCI總線上所有PCI設備的總線交易,因此能較快完成主/備數據處理模塊間的切換。
但對於因主用數據處理模塊異常導致網絡設備中主/備數據處理模塊切換發生的情況,上述處理方式的反應速度比較緩慢,不能將主用數據處理模塊運行的現場信息可靠的傳輸給備用數據處理模塊,也無法實現對切換過程的控制;需要等到在對硬體進行檢查時,才發現主用數據處理模塊已經異常並喚醒備用數據處理模塊,備用數據處理模塊喚醒後才能接管整個PCI總線控制,並掃描PCI總線的當前所有設備是否與同步過來的信息相符,如果不相符就需要對整個PCI總線上所有的設備重新初始化,建立正確的系統運行環境。
現有技術中公開的處理方式對於因主用數據處理模塊出現異常而進行主備切換的處理的時間太長,很容易導致網絡長時間癱瘓,致使用戶業務中斷,對用戶造成不可估量的損失,同時要求系統切換過程使用的控制算法有很強的異常處理能力,而且算法複雜,導致網絡設備系統的可靠性大大降低,而且所述處理方式也沒有利用備用數據處理模塊的PCI總線接口,而是採用專用網絡進行主備信息同步,造成系統成本增加。
發明內容
本發明的目的是為了提出一種實現主/備PCI設備切換的裝置和方法,用於解決目前現有技術中存在的網絡設備系統中主/備數據處理模塊切換過程複雜,切換處理不及時導致網絡長時間癱瘓的問題。
為了實現上述發明目的,本發明具體是這樣實現的一種實現主/備PCI設備切換的裝置包括
主用數據處理模塊、備用數據處理模塊、與主用數據處理模塊連接的系統接口模塊、與備用數據處理模塊連接的系統接口模塊、系統控制模塊和通道切換模塊;所述主用數據處理模塊,用於接收、處理和轉發從系統接口模塊收到的數據報文,向系統控制模塊提供運行狀態信息;通過CPU總線與主用數據處理模塊連接的備用數據處理模塊,用於接收、處理和轉發從系統接口模塊收到的數據報文,向系統控制模塊提供運行狀態信息;所述與主用數據處理模塊連接的系統接口模塊,用於完成PCI總線與用戶自定義總線之間的總線轉換以及主用數據處理模塊與通道切換模塊之間的數據轉發;所述與備用數據處理模塊連接的系統接口模塊,用於完成PCI總線與用戶自定義總線之間的總線轉換以及備用數據處理模塊與通道切換模塊之間的數據轉發;通過CPU總線與主用數據處理模塊連接的系統控制模塊,根據檢測到的所述主用數據處理模塊和所述備用數據處理模塊發送的運行狀態信息,控制通道切換模塊進行正確的數據通道選擇;所述通道切換模塊,根據系統控制模塊發送的通道選擇信息,將接收到的數據報文發送給與當前的備用數據處理模塊連接的系統接口模塊實現數據傳輸的轉發。
本發明所述實現主/備PCI設備切換的裝置,進一步還包括數據存儲模塊、系統配置模塊和網絡接口模塊;所述數據存儲模塊,用於完成數據報文的緩存與轉發;其中系統配置模塊是通過CPU總線與主用數據處理模塊連接;所述主用數據處理模塊,還用於通過CPU總線識別外部網絡系統上線路接口卡的類別,並通過系統配置模塊對外部網絡系統的線路接口卡進行初始化,
所述與外部網絡系統、數據存儲模塊和系統配置模塊連接的網絡接口模塊,實現PCI總線和用戶自定義總線之間的總線轉換功能,以及分別與數據存儲模塊和系統配置模塊之間的數據轉發。
在所述的實現主/備PCI設備切換的裝置中,所述系統接口模塊包括,PCI接口模塊、存儲器管理模塊、接收數據存儲模塊和發送數據存儲模塊,所述PCI接口模塊通過其擁有的自定義總線,分別與接收數據存儲模塊和發送數據存儲模塊連接;所述PCI接口模塊,完成標準PCI總線與用戶自定義總線之間的轉換,其PCI總線與數據處理模塊的PCI設備互連;所述存儲器管理模塊,管理系統接口模塊的存儲空間,根據存儲空間的狀態,實現與數據處理模塊、通道切換模塊之間的數據的傳輸;所述接收數據存儲模塊和發送數據存儲模塊分別是一個FIFO模塊。
在所述的實現主/備PCI設備切換的裝置中,所述通道切換模塊,將接收到的所述數據存儲模塊或者備用數據處理模塊發送過來的讀取數據報文請求,寫入與主用數據處理模塊相連接的系統接口模塊的接收數據存儲模塊;所述通道切換模塊,接收到與主用數據處理模塊相連接的系統接口模塊發送的數據報文的請求,寫入數據存儲模塊或者與備用數據處理模塊連接的系統接口模塊的接收數據處理模塊中。
在所述的實現主/備PCI設備切換的裝置中,所述數據存儲模塊包括,存儲器管理模塊、接收數據存儲模塊和發送數據存儲模塊,所述存儲器管理模塊接收數據存儲模塊和發送數據存儲模塊的存儲空間狀態,並向通道切換模塊或者網絡接口模塊發出數據報文傳輸申請;所述接收數據存儲模塊是一存儲器,所有從外部網絡系統過來的數據報文都存入該模塊中,等待通道切換模塊讀取;所述發送數據存儲模塊是一存儲器,通過高位地址和低位地址的劃分將內存分割成多個存儲空間,通過網絡接口模塊實現對各存儲空間的訪問。
在所述的實現主/備PCI設備切換的裝置中,所述系統配置模塊包括,線路接口卡狀態標誌寄存器和PCI設備配置數據寄存器組;所述線路接口卡狀態標誌寄存器包括,線路接口卡初始化狀態位和線路接口卡插入狀態位;所述線路接口卡狀態標誌寄存器,用於指示線路接口卡初始化狀態和線路接口卡插入狀態,採用主用數據處理模塊進行更新和維護;所述PCI設備配置數據寄存器組,用於實現主用數據處理模塊對外部網絡系統中的線路接口卡的初始化和維護;所述PCI設備配置數據寄存器組包括,讀/寫命令寄存器、埠寄存器、寫命令數據寄存器和讀命令數據寄存器。
在所述的實現主/備PCI設備切換的裝置中,所述網絡接口模塊包括,PCI接口模塊和接口管理模塊,所述PCI接口模塊用於完成標準PCI總線與用戶自定義總線之間的轉換功能,該模塊的配置空間可以通過CPU總線直接訪問;所述接口管理模塊處理系統配置模塊發出的PCI設備配置空間訪問申請和數據存儲模塊的發送數據報文申請,對數據存儲模塊的存儲空間的讀/寫操作。
本發明還提出一種實現主/備PCI設備切換的方法,包括如下步驟步驟1,採用系統控制模塊對當前正在運行的主/備數據處理模塊的狀態信息進行檢測;步驟2,根據所述檢測的狀態信息,判斷所述主/備數據處理模塊的運行狀態是否發生改變,如果發生改變,則轉入步驟3,否則,轉入步驟1;步驟3,通道切換模塊接收到系統控制模塊發出的通道切換信息後,將該通道切換模塊接收到的數據報文發送給與當前的備用數據處理模塊連接的系統接口模塊中,以完成當前的主/備數據處理模塊的切換。
在所述的實現主/備PCI設備切換的方法,所述步驟2中,主/備數據處理模塊的運行狀態發生改變,是指
所述主用數據處理模塊接收用戶發出的主備切換指令放棄主用狀態或者備用數據處理模塊檢測到主用數據處理模塊的工作狀態發生變化,使備用數據處理模塊工作於主用狀態。
在所述的實現主/備PCI設備切換的方法中,所述主用數據處理模塊,重新啟動和初始化,成為備用數據處理模塊,改變輸出給系統控制模塊的狀態信息,等待下一次的主備切換。
在所述的實現主/備PCI設備切換的方法中,所述步驟3,所述通道切換模塊將接收到的數據報文在進行發送前,作如下處理,判斷該通道切換模塊是否正在傳輸一個數據報文,如果是,則繼續傳輸,直到將當前數據數據報文傳輸處理完畢,再發送所述接收到的數據報文,否則,直接發送所述接收到的數據報文。
在所述的實現主/備PCI設備切換的方法中,所述當前的備用數據處理模塊切換為主用數據處理模塊後,進行如下處理步驟(4.1),通過CPU總線從系統配置模塊中的線路接口卡狀態標誌寄存器中讀取初始化狀態位;步驟(4.2),比較將步驟(4.1)中返回的初始化狀態位和線路接口卡插入狀態位,檢測是否所有的線路接口卡已被初始化,若已被初始化,流程結束,否則,執行步驟(4.3);步驟(4.3),初始化步驟(4.2)獲得的沒有被初始化的線路接口卡,然後執行步驟(4.4);步驟(4.4),更新系統配置模塊中的線路接口卡狀態標誌寄存器,對已經初始化好的線路接口卡進行標誌,然後執行步驟(4.2),繼續檢測,是否還有線路接口卡沒有被初始化。
與現有技術相比,本發明設計簡單,而且採用本發明,網絡設備系統中主/備數據處理模塊的切換迅速,網絡恢復快,實現了用戶業務不中斷,提高了系統可靠性,由於本發明在具體實現的過程中充分利用備用數據處理模塊的PCI總線接口,無需採用專門網絡來實現切換,減輕了系統的成本。
圖1是實現主/備PCI設備切換的裝置示意圖;圖2是在網絡設備系統中進行傳輸的數據報文的封裝示意圖;圖3是主/備PCI設備切換的裝置的初始化流程示意圖;圖4是實現主/備PCI設備切換的主要流程示意圖;圖5是實現數據報文發送的主要流程示意圖;圖6是實現數據報文接收的主要流程示意圖。
具體實施例方式
下面結合附圖對本發明的具體實施方式
作進一步的詳細描述。
為了敘述方便,在本發明中,定義數據處理模塊101工作在主用狀態,數據處理模塊102工作在備用狀態,發生切換後,則數據處理模塊102工作在主用狀態,而數據處理模塊101工作在備用狀態。
如圖1所示為本發明所述的實現主/備PCI設備切換的裝置示意圖數據處理模塊101,由網絡處理器及其外圍設備組成,是網絡設備系統中一個集數據處理和系統管理的核心模塊。
通過PCI總線與系統接口模塊305連接,實現對系統接口模塊305中的PCI接口模塊301的初始化,保持與系統接口模塊305的始終連接,接收、處理和轉發從系統接口模塊305收到的數據報文,維護本模塊的主備狀態和監控本模塊核心器件的運行並通過狀態信號的狀態值向系統控制模塊311和數據處理模塊102提供本數據處理模塊的運行狀態,標誌運行在主用還是備用狀態。
當數據處理模塊101為主用狀態的時候獲得CPU總線控制權,維護和管理整個網絡設備系統的資源;通過CPU總線識別網絡系統104上線路接口卡的類別,查詢系統配置模塊317的線路接口卡狀態標誌寄存器,獲得沒有初始化的線路接口卡信息,以間接讀/寫操作的形式將配置數據通過系統配置模塊317寫入網絡系統104中的線路接口中,並更新系統配置模塊317的線路接口卡狀態標誌寄存器。
當數據處理模塊101工作在備用狀態時,對CPU總線不擁有控制權,只維護本系統運行;同時監控數據處理模塊102輸出的狀態信號的狀態值,當檢測到數據處理模塊102失去主用狀態後,獲得系統控制權,修改本模塊輸出的狀態信號值,維護和管理整個網絡設備系統。
數據處理模塊102,通過PCI總線與系統接口模塊310連接,與數據處理模塊101是結構完全相同的系統,實現相同功能,互為備份,保證網絡設備長期可靠運行。
數據處理模塊102通過PCI總線與系統接口模塊310連接,實現對系統接口模塊310中的PCI接口模塊306的初始化,保持與系統接口模塊310的始終連接,接收、處理和轉發從系統接口模塊310收到的數據報文。維護本模塊的主備狀態和監控本模塊核心器件的運行並通過狀態信號的狀態值向系統控制模塊311和數據處理模塊101提供本數據處理模塊運行狀態,標誌運行在主用還是備用狀態。
系統接口模塊305,由PCI接口模塊301、存儲器管理模塊302、接收數據存儲模塊303和發送數據存儲模塊304組成,完成PCI總線到用戶自定義總線之間的轉換以及數據報文緩存等功能。
PCI接口模塊301完成標準PCI總線與本發明使用的自定義總線之間的轉換,其PCI總線與數據處理模塊101的PCI設備互連;每個PCI接口模塊301擁有兩套自定義總線,分別與接收數據存儲模塊303和發送數據存儲模塊304連接;通過PCI接口模塊301,數據處理模塊101可以直接讀/寫系統接口模塊305的存儲空間(接收數據存儲模塊303和發送數據存儲模塊304),實現數據報文的傳輸。
存儲器管理模塊302管理系統接口模塊305的存儲空間(接收數據存儲模塊303和發送數據存儲模塊304),根據存儲空間的狀態,確定是否允許數據處理模塊101向發送數據存儲模塊304寫入數據報文或者請求數據處理模塊101從接收數據存儲模塊303讀取數據報文。
如果接收數據存儲模塊303有完整的數據報文,存儲器管理模塊302通知PCI接口模塊301向數據處理模塊101發出申請,數據處理模塊101收到申請後,從接收數據存儲模塊303一次性讀出完整數據報文。
PCI接口模塊301收到數據處理模塊101啟動的一次性寫操作後,查詢存儲器管理模塊302,確定發送數據存儲模塊304是否允許寫入一個完整數據報文,若允許,PCI接口模塊301響應數據處理模塊101的寫操作,否則,不響應,同時存儲器管理模塊302查詢到發送數據存儲模塊304有完整的數據需要發送到下一級模塊,則向通道切換模塊312發出申請,同時將本次需要傳送的數據報文的埠號和數據長度發送給通道切換模塊312,通知通道切換模塊312從發送數據存儲模塊304讀取數據。
接收數據存儲模塊303和發送數據存儲模塊304分別是一個FIFO(First-InFirst-Out)模塊,可以存儲多個數據報文,其模塊的存儲狀態由存儲器管理模塊302管理。
系統接口模塊310,由PCI接口模塊306、存儲器管理模塊307、接收數據存儲模塊308和發送數據存儲模塊309組成。組成結構和實現功能與系統接口模塊305一樣,操作方式也和系統接口模塊305一樣;不同之處在於系統接口模塊310連接數據處理模塊102和通道切換模塊312,接收和轉發來自數據處理模塊102和通道切換模塊312的數據,與系統接口模塊305組成一個PCI總線主/備設備。
系統控制模塊311,完成數據處理模塊101和數據處理模塊102的主備識別和運行狀態監控,系統控制模塊311實時檢測數據處理模塊101和數據處理模塊102發送的狀態信息,確定各數據處理模塊的工作狀態,並判斷是數據處理模塊101還是數據處理模塊102工作在主用狀態,從而控制通道切換模塊312進行正確的數據通道選擇。
通道切換模塊312,對所有經過其傳輸的數據報文選擇正確的傳輸方向,通道切換模塊312受系統控制模塊311控制,保證從數據存儲模塊316讀取到的數據報文發送給處於主用狀態的數據處理模塊101。
在接收方向,通道切換模塊312接收數據存儲模塊316和處於備用狀態的數據處理模塊102發送過來的讀取數據報文請求,當通道切換模塊312接收到請求後,查詢存儲器管理模塊302,獲得接收數據存儲模塊303是否能接收一個完整的數據報文,如果能接收一個完整的數據報文,則從接收數據存儲模塊316或者發送數據存儲模塊309讀取數據報文並寫入接收數據存儲模塊303中;如果不能接收一個完整的數據報文,則繼續查詢存儲器管理模塊302,直到接收數據存儲模塊303能接收這次數據報文傳輸請求。
在發送方向,當通道切換模塊312接收到存儲器管理模塊302發送的請求和數據報文埠號後,根據埠號查詢數據存儲模塊316或者接收存儲模塊308是否允許寫入一個完整的數據報文,如果能寫入一個完整的數據報文,則從發送數據存儲模塊304讀出完整的數據報文寫入數據存儲模塊316或者接收存儲模塊308;如果不能寫入一個完整的數據報文,則不響應存儲器管理模塊302發送的請求。
數據存儲模塊316,由存儲器管理模塊313、接收數據存儲模塊314和發送數據存儲模塊315組成,完成數據報文的緩存和轉發。
存儲器管理模塊313管理接收數據存儲模塊314和發送數據存儲模塊315的存儲空間狀態,並向通道切換模塊312或者網絡接口模塊320發出數據報文傳輸申請。
接收數據存儲模塊314是一個存儲器,所有從網絡系統104過來的數據報文都存入這個存儲器中,等待通道切換模塊312讀取。
發送數據存儲模塊315是一個存儲器,通過高位地址和低位地址的劃分將內存分割成多個存儲空間,其中高位地址與網絡系統104中的各個線路接口卡對應,埠號與高位地址直接對應,實現通過埠號就可直接訪問對應的存儲空間;低位地址由接口管理模塊319和通道切換模塊312控制,實現對各存儲空間的訪問。
每個存儲空間相對於其他存儲空間都是相對獨立的,存儲器管理模塊313採用輪詢的方式管理這些存儲空間,當存儲器管理模塊313查詢到某個存儲空間有一個完整的數據報文後,向網絡接口模塊320發出數據報文讀取申請,並將埠號和數據報文長度發送給網絡接口模塊320,存儲器管理模塊313發出申請後沒有得到響應,則繼續查詢發送數據存儲模塊315中的下一個存儲空間,確定是否向網絡接口模塊320發出數據報文讀取申請。
系統配置模塊317,由線路接口卡狀態標誌寄存器和PCI設備配置數據寄存器組組成。
線路接口卡狀態標誌寄存器,用於指示線路接口卡初始化狀態和線路接口卡插入狀態,包括線路接口卡初始化狀態位和線路接口卡插入狀態位;線路接口卡狀態標誌寄存器由主用數據處理模塊101更新和維護。
PCI設備配置數據寄存器組包括,讀/寫命令寄存器、埠寄存器、寫命令數據寄存器和讀命令數據寄存器等寄存器;主用數據處理模塊101通過這些寄存器實現對網絡系統104中的線路接口卡的初始化和維護功能。
讀/寫命令寄存器用於主用數據處理模塊101發起讀/寫命令,並返回讀/寫是否成功標誌,埠寄存器用於指示本次讀/寫操作是對網絡系統104中的哪個線路接口卡進行的,寫命令數據寄存器是用於存儲當前需要寫入線路接口卡的數據;讀命令數據寄存器是用於存放當前讀操作發生後從線路接口卡返回來的數據。
當數據處理模塊101發出讀/寫命令後,系統配置模塊317向網絡接口模塊320發出對網絡系統104中線路接口卡讀/寫操作申請;得到網絡接口模塊320響應後,如果是寫操作,則將寫命令數據寄存器發送給網絡接口模塊320,如果是讀操作則將從網絡接口模塊320返回來的數據存入讀命令數據寄存器中,同時更新讀/寫命令寄存器的讀/寫成功標誌;如果沒有得到網絡接口模塊320的響應,則重新發出申請直到成功或者中斷本次操作。
網絡接口模塊320,由PCI接口模塊318和接口管理模塊319組成,完成數據報文的轉發和封裝,以及PCI設備配置空間的訪問等功能。
PCI接口模塊318完成標準PCI總線與本發明使用的自定義總線之間的轉換功能,PCI接口318的配置空間可以通過CPU總線直接訪問。
接口管理模塊319處理系統配置模塊317發出的PCI設備配置空間訪問申請和數據存儲模塊316的發送數據申請,對數據存儲模塊316的存儲空間的讀/寫操作,以及完成對接收到的數據報文進行頭信息封裝等工作。
網絡系統104,與網際網路相連,由多種線路接口卡組成,支持多種物理接口,每個線路接口卡在系統中都分配一個埠號,且埠號與其PCI設備基地址高位相同。
如圖3所示,對於本發明的PCI設備主備切換裝置的初始化步驟如下步驟I,系統啟動,數據處理模塊101、數據處理模塊102、PCI設備主備切換裝置103和網絡系統104上電啟動。
步驟II,系統進行主備競爭。數據處理模塊101和數據處理模塊102在上電後,進行主備競爭,獲得主用狀態的數據處理模塊負責整個系統的運行和維護。在本發明中數據處理模塊101通過競爭獲得主用狀態,執行步驟III,而數據處理模塊102獲得備用狀態,執行步驟IX。
步驟III,初始化與系統接口模塊305的PCI接口模塊301,使數據處理模塊101工作在主設備狀態,PCI接口模塊301工作在目標設備狀態。
步驟IV,查詢線路接口卡初始化狀態,數據處理模塊101獲得主用狀態後,控制系統CPU總線,查詢系統配置模塊317中的線路接口卡狀態標誌寄存器。
步驟V,比較從步驟IV返回的線路接口卡狀態標誌寄存器的線路接口卡初始化狀態和線路接口卡插入狀態位,確定是否所有的線路接口卡已經被初始化,如果所有的線路接口卡初始化完成,則初始化結束,執行步驟VIII,否則執行步驟VI。
步驟VI,初始化步驟V獲得的沒有被初始化的線路接口卡,然後執行步驟VII。
步驟VII,更新系統配置模塊317中的線路接口卡狀態標誌寄存器,對已經初始化好的線路接口卡進行標誌,以備後續查詢。繼續查詢系統配置模塊317中的線路接口卡狀態標誌寄存器是否還有線路接口卡沒有被初始化,執行步驟IV。
步驟VIII,初始化網絡接口模塊320。初始化PCI接口模塊318,使其工作在主設備模式,管理整個與網絡系統104連接的PCI總線資源。
步驟IX,數據處理模塊102在步驟II的主備競爭中獲得備用狀態,不參與整個系統的初始化工作,只需完成與之連接的系統接口模塊310中PCI接口模塊306的初始化工作,使數據處理模塊102工作在備用狀態,PCI接口模塊306工作在目標設備狀態,保持兩者之間的連接,用於主備同步信息通訊或者在發生主備切換的時候能迅速處理任何數據報文。
步驟X,系統初始化結束,數據處理模塊101進入正常的系統維護和數據處理狀態;數據處理模塊102準備接收和處理數據處理模塊101發送過來的系統同步信息,以及監控數據處理模塊101的運行狀態,準備隨時接管系統控制權。
如圖4所示,對於本發明所述的實現主/備PCI設備切換方法的主要處理步驟如下步驟a,工作在主用狀態的數據處理模塊101和工作在備用狀態的數據處理模塊102正常工作。
步驟b,工作在主用狀態的數據處理模塊101接受用戶發出的主備切換命令後,修改數據處理模塊101輸出狀態信號的狀態值向系統控制模塊311和數據處理模塊102表明數據處理模塊101放棄主用狀態;或者數據處理模塊101上的監控模塊檢測到數據處理模塊101出現核心器件異常導致不能正常處理系統業務,監控模塊自動修改狀態信號的狀態值,向系統控制模塊311和數據處理模塊102表明數據處理模塊101丟失主用狀態。處於備用狀態的數據處理模塊102通過檢測數據處理模塊101輸出的狀態信號的狀態值檢測到數據處理模塊101工作狀態發生變化後,自動接管整個系統。
步驟c,數據處理模塊102接管整個系統後,通過改變自身的運行狀態,通知系統控制模塊311向其轉發從網絡系統104過來的數據報文。
步驟d,數據處理模塊102工作在主用狀態,需要查詢整個網絡系統104中的線路接口卡是否都已經被初始化,防止因數據處理模塊101異常導致線路接口卡沒有被初始化,線路接口卡不能正常工作,數據處理模塊102通過CPU總線,從系統配置模塊317中的線路接口卡狀態標誌寄存器中讀取初始化狀態位。
步驟e,比較從步驟d返回的線路接口卡狀態標誌寄存器的線路接口卡初始化狀態位和線路接口卡插入狀態位,確定是否所有的線路接口卡已經被初始化,如果所有的線路接口卡都已經被初始化,檢測結束,執行步驟h,否則,執行步驟f。
步驟f,初始化步驟e獲得的沒有被初始化的線路接口卡,然後執行步驟g。
步驟g,更新系統配置模塊317中的線路接口卡狀態標誌寄存器,對已經初始化好的線路接口卡進行標誌,以備後續查詢,執行步驟d,繼續檢測,是否還有線路接口卡沒有被初始化。
步驟h,數據處理模塊102結束本次主備切換工作,進入系統維護和數據處理狀態。
步驟i,原先運行在主用狀態的數據處理模塊101重新啟動和初始化,成為備用系統,等待下一次主備切換,改變輸出給系統控制模塊311的狀態信息,標誌其工作在備用狀態。
步驟j,系統控制模塊311在上電後,監控數據處理模塊101和數據處理模塊102的運行狀態,不斷檢測二者傳輸過來的狀態信息。
步驟k,根據步驟j獲得的狀態信息,判斷數據處理模塊101和數據處理模塊102的運行狀態系統是否發生改變,如果發生改變,則明確是數據處理模塊101工作在主用狀態還是數據處理模塊102工作在主用狀態,並執行步驟l,否則,沒有發生改變,繼續檢測,執行步驟j。
步驟l,系統控制模塊311向通道切換模塊312發出通道切換信息,要求通道切換模塊312將從數據存儲模塊316讀取到的數據報文發送給系統接口模塊310。
步驟m,通道切換模塊312收到系統控制模塊311的通道切換信息後,不能立即進行切換,需要判斷是否正在傳輸一個數據報文,如果正在傳輸一個數據報文,執行步驟n,否則執行步驟o。
步驟n,通道切換模塊312繼續執行當前操作直到當前數據報文傳輸處理完畢,然後執行步驟o。
步驟o,通道切換模塊312執行系統控制模塊311的通道切換信息,將數據通道切換到系統接口模塊310,從數據存儲模塊316讀取的數據都寫入到接收數據存儲模塊308中。系統控制模塊311在通道切換模塊312完成通道切換信息後,繼續監控數據處理模塊101和數據處理模塊102的運行狀態,完成本次主備切換。
如圖5所示,對於本發明所述的實現主/備PCI設備切換裝置的數據報文發送處理步驟如下步驟A,數據處理模塊101準備好一個數據報文等待發送,該數據報文包括增加的頭部信息(如圖2所示)。數據處理模塊101的PCI設備獲得該數據報文的存儲起始地址和長度後,啟動一次數據報文傳輸,執行步驟B。
步驟B,數據處理模塊101的PCI設備申請使用PCI總線,得到PCI總線控制權後,開始啟動一次PCI總線寫交易。
步驟C,系統接口模塊305檢測到一次PCI總線寫操作,而且其目標地址就是本模塊後,存儲器管理模塊302檢測發送數據存儲模塊304是否能接收一個完整的數據報文,如果能接收一個完整的數據報文,則通過PCI接口模塊301響應這次PCI總線寫交易,執行步驟D,否則,不響應,數據處理模塊101繼續啟動PCI總線寫交易,執行步驟B。
步驟D,系統接口模塊101發起的總線寫交易得到響應後,將整個數據報文從其內存空間讀出並通過PCI總線接口模塊301寫入發送數據存儲模塊304中。
步驟E,存儲器管理模塊302檢測到數據處理模塊101已經向發送數據存儲模塊304寫入了一個完整的數據報文,則提取該數據報文的頭信息,獲得埠號和數據長度,向通道切換模塊312申請從發送數據存儲模塊304讀取數據報文。
步驟F,通道切換模塊312在收到存儲器管理模塊302發送過來的申請後,分析埠號,確定該數據報文是發給網絡系統104還是備用數據處理模塊102的,如果是發給網絡系統104的,執行步驟G,否則執行步驟P。
步驟G,通道切換模塊312查詢數據存儲模塊316中的存儲器管理模塊313,返回發送數據存儲模塊315中與埠號對應的存儲空間的狀態信息。
步驟H,通道切換模塊312通過分析步驟G返回的狀態信息,確定發送數據存儲模塊315中與埠號對應的存儲空間是否能寫入一個完整的數據報文,如果能,則執行步驟I,否則執行步驟M。
步驟I,通道切換模塊312根據步驟E獲得的數據報文長度信息從發送數據存儲模塊304讀取完整的數據報文寫入發送數據存儲模塊315中與埠號對應的存儲空間中。
步驟J,存儲器管理模塊313不斷檢測發送數據存儲模塊315中各存儲空間的狀態,當檢測到某個存儲空間有數據報文等待發送的時候,向網絡接口模塊320發出數據報文讀取申請,同時將數據報文長度傳送給接口管理模塊319。
步驟K,網絡接口模塊320中的接口管理模塊319在接收到存儲器管理模塊313發出的申請後,通過PCI接口模塊318啟動一次與埠號相對應的內存空間PCI總線寫交易操作,如果網絡系統104中的線路接口卡響應本次寫交易操作,則執行步驟L,否則存儲器管理模塊313繼續查詢下一個存儲空間,執行步驟J。
步驟L,接口管理模塊319根據埠號和數據報文長度從發送數據存儲模塊315中讀取完整的數據報文通過PCI接口模塊318寫入網絡系統104中的線路接口卡,完成一次報文傳輸,執行步驟U。
步驟M,通道切換模塊312在查詢數據存儲模塊316前需要判斷該次數據報文處理是否已經超時,如果超時,需要丟棄該數據報文,保證通道暢通,防止通道間影響,執行步驟T;否則繼續查詢,執行步驟G。
步驟N,通道切換模塊312在查詢存儲器管理模塊307前需要判斷該次數據報文處理是否已經超時,如果超時,需要丟棄該數據報文,保證通道暢通,防止通道間影響,執行步驟T;否則繼續查詢,執行步驟P。
步驟P,通道切換模塊312查詢系統接口模塊310中的存儲器管理模塊307,返回接收數據存儲模塊308存儲空間的狀態信息。
步驟Q,通道切換模塊312通過分析步驟P返回的狀態信息,確定接收數據存儲模塊308是否能寫入一個完整的數據報文,如果能,則執行步驟R,否則執行步驟N。
步驟R,通道切換模塊312根據步驟E獲得的數據報文長度信息從發送數據存儲模塊304讀取完整的數據報文寫入接收數據存儲模塊308中。存儲器管理模塊307在檢測到接收數據存儲模塊308有一個完整的數據報文等待讀取後,通過PCI接口模塊306向數據處理模塊102申請讀取數據報文。
步驟S,數據處理模塊102在收到PCI接口模塊306的請求後,通過PCI總線將接收數據存儲模塊308中的數據報文讀回,從而完成一次主備同步信息的傳遞,執行步驟U。
步驟T,通道切換模塊312根據步驟E獲得的數據報文長度信息從發送數據存儲模塊304讀取完整的數據報文,但並不寫入任何存儲空間,將整個數據報文讀出並丟棄。
步驟U,完成一次數據報文發送處理,準備下一次數據報文處理。
如圖6所示,對於本發明所述的實現主/備PCI設備切換裝置的數據報文接收處理步驟如下步驟1,網絡系統104中,一線路接口卡接收到數據報文,需要傳送給主用數據處理模塊101。
步驟2,網絡系統104中線路接口卡向網絡接口模塊320中的PCI接口模塊318申請PCI總線讀交易操作。
步驟3,PCI接口模塊318接收到網絡系統104中線路接口卡發送的PCI總線操作請求後,通過接口管理模塊319查詢數據存儲模塊316中的存儲器管理模塊313,確定接收數據存儲模塊314是否能接收一個完整的數據報文,如果能,執行步驟4,否則執行步驟2。
步驟4,PCI接口模塊318從網絡系統104中線路接口卡的存儲空間讀回整個數據報文,通過接口管理模塊319存入接收數據存儲模塊314中,接口管理模塊319在接收數據報文的同時,計算整個數據報文的長度,並從PCI接口模塊318獲得當前進行PCI總線讀交易操作的線路接口卡的埠號,並將這個埠號和報文長度在數據報文傳輸結束後根據報文頭信息格式添加到數據報文頭中。存儲器管理模塊313不斷檢測接收數據存儲模塊314的存儲空間,當檢測到存儲空間有一個完整的數據報文等待發送的時候,向通道切換模塊312發出數據報文讀取申請,同時將數據報文長度傳送給通道切換模塊312,執行步驟9。
步驟5,數據處理模塊102準備好一個數據報文等待發送給數據處理模塊101,該數據報文包括增加的頭部信息(如圖2所示),數據處理模塊102的PCI設備獲得該數據報文的存儲起始地址和長度後,啟動一次數據報文傳輸,執行步驟6。
步驟6,數據處理模塊102的PCI設備申請使用PCI總線,得到PCI總線控制權後,開始啟動一次PCI總線寫交易。
步驟7,系統接口模塊310檢測到一次PCI總線寫啟動,而且其目標地址就是本模塊後,存儲器管理模塊307檢測發送數據存儲模塊309是否能接收一個完整的數據報文,如果能接收一個完整的數據報文,則通過PCI接口模塊306響應這次PCI總線寫交易,執行步驟8,否則不響應,數據處理模塊102繼續啟動PCI總線寫交易,執行步驟6。
步驟8,系統接口模塊102發起的總線寫交易得到響應後,將整個數據報文從其內存空間讀出並通過PCI總線接口306寫入發送數據存儲模塊309中。存儲器管理模塊307檢測到數據處理模塊102已經向發送數據存儲模塊309寫入了一個完整的數據報文,則提取該數據報文的頭信息,獲得埠號和數據長度,向通道切換模塊312發出申請,請求從發送數據存儲模塊309讀取數據報文。執行步驟9。
步驟9,通道切換模塊312在接收到數據存儲模塊316或者系統接口模塊310發送過來的數據報文讀取申請後,查詢系統接口模塊305中的存儲器管理模塊302,獲得接收數據存儲模塊303的存儲空間狀態信息。
步驟10,通道切換模塊312根據步驟9返回來的接收數據存儲模塊303存儲空間狀態信息,確定接收數據存儲模塊303是否允許寫入一個完整的數據報文,如果能,執行步驟11,否則,執行步驟9。
步驟11,根據步驟9獲得的申請源信息,確定是從數據存儲模塊316的接收數據存儲模塊314還是從系統接口模塊310的發送數據存儲模塊309讀取完整的數據報文並寫入系統接口模塊305中的接收數據存儲模塊303中。
步驟12,系統接口模塊305中的存儲器管理模塊302在檢測到接收數據存儲模塊303有一個完整的數據報文等待讀取後,通過PCI接口模塊301向數據處理模塊101申請讀取數據報文。
步驟13,數據處理模塊101在收到PCI接口模塊301的請求後,通過PCI總線將接收數據存儲模塊303中的數據報文讀回。
步驟14,數據處理模塊101完成一次數據報文接收。
權利要求
1.一種實現主/備PCI設備切換的裝置,其特徵在於,包括主用數據處理模塊(101)、備用數據處理模塊(102)、與主用數據處理模塊(101)連接的系統接口模塊(305)、與備用數據處理模塊(102)連接的系統接口模塊(310)、系統控制模塊(311)和通道切換模塊(312);所述主用數據處理模塊(101),用於接收、處理和轉發從系統接口模塊(305)收到的數據報文,向系統控制模塊(311)提供運行狀態信息;通過CPU總線與主用數據處理模塊(101)連接的備用數據處理模塊(102),用於接收、處理和轉發從系統接口模塊(310)收到的數據報文,向系統控制模塊(311)提供運行狀態信息;所述與主用數據處理模塊(101)連接的系統接口模塊(305),用於完成PCI總線與用戶自定義總線之間的總線轉換以及主用數據處理模塊(101)與通道切換模塊(312)之間的數據轉發;所述與備用數據處理模塊(102)連接的系統接口模塊(310),用於完成PCI總線與用戶自定義總線之間的總線轉換以及備用數據處理模塊(102)與通道切換模塊(312)之間的數據轉發;通過CPU總線與主用數據處理模塊(101)連接的系統控制模塊(311),根據檢測到的所述主用數據處理模塊(101)和所述備用數據處理模塊(102)發送的運行狀態信息,控制通道切換模塊(312)進行正確的數據通道選擇;所述通道切換模塊(312),根據系統控制模塊(311)發送的通道選擇信息,將接收到的數據報文發送給與當前的備用數據處理模塊(102)連接的系統接口模塊(310)實現數據傳輸的轉發。
2.如權利要求1所述的實現主/備PCI設備切換的裝置,其特徵在於,還包括數據存儲模塊(316)、系統配置模塊(317)和網絡接口模塊(320);所述數據存儲模塊(316),用於完成數據報文的緩存與轉發;其中系統配置模塊(317)是通過CPU總線與主用數據處理模塊(101)連接;所述主用數據處理模塊(101),還用於通過CPU總線識別外部網絡系統上線路接口卡的類別,並通過系統配置模塊(317)對外部網絡系統的線路接口卡進行初始化,所述與外部網絡系統、數據存儲模塊(316)和系統配置模塊(317)連接的網絡接口模塊(320),實現PCI總線和用戶自定義總線之間的總線轉換功能,以及分別與數據存儲模塊(316)和系統配置模塊(317)之間的數據轉發。
3.如權利要求2所述的實現主/備PCI設備切換的裝置,其特徵在於,所述系統接口模塊(305、310)包括,PCI接口模塊、存儲器管理模塊、接收數據存儲模塊和發送數據存儲模塊,所述PCI接口模塊通過其擁有的自定義總線,分別與接收數據存儲模塊和發送數據存儲模塊連接;所述PCI接口模塊,完成標準PCI總線與用戶自定義總線之間的轉換,其PCI總線與數據處理模塊的PCI設備互連;所述存儲器管理模塊,管理系統接口模塊的存儲空間,根據存儲空間的狀態,實現與數據處理模塊、通道切換模塊之間的數據的傳輸;所述接收數據存儲模塊和發送數據存儲模塊分別是一個FIFO模塊。
4.如權利要求3所述的實現主/備PCI設備切換的裝置,其特徵在於,所述通道切換模塊(312),將接收到的所述數據存儲模塊(316)或者備用數據處理模塊(102)發送過來的讀取數據報文請求,寫入與主用數據處理模塊(101)相連接的系統接口模塊(305)的接收數據存儲模塊;所述通道切換模塊(312),接收到與主用數據處理模塊(101)相連接的系統接口模塊(305)發送的數據報文的請求,寫入數據存儲模塊(316)或者與備用數據處理模塊(102)連接的系統接口模塊的接收數據處理模塊中。
5.如權利要求2或4所述的實現主/備PCI設備切換的裝置,其特徵在於,所述數據存儲模塊(316)包括,存儲器管理模塊(313)、接收數據存儲模塊(314)和發送數據存儲模塊(315),所述存儲器管理模塊(313)接收數據存儲模塊(314)和發送數據存儲模塊(315)的存儲空間狀態,並向通道切換模塊(312)或者網絡接口模塊(320)發出數據報文傳輸申請;所述接收數據存儲模塊(314)是一存儲器,所有從外部網絡系統過來的數據報文都存入該模塊中,等待通道切換模塊(312)讀取;所述發送數據存儲模塊(315)是一存儲器,通過高位地址和低位地址的劃分將內存分割成多個存儲空間,通過網絡接口模塊實現對各存儲空間的訪問。
6.如權利要求2所述的實現主/備PCI設備切換的裝置,其特徵在於,所述系統配置模塊(317)包括,線路接口卡狀態標誌寄存器和PCI設備配置數據寄存器組;所述線路接口卡狀態標誌寄存器包括,線路接口卡初始化狀態位和線路接口卡插入狀態位;所述線路接口卡狀態標誌寄存器,用於指示線路接口卡初始化狀態和線路接口卡插入狀態,採用主用數據處理模塊(101)進行更新和維護;所述PCI設備配置數據寄存器組,用於實現主用數據處理模塊(101)對外部網絡系統中的線路接口卡的初始化和維護;所述PCI設備配置數據寄存器組包括,讀/寫命令寄存器、埠寄存器、寫命令數據寄存器和讀命令數據寄存器。
7.如權利要求2所述的實現主/備PCI設備切換的裝置,其特徵在於,所述網絡接口模塊(320)包括,PCI接口模塊(318)和接口管理模塊(319),所述PCI接口模塊(318)用於完成標準PCI總線與用戶自定義總線之間的轉換功能,該模塊的配置空間可以通過CPU總線直接訪問;所述接口管理模塊(319)處理系統配置模塊(317)發出的PCI設備配置空間訪問申請和數據存儲模塊(316)的發送數據報文申請,對數據存儲模塊(316)的存儲空間的讀/寫操作。
8.一種實現主/備PCI設備切換的方法,其特徵在於,包括如下步驟步驟1,採用系統控制模塊(311)對當前正在運行的主/備數據處理模塊(101/102)的狀態信息進行檢測;步驟2,根據所述檢測的狀態信息,判斷所述主/備數據處理模塊(101/102)的運行狀態是否發生改變,如果發生改變,則轉入步驟3,否則,轉入步驟1;步驟3,通道切換模塊(312)接收到系統控制模塊(311)發出的通道切換信息後,將該通道切換模塊(312)接收到的數據報文發送給與當前的備用數據處理模塊(102)連接的系統接口模塊(310)中,以完成當前的主/備數據處理模塊的切換。
9.如權利要求8所述的實現主/備PCI設備切換的方法,其特徵在於,所述步驟2中,主/備數據處理模塊(101/102)的運行狀態發生改變,是指所述主用數據處理模塊(101)接收用戶發出的主備切換指令放棄主用狀態或者備用數據處理模塊(102)檢測到主用數據處理模塊(101)的工作狀態發生變化,使備用數據處理模塊(102)工作於主用狀態。
10.如權利要求8或9所述的實現主/備PCI設備切換的方法,其特徵在於,所述主用數據處理模塊(101),重新啟動和初始化,成為備用數據處理模塊,改變輸出給系統控制模塊(311)的狀態信息,等待下一次的主備切換。
11.如權利要求8所述的實現主/備PCI設備切換的方法,其特徵在於,所述步驟3,所述通道切換模塊(312)將接收到的數據報文在進行發送前,作如下處理,判斷該通道切換模塊(312)是否正在傳輸一個數據報文,如果是,則繼續傳輸,直到將當前數據數據報文傳輸處理完畢,再發送所述接收到的數據報文,否則,直接發送所述接收到的數據報文。
12.如權利要求8所述的實現主/備PCI設備切換的方法,其特徵在於,所述當前的備用數據處理模塊(102)切換為主用數據處理模塊後,進行如下處理步驟(4.1),通過CPU總線從系統配置模塊(317)中的線路接口卡狀態標誌寄存器中讀取初始化狀態位;步驟(4.2),比較將步驟(4.1)中返回的初始化狀態位和線路接口卡插入狀態位,檢測是否所有的線路接口卡已被初始化,若已被初始化,流程結束,否則,執行步驟(4.3);步驟(4.3),初始化步驟(4.2)獲得的沒有被初始化的線路接口卡,然後執行步驟(4.4);步驟(4.4),更新系統配置模塊(317)中的線路接口卡狀態標誌寄存器,對已經初始化好的線路接口卡進行標誌,然後執行步驟(4.2),繼續檢測,是否還有線路接口卡沒有被初始化。
全文摘要
本發明公開了一種實現主/備PCI設備切換的裝置和方法,所述方法包括,步驟1,採用系統控制模塊對當前正在運行的主/備數據處理模塊的狀態信息進行檢測;步驟2,根據所述檢測的狀態信息,判斷所述主/備數據處理模塊的運行狀態是否發生改變,如果發生改變,則轉入步驟3,否則,轉入步驟1;步驟3,通道切換模塊接收到系統控制模塊發出的通道切換信息後,將該通道切換模塊接收到的數據報文發送給與當前的備用數據處理模塊連接的系統接口模塊中,以完成當前的主/備數據處理模塊的切換。本發明實現主/備數據處理模塊的迅速切換,實現了用戶業務不中斷,提高了系統可靠性,且網絡恢復快,無需採用專門網絡來實現切換,減輕了系統的成本。
文檔編號H04L12/40GK101068140SQ20071012338
公開日2007年11月7日 申請日期2007年6月27日 優先權日2007年6月27日
發明者鄭斌儒, 李波, 翟紅健 申請人:中興通訊股份有限公司