• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于OpenDayLight 的流表控制研究

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

      高 麗

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

      1 OpenDayLight 介紹

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

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

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

      圖1 OpenDayLight 的開啟界面

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

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

      3 OpenDayLight 控制器的使用

      3.1 開啟ODL

      Miniet 環(huán)境下,在Miniedit 界面化工具下創(chuàng)建拓?fù)洌慌_(tái)交換機(jī)下掛三臺(tái)主機(jī)。運(yùn)行拓?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)卡鏈接情況,此時(shí)結(jié)果中is_connectedde 的值為true 時(shí),表示已連接到控制器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ù)包的流程簡(jiǎn)潔。它的工作流程即是交換機(jī)接收、解析數(shù)據(jù)包,之后從table 0 開始匹配,匹配成功時(shí)對(duì)該數(shù)據(jù)包執(zhí)行相應(yīng)的動(dòng)作、更新計(jì)數(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 界面。使用賬號(hào)和密碼:admin登錄之后,加載網(wǎng)絡(luò)拓?fù)?,查看拓?fù)涔?jié)點(diǎn)ID 信息,得到端口號(hào)及對(duì)應(yīng)節(jié)點(diǎn)控制器ID、MAC 地址等。

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

      (4)點(diǎn)擊flow list 后面的“+”,設(shè)置id=1,flow id會(huì)自動(dòng)同步,然后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 的動(dòng)作為丟包。彈開instructions,點(diǎn)擊instruction list 后面的“+”,instruction order 設(shè)置為0,instruction 的值選擇為“apply-actionscase”;彈開apply-actions,點(diǎn)擊“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 動(dòng)作,點(diǎn)擊Send,彈出request sent successfully 提示信息,即發(fā)送成功。

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

      圖2 h1 與h2 無(wú)法通信

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

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

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

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

      操作如下:

      (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)分別通過(guò)GET、Send,DELETE、Send,查看配置流表node id=openflow:1,table id=0 信息并刪除流表信息。

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

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

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

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

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

      圖3 h1 與h2 無(wú)法通信

      結(jié)束語(yǔ)

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

      猜你喜歡
      流表表項(xiàng)命令
      一種改進(jìn)的TCAM路由表項(xiàng)管理算法及實(shí)現(xiàn)
      只聽主人的命令
      基于時(shí)序與集合的SDN流表更新策略
      基于ARMA模型預(yù)測(cè)的交換機(jī)流表更新算法
      基于緩存策略的OpenFlow流表存儲(chǔ)優(yōu)化方案研究
      簡(jiǎn)析yangUI流表控制
      軟件定義網(wǎng)絡(luò)中一種兩步式多級(jí)流表構(gòu)建算法
      移防命令下達(dá)后
      SDN數(shù)據(jù)中心網(wǎng)絡(luò)基于流表項(xiàng)轉(zhuǎn)換的流表調(diào)度優(yōu)化
      這是人民的命令
      攀枝花市| 阳朔县| 淮滨县| 隆尧县| 乡宁县| 来安县| 满洲里市| 胶州市| 桃江县| 宁陕县| 淮北市| 广宁县| 凤凰县| 威远县| 中方县| 河南省| 广德县| 陵川县| 临漳县| 普安县| 西平县| 桓台县| 哈密市| 南汇区| 澜沧| 揭阳市| 永康市| 巴马| 宜章县| 襄汾县| 淮滨县| 商南县| 抚松县| 岐山县| 安达市| 云浮市| 札达县| 邳州市| 武隆县| 天峻县| 遂昌县|