數(shù)據(jù)分流方法及分流器的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)分流方法及分流器。
【背景技術(shù)】
[0002]當(dāng)今,處理器已經(jīng)邁入多核時(shí)代,在多核架構(gòu)下,往往以多線程部署在多個(gè)核心的方式實(shí)現(xiàn)并行處理,那么就需要通過分流的方式將數(shù)據(jù)包發(fā)送至不同線程,以使多個(gè)核心實(shí)現(xiàn)并行處理。
[0003]現(xiàn)有的數(shù)據(jù)分流方法分流粒度是進(jìn)程,即將數(shù)據(jù)包發(fā)送至該數(shù)據(jù)包對(duì)應(yīng)的進(jìn)程的緩沖隊(duì)列中。該進(jìn)程中的線程從該進(jìn)程的緩沖列隊(duì)中獲取數(shù)據(jù)包,該數(shù)據(jù)包的連接信息可能被其他線程共享。如果共享,則該線程訪問該數(shù)據(jù)包對(duì)應(yīng)的連接信息時(shí)需要通過線程間互斥和同步機(jī)制保證數(shù)據(jù)的一致性訪問。如果此時(shí)恰好另一個(gè)線程正在訪問該連接信息,則該線程需要一直等待,直到另一個(gè)線程訪問完畢才能繼續(xù)訪問該連接信息。
[0004]因此,現(xiàn)有的數(shù)據(jù)分流方法存在以下缺點(diǎn):多個(gè)線程共享同一個(gè)進(jìn)程的緩沖隊(duì)列,將引起大量的線程間互斥和同步開銷以及核心間cache失效,從而導(dǎo)致多核處理器的處理能力不能充分發(fā)揮。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明實(shí)施例提供一種數(shù)據(jù)分流方法及分流器,以提高多核處理器的處理能力。
[0006]在第一方面,本發(fā)明實(shí)施例提供一種數(shù)據(jù)分流方法,應(yīng)用于數(shù)據(jù)分流系統(tǒng)中,所述數(shù)據(jù)分流系統(tǒng)中包括分流器,存儲(chǔ)器和用于處理數(shù)據(jù)的多個(gè)線程,每個(gè)線程對(duì)應(yīng)一個(gè)緩沖隊(duì)列,所述存儲(chǔ)器存儲(chǔ)有傳輸層通信協(xié)議和分流表的對(duì)應(yīng)關(guān)系及每個(gè)傳輸層通信協(xié)議對(duì)應(yīng)的分流表,每個(gè)分流表中設(shè)置有數(shù)據(jù)流的標(biāo)識(shí)信息和線程的對(duì)應(yīng)關(guān)系,所述方法包括:
[0007]分流器對(duì)所接收的數(shù)據(jù)包進(jìn)行解析確定所述數(shù)據(jù)包所屬的傳輸層通信協(xié)議;
[0008]所述分流器從所述數(shù)據(jù)包中,獲取與確定的所述傳輸層通信協(xié)議對(duì)應(yīng)的所述數(shù)據(jù)包所屬的數(shù)據(jù)流的標(biāo)識(shí)信息,所述數(shù)據(jù)流的標(biāo)識(shí)信息用于區(qū)分所述數(shù)據(jù)包所屬的數(shù)據(jù)流;
[0009]所述分流器根據(jù)所述傳輸層通信協(xié)議和分流表的對(duì)應(yīng)關(guān)系,從所述存儲(chǔ)器中獲取所述數(shù)據(jù)包所屬的傳輸層通信協(xié)議對(duì)應(yīng)的分流表;
[0010]所述分流器根據(jù)所述數(shù)據(jù)包所屬的傳輸層通信協(xié)議對(duì)應(yīng)的分流表中的數(shù)據(jù)流的標(biāo)識(shí)信息和線程的對(duì)應(yīng)關(guān)系,確定所述數(shù)據(jù)包所屬的數(shù)據(jù)流對(duì)應(yīng)的線程;
[0011]所述分流器將所述數(shù)據(jù)包發(fā)送至所述數(shù)據(jù)流對(duì)應(yīng)的線程的緩沖隊(duì)列,以使所述數(shù)據(jù)流對(duì)應(yīng)的線程從所述緩沖隊(duì)列獲取數(shù)據(jù)包。
[0012]在第一方面的第一種可能實(shí)現(xiàn)的方式中,若所述數(shù)據(jù)包所屬的傳輸層通信協(xié)議為面向無(wú)連接的傳輸層通信協(xié)議,則所述數(shù)據(jù)流的標(biāo)識(shí)信息為所述數(shù)據(jù)包的二元組,所述二元組包括:所述數(shù)據(jù)包的目的IP地址和目的端口 ;所述面向無(wú)連接的傳輸層通信協(xié)議對(duì)應(yīng)的分流表包括:二元組與線程標(biāo)示符的對(duì)應(yīng)關(guān)系,每個(gè)線程標(biāo)示符對(duì)應(yīng)一個(gè)線程。
[0013]結(jié)合第一方面的第一種可能實(shí)現(xiàn)的方式,在第二種可能實(shí)現(xiàn)的方式中,所述分流器根據(jù)所述數(shù)據(jù)包所屬的傳輸層通信協(xié)議對(duì)應(yīng)的分流表中的數(shù)據(jù)流的標(biāo)識(shí)信息和線程的對(duì)應(yīng)關(guān)系,確定所述數(shù)據(jù)包所屬的數(shù)據(jù)流對(duì)應(yīng)的線程包括:所述分流器在所述數(shù)據(jù)包所屬面向無(wú)連接的傳輸層通信協(xié)議對(duì)應(yīng)的分流表中的二元組與線程標(biāo)示符的對(duì)應(yīng)關(guān)系中,查找所述數(shù)據(jù)包的二元組對(duì)應(yīng)的線程標(biāo)示符;所述分流器將所述數(shù)據(jù)包的二元組對(duì)應(yīng)的線程標(biāo)示符對(duì)應(yīng)的線程確定為所述數(shù)據(jù)包所屬的數(shù)據(jù)流對(duì)應(yīng)的線程。
[0014]在第一方面的第三種可能實(shí)現(xiàn)的方式中,若所述數(shù)據(jù)包所屬的傳輸層通信協(xié)議為面向連接的傳輸層通信協(xié)議,則所述數(shù)據(jù)流的標(biāo)識(shí)信息為所述數(shù)據(jù)包的四元組,所述四元組包括:所述數(shù)據(jù)包的源IP地址,源端口、目的IP地址和目的端口 ;所述面向連接的傳輸層通信協(xié)議對(duì)應(yīng)的分流表包括:第一分流表和第二分流表;所述第一分流表包括:四元組與線程標(biāo)示符的對(duì)應(yīng)關(guān)系,每個(gè)線程標(biāo)示符對(duì)應(yīng)一個(gè)線程;所述第二分流表包括:目的IP地址和目的端口與線程標(biāo)示符的對(duì)應(yīng)關(guān)系,每個(gè)線程標(biāo)示符對(duì)應(yīng)一個(gè)線程,及每個(gè)線程的負(fù)載;其中,目的IP地址和目的端口對(duì)應(yīng)的線程為不同進(jìn)程中的線程。
[0015]結(jié)合第一方面的第三種可能實(shí)現(xiàn)的方式,在第四種可能實(shí)現(xiàn)的方式中,所述分流器根據(jù)所述數(shù)據(jù)包所屬的傳輸層通信協(xié)議對(duì)應(yīng)的分流表中的數(shù)據(jù)流的標(biāo)識(shí)信息和線程的對(duì)應(yīng)關(guān)系,確定所述數(shù)據(jù)包所屬的數(shù)據(jù)流對(duì)應(yīng)的線程包括:所述分流器在所述數(shù)據(jù)包所屬的面向連接的傳輸層通信協(xié)議對(duì)應(yīng)的第一分流表中的四元組與線程標(biāo)示符的對(duì)應(yīng)關(guān)系中,查找所述數(shù)據(jù)包的四元組對(duì)應(yīng)的線程標(biāo)示符;若所述第一分流表中存在所述數(shù)據(jù)包的四元組對(duì)應(yīng)的線程標(biāo)識(shí)符,則所述分流器將所述數(shù)據(jù)包的四元組對(duì)應(yīng)的線程標(biāo)示符對(duì)應(yīng)的線程確定為所述數(shù)據(jù)包所屬的數(shù)據(jù)流對(duì)應(yīng)的線程;若所述第一分流表中不存在所述數(shù)據(jù)包的四元組對(duì)應(yīng)的線程標(biāo)示符,則所述分流器在所述數(shù)據(jù)包所屬的面向連接的傳輸層通信協(xié)議對(duì)應(yīng)的第二分流表中的目的IP地址和目的端口與線程標(biāo)示符的對(duì)應(yīng)關(guān)系中,查找所述數(shù)據(jù)包的目的IP地址和目的端口對(duì)應(yīng)的線程標(biāo)示符;所述分流器將所述數(shù)據(jù)包的目的IP地址和目的端口對(duì)應(yīng)的線程標(biāo)識(shí)符對(duì)應(yīng)的線程中負(fù)載最小的線程確定為所述數(shù)據(jù)包所屬的數(shù)據(jù)流對(duì)應(yīng)的線程。
[0016]結(jié)合第一方面的第一種可能實(shí)現(xiàn)的方式或第一方面的第二種可能實(shí)現(xiàn)的方式或第一方面的第三種可能實(shí)現(xiàn)的方式或第一方面的第四種可能實(shí)現(xiàn)的方式,在第五種可能實(shí)現(xiàn)的方式中,所述線程標(biāo)識(shí)符為線程對(duì)應(yīng)的緩沖隊(duì)列地址。
[0017]結(jié)合第一方面或第一方面的第一種可能實(shí)現(xiàn)的方式或第一方面的第二種可能實(shí)現(xiàn)的方式或第一方面的第三種可能實(shí)現(xiàn)的方式或第一方面的第四種可能實(shí)現(xiàn)的方式或第一方面的第五種可能實(shí)現(xiàn)的方式,在第六種可能實(shí)現(xiàn)的方式中,所述方法還包括:分流器根據(jù)線程的狀態(tài)更新分流表。
[0018]在第二方面,本發(fā)明實(shí)施例提供一種分流器,應(yīng)用于數(shù)據(jù)分流系統(tǒng)中,所述數(shù)據(jù)分流系統(tǒng)中還包括存儲(chǔ)器和用于處理數(shù)據(jù)的多個(gè)線程,每個(gè)線程對(duì)應(yīng)一個(gè)緩沖隊(duì)列,所述存儲(chǔ)器存儲(chǔ)有傳輸層通信協(xié)議和分流表的對(duì)應(yīng)關(guān)系,每個(gè)分流表中設(shè)置有數(shù)據(jù)流的標(biāo)識(shí)信息和線程的對(duì)應(yīng)關(guān)系,所述分流器包括:
[0019]解析單元,用于對(duì)所接收的數(shù)據(jù)包進(jìn)行解析確定所述數(shù)據(jù)包所屬的傳輸層通信協(xié)議;
[0020]第一獲取單元,用于從所述數(shù)據(jù)包中,獲取與確定的所述傳輸層通信協(xié)議對(duì)應(yīng)的所述數(shù)據(jù)包所屬的數(shù)據(jù)流的標(biāo)識(shí)信息,所述數(shù)據(jù)流的標(biāo)識(shí)信息用于區(qū)分所述數(shù)據(jù)包所屬的數(shù)據(jù)流;
[0021]第二獲取單元,用于根據(jù)所述傳輸層通信協(xié)議和分流表的對(duì)應(yīng)關(guān)系中,從所述存儲(chǔ)器中獲取所述數(shù)據(jù)包所屬的傳輸層通信協(xié)議對(duì)應(yīng)的分流表;
[0022]確定單元,用于根據(jù)所述數(shù)據(jù)包所屬的傳輸層通信協(xié)議對(duì)應(yīng)的分流表中的數(shù)據(jù)流的標(biāo)識(shí)信息和線程的對(duì)應(yīng)關(guān)系,確定所述數(shù)據(jù)包所屬的數(shù)據(jù)流對(duì)應(yīng)的線程;
[0023]發(fā)送單元,用于將所述數(shù)據(jù)包發(fā)送至所述數(shù)據(jù)流對(duì)應(yīng)的線程的緩沖隊(duì)列,以使所述數(shù)據(jù)流對(duì)應(yīng)的線程從所述緩沖隊(duì)列獲取數(shù)據(jù)包。
[0024]在第二方面的第一種可能實(shí)現(xiàn)的方式中,若所述數(shù)據(jù)包所屬的傳輸層通信協(xié)議為面向無(wú)連接的傳輸層通信協(xié)議,則所述數(shù)據(jù)流的標(biāo)識(shí)信息為所述數(shù)據(jù)包的二元組,所述二元組包括:所述數(shù)據(jù)包的目的IP地址和目的端口 ;所述面向無(wú)連接的傳輸層通信協(xié)議對(duì)應(yīng)的分流表包括:二元組與線程標(biāo)示符的對(duì)應(yīng)關(guān)系,每個(gè)線程標(biāo)示符對(duì)應(yīng)一個(gè)線程。
[0025]結(jié)合第二方面的第一種可能實(shí)現(xiàn)的方式,在第二種可能實(shí)現(xiàn)的方式中,所述確定單元具體用于:在所述數(shù)據(jù)包所屬面向無(wú)連接的傳輸層通信協(xié)議對(duì)應(yīng)的分流表中的二元組與線程標(biāo)示符的對(duì)應(yīng)關(guān)系中,查找所述數(shù)據(jù)包的二元組對(duì)應(yīng)的線程標(biāo)示符;將所述數(shù)據(jù)包的二元組對(duì)應(yīng)的線程標(biāo)示符對(duì)應(yīng)的線程確定為所述數(shù)據(jù)包所屬的數(shù)據(jù)流對(duì)應(yīng)的線程。
[0026]在第二方面的第三種可能實(shí)現(xiàn)的方式中,所述面向連接的傳輸層通信協(xié)議對(duì)應(yīng)的分流表包括:第一分流表和第二分流表;所述第一分流表包括:四元組與線程標(biāo)示符的對(duì)應(yīng)關(guān)系,每個(gè)線程標(biāo)示符對(duì)應(yīng)一個(gè)線程;所述第二分流表包括:目的IP地址和目的端