專利名稱:一種分布式多對多設備通信和管理方法
技術領域:
本發明涉及ー種分布式多對多設備通信和管理方法,特別是指一種機架式多業務路由器中主控卡、多種線路接ロ卡和多種業務處理板卡之間的通信機制和相互之間的管
理方法。
背景技術:
在中高端路由器或者交換機中,各種類型板卡之間的主要通信機制如下主控卡必須能及時感知其他卡,并將相關的用戶配置信息發送給其他接ロ卡或者業務卡,以便實現路由器或者交換機功能的開通。各種接ロ線路卡必須能及時感知多塊業務處理卡和交換 卡的狀態以及相關的負載信息,以便進行合適的調度,實現負載均衡和業務處理。業務處理板卡必須能及時確定各類接ロ卡的狀態,以便進行正確的業務分發和處理。各類接ロ線路卡之間的管理數據必須隔離,各種類型的業務處理板卡都需要接受主控卡的管理和控制。因此,各種類型板卡之間的通信需要滿足如下要求
基于以太網實現板卡間通信;
實現板卡的發現、加入、監控和離開;
實現板卡間通信信息的廣播、組播和單播;
為上層應用提供兩種服務可靠按序的服務、非可靠非按序的服務;
能對長包實現分片傳輸。各種類型的板卡之間如何通信才能滿足以上需求,采用傳統的TCP或者UDP協議,各板卡之間只能建立一対一的通信,這樣需要建立較多的會話,通信量較多,部分嵌入式操作系統本身的TCP和UDP實現的可靠性遭到質疑,另外采用TCP和UDP需要占用大量的IP地址,這些IP地址雖然只在設備內部使用,但為設備遭受攻擊留下了隱患。其次,如果采用TCP或者UDP的主從通信機制,板卡兩兩之間通過建立會話進行通信,每塊板卡需要建立大量的會話對,對這些眾多會話對的管理、建立和刪除都占用的大量的CPU和緩存資源。而中高端路由器或者交換機的CPU資源和緩存對系統性能的影響極大,板卡之間的通信和管理必須盡量節省資源。因此使用TCP或者UDP通信實現各板卡之間多點對多點的可靠傳輸,存在較大的局限性。另外,各種類型的板卡之間的通信除滿足以上基本功能外,必須具備足夠的可靠性。只有通過可靠正確的傳輸,才能保證整個系統的正常運行,并實現路由器或者交換機設備的基本功能。
發明內容
有鑒于此,本發明的主要目的在于提供ー種采用類似于四層TCP傳輸的請求-應答方式,實現ニ層以太網的可靠傳輸,通過有效的狀態機管理,實現機架式路由器或者交換機中各種板卡之間可靠通信和管理的分布式多對多設備通信和管理方法。
為達到上述目的,本發明提供ー種分布式多對多設備通信和管理方法,其包括如下步驟
(1)機架式路由器或者交換機設備各板卡啟動后,啟動兩個后臺任務,ー個后臺任務定時發送私有定義的心跳報文,另ー個后臺任務監控其他板卡的心跳報文;
(2)各板卡記錄其他板卡的狀態,維護整個設備板卡的狀態機,所有板卡的發現、加入、監控和離開通過狀態機的變遷來實現;
(3)將應用層需要傳輸的數據,通過私有協議進行封裝,根據目的板卡和發送板卡設置相應的目的MAC地址和源MAC地址,通過可靠傳輸方式發送給目的板卡;
(4)通過定時器機制,實現數據報文的重傳和板卡的狀態檢查;
(5)發包時,查看是否存在發送緩沖區,填寫發送報文協議包頭,然后發送,并啟動數據 包的緩存定時器,發送緩沖區按發送序列號的順序遞增排列;
(6)收包時,檢查是否等于期望接收的序列號,如果相等則直接交給應用層進行收包處理,對期望接收的序列號重新賦值,反之需要緩存,并發送期望接收序列號;
(7)對于可靠按序傳輸,發送者和接收者都要維護ー個發送緩存和ー個接收緩存,并且都維護ー個可接收序號的窗ロ,發送緩存用于存放發送出去的未確認的包,接收緩存用于存放接收到但亂序的包,接收緩存里面已經按序的包直接交給相應的上層進行處理。該方法用于機架式交換設備內部各板卡之間的可靠通信,可擴展至其他類似的系統。各板卡之間進行多點對多點的管理數據傳輸時,采用私有的以太網ニ層通信協議,對單播和組播均可實現可靠傳輸。所述私有的以太網ニ層通信協議,數據包頭部格式為自定義格式。包的重傳由每個包的重傳定時器來進行,實現組播報文中僅對部分未確認的板卡進行重傳。對于長包,根據鏈路的MTU,實現分片和重組。發包過程中,捎帶上ー報文的確認ACK信息。本發明的分布式多對多設備通信和管理方法采用基于ニ層以太網的傳輸機制,通過機架式設備板卡之間可靠的多點對多點傳輸,實現機架式路由器中多主控卡、各種線路接ロ卡和各種業務處理卡之間的可靠傳輸和管理,從而保障了網絡層核心設備的高可靠性。
圖I為本發明應用的硬件框架圖2為本發明應用的軟件框架圖3為本發明的軟件實現結構圖4為本發明的任務事件處理圖5為本發明主控板維護的狀態機;
圖6為本發明除主控外其他板卡維護的狀態機;
圖7為本發明各板卡間私有傳輸數據包格式。
具體實施例方式為便于對本發明的方法及達到的效果有進ー步了解,下面結合附圖對本發明進行詳細的描述。基于分布式體系結構的中高端路由器和交換機硬件架構如圖I所示,整個系統包括主控模塊、交換網模塊、接ロ處理單元、業務處理單元。系統主控模塊采用1+1的冗余備份,主控模塊專注于業務控制協議(如路由協議)內部傳送,通過獨立通道提供控制信息傳遞;交換網采用多級交換矩陣結構,實現分布式交換;接ロ単元實現高速報文處理;業務處理單元種類較多,如IPv4/IPv6過渡業務處理単元實現隧道、翻譯等IPv4/IPv6過渡,安全智能管道處理單元實現高速業務感知和內容管控等,同一種功能的業務處理單元一般采用N+1備份。 在中高端路由器或者交換機中,各種類型的板卡都具備自己的CPU和相應的嵌入式操作系統,各板卡之間通過主從分布式通信或者TCP、UDP等機制,實現相互之間的發現與控制管理。主控提供整個系統的網管界面,使得整個系統對外是一個完整的整體。其軟件體系結構設計框架如圖2所示,它包括控制實體(CE)和轉發實體(FE)兩部分。控制實體負責管理整個路由器系統,控制實體軟件負責管理整個路由器系統,主要完成上層各種虛擬設備驅動程序、虛擬設備接ロ映射管理、路由控制協議、控制平面協議棧、開放控制服務映射層、構件運行支撐環境與管理監測、用戶操作管理Π (User Interface)公共支撐模塊、網絡管理公共支撐模塊、控制實體與轉發實體間通信、管理和監控以及與用戶相關的各種配置管理支持等功能。轉發實體指路由轉發板,使用網絡處理器、多核處理器來處理接ロ管理和報文轉發功能,完成IPv4、IPv6、MPLS等多種協議報文的轉發處理功能,完成IPv4/IPv6隧道、IPv4/IPv6協議翻譯等功能。因此,基于分布式體系結構的中高端路由器和交換機中,各板卡之間需要進行多點對多點的可靠通信,如果能夠找到ー種高效可靠的多點對多點分布式通信機制,實現機架式路由器或者交換機中板卡(控制實體)之間的有效管理,對機架式路由器或者交換機的穩定性和綜合性能的提高是大有裨益的。任務和事件處理的總體實現
本發明的方法運行于機架式設備的各類型板卡上,運行結構如圖3所示,通過上層協議接ロ與上層協議進行通信,通過下層以太網接ロ與以太網鏈路驅動連接,在上層協議接口中封裝為私有的通信格式。如圖3所示,除以上接口外,還需實現以下功能
分片和重組單播和組播均支持分片和重組功能,根據鏈路MTU,對較大數據包進行分片,在接收端,則對分片包按序進行重組。狀態機維護實現板卡的發現、加入、監控和離開。單播和組播以太網單播地址通過板卡的發現進行學習,單播直接使用以太網單播來實現,廣播直接用以太網廣播來實現,組播也用以太網廣播來實現,在軟件通信數據包里面進行接收槽位區分。對單播和組播的可靠傳輸,均需要收到全部接收板卡的應答信息,未收到應答信息的板卡,需進行重傳。分布式多對多設備通信和管理方法任務處理如圖4所示,主要包括收、發包事件處理,狀態機超時處理,ACK報文的請求和處理等。
狀態機中各狀態及變遷的實現
圖5為主控板卡維護的狀態變遷圖,主要包含以下狀態
NONEXIST :板卡啟動時將狀態機設置為N0NEXIST狀態;
0PENRECV :板卡在NONEXIST收到其他卡發來的OPEN包,發送0PENACK進入0PENRECV狀態;同時啟動0PENRECV定時器,防止狀態機長期處于0PENRECV狀態;同時啟動Ke印alive和hold機制;
LOADING :板卡在0PENRECV狀態收到L0ADREQ,進入LOADING狀態,同時開始對其他卡需要同步配置的信息數據進行傳輸;
OPERATION :板卡在LOADING狀態收到L0ADFINISH進入0PERATKI0N狀態,在整個過程 中都存在keepalive和hold機制;
在LOADING和OPERATION狀態收到OPEN包說明線卡重新啟動,進入0PENRECV狀態。圖6為除主控板卡外,其他板卡維護的狀態變遷圖,主要包含以下狀態
NONEXIST :板卡啟動將狀態機設置為N0NEXIST狀態,發送OPEN進入0PENSEND狀態,啟
動0PENSEND定時器;
0PENSEND :板卡收到主控發來的0PENACK包,發送L0ADREQ進入LOADING狀態,接收主控發送過來的load數據,同時啟動keepalive和hold機制;
LOADING :板卡收到L0ADDATA進行LOADING處理,load數據應該有結束標志,板卡執行load操作通知板卡狀態機load完成,進入OPERATION狀態;
OPERATION :在整個過程中都存在ke印alive和hold機制。整個系統狀態變遷說明如下
1、各板卡初始化完畢都處于NONEXIST狀態;
2、各線路接ロ卡和業務處理卡發送廣播的ΤΥΡΕ_0ΡΕΝ消息,進入STATE_0PENSEND;
3、主控板收到ΤΥΡΕ_0ΡΕΝ消息,發送TYPE_0PENACK,進入STATE_0PENRECV狀態,啟動Keepalive 和 Hold 定時器;
4、各線路接ロ卡和業務處理卡收到TYPE_0PENACK消息,發送TYPE_L0ADREQ消息,進入STATE_L0ADING狀態,啟動Ke印alive和Hold定時器;
5、主控板卡收到TYPE_L0ADREQ消息,通知上層處理TYPE_L0ADREQ消息,并將該板卡信息廣播給所有已在位板卡;
6、各已在位板卡記錄新加入的板卡信息,新上線板卡接收其他上層處理loading消息,Loading完畢后,通知線卡Loading完成,線卡進入STATE_0PERATI0N狀態,發送TYPE_L0ADFINISH消息給主控;
7、主控收到TYPE_L0ADFINISH 消息進入 STATE_0PERATI0N 狀態;
8、每個狀態都有一個和該狀態相關的定時器,避免在某個狀態上停留時間太長。板卡之間數據包傳輸格式
為了保證可靠傳輸,需要定義板卡間傳輸數據包封裝格式,支持各板卡彼此之間的單播和廣播,此外還考慮傳輸大塊的數據信息的分段傳輸、服務質量QoS等,即不同級別的應用可以用不同的服務策略。圖7表示了板卡之間數據傳輸的消息格式。各字段定義如下
type :表示數據包的類型,主要有以下幾種類型open、openack、keepalive(互相發送)、Loadreq、Loadf inish、ackreq (ACK 輪循)、ack (ACK 響應)、Nak、data (數據包)、nm (網管包)等;
dir :表示數據包的方向性,主要有以下幾種從主控卡到線路接ロ卡、線路接ロ卡到主控卡、主控卡到業務處理卡、業務處理卡到·主控卡、線路接ロ卡到業務處理卡、業務處理卡到線路接ロ卡。可以有多種類型同時進行,如主控卡向線路接ロ板卡和業務處理板卡,則為主控卡到線路接ロ卡和主控卡到業務處理卡的或操作;
svr :表不進行傳輸的要求,O表不非可靠非按序服務,I表不可靠按序服務;
length :包括數據包頭的總長度;
identifier :表示發送的姆ー份應用數據單元;
flag :更多的片MF標志,廣播或單播標志;
offset :分片偏移;
seq :發送序列號;
ack :確認號;
src :源卡號;
srccpu:源 CPU 號;
dst :目的卡號,在單播包中才有效;
srccpu:目的 CPU 號;
reserved :保留;
checksum :校驗和,包括首部和數據;
d stmap :目的卡號、CPU號的bitmap,最大支持64*4,在廣播標志中才有效。發包流程
對于等待發送的數據包,首先獲得自己的槽位號,和待發送的目的地的槽位號(可以為廣播地址,向所有板卡進行廣播),是否要求可靠服務,制定的CoS類別。對分配的數據包分配內存池中的塊,如果失敗,則錯誤計數,返回。分配內存成功,根據鏈路的MTU,將相應的數據報文拆分,如果待發送包的序列號在發送窗ロ之內,也可以查看是否還存在發送緩沖區,再填寫發送報文協議包頭,然后發送。啟動數據包的緩存定時器。如果緩存定時器超時,且收到NAK,則重傳,如果超時η (η缺省=3)次以后,則丟棄,可用發送緩沖區個數加1,進行錯誤計數。發送緩沖區按發送序列號的順序遞增排列,因此再進行插入的時候按有序鏈表操作。發包過程中,可以捎帶上ー報文的確認ACK信息。收包流程
從底層驅動收到協議類型為0xFF03的數據包,檢查是否等于期望接收的序列號,如果相等則直接交給應用層進行收包處理,然后檢查接收緩沖區,按序檢查,將需要的包交付上層,對期望接收的序列號重新賦值。反之需要緩存,檢查是否有接收緩沖區,如果有,則緩存,并發送期望接收序列號的ΝΑΚ。緩存起來,啟動定時器,如果超吋,則重傳ΝΑΚ,如果超時η (η缺省=3)次以后,則丟棄,可用接收緩沖區個數增加。收到NAK報文以后,對發送緩存中的包添加NAK收到標記。如果收到確認序列號報文,且確認序列號在期望接收的確認序列號和下一個發送序列號之間,則關閉定時器,釋放所有小于或等于當前確認序列號的發送緩存,可用發送緩沖區個數增加。可靠按序傳輸
發包時,如果緩存不夠,直接返回ERROR,其他情況返回0K。由于源地址和目的地址采用bit位來表示,并且Oxffffffff表示廣播,整個系統最多支持32個板卡。各板卡對每個其他板卡(包括廣播、組播)維護ー個發送緩存和ー個接收緩存,發送緩存用于存放發送出去的未確認的包,接收緩存用于存放接收到但亂序的包,接收緩存里面已經按序的包直接交給相應的上層進行處理。發送者維護本地變量ack_expected (發送者發送出去的包的最低序號)和next_Seq_t0_Send(發送者發送出去的最大序號+1),發送者收到ack后,判斷ack中的序號是否 在 ack_expected 和 next_seq_to_send circulIy 之間,確定是否釋放 ack_expected 和 ack序號之間的發送緩存并増加aclexpected,達到最大值后,循環設置為O ;
接收者維護本地變量seq_expected (期望接收的最小序號)和seq_toofar (接收者可以接收的最大序號+1 ),接收者對接收的序號seq,判斷是否在seq_expected和seq_toofar之間,從而確定收到的包是否在接收窗口內,如果seq和seq_expected不相等,發送NAK要求重傳seq_expected,將按序的包依次送給相應的處理函數進行處理。為了智能修改重傳機制,收到NAK,應發送NAK消息中確認序號之后一數據塊,因為丟包往往會持續ー小段時間,避免重傳之后較近的數據連續重傳;及時釋放緩沖區,不要等到keepalive或ackack方才釋放;收到Keepalive,看作收到確認序號+1的NAK,實現智能重傳。發送者和接收者都要維護ー個發送緩存和ー個接收緩存,并且都維護ー個可接收序號的窗ロ,發送方的窗ロ從O開始增加到最大BUFFER_NUM,接收者窗ロ固定為BUFFER_NUM大小,接收方為窗口內的每個序號提供一個緩存,每個接收緩存還有ー個相關的標志位用來表示緩存的占用情況。發送廣播包者針對每個發送緩存還要提供引用計數,釋放發送緩存只是將引用計數減1,當應用計數為O時才真正的釋放緩存。板卡定時輪循廣播發送ackreq,請求其他板卡發回ack,由于板卡需要區分是針對廣播包的ack還是針對單播的ack,在ack包里面包含是廣播還是單播的ack標志,收包者需要保存收到的包是廣播還是單播,這樣在對包進行ackreq回復時可以作出判斷,這ー點可以直接使用收到的緩存中的目的mac作出判斷。包的重傳由每個包的重傳定時器來進行,重傳定時器到,檢查有無NAK到達,若有則進行重傳,若無則繼續重新啟動重傳定時器,重傳定時器的關閉由ACK包來觸發。本發明的方法的基本思路是所有板卡啟動后,初始化管理軟件,啟動兩個后臺任務,一個后臺任務定時發送私有定義的心跳報文,心跳報文中攜帶該板卡的槽位信息、板卡類型以及子卡信息等,另ー個后臺任務監控其他板卡的心跳報文,記錄其他板卡的狀態,維護整個設備板卡的狀態機。所有板卡的發現、加入、監控和離開通過狀態機的變遷來實現。各板卡維護整個系統各板卡的信息,主控卡根據其他卡的類型和端ロ信息,發送相應的配置信息;線路接ロ卡根據業務處理板卡的位置和流量信息,調度本接ロ卡接收數據業務的轉發和處理,對于多個相同類型的轉發卡和業務處理卡,實現負載均衡調度,同時由于線路接ロ板卡維護了各業務處理板卡的信息,對與業務處理板卡的熱插拔操作,線路接ロ板卡可及時感知,實現有效的調度,提高了設備對數據業務處理的效率,同時避免業務的丟失;另外,業務處理板卡根據線路接ロ板卡和交換板卡的信息,將處理后的業務進行合適的分發。因此該方法除了完成各種板卡之間的狀態協商及維護外,還需要進行多點對多點的管理數據通信、負責設置、獲取線卡硬件信息等。各板卡之間進行多點對多點的管理數據傳輸時,采用私有的以太網ニ層通信協議,該方法主要用于設備內部的通信,只需要單播和廣播兩種方式。可靠傳輸報文的源MAC地址為本板卡設置的地址,可進行固定設置或者通過槽位號換算,單播報文的目的MAC地址為相應目的槽位的MAC地址,廣播報文則為全F。以太報文類型則私有定義為0xFF03,其他數據包類型則進行私有定義。 為保證可靠傳輸,對于各板卡之間的單播傳輸,采用請求-應答的傳輸機制,發送板卡需要接收到確認消息ACK之后,才向上層應用返回傳輸成功消息。對于各板卡之間的廣播傳輸,由于發送板卡已知系統中所有板卡信息,且了解需要接收的板卡,為實現其可靠性,發送時將需要廣播的槽位信息通過設置相應的位操作來實現,接收確認消息ACK吋,需要對相應的位進行判斷,只有接收到所有槽位的ACK消息后,才能表示其他槽位已正確接收,如果有部分失敗,也只需對失敗的槽位進行傳輸。包的重傳由每個包的重傳定時器來進行,重傳定時器到,檢查有無重傳請求NAK到達,若有則進行重傳,若無則繼續重新啟動重傳定時器,重傳定時器的關閉由確認消息ACK包來觸發。分片和重組采用類似IP的分片和重組機制,根據鏈路的MTU,將應用層的數據拆份,對分片報文攜帯相應的標記和序號。接受完成后,根據序號進行重組數據包。為保證傳輸的按序進行,所有板卡軟件均維護ー個發送緩存和ー個接收緩存,發送緩存用于存放發送出去的未確認的包,接收緩存用于存放接收到但亂序的包,接收緩存里面已經按序的包直接交給相應的上層進行處理。發送者維護本地變量aclexpected(發送者發送出去的包的最低序號)和neXt_Seq_t0_Send (發送者發送出去的最大序號+1);接收者維護本地變量seq_expected (期望接收的最小序號),如果ack_expected和seq_expected不相等,發送NAK要求重傳seq_expected,將按序的包依次送給相應的處理函數進行處理。以上所述,僅為本發明的較佳實施例而已,并非用于限定本發明的保護范圍。
權利要求
1.ー種分布式多對多設備通信和管理方法,其特征在于,其包括如下步驟(1)機架式路由器或者交換機設備各板卡啟動后,啟動兩個后臺任務,ー個后臺任務定時發送私有定義的心跳報文,另ー個后臺任務監控其他板卡的心跳報文;(2)各板卡記錄其他板卡的狀態,維護整個設備板卡的狀態機,所有板卡的發現、加入、監控和離開通過狀態機的變遷來實現;(3)將應用層需要傳輸的數據,通過私有協議進行封裝,根據目的板卡和發送板卡設置相應的目的MAC地址和源MAC地址,通過可靠傳輸方式發送給目的板卡;(4)通過定時器機制,實現數據報文的重傳和板卡的狀態檢查;(5)發包時,查看是否存在發送緩沖區,填寫發送報文協議包頭,然后發送,并啟動數據包的緩存定時器,發送緩沖區按發送序列號的順序遞增排列; (6)收包時,檢查是否等于期望接收的序列號,如果相等則直接交給應用層進行收包處理,對期望接收的序列號重新賦值,反之需要緩存,并發送期望接收序列號;(7)對于可靠按序傳輸,發送者和接收者都要維護ー個發送緩存和ー個接收緩存,并且都維護ー個可接收序號的窗ロ,發送緩存用于存放發送出去的未確認的包,接收緩存用于存放接收到但亂序的包,接收緩存里面已經按序的包直接交給相應的上層進行處理。
2.如權利要求I所述的分布式多對多通信和管理方法,其特征在于,該方法用于機架式交換設備內部各板卡之間的可靠通信,可擴展至其他類似的系統。
3.如權利要求I所述的分布式多對多通信和管理方法,其特征在于,各板卡之間進行多點對多點的管理數據傳輸時,采用私有的以太網ニ層通信協議,對單播和組播均可實現可靠傳輸。
4.如權利要求3所述的分布式多對多通信和管理方法,其特征在于,所述私有的以太網ニ層通信協議,數據包頭部格式為自定義格式。
5.如權利要求I所述的分布式多對多通信和管理方法,其特征在于,包的重傳由每個包的重傳定時器來進行,實現組播報文中僅對部分未確認的板卡進行重傳。
6.如權利要求I所述的分布式多對多通信和管理方法,其特征在干,對于長包,根據鏈路的MTU,實現分片和重組。
7.如權利要求I所述的分布式多對多通信和管理方法,其特征在干,發包過程中,捎帶上ー報文的確認ACK信息。
全文摘要
本發明公開了一種分布式多對多設備通信和管理方法,其包括如下步驟(1)機架式路由器或者交換機設備各板卡啟動后,啟動兩個后臺任務;(2)各板卡記錄其他板卡的狀態;(3)將應用層需要傳輸的數據,通過私有協議進行封裝,根據目的板卡和發送板卡設置相應的目的MAC地址和源MAC地址,通過可靠傳輸方式發送給目的板卡;(4)通過定時器機制,實現數據報文的重傳和板卡的狀態檢查;(5)發包及(6)收包。本發明的方法采用基于二層以太網的傳輸機制,通過機架式設備板卡之間可靠的多點對多點傳輸,實現機架式路由器中多主控卡、各種線路接口卡和各種業務處理卡之間的可靠傳輸和管理,從而保障了網絡層核心設備的高可靠性。
文檔編號H04L12/24GK102833332SQ201210302249
公開日2012年12月19日 申請日期2012年8月23日 優先權日2012年8月23日
發明者汪學舜, 戴錦友, 朱國勝, 劉輝輝 申請人:武漢烽火網絡有限責任公司