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