數據包轉發方法、裝置及系統的制作方法
【技術領域】
[0001]本發明涉及網絡傳輸領域,特別涉及一種數據包轉發方法、裝置及系統。
【背景技術】
[0002]開放流OpenFlow 網絡由 OpenFlow 交換機(OpenFlow switch)、OpenFlow 控制器(OpenFlow controller)和虛擬交換機FlowVisor組成,OpenFlow交換機進行數據層的轉發,虛擬交換機對OpenFlow網絡進行虛擬化,OpenFlow控制器對OpenFlow網絡進行集中控制。OpenFlow交換機和對應的OpenFlow控制器通過安全通道進行消息交互,虛擬交換機可以截獲安全通道上的消息。
[0003]在OpenFlow網絡中進行數據包轉發時的具體過程如下:當OpenFlow交換機接收到數據包時,OpenFlow交換機查找保存的多流表中的流表項,如果該數據包能夠與其中一個流表項匹配,則根據該流表項轉發該數據包,如果該數據包無法與任何一個流表項匹配,則OpenFlow交換機新建一個上報數據包PacketIn,通過安全通道經FlowVisor上報給對應的OpenFlow控制器;0penFlow控制器根據PacketIn確定該數據包的轉發動作,并通過FlowVisor下發新的流表項到該OpenFlow交換機,OpenFlow交換機根據OpenFlow控制器下發的流表項轉發該數據包。虛擬交換機FlowVisor作為代理OpenFlow控制器,也可以對網絡進行分片,即虛擬交換機根據配置策略將OpenFlow交換機和OpenFlow控制器進行分片,根據內置策略,對OpenFlow消息進行攔截、修改、轉發操作。OpenFlow控制器只被允許控制其策略范圍內的流。
[0004]在實際應用中,OpenFlow網絡還設置了一種老化機制,即在OpenFlow交換機中如果一個流表項在長時間內沒有相關匹配項命中,為了節省流表項資源,OpenFlow交換機會刪除該流表項。
[0005]在實現本發明的過程中,發明人發現現有技術至少存在以下問題:安全通道是OpenFlow控制器與OpenFlow交換機之間的唯一通道,在OpenFlow控制器與對應的OpenFlow交換機之間的安全通道出現故障期間,如果OpenFlow交換機中根據老化機制刪除了某些流表項,則后續接收到的對應這些流表項的數據包則無法進行轉發,因此OpenFlow交換機最后會失去數據交換功能。
【發明內容】
[0006]為了解決現有技術中在OpenFlow控制器與對應的OpenFlow交換機之間的安全通道出現故障期間,如果OpenFlow交換機中根據老化機制刪除了某些流表項,則后續接收到的對應這些流表項的數據包則無法進行轉發,因此OpenFlow交換機最后會失去數據交換功能的問題,本發明實施例提供了一種數據包轉發方法、裝置及系統。所述技術方案如下:
[0007]第一方面,提供了一種數據包轉發方法,應用于包含有OpenFlow交換機、OpenFlow控制器和虛擬交換機的網絡中的所述虛擬交換機中,所述方法包括:
[0008]若所述OpenFlow交換機和所述OpenFlow控制器之間的安全通道發生故障時,將接收到的所述OpenFlow交換機上報的被所述OpenFlow交換機刪除的老化流表項保存到老化流表中,所述老化流表用于保存所述OpenFlow交換機在所述安全通道發生故障后刪除的老化流表項;
[0009]確定接收的所述OpenFlow交換機發送的上報數據包是否與所述老化流表中的老化流表項匹配,所述上報數據包為所述OpenFlow交換機在接收到轉發數據包時,在所述轉發數據包與保存的轉發流表項未匹配成功后根據所述轉發數據包生成的;
[0010]若所述上報數據包與所述老化流表中的一個老化流表項匹配,則向所述OpenFlow交換機下發所述匹配的老化流表項,以便所述OpenFlow交換機根據所述匹配的老化流表項轉發所述轉發數據包。
[0011]在第一方面的第一種可能的實施方式中,所述方法還包括:
[0012]若所述OpenFlow交換機和所述OpenFlow控制器之間的所述安全通道恢復正常,將所述老化流表中已下發給所述OpenFlow交換機的各老化流表項上報給所述OpenFlow控制器,以便所述OpenFlow控制器確定在所述安全通道發生故障時所述虛擬交換機代理下發給所述OpenFlow交換機的所述各老化流表項是否全部被所述OpenFlow交換機接收到,若所述各老化流表項沒有全部被所述OpenFlow交換機接收到,則向所述OpenFlow交換機重新下發尚未被所述OpenFlow交換機接收到的老化流表項。
[0013]結合第一方面或者第一方面的第一種可能的實施方式,在第二種可能的實施方式中,所述方法還包括:
[0014]若所述上報數據包與所述老化流表中的老化流表項均不匹配,則確定所述虛擬交換機是否保存有所述上報數據包;
[0015]若確定所述虛擬交換機未保存有所述上報數據包,則保存所述上報數據包。
[0016]結合第一方面、第一方面的第一種可能的實施方式或者第一方面的第二種可能的實施方式,在第三種可能的實施方式中,所述方法還包括:
[0017]若所述OpenFlow交換機和所述OpenFlow控制器之間的所述安全通道恢復正常,將所述虛擬交換機中保存的各上報數據包上報給所述OpenFlow控制器,以便所述OpenFlow控制器向所述OpenFlow交換機下發與所述各上報數據包對應的流表項。
[0018]結合第一方面、第一方面的第一種可能的實施方式、第一方面的第二種可能的實施方式或者第一方面的第三種可能的實施方式,在第四種可能的實施方式中,所述方法還包括:
[0019]若所述虛擬交換機保存有所述上報數據包,則將所述上報數據包的計數值遞增,所述計數值表示所述虛擬交換機接收到所述上報數據包的次數;
[0020]所述將所述虛擬交換機中保存的所述各上報數據包上報給所述OpenFlow控制器,包括:
[0021]將所述虛擬交換機中保存的所述各上報數據包按照所述各上報數據包的計數值大小依次上報給所述OpenFlow控制器,以便所述OpenFlow控制器根據接收到所述虛擬交換機上報的所述各上報數據包的順序依次向所述OpenFlow交換機下發與所述各上報數據包對應的流表項。
[0022]第二方面,提供了一種數據包轉發方法,應用于包含有OpenFlow交換機、OpenFlow控制器和虛擬交換機的網絡中的所述OpenFlow控制器中,所述方法包括:
[0023]接收所述虛擬交換機上報的至少一個老化流表項,所述至少一個老化流表項為所述OpenFlow交換機和所述OpenFlow控制器之間的安全通道發生故障時,所述虛擬交換機確定接收的所述OpenFlow交換機發送的上報數據包與老化流表中的老化流表項匹配之后,代理下發給所述OpenFlow交換機的所述匹配的述老化流表項,所述老化流表用于保存所述虛擬交換機在所述安全通道發生故障后接收到的所述OpenFlow交換機上報的被所述OpenFlow交換機刪除的老化流表項;
[0024]確定所述OpenFlow交換機中是否保存有所述至少一個老化流表項;
[0025]若所述OpenFlow交換機中有尚未保存的老化流表項中的至少一個所述老化流表項,則向所述OpenFlow交換機重新下發所述尚未保存的老化流表項。
[0026]在第二方面的第一種可能的實施方式中,所述方法還包括:
[0027]接收所述虛擬交換機上報的上報數據包,所述上報數據包為所述虛擬交換機在所述OpenFlow交換機和所述OpenFlow控制器之間的安全通道發生故障時接收到的所述OpenFlow交換機發送的與所述老化流表中各個老化流表項均不匹配的上報數據包;
[0028]向所述OpenFlow交換機下發與所述上報數據包對應的流表項。
[0029]結合第二方面或者第二方面的第一種可能的實施方式,在第二種可能的實施方式中,所述接收所述虛擬交換機上報的上報數據包,包括:
[0030]接收所述虛擬交換機按照所述上報數據包的計數值大小順序依次上報的所述上報數據包,所述各上報數據包的計數值為所述虛擬交換機在接收到所述OpenFlow交換機發送的與所述老化流表中的老化流表項均不匹配的所述上報數據包且確定所述虛擬交換機中保存有所述上報數據包時,對各所述上報數據包的計數值分別遞增得到的;
[0031]所述向所述OpenFlow交換機下發與所述上報數據包對應的流表項,包括:
[0032]根據接收所述上報數據包的順序依次生成并向所述OpenFlow交換機下發與所述上報數據包對應的流表項。
[0033]第三方面,提供了一種數據包轉發裝置,應用于包含有OpenFlow交換機、OpenFlow控制器和虛擬交換機的網絡中的所述虛擬交換機中,所述裝置包括:
[0034]第一接收模塊,用于在所述OpenFlow交換機和所述OpenFlow控制器之間的安全通道發生故障時,將接收到的所述OpenFlow交換機上報的被所述OpenFlow交換機刪除的老化流表項保存到老化流表中,所述老化流表用于保存所述OpenFlow交換機在所述安全通道發生故障后刪除的老化流表項;
[0035]第一確定模塊,用于確定所述第一接收模塊接收到的所述OpenFlow交換機發送的所述上報數據包是否與所述老化流表中的老化流表項匹配,所述上報數據包為所述OpenFlow交換機在接收到轉發數據包時,在所述轉發數據包與保存的轉發流表項未匹配成功后根據所述轉發數據包生成的;
[0036]第一下發模塊,用于在所述上報數據包與所述老化流表中的一個老化流表項匹配時,向所述OpenFlow交換機下發所述匹配的老化流表項,以便所述OpenFlow交換機根據所述匹配的老化流表項轉發所述轉發數據包。
[0037]在第三方面的第一種可能的實施方式中,所述裝置還包括:
[0038]第一上報模塊,用于在所述OpenFlow交換機和所述OpenFlow控制器之間的所述安全通道恢復正常時,將所述老化流表中已下發給所述OpenFlow交換機的各老化流表項上報給所述OpenFlow控制器,以便所述OpenFlow控制器確定在所述安全通道發生故障時所述虛擬交換機代理下發給所述OpenFlow交換機的所述各老化流表項是否全部被所述OpenFlow交換機接收到,若所述各老化流表項沒有全部被所述OpenFlow交換機接收到,貝U向所述OpenFlow交換機重新下發尚未被所述OpenFlow交換機接收到的老化流表項。
[0039]結合第三方面或者第三方面的第一種可能的實施方式,在第二種可能的實施方式中,所述裝置還包括:
[0040]第二確定模塊,用于在所述上報數據包與所述老化流表中的老化流表項均不匹配時,確定所述虛擬交換機是否保存有所述上報數據包;
[0041]保存模塊,用于在確定所述虛擬交換機未保存有所述上報數據包時,保存所述上報數據包。
[0042]結合第三方面、第三方面的第一種可能的實施方式或者第三方面的第二種可能的實施方式,在第三種可能的實施方式中,所述裝置還包括:
[0043]第二上報模塊,用于在所述OpenFlow交換機和所述OpenFlow控制器之間的所述安全通道恢復正常時,將所述虛擬交換機中保存的各上報數據包上報給所述OpenFlow控制器,以便所述OpenFlow控制器向所述OpenFlow交換機下發與所述各上報數據包對應的流表項。
[0044]結合第三方面、第三方面的第一種可能的實施方式、第三方面的第二種可能的實施方式或者第三方面的第三種可能的實施方式,在第四種可能的實施方式中,所述裝置還包括:
[0045]累加模塊,用于在所述虛擬交換機保存有所述上報數據包時,將所述上報數據包的計數值遞增,所述計數值表示所述虛擬交換機接收到所述上報數據包的次數;
[0046]所述第二上報模塊,還用于:
[0047]將所述虛擬交換機中保存的所述各上報數據包按照所述各上報數據包的計數值大小依次上報給所述OpenFlow控制器,以便所述OpenFlow控制器根據接收到所述虛擬交換機上報的所述各上報數據包的順序依次向所述OpenFlow交換機下發與所述各上報數據包對應的流表項。
[0048]第四方面,提供了一種數據包轉發裝置,應用于包含有OpenFlow交換機、OpenFlow控制器和虛擬交換機的網絡中的所述OpenFlow控制器中,所述裝置包括:
[0049]第二接收模塊,用于接收所述虛擬交換機上報的至少一個老化流表項,所述至少一個老化流表項為所述OpenFlow交換機和所述OpenFlow控制器之間的安全通道發生故障時,所述虛擬交換機確定接收的所述OpenFlow交換機發送的上報數據包與老化流表中的老化流表項匹配之后,代理下發給所述OpenFlow交換機的所述匹配的老化流表項,所述老化流表用于保存所述虛擬交換機在所述安全通道發生故障后接收到的所述OpenFlow交換機上報的被所述OpenFlow交換機刪除的老化流表項;
[0050]第三確定模塊,用于確定所述OpenFlow交換機中是否保存有所述第二接收模塊接收到的至少一個所述老化流表項;
[0051]第二下發模塊,用于在所述OpenFlow交換機中有尚未保存的所述老化流表中的至少一個老化流表項時,向所述OpenFlow交換機重新下發所述尚未保存的老化流表項。
[0052]在第四方面的第一種可能的實施方式中,所述裝置還包括:
[0053]第三接收模塊,用于接收所述虛擬交換機上報的上報數據包,所述上報數據包為所述虛擬交換機在所述OpenFlow交換機和所述OpenFlow控制器之間的安全通道發生故障時接收到的所述OpenFlow交換機發送的與所述老化流表中各個老化流表項均不匹配的上報數據包;
[0054]第三下發模塊,用于向所述OpenFlow交換機下發與所述第三接收模塊接收到的所述上報數據包對應的流表項。
[0055]結合第四方面或者第四方面的第一種可能的實施方式,在第二種可能的實施方式中,所述第三接收模塊,還用于:
[0056]接收所述虛擬交換機按照所述上報數據包的計數值大小順序依次上報的所述上報數據包,所述各上報數據包的計數值為所述虛擬交換機在接收到所述OpenFlow交換機發送的與所述老化流表中的所述老化流表項均不匹配的所述上報數據包且確定所述虛擬交換機中保存有所述上報數據包時,對各所述上報數據包的計數值分別遞增得到的;
[0057]所述第三下發模塊,還用于:
[0058]根據接收所述上報數據包的順序依次生成并向所述OpenFlow交換機下發與所述上報數據包對應的流表項。
[0059]第五方面,提供了一種數據包轉發系統,所述系統包括虛擬交換機、OpenFlow交換機和OpenFlow控制器,
[0060]所述虛擬交換機包括如第三方面以及第三方面的各種可能的實施方式中提供的任一所述的數據包轉發裝置