国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于OpenDayLight 的流表控制研究

2023-09-12 00:50
科學(xué)技術(shù)創(chuàng)新 2023年21期
關(guān)鍵詞:流表表項命令

高 麗

(蘭州石化職業(yè)技術(shù)大學(xué),甘肅 蘭州)

1 OpenDayLight 介紹

SDN 控制器是SDN 中的應(yīng)用程序,類似網(wǎng)絡(luò)的“大腦”,控制網(wǎng)絡(luò)中的所有設(shè)備,而原來的通用網(wǎng)絡(luò)硬件只需要聽從控制器的命令進(jìn)行“傻瓜式”轉(zhuǎn)發(fā)就可以了,完全將網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)平面和控制平面相分離,實現(xiàn)網(wǎng)絡(luò)的集中控制和智能化管理。

SDN 開源的控制器[1]主要有NOX、POX、Ryu、Floodlight、OpenDayLight(ODL)等,其中NOX 是一款OpenFlow 控制器,是SDN 開發(fā)的基礎(chǔ),POX 多用于快速開發(fā)控制器原型。Ryu 與OpenStack 平臺相結(jié)合,提供很多API,支持創(chuàng)建網(wǎng)絡(luò)管理應(yīng)用。Floodlight 是基于Beacon 的企業(yè)級OpenFlow 控制器。ODL 是Linux基金會管理的開源項目,本研究主要介紹ODL。

ODL 是使用JAVA 語言開發(fā)的控制器,它的框架具有模塊化、可升級、支持多協(xié)議、可擴(kuò)展的特點。ODL 框架包括網(wǎng)絡(luò)應(yīng)用編排與服務(wù)、控制器、物理/虛擬網(wǎng)絡(luò)設(shè)備三層,三層之間有北向接口與南向接口連接??刂破魍ㄟ^北向接口向應(yīng)用層提供服務(wù),使用控制器收集信息進(jìn)行分析、部署網(wǎng)絡(luò)規(guī)則。南向接口通過多種協(xié)議,動態(tài)地連接在業(yè)務(wù)抽象層(SAL)。ODL 平臺采用OSGI 框架,支持模塊化和可擴(kuò)展。YANG UI是ODL 中基于DLUX 的應(yīng)用,通過動態(tài)封裝、調(diào)用YANG 模型和相關(guān)REST APIs,生成并展示UI 界面。在ODL 中通過YANGTools 項目管理YANG,該項目包含YANG、YANG 模型的代碼生成和DOM/Java 格式之間的映射,DataStore 的建模及其操作(RPC 和通知),提供RESTCONF 訪問數(shù)據(jù)等模塊。為了簡化和促進(jìn)ODL 應(yīng)用程序的開發(fā),ODL 提供了基于YANG 模型生成并呈現(xiàn)簡單的界面,相關(guān)的feature 組建有odldlux-core、odl-dluxapps-yangui、odl-dluxapps-yangvisualizer、odl-dluxapps-yangman 等。

2 構(gòu)建OpenDayLight 控制器

2.1 環(huán)境準(zhǔn)備

構(gòu)建OpenDayLight 控制器的環(huán)境所需要的環(huán)境,硬件環(huán)境中CPU 數(shù)量為2 核、內(nèi)存空間為4G、磁盤容量為20G,軟件環(huán)境需要Ubuntu16.04、Mininet、Open-DayLight。本研究是在已經(jīng)安裝Mininet 工具的基礎(chǔ)上進(jìn)行ODL 的安裝和使用。

2.2 安裝準(zhǔn)備

在root 模式下:

(1)安裝OpenDayLight 的依賴包:apt-get update。

(2)安裝基礎(chǔ)包:apt-get install unzip lrzsz。

(3)安裝運行環(huán)境JDK。命令apt-get install openjdk-8-jdk。

(4)設(shè)置JDK 環(huán)境變量。

打開配置文件:vi /etc/profile。在文件最后添加以下設(shè)置:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-ope njdk-i386

export JRE_HOME=u${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME)/lib:$(JRE_HOME)/lib

export PATH=${JAVA HOME}/bin:$PATH

注意為使得文件生效,要執(zhí)行source /etc/profile命令。并使用echo ${JAVA_HOME}和java -version命令確認(rèn)JDK 版本、配置是否生效。

2.3 下載安裝OpenDayLight

OpenDayLight 為開源軟件下載鏈接:

解壓壓縮文件,并打開文件org.apache.karaf.managemnet.cfg 修改參數(shù)如下:

OpenDayLight 已安裝成功,在distribution-karaf-0.6.0-Carbon 目錄下使用命令./bin/karaf 啟動karaf 容器,開啟界面見圖1。

圖1 OpenDayLight 的開啟界面

此時通過karaf 安裝feature。安裝內(nèi)容如下,在此提醒需要嚴(yán)格按照以下順序安裝,否則可能會導(dǎo)致無法訪問UI 界面。

如果沒有按照順序安裝,致使無法登錄進(jìn)入ODL主界面[2]。需要刪除data 后重新安裝組件。

3 OpenDayLight 控制器的使用

3.1 開啟ODL

Miniet 環(huán)境下,在Miniedit 界面化工具下創(chuàng)建拓?fù)?,一臺交換機(jī)下掛三臺主機(jī)。運行拓?fù)洌诖颂嵝炎⒁忾_啟OpenDayLight。

在下發(fā)流表之前,查看以下內(nèi)容:

(1)登錄控制器c0。執(zhí)行netstat -an | grep 6633 命令,得到c0 是否處于監(jiān)聽的狀態(tài)。

(2)登錄交換機(jī)s1。在c0 處于監(jiān)聽狀態(tài)的前提下,執(zhí)行ovs-vsctl show 命令,查看交換機(jī)的網(wǎng)卡鏈接情況,此時結(jié)果中is_connectedde 的值為true 時,表示已連接到控制器c0。

(3)查看主機(jī)IP 地址。分別登錄h1、h2、h3,使用ifconfig 命令查看IP 地址為10.0.0.1、10.0.0.2、10.0.0.3。

3.2 基于openflow1.0 下發(fā)流表

OpenFlow1.0 協(xié)議只支持單流表,處理數(shù)據(jù)包的流程簡潔。它的工作流程即是交換機(jī)接收、解析數(shù)據(jù)包,之后從table 0 開始匹配,匹配成功時對該數(shù)據(jù)包執(zhí)行相應(yīng)的動作、更新計數(shù)器;如果匹配失敗則將數(shù)據(jù)包交給控制器c0。

操作如下:

(1)切換到交換機(jī)s1,使用命令ovs-vsctl set bridge br0 protocol=OpenFlow10.

(2)在瀏覽器中輸入http://127.0.0.1:8181/index.html,開啟ODL 的web 界面。使用賬號和密碼:admin登錄之后,加載網(wǎng)絡(luò)拓?fù)?,查看拓?fù)涔?jié)點ID 信息,得到端口號及對應(yīng)節(jié)點控制器ID、MAC 地址等。

(3)基于節(jié)點信息,選擇expand all 中的open daylight-inventoryrev 2013-08-19, 設(shè)置node id=openflow:1,table id=0,flow{id}的信息。

(4)點擊flow list 后面的“+”,設(shè)置id=1,flow id會自動同步,然后match --> ethernet-match -->ethernet -type,填寫“type”為“0x0800(IPv4)”。

(5)選擇“l(fā)ayer-3-match”下拉框中的“ipv4-match”,彈開“l(fā)ayer-3-match”,補(bǔ)充完整源IP 地址和目的 IP 地址,分別為 h1、h2 的 IP 地址是10.0.0.1,10.0.0.2。

(6)設(shè)置instructions 的動作為丟包。彈開instructions,點擊instruction list 后面的“+”,instruction order 設(shè)置為0,instruction 的值選擇為“apply-actionscase”;彈開apply-actions,點擊“action list”后面的“+”,action order 設(shè)置為0,action 設(shè)置為“dropaction-case”。

(7)配置priority 為27,cookie 為100000000,table_id 為0,idle-timeout 為0,hard-timeout 為0。

(8)發(fā)送流表。選擇PUT 動作,點擊Send,彈出request sent successfully 提示信息,即發(fā)送成功。

(9)測試流表下發(fā)情況。返回mininet 終端,輸入命令sh ovs-vsctl dump-flows s1,查看下發(fā)流表。在新下發(fā)內(nèi)容的流表中,priority=27,IP 源地址、目的地址分別為h1、h2 的地址,動作是drop。再通過執(zhí)行h1 ping h2,得到100%丟包率,見圖2。

圖2 h1 與h2 無法通信

由結(jié)果圖可知h1 與h2 之間不通,h1 與h3 通,新下發(fā)的流表項生效。如果刪除下發(fā)的流表項,h1 再次ping h2,此時可以正常通信。

3.3 基于openflow1.3 下發(fā)流表

OpenFlow1.3 協(xié)議支持多流表匹配[3]。數(shù)據(jù)包處理的原理如下:

收到設(shè)備的報文后,首先進(jìn)行解析,解析后按照優(yōu)先級別開始依次匹配流表項。一般根據(jù)報文頭的字段和報文類型進(jìn)行匹配。如果匹配成功,按照指令集更新相關(guān)信息,并按照指令確定是否前往下一個流表,不前往則終止執(zhí)行動作集。匹配失敗有兩種情況,一種是存在無匹配流表項(table miss),它的處理方式是將報文轉(zhuǎn)發(fā)給控制器、丟棄或轉(zhuǎn)發(fā)給其他流表。一種是不存在table miss 表項則丟棄該報文。

操作如下:

(1)指定OpenFlow1.3 版本連接ODL。使用命令mn -c 清除上面繪制的topo,創(chuàng)建拓?fù)?,指定協(xié)議為OpenFlow1.3。命令為

mn --custom sdn.py --topo mytopo --controller=remote,ip =127.0.0.1,port =6633--switchovsk,protoctls=OpenFlow13

(2)分別通過GET、Send,DELETE、Send,查看配置流表node id=openflow:1,table id=0 信息并刪除流表信息。

(3)pingall 并使用命令sh ovs-ofctl dumpflows -O OpenFlow13 s1 查看下流表,所有流表項正常發(fā)送。

(4)下發(fā)流表。這里設(shè)置node id=openflow:1,table id=2,其余參考基于OpenFlow1.0 的設(shè)置方式下發(fā)流表。

(5)再次查看流表,h1 發(fā)送流表給h2,actions的值為drop。但在測試h1 ping h2,發(fā)現(xiàn)h1 發(fā)送h2的包并沒有丟棄,是連通的,這是因為OpenFlow1.3 版本的流水線式處理流表,從優(yōu)先級最高的table0 開始,依次匹配,這里執(zhí)行了優(yōu)先級更高的table0,導(dǎo)致h1 與h2 能夠正常通信。這里將instruction 設(shè)置為goto-table-case,使得table0 轉(zhuǎn)到table2,并設(shè)置priority的值為23,接下來通過選擇PUT、Send 下發(fā),再回mininet 下查看流表及h1 和h3 連通性。

(6)查看流表結(jié)果,得到priority=23,actions 的值為goto_table:2 的流表項。

測試hi ping h2 連通性,結(jié)果見圖3。得到h1 ping h2 丟包率為100%。

圖3 h1 與h2 無法通信

結(jié)束語

本研究在安裝Mininet 環(huán)境下,通過程序生成真實網(wǎng)絡(luò)流量,對OpenFlow 流表實現(xiàn)控制。通過ODL的YANG UI 進(jìn)行比如改寫源和目的主機(jī)的IP、MAC地址、優(yōu)先級別等操作,下發(fā)不同流表來自主的控制轉(zhuǎn)發(fā)行為、控制主機(jī)之間的連通性,使得控制網(wǎng)絡(luò)更加靈活多樣。

猜你喜歡
流表表項命令
一種改進(jìn)的TCAM路由表項管理算法及實現(xiàn)
只聽主人的命令
基于時序與集合的SDN流表更新策略
基于ARMA模型預(yù)測的交換機(jī)流表更新算法
基于緩存策略的OpenFlow流表存儲優(yōu)化方案研究
簡析yangUI流表控制
軟件定義網(wǎng)絡(luò)中一種兩步式多級流表構(gòu)建算法
移防命令下達(dá)后
SDN數(shù)據(jù)中心網(wǎng)絡(luò)基于流表項轉(zhuǎn)換的流表調(diào)度優(yōu)化
這是人民的命令