網絡拓撲發現方法和系統的製作方法
2023-05-07 17:40:01
網絡拓撲發現方法和系統的製作方法
【專利摘要】本發明提供了一種網絡拓撲發現方法和系統。涉及軟體定義網絡架構中的領域;解決了在交換機數目較多、埠數目較多的情況下極易給控制通道帶來較大的壓力的問題。該方法包括:控制器接收網絡設備發送的消息,在所述消息中攜帶有所述網絡設備鏈路遠端埠所在網絡設備的設備ID和鏈路遠端埠的埠號;所述控制器根據所述消息,對網絡進行拓撲發現。本發明提供的技術方案適用於軟體定義網絡,實現了通過OpenFlow協議來攜帶相關參數至控制器。
【專利說明】網絡拓撲發現方法和系統
【技術領域】
[0001] 本發明涉及軟體定義網絡架構中的領域,尤其涉及一種網絡中使用協議進行拓撲 發現的網絡拓撲發現方法和系統。
【背景技術】
[0002] 由於現在的網絡暴露出了越來越多的弊病以及人們對網絡性能需求的提高,於是 研究人員不得不把很多複雜功能加入到路由器的體系結構當中,例如〇SPF,BGP,組播,區分 服務,流量工程,NAT,防火牆,MPLS等等。這就使得路由器等交換設備越來越臃腫而且性能 提升的空間越來越小。
[0003] 然而與網絡領域的困境截然不同的是,計算機領域實現了日新月異的發展。仔細 回顧計算機領域的發展,不難發現其關鍵在於計算機領域找到了一個簡單可用的硬體底層 (x86指令集)。由於有了這樣一個公用的硬體底層,所以在軟體方面,不論是應用程式還是 作業系統都取得了飛速的發展。現在很多主張重新設計計算機網絡體系結構的人士認為: 網絡可以複製計算機領域的成功來解決現在網絡所遇到的所有問題。在這種思想的指導 下,將來的網絡必將是這樣的:底層的數據通路(交換機、路由器)是"啞的、簡單的、最小 的",並定義一個對外開放的關於流表的公用的API,同時採用控制器來控制整個網絡。未來 的研究人員就可以在控制器上自由的調用底層的API來編程,從而實現網絡的創新。
[0004] 基於上述的理念,出現了軟體定義網絡(Software Defined Network, SDN),其最 初是由美國史丹福大學clean slate研究組提出的一種新型網絡創新架構。目前,其核心 技術開放流(OpenFlow)協議通過將網絡設備控制面與數據面分離開來,從而實現了網絡 流量的靈活控制,為核心網絡及應用的創新提供了良好的平臺。
[0005] OpenFlow交換機包括流表、安全通道和OpenFlow協議三部分。
[0006] 安全通道是連接OpenFlow交換機到控制器的接口。控制器通過這個接口控制和 管理交換機,同時控制器接收來自交換機的事件並向交換機發送數據包。交換機和控制器 通過安全通道進行通信,而且所有的信息必須按照OpenFlow協議規定的格式來執行。
[0007] OpenFlow協議用來描述控制器和交換機之間交互所用信息的標準,以及控制器和 交換機的接口標準。協議的核心部分是用於OpenFlow協議信息結構的集合。
[0008] OpenFlow協議支持三種信息類型:控制器到交換機(Controller-to-Switch), 異步的(Asynchronous)和對稱的(Symmetric),每一個類型都有多個子類型。 Control ler-to-Switch信息由控制器發起並且直接用於檢測交換機的狀態。Asynchronous 信息由交換機發起並通常用於更新控制器的網絡事件和改變交換機的狀態。Symmetric信 息可以在沒有請求的情況下由控制器或交換機發起。
[0009] SDN/OpenFlow目前處於發展的初期階段,協議功能並不完善,在路由拓撲的發現, 多種傳送技術網絡的統一控制方面,均有一些不同程度的不足需要去完善。
[0010] 目前有兩種設計方式用於SDN/OpenFlow場景下的拓撲發現。
[0011] -種是使用原始的鏈路層發現協議(Link Layer Discovery Protocol, LLDP)協 議來協助拓撲的發現,其拓撲發現過程是控制器Controller產生LLDP包,並且定期通過 packet-out消息發送LLDP包給OpenFlow交換機,OpenFlow交換機基於控制器Controller 的動作行為將LLDP包轉發給鄰接交換機,鄰接OpenFlow交換機使用packet-in消息將 LLDP包發送給控制器Controller,這樣控制器Controller就能夠擁有整個交換機網絡的 拓撲。
[0012] 另外一種是使用了擴展的LLDP協議來做拓撲發現,這種LLDP協議支持使用多播 IP位址,當設備接收到LLDP包時,設備不僅僅更新本地的LLDP信息,還將LLDP包轉發給其 他的接口,這樣控制器Controller及所有的交換機都有整個網絡區域的拓撲了。
[0013] 上述兩種方案在進行網絡拓撲發現的時候具有一個共同的缺點,即在交換機數目 較多,埠數目較多的情況下極易給控制通道帶來較大的壓力。
【發明內容】
[0014] 本發明提供了一種網絡拓撲發現方法和系統,解決了在交換機數目較多、埠數 目較多的情況下極易給控制通道帶來較大的壓力的問題。
[0015] 一種網絡拓撲發現方法,包括:
[0016] 控制器接收網絡設備發送的消息,在所述消息中攜帶有所述網絡設備鏈路遠端端 口所在網絡設備的設備標識(ID)和鏈路遠端埠的埠號;
[0017] 所述控制器根據所述消息,對網絡進行拓撲發現。
[0018] 優選的,所述消息具體為開放流(OpenFlow)協議的埠狀態(Port-status)消 肩、。
[0019] 優選的,所述Port-status消息的擴充欄位節點標識(node_ID)表示所述網絡設 備鏈路遠端埠所在網絡設備的設備ID,擴充欄位埠號(p 〇rt_n〇)表示所述鏈路遠端端 口的埠號。
[0020] 優選的,所述Port-status消息中還攜帶有所述網絡設備的本地節點埠號,所 述控制器根據所述消息,對網絡進行拓撲發現包括 :
[0021] 所述控制器根據所述相鄰設備的標識,確定各網絡設備之間的連接關係;
[0022] 所述控制器根據所述鏈路遠端埠的埠號和所述本地節點埠號,確定所述各 網絡設備之間進行連接時使用的埠;
[0023] 所述控制器根據各網絡設備之間的連接關係和各網絡設備之間進行連接時使用 的埠,恢復出網絡映像。
[0024] 優選的,所述網絡設備間的鏈路為單向鏈路或雙向鏈路。
[0025] 優選的,所述控制器接收網絡設備發送的消息具體為:
[0026] 所述控制器通過控制通道接收所述網絡設備發送的消息。
[0027] 本發明還提供了一種網絡拓撲發現方法,包括:
[0028] 網絡設備發送消息給控制器,在所述消息中攜帶有該網絡設備鏈路遠端埠所在 網絡設備的設備ID和所述鏈路遠端埠的埠號。
[0029] 優選的,所述消息具體為OpenFlow協議的Port-status消息。
[0030] 優選的,所述Port-status消息的擴充欄位node_ID表示所述網絡設備鏈路遠端 埠所在網絡設備的設備ID,擴充欄位p 〇rt_n〇表示所述鏈路遠端埠的埠號。
[0031] 本發明還提供了一種網絡拓撲發現系統,包括控制器和多個網絡設備;
[0032] 所述網絡設備,用於發送消息給控制器,在所述消息中攜帶有該網絡設備鏈路遠 端埠所在網絡設備的設備ID和所述鏈路遠端埠的埠號;
[0033] 所述控制器,用於接收所述所述消息,並根據所述消息,對網絡進行拓撲發現。
[0034] 優選的,所述消息具體為OpenFlow協議的Port-status消息。
[0035] 優選的,所述Port-status消息的擴充欄位節點標識(node_ID)表示所述網絡設 備鏈路遠端埠所在網絡設備的設備ID,擴充欄位埠號(p 〇rt_n〇)表示所述鏈路遠端端 口的埠號。
[0036] 優選的,所述控制器根據所述消息,對網絡進行拓撲發現具體為:
[0037] 所述控制器根據所述相鄰設備的標識,確定各網絡設備之間的連接關係,根據所 述鏈路遠端埠的埠號和所述本地節點埠號,確定所述各網絡設備之間進行連接時使 用的埠,根據各網絡設備之間的連接關係和各網絡設備之間進行連接時使用的埠,恢 復出網絡映像。
[0038] 優選的,所述多個網絡設備之間的鏈路為單向鏈路或雙向鏈路。
[0039] 本發明提供了一種網絡拓撲發現方法和系統,網絡設備發送消息(具體為 Port-status消息)給控制器,在所述在所述消息中攜帶有所述網絡設備鏈路遠端埠所 在網絡設備的設備ID和鏈路遠端埠的埠號,控制器接收網絡設備發送的消息,再根據 所述消息,對網絡進行拓撲發現。實現了通過OpenFlow協議來攜帶相關參數至控制器,控 制器根據OpenFlow協議攜帶的參數即可重組網絡拓撲,減少了重組拓撲過程中控制器與 設備之間進行信息交互的數據量,解決了在交換機數目較多、埠數目較多的情況下極易 給控制通道帶來較大的壓力的問題。
【專利附圖】
【附圖說明】
[0040] 圖1為本發明的實施例的應用場景的物理網絡拓撲示意圖;
[0041] 圖2為本發明的實施例一提供的一種網絡拓撲發現方法的流程圖;
[0042] 圖3為現有的Port-status消息格式;
[0043] 圖4為本發明的實施例一中提供的一種擴展後的Port-status消息格式;
[0044] 圖5為本發有的實施例一中,Controller對於10. 5. 1. 1節點的拓撲映像示意圖;
[0045] 圖6為Controller對於整個網絡的拓撲映像示意圖。
【具體實施方式】
[0046] 現有的網絡拓撲方案在進行網絡拓撲發現的時候具有一個共同的缺點,即在交換 機數目較多,埠數目較多的情況下極易給控制通道帶來較大的壓力。
[0047] 為了解決上述問題,本發明的實施例提供了一種網絡拓撲發現方法和系統,能夠 在不擴展LLDP的情況下,通過使用較少的OpenFlow協議擴展攜帶一些拓撲發現必需參數 達到拓撲發現的目的,具有輕量型的優點,能夠減少拓撲發現所帶給控制通道的壓力。
[0048] 下文中將結合附圖對本發明的實施例進行詳細說明。需要說明的是,在不衝突的 情況下,本申請中的實施例及實施例中的特徵可以相互任意組合。
[0049] 首先結合附圖,對本發明的實施例一進行說明。
[0050] 本發明實施例提供了一種拓撲發現方法,適用於SDN/OpenFlow場景下的網絡拓 撲發現,通過OpenFlow協議將每個OpenFlow網絡設備(具體為交換機)與相鄰節點的互 聯信息上報給控制器(具體為Controller),Controller收集每個OpenFlow交換機上報上 來的信息,重新整理組合之後形成整個網絡的拓撲信息,用於路徑計算。
[0051] 本發明實施例的應用環境如圖1所示,為一網絡拓撲圖,實線表示網絡設備之間 的鏈路連接,每條鏈路均代表雙向的連接(在一些網絡中也可以只用於表示單向鏈路), 虛線表示網絡設備與控制器之間的控制通道,網絡設備與控制器之間通過控制通道傳輸 OpenFlow 消息。
[0052] 使用本發明實施例提供的拓撲發現方法進行網絡拓撲映像恢復的流程如圖2所 示,包括:
[0053] 步驟201、網絡設備發送消息給控制器;
[0054] 本步驟中,網絡設備(具體為OpenFlow交換機)之間通過運行LLDP/LMP協議 來發現相鄰設備的一些信息,包括相鄰設備的節點標識信息及埠標識信息等,然後通過 OpenFlow協議將本地節點與其他相鄰節點的鏈路連接信息上報給控制器,其中本地節點與 相鄰節點之間的鏈路連接信息使用鏈路兩端埠的標識來表示。同時,為了唯一標識網絡 區域中鏈路的埠信息,需要將節點標識信息與鏈路標識信息結合起來,將節點的標識信 息一同上報給Controller。
[0055] 具體的,OpenFlow交換機需要通過OpenFlow協議中的Port-status消息將網 絡設備鏈路遠端埠所在網絡設備的設備標識ID和鏈路遠端埠的埠號信息上報給 Contro 11 er,Contro 11 er根據每個節點上報上來的連接信息重新構建出整個網絡的拓撲映 像,然後根據網絡拓撲進行路徑計算、路徑建立以及標籤的下發等。相比於原有的將整個 LLDP包上報的方案,本發明實施例僅僅通過少量的擴展欄位就使得Controller能夠獲得 網絡拓撲,本發明實施例更具輕量型的特點,在實施應用於要更有優勢。
[0056] 以下為Port-status消息的一種具體實現:
[0057] 如【背景技術】中的描述,OpenFlow協議支持三種信息類型:Controller-to-Switch, Asynchronous和Symmetric,每一個類型都有多個子類型。其中Asynchronous消息是由交 換機發起並通常用於更新控制器的網絡事件和改變交換機的狀態。在目前的OpenFlow協 議版本中主要包括以下四種 Asynchronous 消息:Packet-in,Flow-removed,Port-status, Error等信息。
[0058] 其中Port-status消息用於將埠信息的變化通知給Controller控制器,交換機 在埠配置時候或者埠狀態變化的時候發送Port-status消息給控制器。具體說來,現 有Port-status消息格式如下:
[0059] /* A physical port has changed in the datapath */ struct ofp port status ( struct ofp header header; uint8_t reason; I* One of OFPPR *. */ uint8_t pad[7]; /* Align to 64-bits. */ struct ofp port desc; I ·
[0060] 0FP_ASSERT (sizeof (struct ofp_port_status) ==80);
[0061] 對於上述Port-status消息格式,可參見圖3,其中每行代表四個字節(32比特 位),其餘各個欄位的定義可查閱OpenFlowl. 3協議版本。
[0062] 本發明實施例中對Port-status消息進行了擴展,在所述Port-status消息中添 加擴充欄位節點標識(node_ID)表示所述網絡設備鏈路遠端埠所在網絡設備的設備ID, 擴充欄位埠號(P〇rt_no)表示所述鏈路遠端埠的埠號。
[0063] 一種具體的擴展方案如下:
[0064] /* A physical port has changed in the datapath */ struct ofp port status { struct ofpjieader header; uint8_t reason; /* One of OFPPR *. */ uint8_l pad[7]; /* Align to 64-bits. */ struct ofp port desc;
【權利要求】
1. 一種網絡拓撲發現方法,其特徵在於,包括: 控制器接收網絡設備發送的消息,在所述消息中攜帶有所述網絡設備鏈路遠端埠所 在網絡設備的設備標識(ID)和鏈路遠端埠的埠號; 所述控制器根據所述消息,對網絡進行拓撲發現。
2. 根據權利要求1所述的網絡拓撲發現方法,其特徵在於,所述消息具體為開放流 (OpenFlow)協議的埠狀態(Port-status)消息。
3. 根據權利要求2所述的網絡拓撲發現方法,其特徵在於,所述Port-status消息的擴 充欄位節點標識(node_ID)表示所述網絡設備鏈路遠端埠所在網絡設備的設備ID,擴充 欄位埠號(P〇rt_no)表示所述鏈路遠端埠的埠號。
4. 根據權利要求3所述的網絡拓撲發現方法,其特徵在於,所述Port-status消息中還 攜帶有所述網絡設備的本地節點埠號,所述控制器根據所述消息,對網絡進行拓撲發現 包括: 所述控制器根據所述相鄰設備的標識,確定各網絡設備之間的連接關係; 所述控制器根據所述鏈路遠端埠的埠號和所述本地節點埠號,確定所述各網絡 設備之間進行連接時使用的埠; 所述控制器根據各網絡設備之間的連接關係和各網絡設備之間進行連接時使用的端 口,恢復出網絡映像。
5. 根據權利要求1所述的網絡拓撲發現方法,其特徵在於,所述網絡設備間的鏈路為 單向鏈路或雙向鏈路。
6. 根據權利要求1所述的網絡拓撲發現方法,其特徵在於,所述控制器接收網絡設備 發送的消息具體為: 所述控制器通過控制通道接收所述網絡設備發送的消息。
7. -種網絡拓撲發現方法,其特徵在於,包括: 網絡設備發送消息給控制器,在所述消息中攜帶有該網絡設備鏈路遠端埠所在網絡 設備的設備ID和所述鏈路遠端埠的埠號。
8. 根據權利要求7所述的網絡拓撲發現方法,其特徵在於,所述消息具體為OpenFlow 協議的Port-status消息。
9. 根據權利要求8所述的網絡拓撲發現方法,其特徵在於,所述Port-status消息的擴 充欄位node_ID表示所述網絡設備鏈路遠端埠所在網絡設備的設備ID,擴充欄位port_ no表示所述鏈路遠端埠的埠號。
10. -種網絡拓撲發現系統,其特徵在於,包括控制器和多個網絡設備; 所述網絡設備,用於發送消息給控制器,在所述消息中攜帶有該網絡設備鏈路遠端端 口所在網絡設備的設備ID和所述鏈路遠端埠的埠號; 所述控制器,用於接收所述所述消息,並根據所述消息,對網絡進行拓撲發現。
11. 根據權利要求10所述的網絡拓撲發現系統,其特徵在於,所述消息具體為 OpenFlow 協議的 Port-status 消息。
12. 根據權利要求11所述的網絡拓撲發現系統,其特徵在於,所述Port-status消息的 擴充欄位節點標識(node_ID)表示所述網絡設備鏈路遠端埠所在網絡設備的設備ID,擴 充欄位埠號(P〇rt_no)表示所述鏈路遠端埠的埠號。
13. 根據權利要求12所述的網絡拓撲發現系統,其特徵在於,所述控制器根據所述消 息,對網絡進行拓撲發現具體為: 所述控制器根據所述相鄰設備的標識,確定各網絡設備之間的連接關係,根據所述鏈 路遠端埠的埠號和所述本地節點埠號,確定所述各網絡設備之間進行連接時使用的 埠,根據各網絡設備之間的連接關係和各網絡設備之間進行連接時使用的埠,恢復出 網絡映像。
14. 根據權利要求10所述的網絡拓撲發現系統,其特徵在於,所述多個網絡設備之間 的鏈路為單向鏈路或雙向鏈路。
【文檔編號】H04L12/751GK104158747SQ201310177305
【公開日】2014年11月19日 申請日期:2013年5月14日 優先權日:2013年5月14日
【發明者】王其磊 申請人:中興通訊股份有限公司