關(guān)于車用迢信協(xié)議中的假冒錯
2 FlexRay對抗假冒錯的措施
FlexRay是新興的車用通信協(xié)議,它是因CAN協(xié)議在帶寬和可靠性不足的情況下發(fā)展起來的,主要滿足汽車線控技術(shù)(x―by―wire)的要求。在線控系統(tǒng)中,不再有機械或液壓的后備,所有的操作都由電信號通過總線傳送來實現(xiàn),因此對通信的可靠性要求更高。為了對抗假冒錯,和過去的技術(shù)相比,F(xiàn)lexRay協(xié)議添加了幀頭的CRC檢驗。
FlexRay的幀頭部段由5位的先導(dǎo)、11位的幀ID、7位的數(shù)據(jù)長度、11位的頭部CRC校驗和以及6位的時鐘周期計數(shù)構(gòu)成。如果校驗未通過,幀就判作出錯而不予接收。5位的先導(dǎo)是保留位、數(shù)據(jù)區(qū)前導(dǎo)標志位、空幀標志位、同步幀標志位、啟動幀標志位。頭部CRC校驗覆蓋的范圍僅包括同步幀標志位、啟動幀標志位、幀ID和數(shù)據(jù)長度。在FlexRay發(fā)送節(jié)點中頭部CRC校驗和是離線計算好并在組態(tài)時提供給cc的,接收節(jié)點的cc則根據(jù)收到的在覆蓋域的以及CRC校驗和的比特流計算CRC校驗和。頭部CRC校驗的生成多項式為:
其計算初值為0x01A。該頭部CRC校驗保證覆蓋的20位內(nèi)Hamming距離為6。由于接收節(jié)點的cc是根據(jù)收到的在覆蓋域的以及CRC校驗和的比特流計算CRC校驗和,如果出錯的位數(shù)較多,有可能減少此項檢驗的有效性,在FlexRay波特率較高的情況下,出錯位數(shù)多是可能的。這里被保護的數(shù)據(jù)內(nèi)容是:同步幀標志表明本幀是否是用于時鐘同步;啟動幀標志表明本幀是否是啟動時用的;幀ID在靜態(tài)段時是時間片(slot)的編號,在動態(tài)段內(nèi)為優(yōu)先級編號,在網(wǎng)絡(luò)的同一簇內(nèi)每一個幀有1個ID;數(shù)據(jù)長度在組態(tài)時也是確定了的。因此在組態(tài)時可以離線算好CRC校驗和。如果在應(yīng)用時這些內(nèi)容不管何種原因發(fā)生了破壞,接收者就可以發(fā)現(xiàn)。
FlexRay在發(fā)送時間片的實際使用權(quán)上還加以控制,即有與節(jié)點cc相配的總線監(jiān)守(bus guardian),用以對抗Babbling Idiot錯??偩€監(jiān)守在調(diào)度規(guī)定的時刻開啟發(fā)送通道,允許cc發(fā)送,否則cc是送不出去的。消息以廣播方式送到各節(jié)點,若接收也以時間片確定的話,假冒是很難的,除非總線監(jiān)守與該節(jié)點的cc都出了錯。但是FlexRay的總線監(jiān)守并不保護發(fā)生在動態(tài)段的不準時發(fā)送,如果因為干擾,在周期內(nèi)某節(jié)點cc的時間片指針vSlotCounter出了錯,就有不準時的消息傳送;若同時傳送的ID也錯,假冒錯就會發(fā)生,vSlotCounter要等到新的時鐘同步消息時再復(fù)位為1。
FlexRay對數(shù)據(jù)區(qū)前導(dǎo)標志和空幀標志未作頭部CRC校驗的覆蓋,這可能引起問題。數(shù)據(jù)區(qū)前導(dǎo)標志用于標明數(shù)據(jù)區(qū)開始部分是否包含有消息ID(在動態(tài)段發(fā)送的幀)或者網(wǎng)絡(luò)管理向量(在靜態(tài)段發(fā)送的幀)。空幀標志用于標明數(shù)據(jù)區(qū)的數(shù)據(jù)是否可按原來的規(guī)定使用或者是空幀。網(wǎng)絡(luò)管理向量是一個選項,作為應(yīng)用的數(shù)據(jù)由host寫入,為高一層的協(xié)議提供服務(wù),目前還未有規(guī)定。顯然這二位如果出錯,頭部CRC校驗可以通過,但數(shù)據(jù)區(qū)的解釋都會完全不同,其性質(zhì)就是一種假冒錯。雖然幀的發(fā)送節(jié)點未變,但是卻是一個假幀代替了原來的幀。發(fā)生在這二位的錯如果在節(jié)點發(fā)送幀以前就已有,那么幀尾部的CRC校驗將不能檢測出錯。如上一節(jié)所分析,這種情況是有可能存在的。如果是在發(fā)送過程中產(chǎn)生的,那么幀尾部的CRC校驗將有可能檢測出錯。
FlexRay幀尾部的CRC校驗和為24位,它由發(fā)送節(jié)點的cc生成,覆蓋由頭部保留位到數(shù)據(jù)區(qū)的最后一位,F(xiàn)lexRay的2個信道采用不同的CRC計算初值。覆蓋區(qū)長度在2 048位時Hamming距離為6,覆蓋區(qū)長度為4 094位時Hamming距離為4。在汽車環(huán)境里,與CAN相比這一Hamming距離似不夠。因為它們都要面對同樣的機械設(shè)備,即同樣的干擾。如圖l所示,ISO7637中的試驗脈沖1,對電源為12 V的系統(tǒng),Us為一75~一100 V,tr為1μs,假定硬件無法在此時間內(nèi)將它衰減到足夠小,那么FlexRay將有10位受影響;td為2 ms,硬件應(yīng)能克服電源的跌落。與此對比,CAN僅1位受影響。又如圖2所示,試驗脈沖3a,Us為一112~一150 V,tr為(5±1.5)ns,td為O.1μs,td允差的上下限為(+O.1,0),t1為100μs,t4為10 ms。對這種高頻干擾,驅(qū)動器會有收發(fā)錯,CAN的比特采樣間隔為1μs,采到O.1μs錯誤的概率小,而FlexRay的位間隔為0.1μs,采到O.1μs錯誤的概率就大。由此看來,在帶寬增加時,出錯的概率增加多倍,而報錯的能力并未增加多倍。為了成功應(yīng)用,必須對硬件的抗干擾能力做大的提高。
評論