方偉家,衛(wèi) 威,左 政
(一汽轎車股份有限公司產(chǎn)品部,吉林 長春 130012)
基于CAN域地址的網(wǎng)關(guān)路由設(shè)計(jì)
方偉家,衛(wèi) 威,左 政
(一汽轎車股份有限公司產(chǎn)品部,吉林 長春 130012)
提出一種基于CAN域地址的網(wǎng)關(guān)路由算法設(shè)計(jì)。采用此方法設(shè)計(jì)網(wǎng)關(guān),可以提高網(wǎng)關(guān)的通用化率。
報(bào)文標(biāo)識符;域;路由;子網(wǎng)掩碼
隨著整車電子電氣化的發(fā)展,車輛電氣裝備越來越豐富,越來越多的電子控制單元裝備在汽車中。為了方便電子控制單元間的信息共享,并且降低成本和減少線束質(zhì)量,電控單元大多支持CAN總線通信。網(wǎng)關(guān)是連接多個子網(wǎng)的節(jié)點(diǎn),是分隔網(wǎng)絡(luò)降低網(wǎng)絡(luò)負(fù)載的工具。不論集成式網(wǎng)關(guān)還是獨(dú)立式網(wǎng)關(guān),信息路由都是網(wǎng)關(guān)的最主要功能。通常網(wǎng)關(guān)路由設(shè)計(jì)基于現(xiàn)有的路由表進(jìn)行定制化開發(fā),而后續(xù)整車裝備升級常常變更路由表信息,使得網(wǎng)關(guān)頻繁升級。本文提出了一種基于總線域地址的網(wǎng)關(guān)路由算法設(shè)計(jì),采用此方法可以使路由表自動生成,避免網(wǎng)關(guān)頻繁升級,達(dá)到通用化設(shè)計(jì)的目的。文章首先對域和子網(wǎng)結(jié)構(gòu)等相關(guān)信息進(jìn)行定義,接下來介紹網(wǎng)關(guān)端口和設(shè)計(jì)路由表,最后給出路由算法和實(shí)例分析。
CAN網(wǎng)絡(luò)中的節(jié)點(diǎn)可以通信,需要定義節(jié)點(diǎn)通信地址。各個節(jié)點(diǎn)都具有一個唯一的通信地址,不同的節(jié)點(diǎn)有不同的通信地址。多個節(jié)點(diǎn)連接在同一條CAN網(wǎng)絡(luò)上組成域。域指向一個子網(wǎng),域地址指向一個子網(wǎng)地址。子網(wǎng)中的所有節(jié)點(diǎn)有相同的域地址。不同的域間,地址不相同。
在CAN報(bào)文標(biāo)識符的表現(xiàn)上,域地址代表標(biāo)識符的前面若干連續(xù)位,而子網(wǎng)中的各個節(jié)點(diǎn)地址通過標(biāo)識符的后續(xù)比特位體現(xiàn)。將域地址所占用的連續(xù)位均置為1,后續(xù)位置均置為0形成的地址稱作子網(wǎng)掩碼。子網(wǎng)中的所有節(jié)點(diǎn)有相同的子網(wǎng)掩碼。子網(wǎng)掩碼用于判斷一個子網(wǎng)所包含的全部節(jié)點(diǎn)地址的范圍。
圖1展示了一種4路子網(wǎng)的網(wǎng)絡(luò)結(jié)構(gòu)。其中3個子網(wǎng)通過網(wǎng)關(guān)1連接,網(wǎng)關(guān)2連接第4個子網(wǎng)。子網(wǎng)結(jié)構(gòu)中標(biāo)注了所有節(jié)點(diǎn)和域的地址信息。將域地址所占用的連續(xù)位長度通過“/”放在節(jié)點(diǎn)地址或域地址后面,體現(xiàn)子網(wǎng)掩碼信息。
如表1所示的0x500/5子網(wǎng)表明:使用報(bào)文標(biāo)識符前5個位表示域地址,子網(wǎng)掩碼為0x7C0。當(dāng)前子網(wǎng)中有3個節(jié)點(diǎn)分別為0x51A/5、0x51B/5、0x51C/5。
表1 地址和掩碼
端口是網(wǎng)關(guān)對一個子網(wǎng)的物理連接。作為網(wǎng)關(guān),至少要有2個端口。每一個端口分配一個節(jié)點(diǎn)地址和子網(wǎng)掩碼。端口分本地端口和路由端端口。
網(wǎng)關(guān)連接多個子網(wǎng),從一個子網(wǎng)向另一個子網(wǎng)發(fā)送報(bào)文。路由方式可分一對一路由和廣播路由。當(dāng)選擇廣播路由時(shí),報(bào)文被復(fù)制發(fā)送至所有其他端口。
路由表用來決定一個報(bào)文是否需要路由。路由表產(chǎn)生和存儲在網(wǎng)關(guān)的存儲器中。網(wǎng)關(guān)基于路由表分析域地址、子網(wǎng)掩碼和路由端口號,進(jìn)行路由操作。待路由的報(bào)文,可以指向另一個子網(wǎng)的控制單元,也可以指向網(wǎng)關(guān)端口。當(dāng)指向另一個子網(wǎng)的控制單元時(shí),網(wǎng)關(guān)將該報(bào)文發(fā)送至目標(biāo)子網(wǎng)中。當(dāng)指向網(wǎng)關(guān)端口時(shí),不路由,而上傳至網(wǎng)關(guān)控制器應(yīng)用層進(jìn)行數(shù)據(jù)處理。
圖1的網(wǎng)絡(luò)結(jié)構(gòu)中包括2個網(wǎng)關(guān)。網(wǎng)關(guān)1有3個端口,網(wǎng)關(guān)2有2個端口。對于網(wǎng)關(guān)1的端口3,滿足子網(wǎng)640/6和650/6的報(bào)文都需要路由,因此端口3子網(wǎng)的域地址和子網(wǎng)掩碼可以定義為640/5,見表2。
表2 端口3域地址選擇
將圖1各子網(wǎng)的域地址、子網(wǎng)掩碼和端口確認(rèn)后,形成路由表,見表3。
表3 路由表
網(wǎng)關(guān)收到發(fā)至不同子網(wǎng)端口的所有報(bào)文。如果目標(biāo)地址是0x7FF,則報(bào)文被廣播路由。正常路由算法被跳過。在端口接收到報(bào)文后,路由算法見圖2。
1)將目標(biāo)地址和本地端口的子網(wǎng)掩碼進(jìn)行按位與操作形成結(jié)果1。
2)將結(jié)果1與本地域地址相比較。域地址可存儲在節(jié)點(diǎn)的存儲器中,也可通過節(jié)點(diǎn)地址和子網(wǎng)掩碼計(jì)算獲得。如果結(jié)果等于域地址,接收到的報(bào)文是端口子網(wǎng)內(nèi)的本地報(bào)文,不路由,判斷結(jié)束。如果結(jié)果不等于域地址,進(jìn)入下一步路由分析。
圖1 4路子網(wǎng)的網(wǎng)絡(luò)結(jié)構(gòu)
圖2 路由算法
3)將目標(biāo)地址和路由端端口的子網(wǎng)掩碼進(jìn)行按位與操作形成結(jié)果2。
4)將結(jié)果2與路由端端口的域地址進(jìn)行比較,如果相等,算法跳至第7步,否則算法至第5步。
5)如果存在其他可路由端口,算法進(jìn)入下一步。否則不路由,判斷結(jié)束。
6)選擇下一個可路由端口,算法跳回第3步。
7)報(bào)文目標(biāo)地址與網(wǎng)關(guān)當(dāng)前路由端端口地址相比較。如果目標(biāo)地址是 網(wǎng)關(guān)當(dāng)前路由端端口的地址,算法至第9步。如果目標(biāo)地址不是網(wǎng)關(guān)當(dāng)前路由端端口的地址,算法至第8步。
8)從端口向子網(wǎng)發(fā)出報(bào)文。
9)指向網(wǎng)關(guān)的報(bào)文,網(wǎng)關(guān)在應(yīng)用層進(jìn)行處理。
如0x51A節(jié)點(diǎn)發(fā)送出目標(biāo)地址為0x642的報(bào)文。網(wǎng)關(guān)接收到報(bào)文后的處理步驟見下。
4.1 網(wǎng)關(guān)1
1)分析報(bào)文標(biāo)識符0x642。
2)網(wǎng)關(guān)路由決策,見表4。640不等于500,0x642不屬于本地報(bào)文,需要路由。
表4 網(wǎng)關(guān)1路由決策
3)網(wǎng)關(guān)路由分析,見表5。640不等于600,0x642不路由至端口2,而路由至端口3。4)檢測報(bào)文是否發(fā)送到網(wǎng)關(guān):0x642!=0x654。5)路由報(bào)文至端口3。
表5 網(wǎng)關(guān)1路由分析
4.2 網(wǎng)關(guān)2
1)分析報(bào)文標(biāo)識符0x642。
2)網(wǎng)關(guān)路由決策,見表6。640不等于650,0x642不屬于本地報(bào)文,需要路由。
表6 網(wǎng)關(guān)2路由決策
3)網(wǎng)關(guān)路由分析,見表7。0x642路由至端口2。
表7 網(wǎng)關(guān)2路由分析
4)檢測報(bào)文是否被網(wǎng)關(guān)路由:0x642!=0x641。
5)路由報(bào)文至端口2。
采用本文所述的路由設(shè)計(jì)方法,將網(wǎng)絡(luò)按照域定義,網(wǎng)關(guān)根據(jù)不同的標(biāo)識符路由至不同的域。提高了網(wǎng)關(guān)的兼容性和自動適配性,有利于網(wǎng)關(guān)通用化的開發(fā)。
(編輯 楊 景)
Gateway Routing Design Based on CAN Domain
FANG Wei-jia,WEI Wei,ZUO Zheng
(Products Development Department,F(xiàn)AW Car Co.,Ltd.,Changchun 130012,China)
This article introduces a gateway routing design method based on CAN domain. Using this method,the gateway universality may be increased.
message identifier;domain;routing;subnet mask
U463.6
A
1003-8639(2017)10-0038-03
2017-03-01
方偉家(1985-),男,碩士,工程師,從事總線設(shè)計(jì)、診斷設(shè)計(jì)、網(wǎng)關(guān)開發(fā)等工作;衛(wèi)威(1982-),男,碩士,工程師,從事總線設(shè)計(jì)、診斷設(shè)計(jì)、網(wǎng)關(guān)開發(fā)、項(xiàng)目管理等工作;左政(1985-),男,碩士,工程師,從事總線設(shè)計(jì)、診斷設(shè)計(jì)等工作。