胡浩
【摘 要】DNS服務(wù)發(fā)現(xiàn)和COAP的資源發(fā)現(xiàn)是IOT自動(dòng)配置的重要方法,本文根據(jù)幾個(gè)性能指標(biāo)比較分析基于coap和dns的服務(wù)發(fā)現(xiàn)協(xié)議,這些指標(biāo)包括協(xié)議開銷和發(fā)現(xiàn)功能。
【關(guān)鍵詞】服務(wù)發(fā)現(xiàn);資源發(fā)現(xiàn);協(xié)議開銷;發(fā)現(xiàn)功能
1.協(xié)議開銷
1.1 coap的協(xié)議開銷比較
假設(shè)在星型網(wǎng)絡(luò)中具有兩個(gè)CoAP服務(wù)器和一個(gè)CoAP客戶端,COAP服務(wù)器的服務(wù)路徑為/light/5/on,資源類型為rt=philips.light.on,分別比較分布式和集中式CoAP資源發(fā)現(xiàn)機(jī)制的協(xié)議開銷,對(duì)于集中式COAP,因?yàn)槊總€(gè)設(shè)備都必須獨(dú)立的發(fā)現(xiàn)RD并注冊(cè)于RD。協(xié)議開銷與設(shè)備數(shù)量成正比。對(duì)于具有大量設(shè)備的網(wǎng)絡(luò)來說,RD發(fā)現(xiàn)過程非常低效,因?yàn)橄嗤腞D發(fā)現(xiàn)信息必須獨(dú)立地傳輸多次。而RD查找開銷主要與查找響應(yīng)相關(guān),響應(yīng)中包括所有注冊(cè)設(shè)備資源的完整的路徑,例如
另一方面,對(duì)于COAP分布式發(fā)現(xiàn),節(jié)點(diǎn)不進(jìn)行RD發(fā)現(xiàn)和注冊(cè)。查找是由不可靠的多播(Mulighticast Lookup)執(zhí)行的。從總體上看,分布式優(yōu)于集中式。此外,分布式查找開銷較低,因?yàn)橹粋鬏斮Y源的路徑而不是完整的URI,例如;RT=“philips.light.on”,IP地址可以從數(shù)據(jù)包源地址推斷出來。
然而,分布式多播使用了一個(gè)ttl值,表示組播數(shù)據(jù)包可以遍歷的跳數(shù)。若ttl=1,多播請(qǐng)求只能由客戶端發(fā)送,而不能由任何服務(wù)器轉(zhuǎn)發(fā),可以保證較低的協(xié)議開銷,而多跳網(wǎng)絡(luò)中ttl>1,多播包就會(huì)被轉(zhuǎn)發(fā)多次,此時(shí)無法保證較低的協(xié)議開銷。此外,在遠(yuǎn)程客戶端上,將無法執(zhí)行多播發(fā)現(xiàn)。因此,多播方法更適合于在小型低功率網(wǎng)絡(luò)中執(zhí)行查找,這種網(wǎng)絡(luò)無需遠(yuǎn)程客戶端的發(fā)現(xiàn)?;蛘逺D可以作為客戶端使用多播查找來填充其目錄。這樣RD既可以主動(dòng)發(fā)現(xiàn)服務(wù)器資源,又可以為遠(yuǎn)程客戶端提供資源發(fā)現(xiàn)。
2.DNS-SD協(xié)議開銷比較
本節(jié)分析與DNS-SD協(xié)議相關(guān)聯(lián)的服務(wù)發(fā)現(xiàn)協(xié)議開銷。對(duì)發(fā)現(xiàn)過程的不同階段進(jìn)行了分析。即發(fā)布(public)、本地和全球的瀏覽(browse),本地和全球解析(resolution)。此外,分析了兩個(gè)不同的DNS-SD開源實(shí)現(xiàn)的開銷:Avahi[1]和輕量級(jí)多播DNS(LmDNS)[2]。Avahi是DNS-SD 基于Linux操作系統(tǒng)的mdns免費(fèi)實(shí)現(xiàn),而lmDNS是一種輕量級(jí)的mdns實(shí)現(xiàn),用于使用Contiki操作系統(tǒng)開發(fā)的支持IP的智能對(duì)象。
假設(shè)星型網(wǎng)絡(luò)由兩個(gè)服務(wù)器和一個(gè)客戶端組成??梢钥吹?,Avahi實(shí)現(xiàn)在發(fā)布的開銷很多。因?yàn)樗鼘l(fā)布分成探測(cè)消息和通告消息。探測(cè)消息最多發(fā)送三條消息來查詢服務(wù)實(shí)例名稱是否已經(jīng)被其他設(shè)備使用,當(dāng)檢測(cè)到服務(wù)實(shí)例名稱沖突時(shí),必須選擇新的服務(wù)實(shí)例名稱。如果沒有沖突,則發(fā)送通告消息,這導(dǎo)致相同的信息被發(fā)送了四次:探測(cè)消息最多發(fā)送三次TXT和SVR記錄,通告發(fā)送TXT、SVR和PTR。lmDNS探測(cè)消息只發(fā)一條消息。無沖突就發(fā)通告。lmDNS減小了開銷。
在瀏覽和解析方面,lmDNS在開銷方面再次優(yōu)于Avahi。這是因?yàn)锳vahi在響應(yīng)中包含了所有可用的記錄,而lmdns只包含了必要的信息。對(duì)于本地或全局(單播)瀏覽兩者開銷基本相當(dāng),綜合來看,Avahi只適合于邊界路由器而不適合于低功耗網(wǎng)絡(luò)。
3.DNS-SD與CoAP資源發(fā)現(xiàn)協(xié)議開銷比較
對(duì)比lmDNS與分布式CoAP的開銷,COAP的效率要高得多。在分布式情況下,由CoAP只執(zhí)行多播或單播查找,服務(wù)器網(wǎng)絡(luò)的開銷約為100-150字節(jié)。而mDNS在通告、瀏覽和解析階段,消息傳輸?shù)目傞_銷約為700字節(jié)。因此,lmdns是分布式CoAP七倍的開銷。因此,取決于網(wǎng)絡(luò)變化的頻率,由于連接性、移動(dòng)性、節(jié)點(diǎn)死亡等方面的變化,lmdns的較高開銷將增加設(shè)備的能耗并減少設(shè)備的壽命??傊珻oAP發(fā)現(xiàn)協(xié)議在開銷方面比DNS發(fā)現(xiàn)協(xié)議表現(xiàn)出更好的性能。只有在與現(xiàn)有域名系統(tǒng)快速集成時(shí)才考慮DNS服務(wù)發(fā)現(xiàn),一般可在后端(back-end)使用DNS-SD,現(xiàn)場(chǎng)使用CoAP,以減少開銷。
4.發(fā)現(xiàn)功能
CoAP使用?Key=Value一次查詢就能發(fā)現(xiàn)不同類型的資源。例如,為了查找具有兩種類型的資源的設(shè)備,可以將查詢編寫為:?rt=philips.light.on&RT=philips.light.dimmer,用于查找兼具光開關(guān)和調(diào)光功能的設(shè)備資源。另一方面,DNS一次只能查詢一種類型。
CoAP允許使用通配符模式,例如:?RT=core.rd*,以便獲取任何匹配core.rd的資源。DNS不支持通配符。
在發(fā)出發(fā)現(xiàn)請(qǐng)求后,CoAP直接提供資源URI。dns-sd發(fā)現(xiàn)提供服務(wù)實(shí)例。然后通過服務(wù)實(shí)例解析為IP地址或主機(jī)名。
總之,基于CoAP的資源發(fā)現(xiàn)允許一組更高效、更豐富的機(jī)制來執(zhí)行查找。任何實(shí)現(xiàn)CoAP的設(shè)備能夠執(zhí)行CoAP資源發(fā)現(xiàn),無需引入其他請(qǐng)求方法。對(duì)COAP-RD,end-point幾乎不需要額外的功能就能在RD中注冊(cè)或執(zhí)行查找。另一方面,dns-sd已經(jīng)是非嵌入式設(shè)備發(fā)現(xiàn)的事實(shí)標(biāo)準(zhǔn),使用DNS-sd允許中心化的服務(wù)發(fā)現(xiàn),也可以使用單播DNS方法執(zhí)行發(fā)現(xiàn)。由于dns-sd使用標(biāo)準(zhǔn)的dns數(shù)據(jù)包格式查詢,使用dns-sd的LoWPAN網(wǎng)絡(luò)將更易于與外部的dns快速集成,相較于mdns,mdns則需要額外的客戶端內(nèi)存來存儲(chǔ)從服務(wù)器接收到的服務(wù)發(fā)現(xiàn)信息。
【參考文獻(xiàn)】
[1] Avahi實(shí)現(xiàn) http://avahi.org/
[2] A. J. Jara, P. Martinez-Julia, A. Skarmeta. Light-Weight Mulighticast DNS and DNS-SD (lmDNS-SD): IPv6-Based Resource and Service Discovery for the Web of Things. Sixth International Conference on Innovative Mobile and Internet Services in Ubiquitous Computing (IMIS), 2012.