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