• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    可靠IP組播通信中間件研究與實現(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ī)模擴大,就會出現(xiàn)網(wǎng)絡(luò)容量上的瓶頸。

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

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

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

    1.1 IP組播的特點

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2.2 協(xié)議報文設(shè)計

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    3.1 實現(xiàn)框架

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

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

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

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

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

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

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

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

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

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

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

    (2) 主要線程

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

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

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

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

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

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

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

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

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

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

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

    (2) 主要線程

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

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

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

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

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

    4 性能測試結(jié)果

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

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

    4.1.1 測試方法

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

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

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

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

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

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

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

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

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

    4.1.2 測試環(huán)境

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

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

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

    表1 實驗數(shù)據(jù)對比表

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

    5 結(jié)束語

    本文在分析IP組播的基礎(chǔ)上,研究了可靠組播的特點,并結(jié)合實際,完成可靠組播通信組件的設(shè)計。目前可靠組播通信組件已在行情發(fā)布中投入使用,運行穩(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] 徐恪,吳建平,徐明偉.高等計算機網(wǎng)絡(luò).機械工業(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è)計與開發(fā)
    電子測試(2018年10期)2018-06-26 05:54:02
    網(wǎng)絡(luò)監(jiān)聽的防范措施
    電子制作(2017年20期)2017-04-26 06:58:02
    應(yīng)召反潛時無人機監(jiān)聽航路的規(guī)劃
    數(shù)據(jù)鏈路層的選擇重傳協(xié)議的優(yōu)化改進(jìn)
    中間件在高速公路領(lǐng)域的應(yīng)用
    局域網(wǎng)監(jiān)聽軟件的設(shè)計
    河南科技(2014年5期)2014-02-27 14:08:21
    一種支持智能環(huán)境構(gòu)建的中間件
    德惠市| 措勤县| 万州区| 辽阳市| 于都县| 巴林右旗| 鄂托克前旗| 嵊州市| 黄石市| 大关县| 汉中市| 尼木县| 庄浪县| 济源市| 芒康县| 恩施市| 毕节市| 封开县| 余庆县| 高州市| 罗平县| 恩平市| 嵩明县| 鄂州市| 潼南县| 义马市| 宜阳县| 平原县| 石门县| 临沭县| 东山县| 新和县| 界首市| 青海省| 红安县| 安顺市| 平塘县| 顺平县| 东乡县| 台北县| 文登市|