国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

可靠IP組播通信中間件研究與實(shí)現(xiàn)

2012-08-06 12:51:40李磊陳靜
關(guān)鍵詞:重傳中間件監(jiān)聽

李磊 陳靜

鄭州大學(xué)信息工程學(xué)院 河南 450001

0 引言

目前,多數(shù)商品期貨交易所的行情發(fā)布主要使用TCP/IP進(jìn)行可靠數(shù)據(jù)的傳輸。TCP通信需要建立端對端的連接,在行情發(fā)布中,傳輸?shù)臄?shù)據(jù)大部分是重復(fù)的,這些重復(fù)傳輸?shù)臄?shù)據(jù)連接占用大量網(wǎng)絡(luò)帶寬,隨著交易規(guī)模擴(kuò)大,就會出現(xiàn)網(wǎng)絡(luò)容量上的瓶頸。

IP組播提供一對多和多對多的數(shù)據(jù)通信,可以減少網(wǎng)絡(luò)中重復(fù)數(shù)據(jù)傳輸個(gè)數(shù)?;赨DP協(xié)議的IP組播進(jìn)行數(shù)據(jù)傳輸是不可靠的,針對這個(gè)問題,研究并設(shè)計(jì)了基于IP組播的可靠組播通信中間件。

1 可靠組播技術(shù)概述

可靠組播技術(shù)是基于IP組播的基礎(chǔ)之上,加上報(bào)文的差錯(cuò)檢測和差錯(cuò)恢復(fù)機(jī)制,保證了數(shù)據(jù)傳輸?shù)目煽俊?/p>

1.1 IP組播的特點(diǎn)

IP組播是基于UDP協(xié)議,使用D類地址,把數(shù)據(jù)分組發(fā)給網(wǎng)絡(luò)中的一組主機(jī)。它具有以下幾個(gè)特點(diǎn):

(1) 盡力傳遞,不保證接收。

(2) 無安全機(jī)制,任何主機(jī)都可以加入組播組中。

(3) 不提供擁塞控制和流量控制。

(4) 一次發(fā)送,多次接收。

雖然IP組播存在著一定的問題,但 “一次發(fā)送,多次接收”的網(wǎng)絡(luò)數(shù)據(jù)傳輸效率,加上由此引伸出的網(wǎng)絡(luò)的可伸縮性的優(yōu)點(diǎn),是單播中無法企及的。如果對IP組播技術(shù)進(jìn)行可靠性的改進(jìn),組播技術(shù)在實(shí)際應(yīng)用中有著廣泛的空間。

1.2 IP可靠組播關(guān)鍵技術(shù)

雖然IP組播存在著一些弱點(diǎn),但在其基礎(chǔ)上加上差錯(cuò)恢復(fù)技術(shù)和擁塞控制機(jī)制及其他安全手段,可以保證數(shù)據(jù)在傳輸過程中的可靠性和穩(wěn)定性,以在實(shí)際應(yīng)用中使用??煽拷M播可以用下式表示:

可靠組播=IP組播+[差錯(cuò)檢測恢復(fù)]+[擁塞控制]

2 可靠組播通信中間件協(xié)議設(shè)計(jì)

2.1 可靠組播通信中間件的特性

本文可靠組播通信中間件是面向中小型交易的,它在實(shí)際應(yīng)用做作為行情發(fā)布的通信支持。因此,它是一個(gè)針對性比較強(qiáng)的組播通信中間件。具體表現(xiàn)為以下特征:

(1) 平面組織結(jié)構(gòu):平面組織結(jié)構(gòu)和層次性組織結(jié)構(gòu)相比,通信的規(guī)模比較小,但是報(bào)文的傳送速度比較快,報(bào)文可以直接到達(dá)。它是基于實(shí)際中要求通信規(guī)模不大,但是實(shí)時(shí)性能要求很高的特點(diǎn)進(jìn)行設(shè)計(jì)的。

(2) 報(bào)文拆分合并功能:在數(shù)據(jù)傳輸?shù)倪^程中,由于來自應(yīng)用程序的單個(gè)數(shù)據(jù)可能超過UDP報(bào)文的最大荷載長度,因此為了保證數(shù)據(jù)能夠完整的傳輸,需要對其進(jìn)行拆分,與此同時(shí),在接收端提供對拆分過的數(shù)據(jù)進(jìn)行合并的功能。

(3) 可選的小報(bào)文的合并功能:為了提高組播的傳輸效率,提高網(wǎng)絡(luò)鏈路的利用率,提供了對小報(bào)文的可選合并功能,當(dāng)網(wǎng)絡(luò)不好而接收方和發(fā)送方有比較充裕的時(shí)間,則可以開啟此功能,提高傳輸效率。此功能屬于可選項(xiàng),在實(shí)際應(yīng)用中可以選擇是否開啟。

(4) 單可靠組播通道,多地址傳送:為了滿足正常數(shù)據(jù)報(bào)文和重傳數(shù)據(jù)報(bào)文的合理傳輸,并能夠支持發(fā)送端和接收端的雙向通信功能,將其多播傳送地址分開,有專門負(fù)責(zé)正常數(shù)據(jù)傳送和重傳報(bào)文的發(fā)送地址。

(5) 單播組播可選恢復(fù)機(jī)制:對于錯(cuò)誤報(bào)文的發(fā)現(xiàn)和恢復(fù)的情況,都分別提供了單播和組播的功能實(shí)現(xiàn),上層應(yīng)用可以根據(jù)對于錯(cuò)誤報(bào)文的需要進(jìn)行合理選擇。在默認(rèn)使用組播的情況下,協(xié)議采用組播完成錯(cuò)誤報(bào)文的恢復(fù)機(jī)制。

2.2 協(xié)議報(bào)文設(shè)計(jì)

協(xié)議數(shù)據(jù)報(bào)文的設(shè)計(jì)分為兩類:可靠組播中的UDP報(bào)文和可靠組播數(shù)據(jù)報(bào)文。

(1) UDP報(bào)文:它由UDP報(bào)文頭和可靠組播數(shù)據(jù)報(bào)文組成??煽拷M播數(shù)據(jù)報(bào)文填充UDP報(bào)文,根據(jù)填充規(guī)則,可以是一個(gè)可靠組播數(shù)據(jù)報(bào)文也可以是多個(gè)可靠組播數(shù)據(jù)包。如圖1所示。

圖1 包含多個(gè)組播報(bào)文的UDP包結(jié)構(gòu)

(2) 可靠組播數(shù)據(jù)報(bào)文:它是由可靠組播報(bào)文頭和可靠組播數(shù)據(jù)組成。可靠組播報(bào)文頭是可靠組播設(shè)計(jì)的重點(diǎn),它需要滿足不同要求的數(shù)據(jù)傳輸,并要求對報(bào)文進(jìn)行快速處理,因此報(bào)文頭部分采取定長,并提供報(bào)文類型、服務(wù)質(zhì)量、優(yōu)先級、是否數(shù)據(jù)進(jìn)行拆分等信息??煽拷M播報(bào)文頭部結(jié)構(gòu)如圖2所示。

(3) 主要報(bào)文類型:在可靠組播中,提供了數(shù)據(jù)報(bào)文和控制報(bào)文。主要的數(shù)據(jù)報(bào)文為正常數(shù)據(jù)報(bào)文,重同步請求報(bào)文,重同步數(shù)據(jù)報(bào)文,心跳數(shù)據(jù)報(bào)文,重開始發(fā)送報(bào)文等,并對同等條件下的報(bào)文提供不同的優(yōu)先級。

2.3 關(guān)鍵技術(shù)

可靠組播通信中間件的設(shè)計(jì)中,為了保證數(shù)據(jù)的可靠傳輸,也必須用合理的差錯(cuò)恢復(fù)和擁塞控制的方法。

(1) 差錯(cuò)恢復(fù)和差錯(cuò)檢測的處理方法

采用基于NACK的方式來進(jìn)行差錯(cuò)檢測和恢復(fù)。數(shù)據(jù)接收端利用協(xié)議中設(shè)計(jì)的序列號字段檢測,當(dāng)收到的序列號不是期待的,可以認(rèn)為數(shù)據(jù)丟失。由于在傳輸過程中,有可能并不是一個(gè)接收端丟失數(shù)據(jù),因此接收端等待一定的時(shí)間間隔,才向發(fā)送端請求數(shù)據(jù)重傳。

為保證傳送的效率,發(fā)送端對發(fā)送數(shù)據(jù)進(jìn)行緩沖管理,當(dāng)有數(shù)據(jù)重傳請求時(shí),可以快速給出響應(yīng)。

(2) 擁塞控制的處理方法

在傳輸過程中,采用基于速率的擁塞控制方法,采用的擁塞控制方式為LHR。當(dāng)有NACK到達(dá)發(fā)收端時(shí),降低發(fā)送速率,當(dāng)沒有收到NACK時(shí),增加發(fā)送速率,從而保證了能夠及時(shí)處理大量的數(shù)據(jù)。

為保證數(shù)據(jù)的平滑發(fā)送,提供最大和最小的發(fā)送速率,在最大最小發(fā)送速率中提供若干個(gè)速度等級用于調(diào)節(jié)發(fā)送速率平衡,從而很好的控制傳輸速率,不讓網(wǎng)絡(luò)發(fā)生劇烈“抖動(dòng)”。

3 可靠組播通信中間件的實(shí)現(xiàn)

3.1 實(shí)現(xiàn)框架

本文可靠組播協(xié)議最終的實(shí)現(xiàn)是以邏輯流為基本通信單位的通信中間件。在一個(gè)邏輯流中,數(shù)據(jù)發(fā)送端和數(shù)據(jù)接收端按照可靠組播協(xié)議進(jìn)行通信,為了保證通信的實(shí)時(shí)性和數(shù)據(jù)處理的快速行,對數(shù)據(jù)發(fā)送、恢復(fù)、合并、拆分等過程采用多線程的機(jī)制進(jìn)行協(xié)調(diào)處理。

對于一個(gè)邏輯流,按照任務(wù)的不同,分為數(shù)據(jù)接收端和數(shù)據(jù)發(fā)送端。其中數(shù)據(jù)發(fā)送端在一個(gè)邏輯流中有且只有一個(gè),數(shù)據(jù)接收端可以是多個(gè)。數(shù)據(jù)發(fā)送端作為數(shù)據(jù)的輸出端,接收端即為一個(gè)數(shù)據(jù)的出口,它把數(shù)據(jù)給應(yīng)用程序使用。一個(gè)完整的邏輯流包括發(fā)送端和接收端,以及協(xié)調(diào)發(fā)送和接收端的一些公共模塊,根據(jù)可靠組播協(xié)議的設(shè)計(jì),實(shí)現(xiàn)一個(gè)邏輯流的結(jié)構(gòu)如圖3所示。

圖3 邏輯流的層次結(jié)構(gòu)

在一個(gè)邏輯流中,最重要的部分為邏輯流的發(fā)送端和接收端,下面分別對發(fā)送端和接收端的實(shí)現(xiàn)進(jìn)行描述。

3.2 數(shù)據(jù)發(fā)送端

發(fā)送端借助于計(jì)時(shí)器,對上層應(yīng)用的數(shù)據(jù)進(jìn)行拆分/合并,并對發(fā)送的數(shù)據(jù)進(jìn)行緩存,同時(shí)監(jiān)聽重傳請求,對請求進(jìn)行響應(yīng)。它包括以下數(shù)據(jù)結(jié)構(gòu)和線程:

(1) 主要數(shù)據(jù)結(jié)構(gòu)

① 上層應(yīng)用數(shù)據(jù)隊(duì)列:當(dāng)應(yīng)用程序調(diào)用發(fā)送數(shù)據(jù)的函數(shù)接口時(shí),即把應(yīng)用程序的數(shù)據(jù)放到應(yīng)用數(shù)據(jù)隊(duì)列中。該隊(duì)列使用一個(gè)鏈表結(jié)構(gòu)來管理這些大小不一的數(shù)據(jù)。

② 數(shù)據(jù)發(fā)送隊(duì)列:經(jīng)過發(fā)送端的數(shù)據(jù)處理線程處理以后,把數(shù)據(jù)進(jìn)行拆分或者合并,把數(shù)據(jù)整理成可以直接發(fā)送的數(shù)據(jù)包,放入到發(fā)送隊(duì)列中。發(fā)送隊(duì)列可以被發(fā)送線程直接發(fā)送。

③ 已發(fā)送數(shù)據(jù)的緩存隊(duì)列:對于已發(fā)送的數(shù)據(jù),按照設(shè)置進(jìn)行存儲,用于數(shù)據(jù)重同步時(shí)使用。這里需要注意的是,并不是對所有的數(shù)據(jù)都進(jìn)行存儲,而是根據(jù)緩沖區(qū)大小參數(shù)設(shè)置,當(dāng)緩沖區(qū)超過此參數(shù)時(shí),就把最早進(jìn)入該隊(duì)列的數(shù)據(jù)進(jìn)行刪除,添加新的數(shù)據(jù)節(jié)點(diǎn)。

④ 重傳請求隊(duì)列:當(dāng)重傳監(jiān)聽線程監(jiān)聽到重傳請求時(shí),把重傳請求放入重傳請求隊(duì)列。

(2) 主要線程

① 發(fā)送數(shù)據(jù)處理線程:對上層應(yīng)用程序進(jìn)行合并、拆分處理,并且添加相應(yīng)的可靠組播頭,組裝成待發(fā)送數(shù)據(jù),填充到可靠組播的數(shù)據(jù)發(fā)送隊(duì)列里。

② 發(fā)送線程:對數(shù)據(jù)發(fā)送隊(duì)列進(jìn)行發(fā)送,同時(shí)把已發(fā)送的數(shù)據(jù)緩存到已發(fā)送數(shù)據(jù)的緩存隊(duì)列中。

③ 監(jiān)聽重同步線程:當(dāng)監(jiān)聽線程監(jiān)聽到重同步請求時(shí),為了繼續(xù)監(jiān)聽數(shù)據(jù),此時(shí)需要把監(jiān)聽的數(shù)據(jù)存儲到重同步請求隊(duì)列。

④ 重同步處理線程:對重同步請求隊(duì)列中的數(shù)據(jù)進(jìn)行處理,它從已發(fā)送緩存中查找數(shù)據(jù),根據(jù)查找結(jié)果,進(jìn)行重同步的恢復(fù)或者其他處理。

數(shù)據(jù)發(fā)送端主要處理兩個(gè)主要工作:數(shù)據(jù)發(fā)送和數(shù)據(jù)恢復(fù)與重傳。它倆緊密聯(lián)系,并且提供數(shù)據(jù)的流量控制。流量控制部分主要放在監(jiān)聽重同步線程中實(shí)現(xiàn),它的實(shí)現(xiàn)方法如下:數(shù)據(jù)的發(fā)送提供不同的速率,監(jiān)聽重同步線程發(fā)現(xiàn)有數(shù)據(jù)丟失情況,則降低發(fā)送速率,沒有重傳請求時(shí),增大發(fā)送速率,從而達(dá)到數(shù)據(jù)的平穩(wěn)傳輸。

3.3 數(shù)據(jù)接收端

數(shù)據(jù)接收端負(fù)責(zé)接收并分析數(shù)據(jù),提供差錯(cuò)檢測功能,同時(shí)對數(shù)據(jù)合并或者拆分,提交到上層應(yīng)用程序。它主要包括以下數(shù)據(jù)結(jié)構(gòu)和線程:

(1) 主要數(shù)據(jù)結(jié)構(gòu)

① 接收數(shù)據(jù)隊(duì)列:用于緩存接收到的數(shù)據(jù)包。它由數(shù)據(jù)接收線程接收,數(shù)據(jù)處理線程進(jìn)行處理。

② 應(yīng)用數(shù)據(jù)隊(duì)列:接收端數(shù)據(jù)處理線程對接收到的數(shù)據(jù)包進(jìn)行處理,并對處理過的數(shù)據(jù)進(jìn)行緩存,這個(gè)緩存隊(duì)列就是應(yīng)用數(shù)據(jù)隊(duì)列,它是提交給應(yīng)用程序的數(shù)據(jù)隊(duì)列。

③ 重同步請求隊(duì)列:當(dāng)檢查到序列號丟失時(shí),則發(fā)送數(shù)據(jù)差錯(cuò)的恢復(fù)請求,即數(shù)據(jù)的重同步請求,該請求的報(bào)文被放入到重同步請求隊(duì)列,由重同步請求線程進(jìn)行處理。

(2) 主要線程

① 數(shù)據(jù)接收線程:負(fù)責(zé)接收數(shù)據(jù),并對不同類型的報(bào)文做出不同的處理。對數(shù)據(jù)報(bào)文,放入到接收數(shù)據(jù)隊(duì)列。并負(fù)責(zé)檢測報(bào)文是否丟失。

② 數(shù)據(jù)處理線程:對接收的數(shù)據(jù)隊(duì)列中的數(shù)據(jù)進(jìn)行分析,并根據(jù)需要對數(shù)據(jù)進(jìn)行合并或者拆分操作,對處理過的數(shù)據(jù)放入到應(yīng)用數(shù)據(jù)隊(duì)列。

③ 重同步請求線程:對丟失的報(bào)文進(jìn)行重同步請求,它對重同步請求隊(duì)列掃描,當(dāng)有重同步請求時(shí),發(fā)送重同步請求。

在一次接收過程中,接收部分的各個(gè)模塊之間進(jìn)行的協(xié)調(diào)關(guān)系,如圖4所示。

圖4 接收端接收數(shù)據(jù)的處理過程

4 性能測試結(jié)果

對網(wǎng)絡(luò)協(xié)議的測試,目前主要的測試方法包括實(shí)際測量,網(wǎng)絡(luò)模擬和數(shù)學(xué)分析等,每個(gè)測試的側(cè)重點(diǎn)都不盡相同。針對可靠組播通信中間件在實(shí)際中使用的情況,主要采用實(shí)際測量的方法測試。

4.1 測試方法及環(huán)境

4.1.1 測試方法

這里僅對組播測試進(jìn)行吞吐量的測試,在這個(gè)過程中,采用了實(shí)際的數(shù)據(jù)與理論上的吞吐量進(jìn)行對比。

理論上的吞吐量用總的數(shù)據(jù)除以數(shù)據(jù)發(fā)送的時(shí)間,即得到理論上的吞吐量。

實(shí)際的吞吐量采用實(shí)際中的參數(shù)進(jìn)行測試,假設(shè)每個(gè)發(fā)送周期都能將發(fā)送窗口大小數(shù)量的報(bào)文發(fā)送出去,并且接收端都正確收到,在沒有數(shù)據(jù)重傳的情況下,利用發(fā)送時(shí)延計(jì)算出每秒鐘發(fā)送次數(shù),然后同每次發(fā)送的數(shù)據(jù)量作乘法運(yùn)算,得出系統(tǒng)的吞吐量,可以通過對其進(jìn)行設(shè)置以調(diào)節(jié)發(fā)送端吞吐量。計(jì)算公式為:

公式中各參數(shù)的意義為:

Throughput(bps)—— 代表發(fā)送端的吞吐量;

PacketSize——代表每個(gè)數(shù)據(jù)包最大數(shù)據(jù)載荷,內(nèi)部參數(shù);

Windowsize—— 代表發(fā)送窗口大小,即每次發(fā)送數(shù)據(jù)包個(gè)數(shù),內(nèi)部參數(shù);

Timedelay——代表發(fā)送時(shí)延,以毫秒作為計(jì)時(shí)單位,內(nèi)部參數(shù)。

上述計(jì)算方法是理想狀態(tài)下對吞吐量的計(jì)算,并未考慮報(bào)文丟失,但在實(shí)際情況中,系統(tǒng)中會出現(xiàn)不定量的丟包情況。因此,上述方法不能精確反映系統(tǒng)的性能,隨著丟包率的增大,實(shí)際的吞吐量將會與計(jì)算結(jié)果相差越來越大,理想狀態(tài)下的吞吐量計(jì)算值只能作為參考值,反映吞吐量的上界。

4.1.2 測試環(huán)境

實(shí)驗(yàn)在沒有他人使用的網(wǎng)絡(luò)的情況下進(jìn)行,網(wǎng)絡(luò)環(huán)境為帶寬為100Mbps的局域網(wǎng)。發(fā)送主機(jī)和4臺接收主機(jī)均采用使用的是Redhat Linux操作系統(tǒng),機(jī)器配置均為512M內(nèi)存,2.8GHz奔騰CPU。

4.2 測試結(jié)果及分析

在多種配置下組播傳輸一個(gè)2M字節(jié)大小的數(shù)據(jù)塊,其性能,參數(shù),實(shí)驗(yàn)吞吐量,理論吞吐量如表1所示。

表1 實(shí)驗(yàn)數(shù)據(jù)對比表

實(shí)驗(yàn)結(jié)果表明,在該組數(shù)據(jù)中,觀察到的實(shí)驗(yàn)數(shù)據(jù)與預(yù)期數(shù)據(jù)比較吻合,一般情況下對協(xié)議參數(shù)設(shè)置在合理范圍內(nèi)均能達(dá)到較好的運(yùn)行效果。

5 結(jié)束語

本文在分析IP組播的基礎(chǔ)上,研究了可靠組播的特點(diǎn),并結(jié)合實(shí)際,完成可靠組播通信組件的設(shè)計(jì)。目前可靠組播通信組件已在行情發(fā)布中投入使用,運(yùn)行穩(wěn)定。下一步將進(jìn)行可靠組播通用性的研究,使其能夠應(yīng)用于多種應(yīng)用場景。

[1] RFC2357: IETF Criteria for Evaluating Reliable Multicast Transport and Application Protocols. 1998.

[2] Juan-Mariano de Goyeneche. Multicast over TCP/IP HowTo[M].v1.0. March 1998.

[3] J.Widmer, R.Denda, and M.Mauve. A Survey on TCP-Friendly Congestion Control. IEEE NetWork, May/June 2001.

[4] 徐恪,吳建平,徐明偉.高等計(jì)算機(jī)網(wǎng)絡(luò).機(jī)械工業(yè)出版社.2003.

猜你喜歡
重傳中間件監(jiān)聽
千元監(jiān)聽風(fēng)格Hi-Fi箱新選擇 Summer audio A-401
面向異構(gòu)網(wǎng)絡(luò)的多路徑數(shù)據(jù)重傳研究?
RFID中間件技術(shù)及其應(yīng)用研究
電子制作(2018年14期)2018-08-21 01:38:10
基于VanConnect中間件的設(shè)計(jì)與開發(fā)
電子測試(2018年10期)2018-06-26 05:54:02
網(wǎng)絡(luò)監(jiān)聽的防范措施
電子制作(2017年20期)2017-04-26 06:58:02
應(yīng)召反潛時(shí)無人機(jī)監(jiān)聽航路的規(guī)劃
數(shù)據(jù)鏈路層的選擇重傳協(xié)議的優(yōu)化改進(jìn)
中間件在高速公路領(lǐng)域的應(yīng)用
局域網(wǎng)監(jiān)聽軟件的設(shè)計(jì)
河南科技(2014年5期)2014-02-27 14:08:21
一種支持智能環(huán)境構(gòu)建的中間件
商洛市| 灌南县| 沧源| 司法| 桓仁| 鲁甸县| 金阳县| 扎兰屯市| 六枝特区| 黎川县| 华坪县| 任丘市| 含山县| 上饶县| 溆浦县| 宁南县| 名山县| 贵溪市| 奉贤区| 河北区| 元谋县| 措美县| 从江县| 卢氏县| 乌兰察布市| 肃南| 镇平县| 天长市| 车险| 南安市| 博湖县| 申扎县| 盘山县| 望谟县| 家居| 定陶县| 自治县| 新沂市| 牡丹江市| 满洲里市| 镇江市|