地址、目的IP地址、源端口號(hào)、目的端口號(hào)或虛擬局域網(wǎng)VLAN標(biāo)識(shí)及優(yōu)先級(jí)中的一種或多種。
[0099]可選地,作為另一實(shí)施例,預(yù)設(shè)的時(shí)間值為根據(jù)OFS對(duì)開(kāi)放流控制器下發(fā)的消息的響應(yīng)時(shí)間確定的時(shí)間值。
[0100]例如,可以參考OFC和OFS之間的一些協(xié)議消息的回復(fù)消息或者流表項(xiàng)生成成功與否的返回消息的時(shí)間間隔,確定預(yù)設(shè)的時(shí)間值。這個(gè)間隔可以取平均值或者取上一次的值。
[0101]可選地,作為另一實(shí)施例,該開(kāi)放流控制器50還包括,存儲(chǔ)單元506,若數(shù)據(jù)包不是重復(fù)包,在開(kāi)放流控制器計(jì)算數(shù)據(jù)包的路由策略之后,用于在緩存中存儲(chǔ)數(shù)據(jù)包的關(guān)鍵值。
[0102]可選地,在出現(xiàn)網(wǎng)絡(luò)不穩(wěn)定的情況時(shí),該開(kāi)放流控制器50還可以進(jìn)行如下處理,當(dāng)網(wǎng)絡(luò)拓?fù)湔鹗帟r(shí),也就是鏈路發(fā)生變化時(shí),全部清空緩存中的數(shù)據(jù)?;蛘?,當(dāng)主機(jī)的掛載點(diǎn)刪除或變化時(shí),刪除和該主機(jī)有關(guān)系的緩存對(duì)象。
[0103]圖6是本發(fā)明另一實(shí)施例的開(kāi)放流控制器的示意性框圖。
[0104]圖6的開(kāi)放流控制器60可用于實(shí)現(xiàn)上述方法實(shí)施例中各步驟及方法。圖6的實(shí)施例中,開(kāi)放流控制器60包括發(fā)射電路602、接收電路603、處理器604、存儲(chǔ)器605及接口601。處理器604控制開(kāi)放流控制器60的操作,并且可用于處理信號(hào)。處理器604還可以稱(chēng)為CPU(Central Processing Unit,中央處理單元)。存儲(chǔ)器605可以包括只讀存儲(chǔ)器和隨機(jī)存取存儲(chǔ)器,并向處理器604提供指令和數(shù)據(jù)。存儲(chǔ)器605的一部分還可以包括非易失行隨機(jī)存取存儲(chǔ)器(NVRAM)。具體的應(yīng)用中,開(kāi)放流控制器60可以嵌入或者本身可以就是例如移動(dòng)電話之類(lèi)的無(wú)線通信設(shè)備。發(fā)射電路602和接收電路603可以耦合到接口 601。開(kāi)放流控制器60的各個(gè)組件通過(guò)總線系統(tǒng)609耦合在一起,其中總線系統(tǒng)609除包括數(shù)據(jù)總線之外,還包括電源總線、控制總線和狀態(tài)信號(hào)總線。但是為了清楚說(shuō)明起見(jiàn),在圖中將各種總線都標(biāo)為總線系統(tǒng)609。
[0105]具體地,存儲(chǔ)器605可存儲(chǔ)使得處理器604執(zhí)行以下操作的指令:
[0106]接收開(kāi)放流交換機(jī)OFS上報(bào)的數(shù)據(jù)包;根據(jù)緩存中存儲(chǔ)的關(guān)鍵值,確定數(shù)據(jù)包是否為重復(fù)包,其中,關(guān)鍵值包括數(shù)據(jù)包特征值;若數(shù)據(jù)包為重復(fù)包,向OFS下發(fā)數(shù)據(jù)包,并指示OFS匹配已存儲(chǔ)的流表處理數(shù)據(jù)包;若數(shù)據(jù)包不是重復(fù)包,計(jì)算數(shù)據(jù)包的路由策略,并根據(jù)路由策略向OFS下發(fā)流表,以便于OFS根據(jù)下發(fā)的流表處理數(shù)據(jù)包。
[0107]基于上述技術(shù)方案,在本發(fā)明實(shí)施例中,OFC可以根據(jù)緩存中存儲(chǔ)的關(guān)鍵值,判斷上報(bào)的數(shù)據(jù)包是否為重復(fù)包。如果為重復(fù)包,就直接向OFS下發(fā)該數(shù)據(jù)包,并指示OFS匹配已存儲(chǔ)的流表處理該數(shù)據(jù)包。這樣,對(duì)于傳輸路徑上的首個(gè)或其它OFS上報(bào)的重復(fù)數(shù)據(jù)包,OFC可以僅計(jì)算一次路由策略,從而降低了 OFC的計(jì)算量。同時(shí),可以減小OFC對(duì)重復(fù)流表項(xiàng)的下發(fā)量,進(jìn)而緩解了 OFC出口的帶寬壓力。
[0108]另外,通過(guò)OFC對(duì)重復(fù)包進(jìn)行識(shí)別和處理,OFS端不需要改變數(shù)據(jù)包的處理邏輯。這符合SDN網(wǎng)絡(luò)的設(shè)計(jì)思路,OFC負(fù)責(zé)控制層面的路由策略制定,OFS實(shí)現(xiàn)轉(zhuǎn)發(fā)層面的數(shù)據(jù)轉(zhuǎn)發(fā),也利于實(shí)現(xiàn)SDN網(wǎng)絡(luò)的標(biāo)準(zhǔn)化。
[0109]應(yīng)理解,關(guān)鍵值為OFC計(jì)算出路由策略時(shí)存儲(chǔ)的數(shù)據(jù)包的信息,例如,該數(shù)據(jù)包的信息可以包括數(shù)據(jù)包的特征值和附屬值。特征值為表示該數(shù)據(jù)包區(qū)別于其它數(shù)據(jù)包的傳輸源和目的地的信息。附屬值為處理該數(shù)據(jù)包時(shí)的一些其它信息,例如,處理該數(shù)據(jù)包的時(shí)刻或?yàn)樵摂?shù)據(jù)包設(shè)置的計(jì)數(shù)器初始值等。具體地,可以提取出數(shù)據(jù)包包頭中的12元組(例如,OpenFlow協(xié)議規(guī)定的12元組),除去入端口對(duì)應(yīng)的元組,將剩余的11元組封裝作為特征值。也可以將處理該數(shù)據(jù)包的處理時(shí)刻、與該數(shù)據(jù)包對(duì)應(yīng)的預(yù)設(shè)時(shí)間值、處理該數(shù)據(jù)包的線程標(biāo)識(shí)和計(jì)數(shù)器初始值等其它必要的信息作為附屬值。
[0110]還應(yīng)理解,重復(fù)包是指根據(jù)OFC的處理邏輯確定為不需要重復(fù)計(jì)算路由策略的數(shù)據(jù)包。
[0111]可選地,作為一個(gè)實(shí)施例,存儲(chǔ)器605還可存儲(chǔ)使得處理器604執(zhí)行以下操作的指令:
[0112]將數(shù)據(jù)包的特征值與關(guān)鍵值中的數(shù)據(jù)包特征值進(jìn)行比較,以確定數(shù)據(jù)包是否命中緩存;若數(shù)據(jù)包命中緩存,OFC確定數(shù)據(jù)包為重復(fù)包;若數(shù)據(jù)包沒(méi)命中緩存,確定數(shù)據(jù)包不是重復(fù)包。
[0113]若數(shù)據(jù)包沒(méi)有命中緩存,可以認(rèn)為該數(shù)據(jù)包不是重復(fù)包。這時(shí),可以按照正常流程處理該數(shù)據(jù)包,計(jì)算該數(shù)據(jù)包的路由策略,再向路徑中的OFS下發(fā)流表項(xiàng),以便于OFS按照下發(fā)的流表傳輸該數(shù)據(jù)包,同時(shí)存儲(chǔ)該數(shù)據(jù)包的關(guān)鍵值。
[0114]可選地,作為一個(gè)實(shí)施例,關(guān)鍵值還包括處理時(shí)刻,存儲(chǔ)器605還可存儲(chǔ)使得處理器604執(zhí)行以下操作的指令:
[0115]將數(shù)據(jù)包的特征值與關(guān)鍵值中的數(shù)據(jù)包特征值進(jìn)行比較,以確定數(shù)據(jù)包是否命中緩存;若數(shù)據(jù)包命中緩存,確定當(dāng)前時(shí)刻與關(guān)鍵值中的處理時(shí)刻之間的時(shí)間間隔是否小于或等于預(yù)設(shè)的時(shí)間值,預(yù)設(shè)的時(shí)間值為小于或等于流表有效時(shí)間的時(shí)間值;若時(shí)間間隔小于或等于預(yù)設(shè)的時(shí)間值,確定數(shù)據(jù)包為重復(fù)包;若數(shù)據(jù)包沒(méi)命中緩存,或者時(shí)間間隔大于預(yù)設(shè)的時(shí)間值,確定數(shù)據(jù)包不是重復(fù)包。
[0116]若沒(méi)有同時(shí)滿足命中緩存和時(shí)間間隔小于預(yù)設(shè)的時(shí)間值時(shí),可以確定該數(shù)據(jù)不是重復(fù)包,按照正常流程處理該數(shù)據(jù)包,并在緩存中存儲(chǔ)該數(shù)據(jù)包的關(guān)健值。
[0117]這樣,可以防止由于不設(shè)時(shí)間限制或者設(shè)置的時(shí)間值過(guò)長(zhǎng)而引起的網(wǎng)絡(luò)錯(cuò)誤,可以進(jìn)一步提升SDN網(wǎng)絡(luò)性能。
[0118]可選地,作為一個(gè)實(shí)施例,關(guān)鍵值還包括處理時(shí)刻和計(jì)數(shù)器值,存儲(chǔ)器605還可存儲(chǔ)使得處理器604執(zhí)行以下操作的指令:
[0119]將數(shù)據(jù)包的特征值與關(guān)鍵值中的數(shù)據(jù)包特征值進(jìn)行比較,以確定數(shù)據(jù)包是否命中緩存;若數(shù)據(jù)包命中緩存,確定當(dāng)前時(shí)刻與關(guān)鍵值中的處理時(shí)刻之間的時(shí)間間隔是否小于或等于預(yù)設(shè)的時(shí)間值,并確定關(guān)鍵值中的計(jì)數(shù)器值是否為零,預(yù)設(shè)的時(shí)間值為小于或等于流表有效時(shí)間的時(shí)間值;若時(shí)間間隔小于或等于預(yù)設(shè)的時(shí)間值,且計(jì)數(shù)器值不為零,確定數(shù)據(jù)包為重復(fù)包,并將關(guān)鍵值中的計(jì)數(shù)器值減一;若數(shù)據(jù)包沒(méi)命中緩存,或者時(shí)間間隔大于預(yù)設(shè)的時(shí)間值,或者計(jì)數(shù)器值為零,確定數(shù)據(jù)包不是重復(fù)包。
[0120]為計(jì)數(shù)器預(yù)先設(shè)置初始值,在OFC確定數(shù)據(jù)包為重復(fù)包后,將計(jì)數(shù)器值減一。若沒(méi)有同時(shí)滿足命中緩存、時(shí)間間隔小于預(yù)設(shè)的時(shí)間值和計(jì)數(shù)器值不為零時(shí),OFC可以確定該數(shù)據(jù)不是重復(fù)包,按照正常流程處理該數(shù)據(jù)包,并在緩存中存儲(chǔ)該數(shù)據(jù)包的關(guān)健值。若計(jì)數(shù)器值為零,重置計(jì)數(shù)器為初始值。
[0121]這樣,可以防止由于不設(shè)時(shí)間限制或者設(shè)置的時(shí)間值過(guò)長(zhǎng)而引起的網(wǎng)絡(luò)錯(cuò)誤,可以進(jìn)一步提升SDN網(wǎng)絡(luò)性能。例如,在OFC向OFS下發(fā)的流表項(xiàng)的過(guò)程中,出現(xiàn)偶然的錯(cuò)誤,通訊錯(cuò)誤、校驗(yàn)錯(cuò)誤或生效錯(cuò)誤等,導(dǎo)致流表項(xiàng)沒(méi)有生效。
[0122]另外,在出現(xiàn)網(wǎng)絡(luò)錯(cuò)誤時(shí),OFC可能會(huì)不斷地確定數(shù)據(jù)包為重復(fù)包,并指示OFS匹配流表項(xiàng)進(jìn)行傳輸。然而,OFS不斷地匹配不到流表,向OFC上報(bào)數(shù)據(jù)包,造成傳輸風(fēng)暴。增加計(jì)數(shù)器的約束條件,按照前述的處理流程,當(dāng)OFC不斷下發(fā)數(shù)據(jù)包的次數(shù)超過(guò)計(jì)數(shù)器初始值后,OFC會(huì)重新計(jì)算路由策略,從而可以避免或者減小上述傳輸風(fēng)暴。
[0123]可選地,作為一個(gè)實(shí)施例,存儲(chǔ)器605還可存儲(chǔ)使得處理器604執(zhí)行以下操作的指令:
[0124]緩存是基于最近最少使用LRU算法維護(hù)的固定大小的緩存。
[0125]這樣,在緩存容量不夠時(shí),可以自動(dòng)刪除最近使用最少的關(guān)鍵值,以實(shí)現(xiàn)自管理。
[0126]可選地,作為一個(gè)實(shí)施例,存儲(chǔ)器605還可存儲(chǔ)使得處理器604執(zhí)行以下操作的指令:
[0127]在根據(jù)緩存中存儲(chǔ)的關(guān)鍵值,確定數(shù)據(jù)包是否為重復(fù)包時(shí),可以根據(jù)該開(kāi)放流控制器60的多線程分配器根據(jù)數(shù)據(jù)包的特征值分配線程,以便于OFC在線程上,根據(jù)緩存中存儲(chǔ)的關(guān)鍵值,確定數(shù)據(jù)包是否為重復(fù)包。
[0128]這樣,OFC可以根據(jù)數(shù)據(jù)包的特征值粗略將相近似的數(shù)據(jù)包分配給同一個(gè)線程處理,從而可以避免不同線程處理近似的數(shù)據(jù)包而不能識(shí)別重復(fù)包的問(wèn)題,進(jìn)一步提高了重復(fù)包的處理效率,減小了 OFC的計(jì)算量。
[0129]可選地,作為一個(gè)實(shí)施例,存儲(chǔ)器605還可存儲(chǔ)使得處理器604執(zhí)行以下操作的指令:
[0130]特征值包括源媒體接入控制MAC地址、目的MAC地址、源互聯(lián)網(wǎng)協(xié)議IP地址、目的IP地址、源端口號(hào)、目的端口號(hào)或虛擬局域網(wǎng)VLAN標(biāo)識(shí)及優(yōu)先級(jí)中的一種或多種。
[0131]可選地,作為一個(gè)實(shí)施例,存儲(chǔ)器605還可存儲(chǔ)使得處理器604執(zhí)行以下操作的指令:
[0132]預(yù)設(shè)的時(shí)間值為根據(jù)OFS對(duì)OFC下發(fā)的消息的響應(yīng)時(shí)間確定的時(shí)間值。
[0133]可選地,作為一個(gè)實(shí)施例,存儲(chǔ)器605還可存儲(chǔ)使得處理器604執(zhí)行以下操作的指令:
[0134]若數(shù)據(jù)包不是重復(fù)包,計(jì)算數(shù)據(jù)包的路由策略之后,在緩存中存儲(chǔ)數(shù)據(jù)包的關(guān)鍵值。
[0135]應(yīng)理解,在本發(fā)明的各種實(shí)施例中,上述各過(guò)程的序號(hào)的大小并不意味著執(zhí)行順序的先后,各過(guò)程的執(zhí)行順序應(yīng)以其功能和內(nèi)在邏輯確定,而不應(yīng)對(duì)本發(fā)明實(shí)施例的實(shí)施過(guò)程構(gòu)成任何限定。
[0136]本領(lǐng)域普通技術(shù)人員可以意識(shí)到,結(jié)合本文中所公開(kāi)的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來(lái)實(shí)現(xiàn),為了清楚地說(shuō)明硬件和軟件的可互換性,在上述說(shuō)明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來(lái)執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專(zhuān)業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來(lái)使用不同方法來(lái)實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
[0137]所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為了描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng)、裝置和單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。
[0138]在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。