端到端的路徑控制和數(shù)據(jù)傳輸方法、OpenFlow控制器和交換機的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種端到端的路徑的控制和數(shù)據(jù)傳輸方法、 OpenFlow控制器和交換機。
【背景技術(shù)】
[0002] 隨著軟件定義網(wǎng)絡(Software Defined Network,簡稱"SDN")理念的不斷發(fā)展,開 放流(OpenFlow)網(wǎng)絡的發(fā)展步伐也在不斷加快。在一定時期內(nèi),開放流網(wǎng)絡將與傳統(tǒng)IP 網(wǎng)絡共存。一種比較常見的場景為同一個管理域(即屬于同一個網(wǎng)絡運營商的多種網(wǎng)絡) 內(nèi),網(wǎng)際協(xié)議(Internet Protocol,簡稱"IP")網(wǎng)絡作為核心網(wǎng)絡,而多個OpenFlow網(wǎng)絡 作為接入網(wǎng)絡與IP網(wǎng)絡互聯(lián)。那么,如何調(diào)度該管理域內(nèi)的網(wǎng)絡資源,創(chuàng)建和控制端到端 (即主機到主機之間)的路徑成為了重要的研究課題。
[0003] 現(xiàn)有技術(shù)中,提供一種盡力而為的端到端的路徑的控制方法,OpenFlow網(wǎng)絡中的 開放流控制器(OpenFlow Controller,簡稱"0FC")根據(jù)該OpenFlow網(wǎng)絡中的開放流交換 機(OpenFlow Switch,簡稱"0FS")之間的實時鏈路狀態(tài)以及邊緣的0FS與IP網(wǎng)絡中邊緣 的路由器之間的當前鏈路狀態(tài),對OpenFlow網(wǎng)絡段、OpenFlow網(wǎng)絡與IP網(wǎng)絡的邊緣連接 部分的鏈路進行控制,然后將數(shù)據(jù)發(fā)送至IP網(wǎng)絡,IP網(wǎng)絡采用盡力而為服務(Best-Effort Service)模型來發(fā)送數(shù)據(jù),但對數(shù)據(jù)的延時、可靠性等性能不提供任何保證)。
[0004] 在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
[0005] 由于OpenFlow控制器無法根據(jù)IP網(wǎng)絡內(nèi)的鏈路的實時狀態(tài)對其進行控制,因而 無法對端到端的路徑進行統(tǒng)一地控制,而IP網(wǎng)絡中的盡力而為的服務并不能保證Q〇S,故 整個端到端的路徑無法保證服務質(zhì)量(Quality of Service,簡稱"QoS")。
【發(fā)明內(nèi)容】
[0006] 為了解決現(xiàn)有技術(shù)中的上述問題,本發(fā)明實施例提供了一種端到端的路徑的控制 方法和數(shù)據(jù)傳輸方法。所述技術(shù)方案如下:
[0007] -方面,本發(fā)明實施例提供了一種端到端的路徑控制方法,所述方法包括:
[0008] OpenFlow控制器獲取管理域或自治系統(tǒng)的網(wǎng)絡拓撲和網(wǎng)絡狀態(tài)信息,所述管理域 包括所述OpenFlow控制器所屬的OpenFlow網(wǎng)絡和IP網(wǎng)絡,所述OpenFlow網(wǎng)絡包括多個 OpenFlow交換機,所述IP網(wǎng)絡包括多個交換設(shè)備,所述自治系統(tǒng)包括所述OpenFlow控制 器、所述OpenFlow控制器控制的多個OpenFlow交換機和非所述OpenFlow控制器控制的多 個交換設(shè)備;
[0009] 確定待傳輸?shù)臄?shù)據(jù)包的源地址和目的地址;
[0010] 根據(jù)所述網(wǎng)絡拓撲和網(wǎng)絡狀態(tài)信息,確定所述源地址到所述目的地址的路徑;
[0011] 確定所述路徑中的第一 OpenFlow交換機,所述第一 OpenFlow交換機為多個 OpenFlow交換機中的一個,且所述第一 OpenFlow交換機的下一跳為第一交換設(shè)備,所述第 一交換設(shè)備為多個交換設(shè)備中的一個;
[0012] 向所述第一 OpenFlow交換機下發(fā)控制消息,所述控制消息用于指示所述第一 OpenFlow交換機將所述待傳輸?shù)臄?shù)據(jù)包中的目的地址設(shè)置為所述第一交換設(shè)備的地址,
[0013] 所述控制消息還用于指示所述第一 OpenFlow交換機重新設(shè)置所述待傳輸?shù)臄?shù)據(jù) 包中的源路由,重新設(shè)置后的所述源路由依次包括所述路徑中位于所述第一交換設(shè)備之后 的剩余的交換設(shè)備的地址和所述目的地址,
[0014] 所述控制消息還用于指示所述第一 OpenFlow交換機將所述待傳輸?shù)臄?shù)據(jù)包從所 述第一 OpenFlow交換機的指定端口發(fā)送給所述第一交換設(shè)備。
[0015] 進一步地,所述OpenFlow控制器獲取管理域或自治系統(tǒng)的網(wǎng)絡拓撲和網(wǎng)絡狀態(tài) 信息,包括:
[0016] 獲取第一網(wǎng)絡狀態(tài)信息,所述第一網(wǎng)絡狀態(tài)信息包括所述多個OpenFlow交換機 的設(shè)備信息、所述多個OpenFlow交換機之間的鏈路信息、與所述多個OpenFlow交換機連接 的一個或多個交換設(shè)備的設(shè)備信息、以及所述多個OpenFlow交換機與各自相連的交換設(shè) 備之間的鏈路信息;
[0017] 接收第二網(wǎng)絡狀態(tài)信息,所述第二網(wǎng)絡狀態(tài)信息包括所述多個交換設(shè)備的設(shè)備信 息、所述多個交換設(shè)備之間的鏈路信息、與所述多個交換設(shè)備連接的一個或多個OpenFlow 交換機的設(shè)備信息、以及所述多個交換設(shè)備與各自相連的所述OpenFlow交換機之間的鏈 路息;
[0018] 根據(jù)所述第一網(wǎng)絡狀態(tài)信息和所述第二網(wǎng)絡狀態(tài)信息,確定所述OpenFlow控制 器所屬的管理域或者自治系統(tǒng)的網(wǎng)絡拓撲。
[0019] 進一步地,所述控制消息為流改變消息或數(shù)據(jù)包發(fā)送消息,所述流改變消息包括 設(shè)置域命令,所述設(shè)置域命令包括開放流擴展匹配類型字段、開放流擴展匹配長度字段和 開放流擴展匹配值字段,所述開放流擴展匹配類型字段的值用于指示所述待傳輸?shù)臄?shù)據(jù)包 的類型,所述開放流擴展匹配長度字段的值用于指示開放流擴展匹配有效信息的長度,所 述開放流擴展匹配值字段用于承載重新設(shè)置后的所述源路由。
[0020] 另一方面,本發(fā)明實施例提供了一種端到端的數(shù)據(jù)傳輸方法,適用于在管理域或 自治系統(tǒng)中進行數(shù)據(jù)傳輸,所述管理域包括OpenFlow網(wǎng)絡和IP網(wǎng)絡,所述OpenFlow網(wǎng)絡 包括OpenFlow控制器和多個OpenFlow交換機,所述IP網(wǎng)絡包括多個交換設(shè)備,所述自治 系統(tǒng)包括OpenFlow控制器、所述OpenFlow控制器控制的多個OpenFlow交換機和非所述 OpenFlow控制器控制的多個交換設(shè)備,所述方法包括:
[0021 ] 接收所述OpenFlow控制器下發(fā)的控制消息,所述控制消息用于指示第一 OpenFlow交換機將所述待傳輸?shù)臄?shù)據(jù)包中的目的地址設(shè)置為第一交換設(shè)備的地址,所述第 一 OpenFlow交換機為多個OpenFlow交換機中的一個,且所述第一 OpenFlow交換機的下一 跳為第一交換設(shè)備,所述第一交換設(shè)備為多個交換設(shè)備中的一個,
[0022] 所述控制消息還用于指示所述第一 OpenFlow交換機重新設(shè)置所述待傳輸?shù)臄?shù)據(jù) 包中的源路由,重新設(shè)置后的所述源路由依次包括所述路徑中位于所述第一交換設(shè)備之后 的剩余的交換設(shè)備的地址和所述目的地址,
[0023] 所述控制消息還用于指示所述第一 OpenFlow交換機將所述待傳輸?shù)臄?shù)據(jù)包從所 述第一 OpenFlow交換機的指定端口發(fā)送給所述第一交換設(shè)備;
[0024] 根據(jù)所述控制消息,設(shè)置所述待傳輸?shù)臄?shù)據(jù)包中的目的地址和源路由,并將所述 待傳輸?shù)臄?shù)據(jù)包從指定端口發(fā)送給所述第一交換設(shè)備。
[0025] 進一步地,所述控制消息為流改變消息或數(shù)據(jù)包發(fā)送消息,所述流改變消息包括 設(shè)置域命令,所述設(shè)置域命令包括開放流擴展匹配類型字段、開放流擴展匹配長度字段和 開放流擴展匹配值字段,所述開放流擴展匹配類型字段的值用于指示所述待傳輸?shù)臄?shù)據(jù)包 的類型,所述開放流擴展匹配長度字段的值用于指示開放流擴展匹配有效信息的長度,所 述開放流擴展匹配值字段用于承載重新設(shè)置后的所述源路由。
[0026] 更進一步地,所述根據(jù)所述控制消息,設(shè)定所述待傳輸?shù)臄?shù)據(jù)包中的目的地址和 源路由,包括:
[0027] 根據(jù)所述開放流擴展匹配類型字段的值判斷所述待傳輸?shù)臄?shù)據(jù)包的類型;
[0028] 當所述待傳輸?shù)臄?shù)據(jù)包為IPv4數(shù)據(jù)包時,將所述待傳輸?shù)臄?shù)據(jù)包的選項字段中 的選項類型字段的值設(shè)為第一設(shè)定值,將所述開放流擴展匹配長度的值賦值給所述選項字 段中的選項長度字段,并將所述開放流擴展匹配值字段的值賦值給所述選項字段中的選項 數(shù)據(jù)字段;
[0029] 當所述待傳輸?shù)臄?shù)據(jù)包為IPv6數(shù)據(jù)包時,將所述待傳輸數(shù)據(jù)包的路由頭字段中 的下一包頭字段、類型字段、嚴格或松散位圖字段的值設(shè)置為第二設(shè)定值,根據(jù)所述開放流 擴展匹配長度的值計算IPv6地址的個數(shù),并將計算結(jié)果設(shè)為路由頭字段中的剩余節(jié)點字 段的值,并將IPv6地址依次取出,按取出的順序賦值給路由頭字段中的地址字段。
[0030] 一方面,本發(fā)明實施例提供了一種OpenFlow控制器,所述控制器包括:
[0031] 獲取模塊,用于獲取管理域或自治系統(tǒng)的網(wǎng)絡拓撲和網(wǎng)絡狀態(tài)信息,所述管理域 包括所述OpenFlow控制器所屬的OpenFlow網(wǎng)絡和IP網(wǎng)絡,所述OpenFlow網(wǎng)絡包括多個 OpenFlow交換機,所述IP網(wǎng)絡包括多個交換設(shè)備,所述自治系統(tǒng)包括所述OpenFlow控制 器、所述OpenFlow控制器控制的多個OpenFlow交換機和非所述OpenFlow控制器控制的多 個交換設(shè)備;
[0032] 第一確定模塊,用于確定待傳輸?shù)臄?shù)據(jù)包的源地址和目的地址;
[0033] 第二確定模塊,用于根據(jù)所述網(wǎng)絡拓撲和網(wǎng)絡狀態(tài)信息,確定所述源地址到所述 目的地址的路徑;
[0034] 第三確定模塊,用于確定所述路徑中的第一 OpenFlow交換機,所述第一 OpenFlow 交換機為多個OpenFlow交換機中的一個,且所述第一 OpenFlow交換機的下一跳為第一交 換設(shè)備,所述第一交換設(shè)備為多個交換設(shè)備中的一個;
[0035] 發(fā)送模塊,用于向所述第一 OpenFlow交換機下發(fā)控制消息,所述控制消息用于指 示所述第一 OpenFlow交換機將所述待傳輸?shù)臄?shù)據(jù)包中的目的地址設(shè)置為所述第一交換設(shè) 備的地址,
[0036] 所述控制消息還用于指示所述第一 OpenFlow交換機重新設(shè)置所述待傳輸?shù)臄?shù)據(jù) 包中的源路由,重新設(shè)置后的所述源路由依次包括所述路徑中位于所述第一交換設(shè)備之后 的剩余的交換設(shè)備的地址和所述目的地址,
[0037] 所述控制消息還用于指示所述第一 OpenFlow交換機將所述待傳輸?shù)臄?shù)據(jù)包從所 述第一 OpenFlow交換機的指定端口發(fā)送給所述第一交換設(shè)備。
[0038] 進一步地,所述獲取模塊包括:
[0039] 獲取單元,用于獲取第一網(wǎng)絡狀態(tài)信息,所述第一網(wǎng)絡狀態(tài)信息包括所述多個 OpenFlow交換機的設(shè)備信息、所述多個OpenFlow交換機之間的鏈路信息、與所述多個 OpenFlow交換機連接的一個或多個交換設(shè)備的設(shè)備信息、以及所述多個OpenFlow交換機 與各自相連的交換設(shè)備之間的鏈路信息;
[0040] 接收單元,用于接收第二網(wǎng)絡狀態(tài)信息,所述第二網(wǎng)絡狀態(tài)信息包括所述多個交 換設(shè)備的設(shè)備信息、所述多個交換設(shè)備之間的鏈路信息、與所述多個交換設(shè)備連接的一個 或多個OpenFlow交換機的設(shè)備信息、以及所述多個交換設(shè)備與各自相連的所述OpenFlow 交換機之間的鏈路信息;
[0041] 確定單元,用于根據(jù)所述第一網(wǎng)絡狀態(tài)信息和所述第二網(wǎng)絡狀態(tài)信息,確定所述 OpenFlow控制器所屬的管理域或者自治系統(tǒng)的網(wǎng)絡拓撲和網(wǎng)絡狀態(tài)信息。
[0042] 可選地,所述控制消息為流改變消息或數(shù)據(jù)包發(fā)送消息,所述流改變消息包括設(shè) 置域命令,所述設(shè)置域命令包括開放流擴展匹配類型字段、開放流擴展匹配長度字段和開 放流擴展匹配值字段,所述開放流擴展匹配類型字段的值用于指示所述待傳輸?shù)臄?shù)據(jù)包的 類型,所述開放流擴展匹配長度字段的值用于指示開放流擴展匹配有效信息的長度,所述 開放流擴展匹配值字段用于承載重新設(shè)置后的所述源路由。
[0043] 另一方面,本發(fā)明實施例提供了一種OpenFlow交換機,適用于在管理域或自治系 統(tǒng)中進行數(shù)據(jù)傳輸,所述管理域包括OpenFlow網(wǎng)絡和IP網(wǎng)絡,所述OpenFlow網(wǎng)絡包括 OpenFlow控制器和多個OpenFlow交換機,所述IP網(wǎng)絡包括多個交換設(shè)備,所述自治系統(tǒng)包 括OpenFlow控制器、所述OpenFlow控制器控制的多個OpenFlow交換機和非所述OpenFlow 控制器控制的多個交換設(shè)備,所述交換機包括:
[0044] 接收模塊,用于接收所述OpenFlow控制器下發(fā)的控制消息,所述控制消息用于指 示第一 OpenFlow交換機將所述待傳輸?shù)臄?shù)據(jù)包中的目的地址設(shè)置為第一交換設(shè)備的地 址,所述第一 OpenFlow交換機為多個OpenFlow交換機中的一個,且所述第一 OpenFlow交 換機的下一跳為第一交換設(shè)備,所述第一交換設(shè)備為多個交換設(shè)備中的一個,
[0045] 所述控制消息還用于指示所述第一 OpenFlow交換機重新設(shè)置所述待傳輸?shù)臄?shù)據(jù) 包中的源路由,重新設(shè)置后的所述源路由依次包括所述路徑中位于所述第一交換設(shè)備之后 的剩余的交換設(shè)備的地址和所述目的地址,
[0046] 所述控制消息還用于指示所述第一 OpenFlow交換機將所述待傳輸?shù)臄?shù)據(jù)包從所 述第一 OpenFlow交換機的指定端口發(fā)送給所述第一交換設(shè)備;
[0047] 處理模塊,用于根據(jù)所述控制消息,設(shè)置所述待傳輸?shù)臄?shù)據(jù)包中的目的地址和源 路由,并將所述待傳輸?shù)臄?shù)據(jù)包從指定端口發(fā)送給所述第一交換設(shè)備。
[0048] 可選地,所述控制消息為流改變消息或數(shù)據(jù)包發(fā)送消息,所述流改變消息包括設(shè) 置域命令,所述設(shè)置域命令包括開放流擴展匹配類型字段、開放流擴展匹配長度字段和開 放流擴展匹配值字段,所述開放流擴展匹配類型字段的值用于指示所述待傳輸?shù)臄?shù)據(jù)包的 類型,所述開放流擴展匹配長度字段的值用于指示開放流擴展匹配有效信息的長度,所述 開放流擴展匹配值字段用于承載重新設(shè)置后的所述源路由。
[0049] 進一步地,處理模塊包括:
[0050] 判斷單元,用于根據(jù)所述開放流擴展匹配類型字段的值判斷所述待傳輸?shù)臄?shù)據(jù)包 的類型;
[0051] 第一設(shè)置單元,用于當所述待傳輸?shù)臄?shù)據(jù)包為IPv4數(shù)據(jù)包時,將所述待傳輸?shù)臄?shù) 據(jù)包的選項字段中的選項類型字段的值設(shè)為第一設(shè)定值,將所述開放流擴展匹配長度的值 賦值給所述選項字段中的選項長度字段,并將所述開放流擴展匹配值字段的值賦值給所述 選項字段中的選項數(shù)據(jù)字段;
[0052] 第二設(shè)置單元,用于當所述待傳輸?shù)臄?shù)據(jù)包為IPv6數(shù)據(jù)包時,將所述待傳輸數(shù)據(jù) 包的路由頭字段中的下一包頭字段、類型字段、嚴格或松散位圖字段的值設(shè)置為第二設(shè)定 值,根據(jù)所述開放流擴展匹配長度的值計算IPv6地址的個數(shù),并將計算結(jié)果設(shè)為路由頭字 段中的剩余節(jié)點字段的值,并將IPv6地址依次取出,按取出的順序賦值給路由頭字段中的 地址字段。
[0053] 本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是:
[0054] 通過獲取OpenFlow控制器所屬的管理域或自制系統(tǒng)的網(wǎng)絡拓撲,確定待傳輸?shù)?數(shù)據(jù)包的源地址到目的地址的路徑,并確定該路徑中的第一 OpenFlow交換機,OpenFlow控 制器可以向該第一 OpenFlow交換機發(fā)送控制消息,用于將待傳輸?shù)臄?shù)據(jù)包中的目的地址 設(shè)置為第一 OpenFlow交換機下一跳的第一交換設(shè)備的地址,并重新設(shè)置待傳輸?shù)臄?shù)據(jù)包 中的源路由,再將待傳輸?shù)臄?shù)據(jù)包從第一 OpenFlow交換機的指定端口發(fā)送給第一交換設(shè) 備,實現(xiàn)了 OpenFlow控制器對整個端到端的路徑的控制,有利于靈活高效地