本發(fā)明涉及命名數(shù)據(jù)網(wǎng)絡(Named Data Networking,NDN)技術領域,尤其涉及一種NDN中基于重定向的可擴展任播方法和系統(tǒng)。
背景技術:
目前,用戶對互聯(lián)網(wǎng)的訪問已經從點對點通信為主轉為內容獲取為主。而傳統(tǒng)的TCP/IP網(wǎng)絡僅傳輸內容,并不感知內容,從而造成了網(wǎng)絡上大量的冗余流量傳輸。為了解決由于內容獲取而引發(fā)的內容爆炸,研究界提出了以內容為中心的網(wǎng)絡NDN,實現(xiàn)了內容和地址以及發(fā)送者和接收者的解耦,并提供泛在的內置緩存來滿足用戶對內容的具有重尾特征的異步訪問。
現(xiàn)有互聯(lián)網(wǎng)存在許多大規(guī)模的具有億萬的服務,如Google,Facebook,微信等。這些服務通常都有一組物理上分布但提供相同服務的服務器或服務器集群。對用戶而言,這類服務本質上屬于任播服務。但是,現(xiàn)有NDN的傳輸模式僅提供簡單的基于任播路由的任播機制,無法滿足靈活多變的任播需求。因此,有必要提出一種NDN中能滿足多樣化需求的可擴展任播技術。
技術實現(xiàn)要素:
本發(fā)明為解決上述技術問題,提供一種NDN中基于重定向的可擴展任播方法和系統(tǒng),能不破壞CCN內容路由器轉發(fā)引擎的轉發(fā)邏輯。所述技術方案如下:
一方面,本發(fā)明提出一種NDN中基于重定向的可擴展任播方法,包括下述步驟:
客戶端向網(wǎng)絡發(fā)送第一請求;
中間路由器依據(jù)任播路由將第一請求轉發(fā)到某個第一層調度器;
第一層調度器依據(jù)第一預設策略選擇服務第一請求的服務器群;
第一層調度器向客戶端返回第一重定向通告;
客戶端依據(jù)第一重定向通告向第二層調度器發(fā)送第二請求;
第二層調度器依據(jù)第二預設策略選擇服務第二請求的服務器;
第二層調度器向客戶端返回第二重定向通告;
客戶端依據(jù)第二重定向通告向所選擇服務器發(fā)送第三請求;
服務器向客戶端返回響應消息。
進一步地,所述第一請求的服務名是一個任播服務名;第一請求由中間路由器通過NDN的任播路由機制轉發(fā)到某個第一層調度器。為了保證該過程正確運行,每個第一層調度器都向網(wǎng)絡通告該任播服務名或前綴。
進一步地,所述第一重定向通告包括第一層調度器所選擇的服務器群的第二層調度器依賴服務名;第一重定向通告沿著第一請求轉發(fā)路徑的反向路徑逐跳返回給客戶端。
進一步地,所述第二請求的服務名為第二層調度器依賴服務名;第二請求按照NDN的路由過程轉發(fā)到第二層調度器。為了保證該過程正確運行,第二層調度器需要向路由系統(tǒng)通告第二層調度器依賴服務名或其前綴。
進一步地,所述第二重定向通告包括第二層調度器所選擇的服務器的服務器依賴服務名;
第二重定向通告沿著第二請求轉發(fā)路徑的反向路徑逐跳返回給客戶端。
進一步地,所述第三請求的服務名為服務器依賴服務名;第三請求按照NDN的路由過程轉發(fā)到服務器。
進一步地,所述所述響應消息通過第三請求消息轉發(fā)的反向路徑逐跳返回給客戶端。
進一步地,所述第一請求可以可選地包括客戶端生成的流標識,該流標識被復制到第二請求、第三請求和響應消息中。當?shù)谝粚诱{度器接收到的第一請求包括流標識時,第一層調度器首先獲得同一會話中的具有相同流標識的歷史調度決策信息,如果存在歷史調度決策信息時,則采用歷史決策調度結果作為該第一請求的調度結果,否則,基于第一預設策略為第一請求選擇服務器群。
另一方面,本發(fā)明提出一種NDN中基于重定向的可擴展任播系統(tǒng),包括:
客戶端:用于生成并向網(wǎng)絡發(fā)送第一請求、第二請求、第三請求,從網(wǎng)絡接收第一重定向通告、第二重定向通告和響應消息;
第一層調度器:用于向網(wǎng)絡通告任播服務名或其前綴,從網(wǎng)絡接收第一請求,依據(jù)第一預設策略選擇服務第一請求的服務器群,生成并向客戶端返回重定向通告;
第二層調度器:用于向網(wǎng)絡通告第二層調度器依賴服務名或其前綴,依據(jù)第二預設策略選擇服務器,接收第二請求,生成和返回第二重定向通告;
服務器:用于接收第三請求、生成和發(fā)送響應消息;
中間路由器:用于按照NDN的規(guī)則建立和更新路由轉發(fā)表,基于FIB表轉發(fā)第一、第二、第三請求消息,基于PIT表返回第一、第二重定向通告和響應消息。
本發(fā)明采用以上技術方案與現(xiàn)有技術相比,具有以下技術效果:
通過本發(fā)明,能在NDN中支持多樣化的任播需求,特別是能支持有狀態(tài)的基于流的任播、能有效解決擴展性問題、能根據(jù)服務器狀態(tài)靈活地選擇服務器。另外,本發(fā)明所提出的技術沒有破壞NDN內容路由器轉發(fā)引擎的轉發(fā)邏輯。
本發(fā)明附加的方面和優(yōu)點將在下面的描述中部分給出,這些將從下面的描述中變得明顯,或通過本發(fā)明的實踐了解到。
附圖說明
圖1示出了依據(jù)本發(fā)明一實施方式的任播服務場景示意圖。
圖2示出了依據(jù)本發(fā)明一實施方式的NDN中基于重定向的可擴展任播方法流程圖。
圖3示出了依據(jù)本發(fā)明一實施方式的NDN中基于重定向的可擴展任播方法的實體交互圖。
圖4示出了依據(jù)本發(fā)明一實施方式的NDN中基于重定向的可擴展任播系統(tǒng)部署示意圖。
具體實施方式
下面詳細描述本發(fā)明的實施方式,所述實施方式的示例在附圖中示出,其中自始至終相同或類似的標號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施方式是示例性的,僅用于解釋本發(fā)明,而不能解釋為對本發(fā)明的限制。
本技術領域技術人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個”、“所述”和“該”也可包括復數(shù)形式。應該進一步理解的是,本發(fā)明的說明書中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個或多個其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。應該理解,當我們稱元件被“連接”或“耦接”到另一元件時,它可以直接連接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”或“耦接”可以包括無線連接或耦接。這里使用的措辭“和/或”包括一個或更多個相關聯(lián)的列出項的任一單元和全部組合。
本技術領域技術人員可以理解,除非另外定義,這里使用的所有術語(包括技術術語和科學術語)具有與本發(fā)明所屬領域中的普通技術人員的一般理解相同的意義。還應該理解的是,諸如通用字典中定義的那些術語應該被理解為具有與現(xiàn)有技術的上下文中的意義一致的意義,并且除非像這里一樣定義,不會用理想化或過于正式的含義來解釋。
圖1示出了依據(jù)本發(fā)明一實施方式的任播場景示意圖。圖中,一個大型服務通過多個地理上分散的服務器群來提供服務。這些地理上分散的M個服務器群Site 1,Site 2,...,Site M通過網(wǎng)絡相連。每個Site都有多個服務器,例如Site k包括Nk個服務器。每個服務器都提供相同的服務。希望訪問服務的客戶端通過網(wǎng)絡發(fā)出服務請求,最后由某個服務器群中的一個服務器服務請求。連接客戶端和各服務器群的網(wǎng)絡是NDN網(wǎng)絡。
本發(fā)明提出的NDN中基于重定向的可擴展任播方法和系統(tǒng)引入了第一層調度器和第二層調度器這兩種實體,如圖3所示。系統(tǒng)存在多個第一層調度器,用于接收客戶端發(fā)出的第一請求,并為其選擇合適的服務器群。采用多個第一層調度器的目的是避免第一層調度器成為系統(tǒng)的性能瓶頸和單點失效。每個服務器群都有一個第二層調度器,用于選擇服務器群中的一個服務器。第二層調度器通常與某個服務器群位于同一個網(wǎng)絡,作為服務器群的門面。
圖2示出了依據(jù)本發(fā)明一實施方式的NDN中基于重定向的可擴展任播方法流程圖。具體包括下述步驟:
1)客戶端向網(wǎng)絡發(fā)送第一請求。
客戶端發(fā)送的第一請求中的服務名為所述服務的虛擬服務名,例如/foo.com/generic-service-name??蛇x地,客戶端可以在請求中包含流標識,則虛擬服務名為/foo.com/generic-service-name/flow-tag。
為了使得以上述服務名前綴的請求能被轉發(fā)到某個第一層調度器,每個第一層調度器在部署后需向NDN的路由系統(tǒng)通告以所述服務的虛擬服務名為前綴的路由條目,即/foo.com/generic-service-name??蛇x地,第一層調度器可以將聚合過的路由條目向路由系統(tǒng)通告,如/foo.com。所述路由條目通告消息經路由協(xié)議承載向NDN網(wǎng)絡的路由器擴散,并注入路由轉發(fā)表FIB。本質上,該路由條目是一個任播路由條目,中間路由器通過路由協(xié)議計算出合適的到達某個第一層調度器的轉發(fā)端口。
2)中間路由器基于任播路由將第一請求轉發(fā)到某個第一層調度器。
接收到第一請求后,中間路由器依據(jù)FIB中的轉發(fā)條目匹配合適的端口,將其逐跳轉發(fā)到某個第一層調度器。由于多個第一層調度器都通告了相同的路由條目,因此,不同的客戶端發(fā)出的對相同服務的請求可能會被轉發(fā)到不同的第一層調度器,而相同的客戶端在不同時刻發(fā)出的對相同服務的請求也可能會被轉發(fā)到不同的第一層調度器。為了支持基于流的任播服務,所有的第一層調度器需要通過某種方式保證屬于同一個流的請求被轉發(fā)到同一個第二層調度器。
3)第一層調度器依據(jù)第一預設策略選擇服務請求的服務器群。
當?shù)谝徽埱笠罁?jù)任播路由被轉發(fā)到了某個第一層調度器后,如果該第一請求不包括流標識,或該第一請求是某個會話中的第一個請求,則第一層調度器依據(jù)第一預設策略選擇服務第一請求的服務器群。為此,第一層調度器至少需要配置所有的服務器群的信息。服務器群還可以將自身的狀態(tài)定期或實時反饋給所有的第一層調度器,以便其進行更復雜的請求調度。第一層調度器可以采用簡單的隨機策略隨機選擇一個服務器群服務第一請求,也可以采用輪轉策略進行請求調度,還可以依據(jù)服務器群的狀態(tài)(如實時負載、剩余服務能力等)進行請求調度。本發(fā)明對第一層調度器采用的第一預設策略不加以限制。
當?shù)谝徽埱蟀鳂俗R時,第一層調度器需要進行基于流的請求調度。如果該第一請求為一個會話中的第一個請求,則第一層調度器基于第一預設策略選擇服務器群;如果該第一請求為一個會話中的后續(xù)請求,則第一層調度器采用所有第一層調度器構成的整體之前為該會話中的第一個請求的進行服務器群選擇的結果作為該第一請求的選擇結果,即將該第一請求分配到服務該會話中的第一個請求的服務器群。由于整個系統(tǒng)采用任播路由將第一請求路由到某個第一層調度器,因此,同一個會話中的多個請求可能會被路由到不同的第一層調度器,例如整個會話中的第一個第一請求Req1被路由到第一層調度器i,而該會話中后續(xù)的某個第一請求Reqr被路由到第一層調度器j。此時,第一層調度器j需要獲得第一層調度器i對Req1的調度結果,從而作為對Reqr的調度結果。這需要第一層調度器之間進行某種隱式或顯式的協(xié)同。一種方法是,所有的第一層調度器都采用同樣的映射算法,對flow-tag進行映射,從而不同的第一層調度器可以將具有相同flow-tag的請求映射到相同的服務器群,該映射算法可以是簡單的HASH算法,也可以是較復雜的HRW(Highest Random Weight)算法。該方法的好處是簡單,無需第一層調度器之間進行顯式協(xié)作,缺點是難以利用服務器群端的動態(tài)負載信息。第二種方法是,當某個具有流標識的第一請求到達時,首先基于流標識去查詢流調度決策表,如果流調度決策表中已經有該調度決策結果,即之前已經有針對該流中的請求的調度,則采用該調度決策結果,否則表示該請求是流中的第一個請求,依據(jù)第一預設策略進行請求的調度決策,選擇合適的服務器群,并將調度決策結果保存到流調度決策表。所述的流調度決策表可以以集中式的方式存儲,也可以以分布式的方式存儲,如分布式HASH表,無論采用何種方式存儲,所有的第一層調度器都可以對其進行直接訪問。第三種方法是,當某個具有流標識的第一請求到達時,該第一層調度器首先采用某種查詢協(xié)議詢問其它的第一層調度器是否具有對該流標識的調度結果,如果其它第一層調度器都沒有對該流標識的調度結果,則依據(jù)第一預設策略對其進行調度,否則,采用其他第一層調度器的調度結果。該方法的優(yōu)點是每個第一層調度器都可以將調度決策結果保存在本地。還有一種方法,可以讓第一層調度器和第二層調度器進行協(xié)作。當?shù)谝粚诱{度器接收到具有流標識的第一請求時,向所有的第二層調度器發(fā)送查詢請求,詢問是否已經有某個第二層調度器負責服務該流標識的請求。若無,則采用第一預設策略進行請求調度,否則,則采用前面的調度結果。無論采用哪種方法,本發(fā)明對第一層調度器如何獲知對同一會話中的流的調度歷史知識的方法不加以限制。
4)第一層調度器向客戶端返回第一重定向通告。
當?shù)谝粚诱{度器依據(jù)第一策略選定服務器群后,向客戶端返回第一重定向通告。該通告可以作為一種特殊的Data報文返回,也可以作為一種新的報文類型返回。該通告中至少包括第一重定向請求名。該重定向請求名對應的是所選擇的服務器群的第二層調度器為該服務設定的第二層調度器依賴服務名。例如,如圖3所示,假設第一層調度器選擇了服務器群k來服務客戶端的請求/foo.com/generic-service-name,假設服務器群k的第二層調度器設定的該請求的第二層調度器依賴服務名為/SITEk/foo.com/generic-service-name,則所述第一重定向通告中將包括該第二層調度器依賴服務名。而如果第一請求名包含有流標識,則該流標識將被復制到第一重定向請求名,如/SITEk/foo.com/generic-service-name/flow-tag。
第一重定向通告沿著第一請求轉發(fā)路徑的反向路徑返回給客戶端。
5)客戶端根據(jù)第一重定向通告向第二層調度器發(fā)送第二請求。
客戶端接收到第一重定向通告后,解析出其中的重定向請求名,如上例所示,為/SITEk/foo.com/generic-service-name或/SITEk/foo.com/generic-service-name/flow-tag。并以該名字為新的服務名構造第二請求并向網(wǎng)絡發(fā)送。
為了使得該第二請求能被轉發(fā)到SITE k的第二層調度器,要求SITE k的第二層調度器在部署后即向網(wǎng)絡通告該路由前綴/SITEk/foo.com/generic-service-name,或者通告聚合后的路由前綴,如/SITEk。該路由前綴通告將經由路由協(xié)議承載在NDN網(wǎng)絡的路由器中擴散,并注入轉發(fā)表FIB。據(jù)此,客戶端的第二請求能夠被正確路由到由第一層調度器所選擇的服務器群的第二層調度器。
6)第二層調度器依據(jù)第二預設策略選擇服務第二請求的服務器。
第二層調度器接收到第二請求后,依據(jù)第二預設策略選擇服務第二請求的服務器。為此,第二層調度器至少需要配置所在的服務器群的服務器信息。服務器還可以將自身的狀態(tài)定期或實時反饋給第二層調度器,以便其進行更復雜的請求調度。第二層調度器可以采用簡單的隨機策略隨機選擇一個服務器服務第二請求,也可以采用輪轉策略進行請求調度,還可以依據(jù)服務器的狀態(tài)(如實時負載、剩余服務能力等)進行請求調度。本發(fā)明對第二層調度器采用的第二預設策略不加以限制。
如果第二請求中包括流標識,則表明客戶端希望進行基于流的調度。此時,第二層調度器需要基于流標識進行請求調度。第二層調度器首先識別出流標識,然后在流轉發(fā)表中查找是否已經存在該流標識的調度記錄。若不存在,則表明該第二請求是該第二層調度器轉發(fā)的第一個請求,則基于第二預設策略選擇一個服務器服務該請求,同時在流轉發(fā)表中記錄下該轉發(fā)行為,該表項至少包括<flow-tag,server-ID>兩項,即流標識以及服務該流標識的服務器標識。如果已經存在該流標識的調度記錄,則第二層調度器不再基于第二預設策略選擇服務器服務該請求,而是直接基于流轉發(fā)表中記錄的之前的選擇決策結果,由相同的服務器服務該請求。
7)第二層調度器向客戶端返回第二重定向通告。
當?shù)诙诱{度器依據(jù)第二策略選定服務器后,向客戶端返回第二重定向通告。該通告可以作為一種特殊的Data報文返回,也可以作為一種新的報文類型返回。該通告中至少包括第二重定向請求名。該重定向請求名對應的是所選擇的服務器為該服務設定的服務器依賴服務名。例如,如圖3所示,假設第二層調度器選擇了服務器群k中的服務器j來服務客戶端的第二請求/SITEk/foo.com/generic-service-name,假設服務器j設定的該請求的服務器依賴服務名為/SNkj/foo.com/generic-service-name,則所述第二重定向通告中將包括該服務器依賴服務名。而如果第二請求名包含有流標識,則該流標識將被復制到第二重定向請求名,如/SNkj/foo.com/generic-service-name/flow-tag。
第二重定向通告沿著第二請求轉發(fā)路徑的反向路徑返回給客戶端。
8)客戶端依據(jù)第二重定向通告向所選擇服務器發(fā)送第三請求。
客戶端接收到第二重定向通告后,解析出其中的重定向請求名,如上例所示,為/SNkj/foo.com/generic-service-name或/SNkj/foo.com/generic-service-name/flow-tag。并以該名字為新的服務名構造第三請求并向網(wǎng)絡發(fā)送。
為了使得該第三請求能被轉發(fā)到SITE k的選定服務器j,要求服務器的標識前綴在路由系統(tǒng)中可達。通常,同一個SITE的所有服務器共享某個前綴,因此在核心網(wǎng)絡中,僅需通告聚合過的前綴。該路由前綴通告將經由路由協(xié)議承載在NDN網(wǎng)絡的路由器中擴散,并注入轉發(fā)表FIB。據(jù)此,客戶端的第三請求能夠被正確路由到選定服務器。
9)服務器向客戶端返回響應消息。
服務器接收到第三請求后,服務該請求,并構造響應消息。該響應消息將沿著第三請求的轉發(fā)路徑的反向路徑返回給客戶端。
圖3示出了依據(jù)本發(fā)明一實施方式的NDN中基于重定向的可擴展任播方法的實體交互圖。其中,步驟(1)-(9)分別對應圖2中的九個步驟。
圖4示出了依據(jù)本發(fā)明一實施方式的NDN中基于重定向的可擴展任播系統(tǒng)部署示意圖,包括:
客戶端:用于生成并向網(wǎng)絡發(fā)送第一請求,從網(wǎng)絡接收第一層調度器返回的第一重定向通告,依據(jù)第一重定向通告生成并向網(wǎng)絡發(fā)送第二請求,從網(wǎng)絡接收第二層調度器返回的第二重定向通告,依據(jù)第二重定向通告生成并向網(wǎng)絡發(fā)送第三請求,從網(wǎng)絡接收由服務器返回的響應消息;
第一層調度器:用于向網(wǎng)絡通告通用服務名或其前綴,從網(wǎng)絡接收第一請求,依據(jù)第一預設策略選擇服務器群,生成并沿著第一請求到達端口返回第一重定向通告;
第二層調度器:用于向網(wǎng)絡通告第二層調度器依賴服務器名或其前綴,從網(wǎng)絡接收第二請求,依據(jù)第二預設策略選擇服務器,生成并沿著第二請求到達端口返回第二重定向通告;
服務器:用于接收第三請求,生成和沿著第三請求到達端口返回響應消息;
中間路由器:用于按照NDN的規(guī)則建立和更新路由轉發(fā)表,根據(jù)FIB表轉發(fā)第一、第二、第三請求消息,根據(jù)PIT表沿著第一請求轉發(fā)路徑的反向路徑返回第一重定向通告,根據(jù)PIT表沿著第二請求轉發(fā)路徑的反向路徑返回第二重定向通告,根據(jù)PIT表沿著第三請求轉發(fā)路徑的反向路徑返回響應消息。
通過本發(fā)明所提出的技術方案,能夠在NDN網(wǎng)絡中滿足多樣化的任播需求,特別是實現(xiàn)可擴展的任播。且該能力的提供不改變NDN網(wǎng)絡架構的內容命名規(guī)則和NDN轉發(fā)引擎的處理邏輯。
本技術領域技術人員可以理解,本發(fā)明可以涉及用于執(zhí)行本申請中所述操作中的一項或多項操作的設備。所述設備可以為所需的目的而專門設計和制造,或者也可以包括通用計算機中的已知設備,所述通用計算機有存儲在其內的程序選擇性地激活或重構。這樣的計算機程序可以被存儲在設備(例如,計算機)可讀介質中或者存儲在適于存儲電子指令并分別耦聯(lián)到總線的任何類型的介質中,所述計算機可讀介質包括但不限于任何類型的盤(包括軟盤、硬盤、光盤、CD‐ROM、和磁光盤)、隨即存儲器(RAM)、只讀存儲器(ROM)、電可編程ROM、電可擦ROM(EPROM)、電可擦除可編程ROM(EEPROM)、閃存、磁性卡片或光線卡片??勺x介質包括用于以由設備(例如,計算機)可讀的形式存儲或傳輸信息的任何機構。例如,可讀介質包括隨即存儲器(RAM)、只讀存儲器(ROM)、磁盤存儲介質、光學存儲介質、閃存裝置、以電的、光的、聲的或其他的形式傳播的信號(例如載波、紅外信號、數(shù)字信號)等。
本技術領域技術人員可以理解,可以用計算機程序指令來實現(xiàn)這些結構圖和/或框圖和/或流圖中的每個框以及這些結構圖和/或框圖和/或流圖中的框的組合。可以將這些計算機程序指令提供給通用計算機、專業(yè)計算機或其他可編程數(shù)據(jù)處理方法的處理器來生成機器,從而通過計算機或其他可編程數(shù)據(jù)處理方法的處理器來執(zhí)行的指令創(chuàng)建了用于實現(xiàn)結構圖和/或框圖和/或流圖的框或多個框中指定的方法。
本技術領域技術人員可以理解,本發(fā)明中已經討論過的各種操作、方法、流程中的步驟、措施、方案可以被交替、更改、組合或刪除。進一步地,具有本發(fā)明中已經討論過的各種操作、方法、流程中的其他步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。進一步地,現(xiàn)有技術中的具有與本發(fā)明中公開的各種操作、方法、流程中的步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。
以上所述僅是本發(fā)明的部分實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。