軟件定義網(wǎng)絡中路由控制的方法和開放流控制器的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,并且更具體地,涉及一種軟件定義網(wǎng)絡中路由控制的方法和開放流控制器。
【背景技術(shù)】
[0002]在SDN (Software Defined Networking,軟件定義網(wǎng)絡)中,控制面與轉(zhuǎn)發(fā)面相分離??刂泼婊谌W(wǎng)制定路由策略,轉(zhuǎn)發(fā)面根據(jù)收到的路由決策處理數(shù)據(jù)包。在主機發(fā)起請求的過程中,請求由OFS (Open Flow Switch,開放流交換機)將數(shù)據(jù)包上報給OFC (OpenFlow Controller,開放流控制器)。在OFC完成相應的邏輯后,會針對該請求生成對應的N個路徑上的OFS下發(fā)流表項。
[0003]過程中,可能會存在兩個問題。第一,在主機發(fā)起請求到對應的流表項在與主機連接的第一個OFS中生效的時間段內(nèi),可能會有重復M個同樣的請求包上報。對于這M個重復的請求,OFC端會無差別地對待,計算M次,并針對路徑上的N個OFS下發(fā)M個重復流表項。第二,在OFC向N個路徑上的OFS下發(fā)流表項的過程中,由于OFC到各個OFS的網(wǎng)絡傳輸時間和各個OFS對于該條流表項的指令生效的時間不一致,還會造成在OFC針對路徑上的OFS下發(fā)流表項以后,數(shù)據(jù)包再次在路徑中不同的OFS重復上報的問題,OFC仍然會重復計算一次或多次。
[0004]目前的解決方案是在OFS端做一個緩存,對于一定時間內(nèi)的重復包,交換機只會上報處理第一個,當OFC下發(fā)流表項的時候再把緩存中的對應的同一批的數(shù)據(jù)包給轉(zhuǎn)發(fā)出去。這種方案只能對路由策略路徑中首個OFS上報的重復包生效,對于路由策略路徑中其它OFS上報的重復包不能生效,仍然造成OFC的重復計算量增加以及下發(fā)大量的重復流表項。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實施例提供了一種軟件定義網(wǎng)絡中路由控制的方法和開放流控制器,能夠減小開放流控制器的計算量和重復流表項的下發(fā)量。
[0006]第一方面,提供了一種軟件定義網(wǎng)絡中路由控制的方法,包括:開放流控制器OFC接收開放流交換機OFS上報的數(shù)據(jù)包;0FC根據(jù)緩存中存儲的關(guān)鍵值,確定數(shù)據(jù)包是否為重復包,其中,關(guān)鍵值包括數(shù)據(jù)包特征值;若數(shù)據(jù)包為重復包,OFC向OFS下發(fā)數(shù)據(jù)包,并指示OFS匹配已存儲的流表處理數(shù)據(jù)包或者指示OFS從對應的端口傳輸數(shù)據(jù)包;若數(shù)據(jù)包不是重復包,OFC計算數(shù)據(jù)包的路由策略,并根據(jù)路由策略向OFS下發(fā)流表,以便于OFS根據(jù)下發(fā)的流表處理數(shù)據(jù)包。
[0007]結(jié)合第一方面,在第一方面的第一種實現(xiàn)方式中,OFC根據(jù)緩存中存儲的關(guān)鍵值,確定數(shù)據(jù)包是否為重復包,包括:0FC將數(shù)據(jù)包的特征值與關(guān)鍵值中的數(shù)據(jù)包特征值進行比較,以確定數(shù)據(jù)包是否命中緩存;若數(shù)據(jù)包命中緩存,OFC確定數(shù)據(jù)包為重復包;若數(shù)據(jù)包沒命中緩存,OFC確定數(shù)據(jù)包不是重復包。
[0008]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的第二種實現(xiàn)方式中,關(guān)鍵值還包括處理時刻,OFC根據(jù)緩存中存儲的關(guān)鍵值,確定數(shù)據(jù)包是否為重復包,包括:0FC將數(shù)據(jù)包的特征值與關(guān)鍵值中的數(shù)據(jù)包特征值進行比較,以確定數(shù)據(jù)包是否命中緩存;若數(shù)據(jù)包命中緩存,OFC確定當前時刻與關(guān)鍵值中的處理時刻之間的時間間隔是否小于或等于預設的時間值,預設的時間值為小于或等于流表有效時間的時間值;若時間間隔小于或等于預設的時間值,OFC確定數(shù)據(jù)包為重復包;若數(shù)據(jù)包沒命中緩存,或者時間間隔大于預設的時間值,OFC確定數(shù)據(jù)包不是重復包。
[0009]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的第三種實現(xiàn)方式中,關(guān)鍵值還包括處理時刻和計數(shù)器值,OFC根據(jù)緩存中存儲的關(guān)鍵值,確定數(shù)據(jù)包是否為重復包,包括:OFC將數(shù)據(jù)包的特征值與關(guān)鍵值中的數(shù)據(jù)包特征值進行比較,以確定數(shù)據(jù)包是否命中緩存;若數(shù)據(jù)包命中緩存,OFC確定當前時刻與關(guān)鍵值中的處理時刻之間的時間間隔是否小于或等于預設的時間值,并確定關(guān)鍵值中的計數(shù)器值是否為零,預設的時間值為小于或等于流表有效時間的時間值;若時間間隔小于或等于預設的時間值,且計數(shù)器值不為零,OFC確定數(shù)據(jù)包為重復包,并將關(guān)鍵值中的計數(shù)器值減一;若數(shù)據(jù)包沒命中緩存,或者時間間隔大于預設的時間值,或者計數(shù)器值為零,OFC確定數(shù)據(jù)包不是重復包。
[0010]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的第四種實現(xiàn)方式中,預設的時間值為根據(jù)OFS對OFC下發(fā)的消息的響應時間確定的時間值。
[0011]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的第五種實現(xiàn)方式中,特征值包括源媒體接入控制MAC地址、目的MAC地址、源互聯(lián)網(wǎng)協(xié)議IP地址、目的IP地址、源端口號、目的端口號或虛擬局域網(wǎng)VLAN標識及優(yōu)先級中的一種或多種。
[0012]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的第六種實現(xiàn)方式中,緩存是基于最近最少使用LRU算法維護的固定大小的緩存。
[0013]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的第七種實現(xiàn)方式中,OFC根據(jù)緩存中存儲的關(guān)鍵值,確定數(shù)據(jù)包是否為重復包,包括:0FC的多線程分配器根據(jù)數(shù)據(jù)包的特征值分配線程,以便于OFC在線程上,根據(jù)緩存中存儲的關(guān)鍵值,確定數(shù)據(jù)包是否為重復包。
[0014]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的第八種實現(xiàn)方式中,若數(shù)據(jù)包不是重復包,OFC計算數(shù)據(jù)包的路由策略之后,該方法還包括:0FC在緩存中存儲數(shù)據(jù)包的關(guān)鍵值。
[0015]第二方面,提供了一種開放流控制器,包括接收單元、確定單元、處理單元和發(fā)送單元,其中,接收單元,用于接收開放流交換機OFS上報的數(shù)據(jù)包;確定單元,用于根據(jù)緩存中存儲的關(guān)鍵值,確定數(shù)據(jù)包是否為重復包,其中,關(guān)鍵值包括數(shù)據(jù)包特征值;若數(shù)據(jù)包為重復包,發(fā)送單元用于向OFS發(fā)送數(shù)據(jù)包,以及處理單元用于指示OFS匹配已存儲的流表處理數(shù)據(jù)包或者指示OFS從對應的端口傳輸數(shù)據(jù)包;若數(shù)據(jù)包不是重復包,處理單元用于計算數(shù)據(jù)包的路由策略,以及發(fā)送單元用于根據(jù)路由策略向OFS下發(fā)流表,以便于OFS根據(jù)下發(fā)的流表處理數(shù)據(jù)包。
[0016]結(jié)合第二方面,在第二方面的第一種實現(xiàn)方式中,確定單元具體用于,將數(shù)據(jù)包的特征值與關(guān)鍵值中的數(shù)據(jù)包特征值進行比較,以確定數(shù)據(jù)包是否命中緩存;若數(shù)據(jù)包命中緩存,確定數(shù)據(jù)包為重復包;若數(shù)據(jù)包沒命中緩存,確定數(shù)據(jù)包不是重復包。
[0017]結(jié)合第二方面及其上述實現(xiàn)方式,在第二方面的第二種實現(xiàn)方式中,關(guān)鍵值還包括處理時刻,確定單元具體用于,將數(shù)據(jù)包的特征值與關(guān)鍵值中的數(shù)據(jù)包特征值進行比較,以確定數(shù)據(jù)包是否命中緩存;若數(shù)據(jù)包命中緩存,確定當前時刻與關(guān)鍵值中的處理時刻之間的時間間隔是否小于或等于預設的時間值,預設的時間值為小于或等于流表有效時間的時間值;若時間間隔小于或等于預設的時間值,確定數(shù)據(jù)包為重復包;若數(shù)據(jù)包沒命中緩存,確定數(shù)據(jù)包不是重復包。
[0018]結(jié)合第二方面及其上述實現(xiàn)方式,在第二方面的第三種實現(xiàn)方式中,關(guān)鍵值還包括處理時刻和計數(shù)器值,確定單元具體用于,將數(shù)據(jù)包的特征值與關(guān)鍵值中的數(shù)據(jù)包特征值進行比較,以確定數(shù)據(jù)包是否命中緩存;若數(shù)據(jù)包命中緩存,確定當前時刻與關(guān)鍵值中的處理時刻之間的時間間隔是否小于或等于預設的時間值,并確定關(guān)鍵值中的計數(shù)器值是否為零,預設的時間值為小于或等于流表有效時間的時間值;若時間間隔小于或等于預設的時間值,且計數(shù)器值不為零,確定數(shù)據(jù)包為重復包,并將關(guān)鍵值中的計數(shù)器值減一;若數(shù)據(jù)包沒命中緩存,或者時間間隔大于預設的時間值,或者計數(shù)器值為零,確定數(shù)據(jù)包不是重復包。
[0019]結(jié)合第二方面及其上述實現(xiàn)方式,在第二方面的第四種實現(xiàn)方式中,預設的時間值為根據(jù)OFS對開放流控制器下發(fā)的消息的響應時間確定的時間值。
[0020]結(jié)合第二方面及其上述實現(xiàn)方式,在第二方面的第五種實現(xiàn)方式中,特征值包括源媒體接入控制MAC地址、目的MAC地址、源互聯(lián)網(wǎng)協(xié)議IP地址、目的IP地址、源端口號、目的端口號或虛擬局域網(wǎng)VLAN標識及優(yōu)先級中的一種或多種。
[0021]結(jié)合第二方面及其上述實現(xiàn)方式,在第二方面的第六種實現(xiàn)方式中,緩存是基于最近最少使用LRU算法維護的固定大小的緩存。
[0022]結(jié)合第二方面及其上述實現(xiàn)方式,在第二方面的第七種實現(xiàn)方式中,該開放流控制器還包括:分配單元,用于根據(jù)數(shù)據(jù)包的特征值分配線程;確定單元具體用于,在線程上根據(jù)緩存中存儲的關(guān)鍵值,確定數(shù)據(jù)包是否為重復包。
[0023]結(jié)合第二方面及其上述實現(xiàn)方式,在第二方面的第八種實現(xiàn)方式中,該開放流控制器還包括:存儲單元,若數(shù)據(jù)包不是重復包,在開放流控制器計算數(shù)據(jù)包的路由策略之后,用于在緩存中存儲數(shù)據(jù)包的關(guān)鍵值。
[0024]基于上述技術(shù)方案,本發(fā)明實施例的方法中,OFC可以根據(jù)緩存中存儲的關(guān)鍵值,判斷上報的數(shù)據(jù)包是否為重復包。如果為重復包,就直接向OFS下發(fā)該數(shù)據(jù)包,并指示OFS匹配已存儲的流表處理該數(shù)據(jù)包。這樣,對于傳輸路徑上的首個或其它OFS上報的重復數(shù)據(jù)包,OFC可以僅計算一次路由策略,從而降低了 OFC的計算量。同時,可以減小OFC對重復流表項的下發(fā)量,進而緩解了 OFC出口的帶寬壓力。
【附圖說明】
[0025]為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對本發(fā)明實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0026]圖1是本發(fā)明實施例可應用的通信系統(tǒng)的示意性結(jié)構(gòu)圖。
[0027]圖2是本發(fā)明一個實施例的軟件定義網(wǎng)絡中路由控制的方法的示意性流程圖。
[0028]圖3是本發(fā)明實施例的開放流控制器多線程處理的示意性流程圖。
[0029]圖4是本發(fā)明另一實施例的軟件定義網(wǎng)絡中路由控制的方法的示意性流程圖。
[0030]圖5是本發(fā)明一個實施例的開放流控制器的示意性框圖。
[0031]圖6是本發(fā)明另一實施例的開放流控制器的示意性框圖。
【具體實施方式】
[0032]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明的一部分實施例,而不是全部實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員