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