專利名稱:一種基于串口的ipmi數(shù)據(jù)包傳輸方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計算機(jī)領(lǐng)域,尤其涉及一種基于串口的IPMI數(shù)據(jù)包傳輸方法。
背景技術(shù):
智能平臺管理接口 intelligent Platform Management Interface, IPMI)是一種開放標(biāo)準(zhǔn)的硬件管理接口規(guī)格,定義了嵌入式管理子系統(tǒng)進(jìn)行通信的特定方法。用戶可以利用IPMI監(jiān)視服務(wù)器的物理健康特征,如溫度、電壓、風(fēng)扇工作狀態(tài)、電源狀態(tài)等。IPMI 的核心是一個專用芯片/基板管理控制器(BaseboardManagement Controller,BMC),它不依賴于服務(wù)器的處理器、BIOS或操作系統(tǒng)。工作時,所有功能都是向BMC發(fā)送IPMI命令來完成的,BMC接收并在系統(tǒng)事件日志中記錄事件消息,維護(hù)描述系統(tǒng)中傳感器情況的傳感器數(shù)據(jù)記錄。服務(wù)器遠(yuǎn)程管理是一個非常重要的技術(shù),而在服務(wù)器遠(yuǎn)程管理方面,典型的解決方案是基于服務(wù)器操作系統(tǒng)的軟件管理方式,但這樣的方式有一個缺陷即對操作系統(tǒng)的依賴程度太高,一旦系統(tǒng)出現(xiàn)問題將無能為力,影響到服務(wù)器的正常運(yùn)行?;贗PMI的遠(yuǎn)程管理是一種不依賴于操作系統(tǒng)的管理方式。IPMI定義管理員如何監(jiān)測系統(tǒng)硬件和傳感器、 控制系統(tǒng)組件和檢索重要系統(tǒng)事件的日志以進(jìn)行遠(yuǎn)程管理和恢復(fù),用戶無需擔(dān)心操作系統(tǒng)的狀態(tài),即使系統(tǒng)崩潰也可以輕松得到機(jī)器狀態(tài)、重要系統(tǒng)日志等信息,還能實現(xiàn)系統(tǒng)的重啟、關(guān)機(jī)等控制。目前該規(guī)范已經(jīng)得到了很多供應(yīng)商的支持,這使得其逐漸成為了一個完整的包括服務(wù)器和其他系統(tǒng)(如存儲設(shè)備、網(wǎng)絡(luò)和通信設(shè)備)的硬件管理規(guī)范。規(guī)范規(guī)定可以通過串口、Modem以及LAN等遠(yuǎn)程環(huán)境管理服務(wù)器系統(tǒng)(包括遠(yuǎn)程開關(guān)機(jī))。雖然IPMI規(guī)范提出了可以通過串口、Modem或LAN方式實現(xiàn)系統(tǒng)管理接口,至于如何實現(xiàn)規(guī)范并沒有給出具體指導(dǎo),而且實現(xiàn)方式各不相同。由于網(wǎng)絡(luò)協(xié)議可以對數(shù)據(jù)包的完整性和正確性檢驗以及出錯進(jìn)行處理,而采用串口方式時,其通用驅(qū)動不對數(shù)據(jù)的正確性和完整性進(jìn)行校驗,也不能對數(shù)據(jù)包進(jìn)行劃分,難以滿足實際應(yīng)用的需要。
發(fā)明內(nèi)容
本發(fā)明實施例的目的在于提供一種基于串口的IPMI數(shù)據(jù)包傳輸方法,解決通過串口進(jìn)行系統(tǒng)管理面臨的數(shù)據(jù)包的完整性及正確性校驗等問題。本發(fā)明實施例是這樣實現(xiàn)的,一種基于串口的IPMI數(shù)據(jù)包傳輸方法,其特征在于,所述IPMI數(shù)據(jù)包中包含有起始位和校驗位,所述方法包括下述步驟發(fā)送數(shù)據(jù)包時,將數(shù)據(jù)包中除了所述起始位以外的其他與所述起始位字節(jié)值相同的字節(jié)值采用轉(zhuǎn)義字符組替換;接收數(shù)據(jù)包時,將數(shù)據(jù)包中的轉(zhuǎn)義字符組用起始位字節(jié)值替換,還原為采用所述轉(zhuǎn)義字符組替換前的原數(shù)據(jù)包。本發(fā)明實施例定義發(fā)送端和接收端傳送的IPMI數(shù)據(jù)包的格式,通過對數(shù)據(jù)包中的起始位SOP進(jìn)行轉(zhuǎn)義替換和反替換,解決了通過串口實現(xiàn)IPMI系統(tǒng)管理接口進(jìn)行數(shù)據(jù)通信中面臨的問題,能夠提高數(shù)據(jù)包的完整性和有效性、降低數(shù)據(jù)包的重發(fā)概率,可以很好地實現(xiàn)短距離IPMI系統(tǒng)管理接口的數(shù)據(jù)傳輸。
圖1是本發(fā)明實施例提供的基于串口符合IPMI規(guī)范的數(shù)據(jù)傳輸接口示意圖;圖2是本發(fā)明實施例提供的數(shù)據(jù)包起始位SOP轉(zhuǎn)義字符替換示例圖;圖3是本發(fā)明實施例提供的基于串口的IPMI數(shù)據(jù)包發(fā)送方法的實現(xiàn)示例流程圖;圖4是本發(fā)明實施例提供的基于串口的IPMI數(shù)據(jù)包接收方法的實現(xiàn)示例流程圖。
具體實施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明實施例在IPMI數(shù)據(jù)包中定義數(shù)據(jù)包的起始位,在數(shù)據(jù)傳輸過程中對數(shù)據(jù)包中與起始位相同字節(jié)值的數(shù)據(jù)進(jìn)行轉(zhuǎn)義替換和反替換,解決了通過串口進(jìn)行系統(tǒng)管理面臨的數(shù)據(jù)的完整性及正確性校驗等問題。圖1示出了本發(fā)明實施例中基于串口符合IPMI規(guī)范的數(shù)據(jù)傳輸接口示意圖,為了便于說明,僅示出了與發(fā)明實施例相關(guān)的部分。系統(tǒng)管理器(System Manager)與BMC之間采用串口實現(xiàn)遠(yuǎn)程數(shù)據(jù)的傳輸,通用異步接收 / 發(fā)送裝置(Universal Asynchronous Receiver/Transmitter, UART)將由 BMC 傳送過來的并行數(shù)據(jù)轉(zhuǎn)換為輸出的串行數(shù)據(jù)流,將系統(tǒng)管理器來的串行數(shù)據(jù)轉(zhuǎn)換為字節(jié),供 BMC內(nèi)部使用并行數(shù)據(jù)的器件使用。另外,在輸出的串行數(shù)據(jù)流中加入校驗位,例如采用循環(huán)冗余校驗(Cyclic RedundancyCheck,CRC)并對從外部接收的數(shù)據(jù)流進(jìn)行校驗,以確定數(shù)據(jù)的完整性和有效性。由于串口是以字節(jié)方式進(jìn)行數(shù)據(jù)傳輸,如何判斷數(shù)據(jù)傳輸?shù)钠鹬?、?shù)據(jù)的完整性是需要解決的問題。在本發(fā)明實施例中,將系統(tǒng)管理器與BMC之間傳輸?shù)臄?shù)據(jù)包定義為如下格式
SOPSeqNumLenCRCDATA(Ibyte)(2bytes)(Ibyte)(2bytes)(N bytes)其中,SOP (Start OfPacket)表示數(shù)據(jù)包的起始位,1個字節(jié);SeqNum表示數(shù)據(jù)包序號,2個字節(jié);Len表示數(shù)據(jù)域長度,1個字節(jié);CRC用來校驗數(shù)據(jù)的完整性,2個字節(jié);DATA域表示長度為Len域值的IPMI格式數(shù)據(jù)包,N個字節(jié)。在本發(fā)明實施例中,系統(tǒng)管理器和BMC雙方按照上述定義的數(shù)據(jù)包格式進(jìn)行通
4信,實現(xiàn)數(shù)據(jù)包的收發(fā),并判斷數(shù)據(jù)包的完整性。本發(fā)明實施例中發(fā)送的IPMI數(shù)據(jù)包使用兩位CRC校驗值,保證了數(shù)據(jù)包的完整性和有效性。在實際的數(shù)據(jù)傳輸過程中,容易出現(xiàn)重復(fù)字節(jié)的情況,如果在起始位之后的其他數(shù)據(jù)中也有和數(shù)據(jù)位SOP相同的值,那么接收端會將后面的“相同的值”也當(dāng)做“SOP”起始位,這樣就會傳送錯誤的數(shù)據(jù)包,從而導(dǎo)致后面所有的數(shù)據(jù)包傳輸出錯。為了解決這個問題,本發(fā)明實施例對數(shù)據(jù)包中重復(fù)出現(xiàn)“SOP”的字節(jié)采用包含至少兩個轉(zhuǎn)義字符的轉(zhuǎn)義字符組替換,發(fā)送數(shù)據(jù)包時,將數(shù)據(jù)包中除了起始位以外的其他與起始位字節(jié)值相同的字節(jié)值采用轉(zhuǎn)義字符組替換;接收數(shù)據(jù)包時,將數(shù)據(jù)包中的轉(zhuǎn)義字符組用起始位字節(jié)值替換,還原為采用轉(zhuǎn)義字符替換前的原數(shù)據(jù)包。在具體實現(xiàn)時,在發(fā)送數(shù)據(jù)包時,將數(shù)據(jù)包中除了起始位以外的其他與起始位字節(jié)值相同的字節(jié)值采用第一轉(zhuǎn)義字符組替換,同時將數(shù)據(jù)包中與該第一轉(zhuǎn)義字符組中第一個字符字節(jié)值相同的其他字節(jié)值采用第二轉(zhuǎn)義字符組替換。即在數(shù)據(jù)包發(fā)送之前先檢查數(shù)據(jù)包是否存在多個位的字節(jié)值是S0P,將除第一位以外的字節(jié)值以第一轉(zhuǎn)義字符組代替,同時對與第一轉(zhuǎn)義字符組中的第一個字符相同的其他字節(jié)也進(jìn)行替換,生成新的數(shù)據(jù)包,這樣新的數(shù)據(jù)包只有第一位的字節(jié)值是SOP。在接收數(shù)據(jù)包時,將檢測到的第一轉(zhuǎn)義字符組的字節(jié)值采用數(shù)據(jù)包的起始位字節(jié)值替換,并將檢測到的第二轉(zhuǎn)義字符組的字節(jié)值采用第一轉(zhuǎn)義字符組的第一個字符的字節(jié)值替換。當(dāng)然,理論上也可以采用2個以上轉(zhuǎn)義字符對重復(fù)出現(xiàn)的SOP字節(jié)進(jìn)行替換,但是如果替換字符太多將消耗更多系統(tǒng)資源,造成數(shù)據(jù)處理速度下降,甚至造成數(shù)據(jù)丟失,因此采用兩個轉(zhuǎn)義字符最優(yōu)。在本發(fā)明實施例中,盡可能選用不常出現(xiàn)的數(shù)據(jù)或不可見字符作為轉(zhuǎn)義字符,這樣就可以提高轉(zhuǎn)換命中率,從而提高數(shù)據(jù)處理速度。如圖2所示,假設(shè)SOP的值為Oxfe,則用0xff,0x00兩個字節(jié)代替S0P,用Oxff, 0x01兩個字節(jié)代替Oxff。圖3示出了本發(fā)明實施例提供的基于串口的IPMI數(shù)據(jù)包發(fā)送方法的實現(xiàn)示例流程,詳述如下在步驟S301中,發(fā)送起始位字節(jié)SOP ;在步驟S302中,判斷數(shù)據(jù)包發(fā)送是否完成,是則結(jié)束,否則執(zhí)行步驟S303 ;在步驟S303中,判斷發(fā)送的字節(jié)值是否為S0P,是則執(zhí)行步驟S304,否則執(zhí)行步驟 S305 ;在步驟S304中,采用包含兩個轉(zhuǎn)義字符的第一轉(zhuǎn)義字符組替換該字節(jié),例如假設(shè) SOP的值為Oxfe,則用Oxff,0x00兩個字節(jié)代替SOP ;在步驟S305中,判斷發(fā)送的字節(jié)值是否為第一轉(zhuǎn)義字符組中的第一個轉(zhuǎn)義字符的值,是則執(zhí)行步驟S306,否則執(zhí)行步驟S307 ;在步驟S306中,采用包含兩個轉(zhuǎn)義字符的第二轉(zhuǎn)義字符組替換該字節(jié),例如用 Oxff,0x01兩個字節(jié)代替Oxff ;在步驟S307中,發(fā)送一個字節(jié),發(fā)送字節(jié)計數(shù)器加1。
接收端收到數(shù)據(jù)包后,根據(jù)與發(fā)送端約定的轉(zhuǎn)義字符,采用相反的方式將對接收的數(shù)據(jù)包中的轉(zhuǎn)義字符用SOP代替,還原為采用轉(zhuǎn)義字符替換前的原數(shù)據(jù)包,然后再校驗數(shù)據(jù)的完整性。BMC收到完整的數(shù)據(jù)包后再將DATA域解析并執(zhí)行。圖4示出了本發(fā)明實施例提供的基于串口的IPMI數(shù)據(jù)包發(fā)送方法的實現(xiàn)流程,詳述如下在步驟S401中,接收一個字節(jié);在步驟S402中,判斷該字節(jié)是否為起始位S0P,是則執(zhí)行步驟S403,否則返回執(zhí)行步驟S401 ;在步驟S403中,判斷數(shù)據(jù)包接收是否完成,是則結(jié)束,否則執(zhí)行步驟S404 ;在步驟S404中,判斷接收到的字節(jié)的值是否為第一轉(zhuǎn)義字符組的第一個字符,例如上述示例中的Oxff,是則執(zhí)行步驟S405,否則執(zhí)行步驟S412 ;在步驟S405中,接收下一個字節(jié);在步驟S406中,判斷接收到的字節(jié)值是否為第一轉(zhuǎn)義字符組的第二個字符,例如上述示例中的0x00,是則執(zhí)行步驟S407,否則執(zhí)行步驟S408 ;在步驟S407中,將第一轉(zhuǎn)義字符組的第一個字符、第二個字符,例如上述示例中的Oxff、0x00,用SOP替換,例如上述示例中的Oxfe ;在步驟S408中,判斷接收到的字節(jié)值是否為第二轉(zhuǎn)義字符組的第二個字符,例如上述示例中的0x01,是則執(zhí)行步驟S409,否則執(zhí)行步驟S410 ;在步驟S409中,將第二轉(zhuǎn)義字符組的第一個字符、二個字符,例如上述示例中的 Oxff.OxOl用第一轉(zhuǎn)義字符組中的第一個字符,例如上述示例中的Oxff替換;在步驟S410中,接收字節(jié)計數(shù)器加2 ;在步驟S411中,接收字節(jié)計數(shù)器加1 ;在步驟S412中,接收字節(jié)計數(shù)器加1。本發(fā)明實施例定義發(fā)送端和接收端傳送的IPMI數(shù)據(jù)包的格式,通過對數(shù)據(jù)包中的起始位SOP進(jìn)行轉(zhuǎn)義替換和反替換,解決了通過串口實現(xiàn)IPMI系統(tǒng)管理接口進(jìn)行數(shù)據(jù)通信中面臨的問題,能夠提高數(shù)據(jù)包的完整性和有效性、降低數(shù)據(jù)包的重發(fā)概率,可以很好地實現(xiàn)短距離IPMI系統(tǒng)管理接口的數(shù)據(jù)傳輸。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種基于串口的IPMI數(shù)據(jù)包傳輸方法,其特征在于,所述IPMI數(shù)據(jù)包中包含有起始位和校驗位,所述方法包括下述步驟發(fā)送數(shù)據(jù)包時,將數(shù)據(jù)包中除了所述起始位以外的其他與所述起始位字節(jié)值相同的字節(jié)值采用轉(zhuǎn)義字符組替換;接收數(shù)據(jù)包時,將數(shù)據(jù)包中的轉(zhuǎn)義字符組用起始位字節(jié)值替換,還原為采用所述轉(zhuǎn)義字符組替換前的原數(shù)據(jù)包。
2.如權(quán)利要求1所述的方法,其特征在于,所述將數(shù)據(jù)包中除了所述起始位以外的其他與所述起始位字節(jié)值相同的字節(jié)值采用轉(zhuǎn)義字符組替換的步驟具體為將數(shù)據(jù)包中除了所述起始位以外的其他與所述起始位字節(jié)值相同的字節(jié)值采用第一轉(zhuǎn)義字符組替換;將數(shù)據(jù)包中與所述第一轉(zhuǎn)義字符組中第一個字符字節(jié)值相同的其他字節(jié)值采用第二轉(zhuǎn)義字符組替換。
3.如權(quán)利要求2所述的方法,其特征在于,所述將數(shù)據(jù)包中的轉(zhuǎn)義字符組用起始位字節(jié)值替換,還原為采用所述轉(zhuǎn)義字符組替換前的原數(shù)據(jù)包的步驟具體為將檢測到的第一轉(zhuǎn)義字符組的字節(jié)值采用所述數(shù)據(jù)包的起始位字節(jié)值替換; 將檢測到的第二轉(zhuǎn)義字符組的字節(jié)值采用所述第一轉(zhuǎn)義字符組的第一個字符的字節(jié)值替換。
4.如權(quán)利要求1、2或3所述的方法,其特征在于,所述轉(zhuǎn)義字符組包含至少兩個轉(zhuǎn)義字符。
5.如權(quán)利要求1所述的方法,其特征在于,所述校驗位使用兩位校驗值。
全文摘要
本發(fā)明適用于計算機(jī)領(lǐng)域,提供了一種基于串口的IPMI數(shù)據(jù)包傳輸方法,所述IPMI數(shù)據(jù)包中包含有起始位和校驗位,所述方法包括下述步驟發(fā)送數(shù)據(jù)包時,將數(shù)據(jù)包中除了所述起始位以外的其他與所述起始位字節(jié)值相同的字節(jié)值采用轉(zhuǎn)義字符組替換;接收數(shù)據(jù)包時,將數(shù)據(jù)包中的轉(zhuǎn)義字符組用起始位字節(jié)值替換,還原為采用所述轉(zhuǎn)義字符組替換前的原數(shù)據(jù)包。本發(fā)明定義發(fā)送端和接收端傳送的IPMI數(shù)據(jù)包的格式,通過對數(shù)據(jù)包中的起始位SOP進(jìn)行轉(zhuǎn)義替換和反替換,解決了通過串口實現(xiàn)IPMI系統(tǒng)管理接口進(jìn)行數(shù)據(jù)通信中面臨的問題,能夠提高數(shù)據(jù)包的完整性和有效性、降低數(shù)據(jù)包的重發(fā)概率,可以很好地實現(xiàn)短距離IPMI系統(tǒng)管理接口的數(shù)據(jù)傳輸。
文檔編號H04L29/08GK102377505SQ20101024790
公開日2012年3月14日 申請日期2010年8月6日 優(yōu)先權(quán)日2010年8月6日
發(fā)明者朱學(xué)朋, 賀才望, 陳志列 申請人:研祥智能科技股份有限公司