許 濤, 金曉軍
(上海船舶運(yùn)輸科學(xué)研究所 軍品分 所 ,上海200135)
隨著船舶自動(dòng)化系統(tǒng)向信息集成化——船舶綜合平臺(tái)管理系統(tǒng)(Integrated Platfor m Management System,IPMS)方向發(fā)展,船舶推進(jìn)監(jiān)控系統(tǒng)作為IPMS的分系統(tǒng),應(yīng)滿足全船異構(gòu)系統(tǒng)間互連、互通、互操作的要求,并解決網(wǎng)絡(luò)帶寬占有率過高引起的網(wǎng)絡(luò)延時(shí)、阻塞等問題。在基于IPMS的船舶推進(jìn)監(jiān)控系統(tǒng)中引入組播通信技術(shù)作為優(yōu)化帶寬的重要手段,可以節(jié)省網(wǎng)絡(luò)帶寬、提高數(shù)據(jù)傳送效率,有效地解決主干網(wǎng)絡(luò)堵塞等問題。
IPMS集成了推進(jìn)監(jiān)控、電站監(jiān)控、損管監(jiān)控、綜合導(dǎo)航、綜合艦橋和綜合決策等分系統(tǒng)。各分系統(tǒng)分別構(gòu)建各自的子網(wǎng),與平臺(tái)管理網(wǎng)絡(luò)構(gòu)成一體化信息網(wǎng)絡(luò)平臺(tái),實(shí)現(xiàn)數(shù)據(jù)共享(見圖1)。該系統(tǒng)采用工業(yè)以太網(wǎng),雙環(huán)形網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),為確保系統(tǒng)的可靠運(yùn)行,配置了2臺(tái)支持組播功能的工業(yè)以太網(wǎng)交換機(jī),底層網(wǎng)絡(luò)設(shè)備均配備支持組播功能的雙冗余以太網(wǎng)卡。
圖1 某型船綜合平臺(tái)管理系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)圖
船舶推進(jìn)監(jiān)控系統(tǒng)的網(wǎng)絡(luò)通信包括內(nèi)部數(shù)據(jù)交換和與IPMS其他分系統(tǒng)的數(shù)據(jù)通信,具有數(shù)據(jù)傳輸量大、單點(diǎn)發(fā)送多點(diǎn)接收等特點(diǎn)。通常采用單播通信方式時(shí),某些數(shù)據(jù)鏈路上會(huì)產(chǎn)生大量重復(fù)的數(shù)據(jù)包,導(dǎo)致網(wǎng)絡(luò)帶寬占有率高、數(shù)據(jù)傳輸效率低、服務(wù)器負(fù)載大;采用廣播通信方式時(shí),任一網(wǎng)絡(luò)設(shè)備發(fā)送的數(shù)據(jù)都將被傳送到所有在網(wǎng)設(shè)備,不能保障信息安全性,還可能由于路由回環(huán)引起嚴(yán)重的廣播風(fēng)暴。
為了滿足系統(tǒng)網(wǎng)絡(luò)通信的要求,針對(duì)IPMS的網(wǎng)絡(luò)傳輸數(shù)據(jù)量大、設(shè)備節(jié)點(diǎn)多、實(shí)時(shí)性要求高等特點(diǎn),船舶推進(jìn)監(jiān)控系統(tǒng)采用組播通信方式傳輸數(shù)據(jù)。組播通信是指在網(wǎng)際協(xié)議(Inter net Pr otocol,IP)網(wǎng)絡(luò)中將數(shù)據(jù)包以盡力傳送的形式發(fā)送到網(wǎng)絡(luò)中的某個(gè)確定節(jié)點(diǎn)子集,它在源主機(jī)和目標(biāo)主機(jī)之間實(shí)現(xiàn)了單點(diǎn)對(duì)多點(diǎn)網(wǎng)絡(luò)連接,并且只向有需求的目標(biāo)主機(jī)發(fā)送其所需數(shù)據(jù)包,這樣既能1次將數(shù)據(jù)傳輸給多個(gè)有需求的主機(jī),又能保證不影響未入組主機(jī)的通信。此外,組播通信可以給處在不同子網(wǎng)中的目標(biāo)主機(jī)發(fā)送同一數(shù)據(jù)包。
1)源主機(jī)和目標(biāo)主機(jī)的網(wǎng)絡(luò)接口卡以及其間所有網(wǎng)絡(luò)設(shè)備必須支持組播,且相互兼容。
2)建立有效的通知和查詢機(jī)制,即因特網(wǎng)組管理協(xié)議(Inter net Gr oup Message Pr otocol,IGMP)。主機(jī)利用通知機(jī)制把自己參與的組播組通知給路由器;路由器利用查詢機(jī)制知曉本地子網(wǎng)中是否有屬于該組播組的主機(jī)。
3)具有有效的IP地址分配策略,確保將IP組播地址的28位地址空間映射到介質(zhì)訪問控制(Media Access Contr ol,MAC)組播地址的23位地址空間。
組播通信采用的是用戶數(shù)據(jù)報(bào)(User Datagram Protocol,UDP)連接方式,通信過程中,相同的組播數(shù)據(jù)流在每條鏈路上最多只有1份(見圖2)。源主機(jī)向組播組地址發(fā)送報(bào)文,只有加入到該組播組的目標(biāo)主機(jī)A、C可以接收到這份報(bào)文,具體通信過程如下:
源主機(jī)向相鄰路由器發(fā)送1條IGMP入組消息,相鄰路由器收到后,動(dòng)態(tài)跟蹤組播組,使用組播路由協(xié)議在源主機(jī)和目標(biāo)主機(jī)各路由器間建立組播生成樹,從源主機(jī)伸展到目標(biāo)主機(jī)A、C。源主機(jī)和目標(biāo)主機(jī)之間建立組播路由后,數(shù)據(jù)報(bào)文就從源主機(jī)沿著組播路由傳輸給各目標(biāo)主機(jī)。目標(biāo)主機(jī)接收到源主機(jī)的數(shù)據(jù)后,網(wǎng)絡(luò)接口卡濾出組播群組的MAC地址,網(wǎng)絡(luò)驅(qū)動(dòng)器對(duì)此地址作出反應(yīng)后把數(shù)據(jù)傳輸?shù)骄W(wǎng)絡(luò)協(xié)議棧,最后進(jìn)入到應(yīng)用層,實(shí)現(xiàn)數(shù)據(jù)通信。
圖2 組播通信流示意圖
IGMP協(xié)議用于實(shí)現(xiàn)群組成員之間的網(wǎng)絡(luò)通信功能,封裝在IP報(bào)文中,協(xié)議號(hào)為2。IGMP協(xié)議具有3種版本:IGMPv1中定義了基本的組成員查詢和報(bào)告過程;IGMPv2增加了組成員快速離開的機(jī)制;IGMPv3增強(qiáng)了主機(jī)控制能力,支持指定源/組功能。
主機(jī)使用IGMP協(xié)議通知路由器加入組播組;路由器使用IGMP協(xié)議查詢本地子網(wǎng)中是否有屬于本地組播組的主機(jī);路由器之間使用IGMP協(xié)議建立組播路由,傳輸組播群成員關(guān)系,實(shí)現(xiàn)跨網(wǎng)絡(luò)的組播。
組播通信中的組播地址包括IP組播地址和以太網(wǎng)組播地址。IP組播地址采用IPv4中的D類地址,范圍為[224.0.0.0,239.255.255.255]。其中[224.0.0.0,224.0.0.255]是局部鏈接組播地址,用于局域網(wǎng),路由器不轉(zhuǎn)發(fā)該范圍內(nèi)的IP包;[224.0.1.0,238.255.255.255]是預(yù)留組播地址,用戶可用組播地址,全網(wǎng)范圍內(nèi)有效;[239.0.0.0,239.255.255.255]是管理權(quán)限組播地址,內(nèi)部使用,用于限制組播范圍。以太網(wǎng)組播地址由IP組播地址映射取得,即將IP組播地址的低23位代替特定以太網(wǎng)地址中的低23位。
Vx Wor ks是美國(guó)風(fēng)河公司開發(fā)的基于優(yōu)先級(jí)搶占的高性能嵌入式實(shí)時(shí)操作系統(tǒng),具有高速的任務(wù)切換和快速的中斷反應(yīng)能力,實(shí)時(shí)性好、可靠性高。Vx Wor ks提供了完備的網(wǎng)絡(luò)功能,網(wǎng)絡(luò)協(xié)議棧遵循工業(yè)標(biāo)準(zhǔn)BSD4.4,提供socket編程接口。Vx Wor ks網(wǎng)絡(luò)層次分為應(yīng)用層、網(wǎng)絡(luò)協(xié)議層、多路復(fù)合(multiplexer,MUX)層和數(shù)據(jù)鏈路層(見圖3)。
圖3 Vx Wor ks網(wǎng)絡(luò)層次結(jié)構(gòu)圖
MUX層是Vx Wor ks為了實(shí)現(xiàn)多驅(qū)動(dòng)和多協(xié)議接口增加的中間層,介于網(wǎng)絡(luò)協(xié)議層和數(shù)據(jù)鏈路層之間,屏蔽了網(wǎng)絡(luò)協(xié)議層和數(shù)據(jù)鏈路層的直接交互,為兩層提供統(tǒng)一、規(guī)范的網(wǎng)絡(luò)接口。MUX層不存在自己的協(xié)議,也不會(huì)在傳輸?shù)臄?shù)據(jù)包上添加該層次的任何信息,支持增強(qiáng)型網(wǎng)絡(luò)驅(qū)動(dòng)(Enhanced Net wor k Driver,END)和網(wǎng)絡(luò)協(xié)議包(Net wor k Pr otocol Tool kit,NPT)兩種形式的驅(qū)動(dòng)程序,其接口采用END實(shí)現(xiàn)。
在Vx Wor ks環(huán)境下實(shí)現(xiàn)組播通信(見圖4)。
1)調(diào)用函數(shù)ip Attach()將IP協(xié)議綁定到MUX層,并設(shè)置子網(wǎng)掩碼和分配IP地址。
2)調(diào)用函數(shù)socket()創(chuàng)建UDP套接字。
3)調(diào)用函數(shù)bind()綁定套接字與本地地址和端口號(hào)。
4)調(diào)用函數(shù)setsocketopt()配置套接字,通過套接字IP_ADD_M(jìn)EMBERSHIP選項(xiàng)功能讓主機(jī)入組,設(shè)置方法如下:
i mr_interface為INADDR_ANY時(shí),選擇默認(rèn)組播接口。主機(jī)未入組時(shí)可以發(fā)送數(shù)據(jù),不能接收組內(nèi)數(shù)據(jù)。
5)利用IP_M(jìn)ULTICAST_TTL選項(xiàng)功能設(shè)置數(shù)據(jù)包生存時(shí)間,取值范圍為[0,255]。當(dāng)默認(rèn)值為1時(shí),組播數(shù)據(jù)只能在同一網(wǎng)段內(nèi)傳輸。設(shè)置方法為:setsockopt(sock,IPPROTO_IP,IP_M(jìn)ULTICAST_TTL,&ttl,sizeof(ttl));
6)利用IP_M(jìn)ULTICAST_LOOP選項(xiàng)功能控制數(shù)據(jù)回傳。設(shè)置方法為:setsockopt(sock,IPPROTO_IP,IP_M(jìn)ULTICAST_LOOP,&loop,sizeof(loop));
當(dāng)loop值為0時(shí),禁止回傳;當(dāng)loop值為1時(shí),允許回傳。
7)調(diào)用函數(shù)route Add()添加靜態(tài)路由表項(xiàng)。
8)接收和發(fā)送數(shù)據(jù)。
9)通過套接字IP_DROP_M(jìn)EMBERSHIP選項(xiàng)功能退出組播組,其設(shè)置方法為:setsockopt(sock,IPPROTP_IP,IP_DROP_M(jìn)EMBERSHIP,&mreq,sizeof(sreq))
10)調(diào)用close()函數(shù)關(guān)閉套接字。
根據(jù)實(shí)際情況增加網(wǎng)絡(luò)初始化組件、網(wǎng)絡(luò)設(shè)備組件和網(wǎng)絡(luò)協(xié)議組件等Vx Wor ks提供的網(wǎng)絡(luò)組件,即可在Vx Wor ks環(huán)境下實(shí)現(xiàn)組播通信。
圖4 Vx Wor ks下實(shí)現(xiàn)組播通信的流程圖
基于Vx Wor ks的組播通信方式現(xiàn)已應(yīng)用于某型船主推進(jìn)裝置監(jiān)控系統(tǒng)中,實(shí)際應(yīng)用證明,采用組播技術(shù)進(jìn)行網(wǎng)絡(luò)通信,可以有效地節(jié)省網(wǎng)絡(luò)帶寬、降低網(wǎng)絡(luò)流量、避免網(wǎng)絡(luò)堵塞。
[1] Beau Williamson.IP組播網(wǎng)絡(luò)設(shè)計(jì)開發(fā)[M].顧金星,譯.第1卷.北京:電子工業(yè)出版社,2000.
[2] 陳智育.Vx Wor ks程序開發(fā)實(shí)踐[M].北京:人民郵電出版社,2004.
[3] 張楊,于銀濤.Vx Wor ks內(nèi)核、設(shè)備驅(qū)動(dòng)與BSP開發(fā)詳解[M].北京:人民郵電出版社,2009.
[4] 呂秋云.組播技術(shù)及應(yīng)用系統(tǒng)的實(shí)現(xiàn)[EB/OL].[2012-01-30].http://tech.c114.net/166/a138024.ht ml.