一種sdn流表管理方法及系統(tǒng)、交換機(jī)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種網(wǎng)絡(luò)技術(shù),特別是涉及一種SDN流表管理方法及系統(tǒng)、交換機(jī)。
【背景技術(shù)】
[0002]軟件定義網(wǎng)絡(luò)(Software Defined Network, SDN),是Emulex網(wǎng)絡(luò)一種新型網(wǎng)絡(luò)創(chuàng)新架構(gòu),是網(wǎng)絡(luò)虛擬化的一種實(shí)現(xiàn)方式,其核心技術(shù)OpenFlow通過(guò)將網(wǎng)絡(luò)設(shè)備控制面與數(shù)據(jù)面分離開(kāi)來(lái),從而實(shí)現(xiàn)了網(wǎng)絡(luò)流量的靈活控制,使網(wǎng)絡(luò)作為管道變得更加智能。在SDN網(wǎng)絡(luò)中,控制功能與轉(zhuǎn)發(fā)功能進(jìn)行分離,進(jìn)而將控制功能全部集中到遠(yuǎn)程的SDN控制器上完成,而SDN交換機(jī)只負(fù)責(zé)在本地做簡(jiǎn)單高速的數(shù)據(jù)轉(zhuǎn)發(fā)。在SDN交換機(jī)的運(yùn)行過(guò)程中,其數(shù)據(jù)轉(zhuǎn)發(fā)的依據(jù)就是流表。交換機(jī)可以支持OpenFlow協(xié)議,通過(guò)OpenFlow協(xié)議接收SDN控制器下發(fā)的流表,SDN控制器經(jīng)過(guò)計(jì)算得到大量的流表下發(fā)到交換機(jī)上。當(dāng)SDN交換機(jī)收到一個(gè)報(bào)文,先進(jìn)行流表匹配,如果匹配不到流表,則需要通過(guò)OpenFlow協(xié)議告知控制器,SDN控制器下發(fā)流表給SDN交換機(jī),SDN交換機(jī)收到OpenFlow協(xié)議包后下發(fā)流表到轉(zhuǎn)發(fā)層。后續(xù)的報(bào)文就可以根據(jù)下發(fā)的流表進(jìn)行轉(zhuǎn)發(fā)。由于交換機(jī)的轉(zhuǎn)發(fā)芯片的表項(xiàng)空間有限,交換機(jī)中所能存儲(chǔ)的流表項(xiàng)也有限,容易發(fā)生匹配不到流表的情況,當(dāng)SDN交換機(jī)收到未匹配流表的報(bào)文后才去SDN控制器取,直到流表下發(fā)才能進(jìn)行轉(zhuǎn)發(fā),這中間有一個(gè)流表交互的過(guò)程,在這過(guò)程中報(bào)文不能進(jìn)行轉(zhuǎn)發(fā)。
[0003]鑒于此,如何提高流表下發(fā)的效率進(jìn)而提高交換機(jī)的轉(zhuǎn)發(fā)效率就成了本領(lǐng)域技術(shù)人員亟待解決的問(wèn)題。
【發(fā)明內(nèi)容】
[0004]鑒于以上所述現(xiàn)有技術(shù)的缺點(diǎn),本發(fā)明的目的在于提供一種SDN流表管理方法及系統(tǒng)、交換機(jī),用于解決現(xiàn)有技術(shù)中流表下發(fā)的效率不高的問(wèn)題。
[0005]為實(shí)現(xiàn)上述目的及其他相關(guān)目的,本發(fā)明提供一種SDN流表管理方法,所述SDN流表管理方法包括:SDN控制器定期計(jì)算流表,并主動(dòng)下發(fā)給所述SDN控制器所連接的SDN交換機(jī);所述SDN交換機(jī)接收到所述流表,并保存在本地流表數(shù)據(jù)庫(kù)中;SDN交換機(jī)接收到報(bào)文并在轉(zhuǎn)發(fā)層進(jìn)行流表匹配;當(dāng)轉(zhuǎn)發(fā)層流表匹配不成功時(shí),查詢本地流表數(shù)據(jù)庫(kù);如果在本地流表數(shù)據(jù)庫(kù)中找到匹配的流表,則將找到的流表下發(fā)到轉(zhuǎn)發(fā)層。
[0006]可選地,所述SDN流表管理方法還包括:當(dāng)轉(zhuǎn)發(fā)層的流表空間已滿時(shí),則按照預(yù)定策略刪除一條流表。
[0007]可選地,所述預(yù)設(shè)策略包括:選擇與上一次報(bào)文成功匹配時(shí)間最老的流表進(jìn)行刪除。
[0008]可選地,所述SDN流表管理方法還包括:如果在本地流表數(shù)據(jù)庫(kù)中也未找到匹配的流表,則利用OpenFlow協(xié)議通知SDN控制器,向SDN控制器索取流表。
[0009]可選地,所述本地流表數(shù)據(jù)庫(kù)采用SQLite數(shù)據(jù)庫(kù)。
[0010]可選地,所述SDN流表管理方法還包括:當(dāng)轉(zhuǎn)發(fā)層流表匹配成功時(shí),根據(jù)匹配成功的流表進(jìn)行轉(zhuǎn)發(fā)。
[0011 ] 本發(fā)明提供一種SDN流表管理系統(tǒng),所述SDN流表管理系統(tǒng)包括流表管理模塊,所述流表管理模塊位于SDN交換機(jī)上,用于接收從SDN控制器下發(fā)的流表,并將所述流表保存在本地流表數(shù)據(jù)庫(kù)中;數(shù)據(jù)轉(zhuǎn)發(fā)模塊,所述數(shù)據(jù)轉(zhuǎn)發(fā)模塊位于SDN交換機(jī)上,用于在所述SDN交換機(jī)接收到報(bào)文時(shí),在轉(zhuǎn)發(fā)層進(jìn)行流表匹配;當(dāng)轉(zhuǎn)發(fā)層流表匹配不成功時(shí),查詢本地流表數(shù)據(jù)庫(kù);如果在本地流表數(shù)據(jù)庫(kù)中找到匹配的流表,則將找到的流表下發(fā)到轉(zhuǎn)發(fā)層。
[0012]可選地,所述數(shù)據(jù)轉(zhuǎn)發(fā)模塊還用于:當(dāng)轉(zhuǎn)發(fā)層的流表空間已滿時(shí),則按照預(yù)定策略刪除一條流表。
[0013]可選地,所述預(yù)設(shè)策略包括:選擇與上一次報(bào)文成功匹配時(shí)間最老的流表進(jìn)行刪除。
[0014]可選地,所述數(shù)據(jù)轉(zhuǎn)發(fā)模塊還用于:如果在本地流表數(shù)據(jù)庫(kù)中也未找到匹配的流表,則利用OpenFlow協(xié)議通知SDN控制器,向SDN控制器索取流表。
[0015]可選地,所述本地流表數(shù)據(jù)庫(kù)采用SQLite數(shù)據(jù)庫(kù)。
[0016]可選地,所述數(shù)據(jù)轉(zhuǎn)發(fā)模塊還包括:當(dāng)轉(zhuǎn)發(fā)層流表匹配成功時(shí),根據(jù)匹配成功的流表進(jìn)行轉(zhuǎn)發(fā)。
[0017]本發(fā)明還提供一種SDN交換機(jī),所述SDN交換機(jī)具備有如上所述的SDN流表管理系統(tǒng)。
[0018]如上所述,本發(fā)明的一種SDN流表管理方法及系統(tǒng)、交換機(jī),具有以下有益效果:解決了流表快速下發(fā)以及流表管理的問(wèn)題,縮短流表的下發(fā)時(shí)間,進(jìn)而提高了交換機(jī)的轉(zhuǎn)發(fā)效率,提高了 SDN系統(tǒng)的性能。
【附圖說(shuō)明】
[0019]圖1顯示為本發(fā)明的SDN流表管理方法的一實(shí)施例的流程示意圖。
[0020]圖2顯示為本發(fā)明的SDN流表管理方法的另一實(shí)施例的流程示意圖。
[0021]圖3顯示為本發(fā)明的SDN流表管理系統(tǒng)的一實(shí)施例的模塊示意圖。
[0022]元件標(biāo)號(hào)說(shuō)明
[0023]ISDN流表管理系統(tǒng)
[0024]11流表管理模塊
[0025]12數(shù)據(jù)轉(zhuǎn)發(fā)模塊
[0026]SI ?S3 步驟
【具體實(shí)施方式】
[0027]以下通過(guò)特定的具體實(shí)例說(shuō)明本發(fā)明的實(shí)施方式,本領(lǐng)域技術(shù)人員可由本說(shuō)明書(shū)所揭露的內(nèi)容輕易地了解本發(fā)明的其他優(yōu)點(diǎn)與功效。本發(fā)明還可以通過(guò)另外不同的【具體實(shí)施方式】加以實(shí)施或應(yīng)用,本說(shuō)明書(shū)中的各項(xiàng)細(xì)節(jié)也可以基于不同觀點(diǎn)與應(yīng)用,在沒(méi)有背離本發(fā)明的精神下進(jìn)行各種修飾或改變。
[0028]需要說(shuō)明的是,本實(shí)施例中所提供的圖示僅以示意方式說(shuō)明本發(fā)明的基本構(gòu)想,遂圖式中僅顯示與本發(fā)明中有關(guān)的組件而非按照實(shí)際實(shí)施時(shí)的組件數(shù)目、形狀及尺寸繪制,其實(shí)際實(shí)施時(shí)各組件的型態(tài)、數(shù)量及比例可為一種隨意的改變,且其組件布局型態(tài)也可能更為復(fù)雜。
[0029]本發(fā)明提供一種SDN流表管理方法。所述SDN流表管理方法應(yīng)用于SDN網(wǎng)絡(luò)系統(tǒng)中。在一個(gè)實(shí)施例中,所述SDN流表管理方法包括:
[0030]SDN控制器定期計(jì)算流表,并主動(dòng)下發(fā)給所述SDN控制器所連接的SDN交換機(jī)。[0031 ] 所述SDN交換機(jī)接收到所述流表,并保存在本地流表數(shù)據(jù)庫(kù)中。
[0032]SDN交換機(jī)接收到報(bào)文并在轉(zhuǎn)發(fā)層進(jìn)行流表匹配。
[0033]當(dāng)轉(zhuǎn)發(fā)層流表匹配不成功時(shí),查詢本地流表數(shù)據(jù)庫(kù)。
[0034]如果在本地流表數(shù)據(jù)庫(kù)中找到匹配的流表,則將找到的流表下發(fā)到轉(zhuǎn)發(fā)層。
[0035]在一個(gè)實(shí)施例中,如圖1所示,所述SDN流表管理方法包括:
[0036]步驟SI,SDN控制器定期計(jì)算流表,并主動(dòng)下發(fā)給所述SDN控制器所連接的SDN交換機(jī);所述SDN交換機(jī)接收到所述流表,并保存在本地流表數(shù)據(jù)庫(kù)中。具體地,SDN控制器根據(jù)網(wǎng)絡(luò)計(jì)算得出流表數(shù)據(jù),定期主動(dòng)下發(fā)給所述SDN控制器所連接的SDN交換機(jī);所述SDN交換機(jī)接收到所述流表,并保存在本地流表數(shù)據(jù)庫(kù)中。所述本地流表數(shù)據(jù)庫(kù)采用SQLite數(shù)據(jù)庫(kù)。SQLite是一款輕型的數(shù)據(jù)庫(kù),是遵守ACID的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它包含在一個(gè)相對(duì)小的C庫(kù)中。它是D.RichardHipp建立的公有領(lǐng)域項(xiàng)目。它的設(shè)計(jì)目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時(shí)能夠跟很多程序語(yǔ)言相結(jié)合,比如Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開(kāi)源的世界著名數(shù)據(jù)庫(kù)管理系統(tǒng)來(lái)講,它的處理速度比他們都快。本地流表數(shù)據(jù)庫(kù)也可以采用其他數(shù)據(jù)庫(kù)。
[0037]步驟S2,SDN交換機(jī)接收到報(bào)文并在轉(zhuǎn)發(fā)層進(jìn)行流表匹配;當(dāng)轉(zhuǎn)發(fā)層流表匹配不成功時(shí),查詢本地流表數(shù)據(jù)庫(kù)。所述SDN流表管理方法還包括:當(dāng)轉(zhuǎn)發(fā)層流表匹配成功時(shí),根據(jù)匹配成功的流表進(jìn)行轉(zhuǎn)發(fā)。
[0038]步驟S3,如果在本地流表數(shù)據(jù)庫(kù)中找到匹配的流表,則將找到的流表下發(fā)到轉(zhuǎn)發(fā)層。在一個(gè)實(shí)施例中,所述SDN流表管理方法還包括:當(dāng)轉(zhuǎn)發(fā)層的流表空間已滿時(shí),則按照預(yù)定策略刪除一條流表。所述預(yù)設(shè)策略包括:選擇與上一次報(bào)文成功匹配時(shí)間最老的流表進(jìn)行刪除。所述SDN流表管理方法還包括:如果在本地流表數(shù)據(jù)庫(kù)中也未找到匹配的流表,