一種sdn交換機控制方法和裝置制造方法
【專利摘要】本發明提供一種SDN交換機控制方法和裝置。所述方法包括:接收SDN控制器下發的命令終止報文,所述命令終止報文中攜帶有命令編號;根據所述命令編號查詢所述命令是否已經執行完畢;在所述命令沒有執行完畢時,終止所述命令,并返回終止成功報文給SDN控制器,所述終止成功報文中攜帶有所述命令編號。通過本發明的技術方案提高了SDN交換機對命令的處理效率。
【專利說明】一種SDN交換機控制方法和裝置
【技術領域】
[0001] 本發明涉及通信【技術領域】,尤其涉及一種SDN交換機控制方法和裝置。
【背景技術】
[0002] 隨著互聯網業務的不斷發展,互聯網業務對于在互聯網上部署的時間要求越來越 短,比如幾年前一個業務部署往往需要幾個月的時間,而且還要花費大量的人力。而現在一 個互聯網業務可能會要求在投入少量人力的情況下,在幾天內完成部署。如何快速部署一 個互聯網業務,這就涉及到一些新的技術,比如SDN(Software Defined Network,軟件定義網 絡)技術,在SDN定義的模型下,可以通過軟件的方式實現對業務的部署,從而減少人力投 入,縮短工期。
[0003] SDN是一種新型網絡創新架構,采用全新的設計理念,將控制平面和數據平面分 離,并把以前固化在網絡設備中的控制平面轉移到可訪問的計算設備中,從而實現了對網 絡流量的靈活控制,為核心網絡及應用的創新提供了良好的平臺。
【發明內容】
[0004] 有鑒于此,本發明提供一種SDN交換機控制方法和裝置。
[0005] 具體地,本發明是通過如下技術方案實現的:
[0006] 一種SDN交換機控制方法,應用在SDN交換機上,所述方法包括:
[0007] 接收SDN控制器下發的命令終止報文,所述命令終止報文中攜帶有命令編號;
[0008] 根據所述命令編號查詢所述命令是否已經執行完畢;
[0009] 在所述命令沒有執行完畢時,終止所述命令,并返回終止成功報文給SDN控制器, 所述終止成功報文中攜帶有所述命令編號。
[0010] 進一步地,所述方法還包括:
[0011] 在所述命令已經執行完畢時,返回終止錯誤報文給SDN控制器。
[0012] 進一步地,所述方法還包括:
[0013] 在根據所述命令編號沒有查詢到對應的命令時,在終止列表中緩存所述命令編 號;
[0014] 在執行命令前,查看所述終止列表中是否緩存有待執行命令的命令編號;
[0015] 如果是,則終止所述待執行命令。
[0016] 進一步地,在終止所述待執行命令后,返回終止成功報文給SDN控制器,并在所述 終止列表中清除所述待執行命令的命令編號。
[0017] 進一步地,在所述命令編號到達緩存老化時間時,針對所述命令編號返回終止錯 誤報文給SDN控制器,并在所述終止列表中清除所述命令編號。
[0018] 一種SDN交換機控制裝置,應用在SDN交換機上,所述裝置包括:
[0019] 接收單元,用于接收SDN控制器下發的命令終止報文,所述命令終止報文中攜帶 有命令編號;
[0020] 查詢單元,用于根據所述命令編號查詢所述命令是否已經執行完畢;
[0021] 處理單元,用于在所述命令沒有執行完畢時,終止所述命令,并返回終止成功報文 給SDN控制器,所述終止成功報文中攜帶有所述命令編號。
[0022] 進一步地,所述處理單元,還用于在所述命令已經執行完畢時,返回終止錯誤報文 給SDN控制器。
[0023] 進一步地,所述裝置還包括:
[0024] 緩存單元,用于在根據所述命令編號沒有查詢到對應的命令時,在終止列表中緩 存所述命令編號;
[0025] 執行單元,用于在執行命令前,查看所述終止列表中是否緩存有待執行命令的命 令編號,如果所述終止列表中緩存有待執行命令的命令編號,則終止所述待執行命令。
[0026] 進一步地,所述處理單元,還用于在終止所述待執行命令后,返回終止成功報文給 SDN控制器,并在所述終止列表中清除所述待執行命令的命令編號。
[0027] 進一步地,所述處理單元,還用于在所述命令編號到達緩存老化時間時,針對所述 命令編號返回終止錯誤報文給SDN控制器,并在所述終止列表中清除所述命令編號。
[0028] 由以上描述可以看出,本發明中SDN控制器在需要取消下發給SDN交換機的命令 時,下發命令終止報文,使得SDN交換機可以根據所述命令終止報文中攜帶的命令編號終 止對應的命令。及時終止SDN控制器已不需要的命令,提高了 SDN交換機對命令的處理效 率,同時減少了 Open Flow信道中不必要的命令反饋,提高了 Open Flow信道的交互性能。
【專利附圖】
【附圖說明】
[0029] 圖1是本發明一種實施例中SDN交換機控制方法的流程圖。
[0030] 圖2是本發明一種實施例中SDN交換機控制裝置的邏輯結構示意圖。
【具體實施方式】
[0031] 典型的SDN網絡架構中包含有SDN交換機和SDN控制器。SDN控制器可以通過專 有協議,比如:〇pen Flow協議,通過Open Flow信道直接訪問并操控轉發平面的SDN交換機。 Open Flow信道提供了比較嚴謹的TCP (Transmission Control Protocol,傳輸控制協議)連 接通道,SDN控制器下發的大部分命令都可以要求對端SDN交換機返回執行結果。
[0032] 目前的Open Flow信道不支持命令的取消機制。比如:SDN控制器下發一個流表 查詢的命令給SDN交換機,SDN交換機接收到該命令后執行查詢操作,并將查詢結果返回給 SDN控制器。當SDN控制器下發多個命令時,SDN交換機依次執行每一個命令,在前一個命 令沒有執行完畢前,不會執行下一個命令。如果SDN控制器下發了三個命令,依次為:流表 查詢、流表修改、流表查詢,那么可以理解的是SDN控制器要獲取的是流表修改后查詢的結 果,也就是第二次流表查詢的結果。但是,SDN交換機在第一次流表查詢命令執行完畢前不 會主動終止本次查詢,導致第二次流表查詢的時延非常長,嚴重的情況下會出現等待超時 而導致的查詢失敗。同時,SDN交換機也不會主動終止向SDN控制器返回流表查詢結果,嚴 重影響了 Open Flow信道的交互性能。
[0033] 有鑒于此,本發明提供一種SDN交換機控制方案,通過對Open Flow信道消息類型 進行擴展,以實現命令的取消機制。
[0034] 下面以軟件實現為例,詳細描述本發明的具體實現。本發明提供的SDN交換機控 制方法,應用在SDN交換機上。請參考圖1,所述方法包括以下步驟:
[0035] 步驟101,接收SDN控制器下發的命令終止報文,所述命令終止報文中攜帶有命令 編號。
[0036] 步驟102,根據所述命令編號查詢所述命令是否已經執行完畢。如果否,則轉步驟 103,如果是,則轉步驟104。
[0037] 步驟103,在所述命令沒有執行完畢時,終止所述命令,并返回終止成功報文給 SDN控制器,所述終止成功報文中攜帶有所述命令編號。
[0038] 步驟104,在所述命令已經執行完畢時,返回終止錯誤報文給SDN控制器。
[0039] 由以上步驟可以看出,本發明中SDN控制器在需要取消下發給SDN交換機的命令 時,下發命令終止報文,使得SDN交換機可以根據所述命令終止報文中攜帶的命令編號終 止對應的命令。及時終止SDN控制器已不需要的命令,提高了 SDN交換機對命令的處理效 率,同時減少了 Open Flow信道中不必要的命令反饋,提高了 Open Flow信道的交互性能。
[0040] 具體地,在SDN網絡中,SDN控制器可能會向SDN交換機下發各種命令,比如:流表 查詢、流表修改、流表添加、流表刪除等等。所述命令的下發可以是SDN控制器根據管理人 員的配置自動下發,比如:每隔預定的時間下發一次流表查詢命令,也可以是SDN控制器根 據管理人員臨時的操作來下發命令,比如:需要臨時修改流表。
[0041] SDN控制器在下發命令后,如果不再需要SDN交換機返回該命令的執行結果,則可 以通過向所述SDN交換機下發的命令終止報文,并在所述命令終止報文中攜帶需要終止的 命令的命令編號。SDN交換機在接收到所述命令終止報文后,可以根據所述命令編號查詢所 述命令是否已經執行完畢,如果沒有執行完畢,則終止所述命令。
[0042] 其中,在SDN交換機上,查詢所述命令沒有執行完畢可以包括有以下兩種情況:一 種是該命令正在執行,但尚未執行完畢。比如:所述命令為流表查詢命令,SDN交換機通常 需要遍歷本機所有的流表進行該查詢命令,由于流表數量非常龐大,所以整個查詢過程要 耗費很多時間,所以當SDN交換機接收到所述命令終止報文時,其可能正在執行所述命令 終止報文中攜帶的命令編號對應的命令,在這種情況下,SDN交換機根據所述命令編號終止 所述命令的執行。
[0043] 另一種是該命令還未執行。對于SDN交換機而言,可能會接收到SDN控制器下發 的多個命令,SDN交換機可以維護一個命令隊列,然后依照所述命令隊列的順序逐個執行接 收到的命令,所以在SDN交換機接收到命令終止報文時,所述命令終止報文中攜帶的命令 編號對應的命令可能還排在所述命令隊列中,沒有被執行。在這種情況下,SDN交換機可以 直接在所述命令隊列中清除所述命令,以實現終止所述命令。
[0044] SDN交換機在終止所述命令后,就不需要向SDN控制器返回所述命令的執行結果。 對于流表查詢等命令,查詢結果的數量非常龐大,SDN交換機往往需要通過多個報文將查 詢結果反饋給SDN控制器,故SDN交換機終止所述命令,在減少本機無用操作的同時,也減 少了 Open Flow信道中大量不必要的命令反饋,提高Open Flow信道的交互性能。SDN交換 機還會返回終止成功報文給SDN控制器,并在所述終止成功報文中攜帶所述命令的命令編 號。SDN控制器在接收到所述終止成功報文后,就可以在本機上結束所述命令終止報文對應 的進程。
[0045] 進一步地,如果SDN交換機查詢所述命令已經執行完畢時,返回終止錯誤報文給 SDN控制器,并在所述終止錯誤報文中同樣攜帶所述命令的命令編號。
[0046] 為實現本發明,需要擴展Open Flow信道的消息類型,增加一個SDN控制器通知 SDN交換機取消某次命令的消息類型。在本發明中,可以使用攔截Barrier消息,增加一個 Barrier消息類型,比如:
[0047] OFPT_BARRIER_CANCEL = 30, /*Controller/switch message*/
[0048] OFPT_BARRIER_TERMINATED = 31,/*Controller/switch message*/
[0049] 其中,OFPT_BARRIER_CANCEL消息類型用于SDN控制器通知SDN交換機終止命令, OFPT_BARRIER_TERMINATED消息類型用于SDN交換機在成功終止命令后向SDN控制器反饋 終止成功的結果。
[0050] 舉例來說,SDN控制器向SDN交換機下發流表查詢命令1后,又向SDN交換機下發 了流表修改命令2和流表查詢命令3, SDN交換機在接收到上述三個命令后,按照順序先執 行流表查詢命令1,然后將流表修改命令2和流表查詢命令3緩存在命令隊列中。對于SDN 控制器而言,其已經不再需要SDN交換機反饋流表查詢命令1的結果,進而SDN控制器可以 通過OFPT_BARRIER_CANCEL消息類型向SDN交換機下發命令終止報文,并在該命令終止報 文中攜帶流表查詢命令1的命令編號1 (Transaction ID)。SDN交換機在接收到所述命令終 止報文后,查詢流表查詢命令1是否已經執行完畢,如果流表查詢命令1沒有執行完畢,則 終止所述流表查詢命令1,開始執行命令隊列中的流表修改命令2,并通過0FPT_BARRIER_ TERMINATED消息類型向SDN控制器返回終止成功報文,所述終止成功報文中攜帶有流表查 詢命令1的命令編號1。如果流表查詢命令1已經執行完畢,則SDN交換機可以通過0FPT_ ERR0R_MSG消息類型發送終止錯誤報文給SDN控制器,其中,ERROR TYPE為終止錯誤,并在 所述終止錯誤報文中攜帶流表查詢命令1的命令編號1。
[0051] 進一步地,當SDN控制器需要SDN交換機終止多個命令時,可以將所述多個命令的 命令編號攜帶在一個命令終止報文中下發給SDN交換機。SDN交換機在接收到所述命令終 止報文時,根據命令編號逐個進行查詢。然后可以將所有沒有執行完畢的命令的命令編號 攜帶在一個終止成功報文中反饋給SDN控制器,將所有已經執行完畢的命令的命令編號攜 帶在一個終止錯誤報文中反饋給SDN控制器,以減少對Open Flow信道的占用。
[0052] 通常來講,SDN交換機會先收到SDN控制器下發的命令,然后才會收到針對該命令 的命令終止報文。但是,在極端情況下,比如,網絡震蕩,SDN交換機在接收到命令終止報 文時,可能還沒有接收到其中攜帶的命令編號對應的命令。這時,SDN交換機根據所述命令 編號在本機的命令隊列中就無法查詢到對應的命令。針對這種情況,本發明設計SDN交換 機維護一個終止列表,并在根據所述命令編號沒有查詢到對應的命令時,在終止列表中緩 存所述命令編號。進而SDN交換機在執行命令隊列中的命令前,先查看所述終止列表中是 否緩存有待執行命令的命令編號,如果是,則終止所述待執行命令,并返回終止成功報文給 SDN控制器,所述終止成功報文中攜帶所述待執行命令的命令編號。然后,在所述終止列表 中清除所述待執行命令的命令編號。
[0053] 進一步地,每一個緩存在終止列表中的命令編號都有緩存時間,在所述命令編號 達到緩存老化時間時,說明SDN交換機還沒有接收到SDN控制器下發的所述命令編號對應 的命令。出現這種情況有很多原因,比如:SDN控制器下發了錯誤的命令終止報文,或者是 網絡故障導致SDN交換機沒有接收到SDN控制器下發的命令等等。這時,SDN交換機會針對 所述命令編號返回終止錯誤報文給SDN控制器,并在所述終止列表中清除所述命令編號。
[0054] 由以上描述可以看出,本發明中SDN控制器在需要取消下發給SDN交換機的命令 時,下發命令終止報文,使得SDN交換機可以根據所述命令終止報文中攜帶的命令編號終 止對應的命令。及時終止SDN控制器已不需要的命令,提高了 SDN交換機對命令的處理效 率,同時減少了 Open Flow信道中不必要的命令反饋,提高了 Open Flow信道的交互性能。
[0055] 對應上述方法,本發明還提供一種SDN交換機控制裝置,其運行在SDN交換機上。 作為本發明裝置的運行載體,所述SDN交換機通常至少包括有CPU、內存以及非易失性存儲 器,當然還可能包括各種轉發芯片以及I/O接口等硬件。請參考圖2,所述裝置包括有:接 收單元、查詢單元、處理單元、緩存單元以及執行單元。
[0056] 其中,所述接收單元,用于接收SDN控制器下發的命令終止報文,所述命令終止報 文中攜帶有命令編號。
[0057] 所述查詢單元,用于根據所述命令編號查詢所述命令是否已經執行完畢。
[0058] 所述處理單元,用于在所述命令沒有執行完畢時,終止所述命令,并返回終止成功 報文給SDN控制器,所述終止成功報文中攜帶有所述命令編號。
[0059] 進一步地,所述處理單元,用于在所述命令已經執行完畢時,返回終止錯誤報文給 SDN控制器。
[0060] 進一步地,所述裝置還包括:
[0061] 緩存單元,用于在根據所述命令編號沒有查詢到對應的命令時,在終止列表中緩 存所述命令編號。
[0062] 執行單元,用于在執行命令前,查看所述終止列表中是否緩存有待執行命令的命 令編號,如果所述終止列表中緩存有待執行命令的命令編號,則終止所述待執行命令。
[0063] 進一步地,所述處理單元,用于在終止所述待執行命令后,返回終止成功報文給 SDN控制器,并在所述終止列表中清除所述待執行命令的命令編號。
[0064] 進一步地,所述處理單元,用于在所述命令編號到達緩存老化時間時,針對所述命 令編號返回終止錯誤報文給SDN控制器,并在所述終止列表中清除所述命令編號。
[0065] 上述裝置中各個單元的功能和作用的實現過程具體詳見上述方法中對應步驟的 實現過程,在此不再贅述。
[〇〇66] 以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精 神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發明保護的范圍之內。
【權利要求】
1. 一種軟件定義網絡SDN交換機控制方法,應用在SDN交換機上,其特征在于,所述方 法包括: 接收SDN控制器下發的命令終止報文,所述命令終止報文中攜帶有命令編號; 根據所述命令編號查詢所述命令是否已經執行完畢; 在所述命令沒有執行完畢時,終止所述命令,并返回終止成功報文給SDN控制器,所述 終止成功報文中攜帶有所述命令編號。
2. 根據權利要求1所述的方法,其特征在于,所述方法還包括: 在所述命令已經執行完畢時,返回終止錯誤報文給SDN控制器。
3. 根據權利要求1所述的方法,其特征在于,所述方法還包括: 在根據所述命令編號沒有查詢到對應的命令時,在終止列表中緩存所述命令編號; 在執行命令前,查看所述終止列表中是否緩存有待執行命令的命令編號; 如果是,則終止所述待執行命令。
4. 根據權利要求3所述的方法,其特征在于, 在終止所述待執行命令后,返回終止成功報文給SDN控制器,并在所述終止列表中清 除所述待執行命令的命令編號。
5. 根據權利要求3所述的方法,其特征在于, 在所述命令編號到達緩存老化時間時,針對所述命令編號返回終止錯誤報文給SDN控 制器,并在所述終止列表中清除所述命令編號。
6. -種SDN交換機控制裝置,應用在SDN交換機上,其特征在于,所述裝置包括: 接收單元,用于接收SDN控制器下發的命令終止報文,所述命令終止報文中攜帶有命 令編號; 查詢單元,用于根據所述命令編號查詢所述命令是否已經執行完畢; 處理單元,用于在所述命令沒有執行完畢時,終止所述命令,并返回終止成功報文給 SDN控制器,所述終止成功報文中攜帶有所述命令編號。
7. 根據權利要求6所述的裝置,其特征在于, 所述處理單元,進一步用于在所述命令已經執行完畢時,返回終止錯誤報文給SDN控 制器。
8. 根據權利要求6所述的裝置,其特征在于,所述裝置還包括: 緩存單元,用于在根據所述命令編號沒有查詢到對應的命令時,在終止列表中緩存所 述命令編號; 執行單元,用于在執行命令前,查看所述終止列表中是否緩存有待執行命令的命令編 號,如果所述終止列表中緩存有待執行命令的命令編號,則終止所述待執行命令。
9. 根據權利要求8所述的裝置,其特征在于, 所述處理單元,進一步用于在終止所述待執行命令后,返回終止成功報文給SDN控制 器,并在所述終止列表中清除所述待執行命令的命令編號。
10. 根據權利要求8所述的裝置,其特征在于, 所述處理單元,進一步用于在所述命令編號到達緩存老化時間時,針對所述命令編號 返回終止錯誤報文給SDN控制器,并在所述終止列表中清除所述命令編號。
【文檔編號】H04L12/937GK104052687SQ201410283293
【公開日】2014年9月17日 申請日期:2014年6月23日 優先權日:2014年6月23日
【發明者】宋小恒 申請人:杭州華三通信技術有限公司