iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 19
0

前言

昨天建立了vlan tag的Flow規則,今天會往下再談一些與建制ONOS控制器的環境

服務功能鏈

在網路的應用場景中,常有流量需要有順序性的經過網路功能的設備,如防火牆、VPN等元件,而在傳統網路下,網路的拓樸是難以變更的,而現今可以利用SDN架構的靈活度,使得服務功能鏈變得更加容易部署與動態修改。

預計建立下圖的網路拓樸,以模擬服務功能鏈的效果。從h1、h2 ping h4,在同個網段底下會直接走紅色線路,預計在h3使用iptables的方式模擬防火牆,且將來源流量為h1、h2的都直接導進h3做過濾後,在送到目標主機(h4)。
https://ithelp.ithome.com.tw/upload/images/20191004/201210706RHjBqVMkN.png
建立上圖網路拓樸,--mac為簡化mac address的參數
啟用第三台主機的轉發功能

mn --topo=single,4 --mac
h3 echo 1 > /proc/sys/net/ipv4/ip_forward

group table:當有多個相同的網路功能服務時,可以實現負載平衡的需求
但本測驗只有一個bucket,無法展現負載平衡的效果
以下指令是設置修改目標的mac位置

sh ovs-ofctl -O OpenFlow13 add-group s1 "group_id=1,type=select,bucket=actions=set_field:00:00:00:00:00:03->eth_dst,resubmit(,2)"
sh ovs-ofctl -O OpenFlow13 add-group s1 "group_id=2,type=select,bucket=actions=set_field:00:00:00:00:00:04->eth_dst,resubmit(,2)"

在table 0中,加入輸入port與來源ip的條件,匹配後轉發到剛剛建立的group table

sh ovs-ofctl -O OpenFlow13 add-flow s1 "priority=30,ip,in_port=1,nw_src=10.0.0.1 actions=group:1"
sh ovs-ofctl -O OpenFlow13 add-flow s1 "priority=30,ip,in_port=2,nw_src=10.0.0.2 actions=group:1"
sh ovs-ofctl -O OpenFlow13 add-flow s1 "priority=30,ip,in_port=3,nw_src=10.0.0.3 actions=group:2"

加入table 2,並增加條件為目標mac address,最後轉送到相應的目標port上

sh ovs-ofctl -O OpenFlow13 add-flow s1 "table=2,priority=30,ip,dl_dst=00:00:00:00:00:03 actions=output:3"
sh ovs-ofctl -O OpenFlow13 add-flow s1 "table=2,priority=30,ip,dl_dst=00:00:00:00:00:04 actions=output:4"

使用ping工具測試流量的轉發,可以發現使用ping之後通過flow規則的封包數量從0增加到3
https://ithelp.ithome.com.tw/upload/images/20191004/20121070k0hNpHTnNf.png
將h3虛擬主機添加iptables,過濾掉icmp的封包,可以看到有成功攔截了三個封包
https://ithelp.ithome.com.tw/upload/images/20191004/20121070HkEZrxXLlN.png
當然也可以啟用一個web服務來測試,更有感覺
並也在h3上面添加過濾tcp封包的規則

h4 python -m SimpleHTTPServer 80 &
h3 iptables -A FORWARD -p tcp -s 10.0.0.2 -j DROP

可以看到當h2使用wget下載時無法連線成功,而h1可以順利的下載,並在h3上面也看到了攔截tcp封包的訊息
https://ithelp.ithome.com.tw/upload/images/20191004/20121070L9UWhn2CfB.png

ONOS 安裝

進入到ONOS下載壓縮檔
https://wiki.onosproject.org/display/ONOS/Downloads
運行環境

./onos-2.0.0/bin/onos-service

擁有了執行環境後,還需要準備開發APP的環境,是使用java開發與Maven編譯

on ubuntu

apt-get update && apt-get upgrade
apt-get -y install maven
apt-get install software-properties-common
apt-add-repository ppa:webupd8team/java
apt-get update
apt-get install oracle-java8-installer
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export M2_HOME=/opt/maven
export MAVEN_HOME=/opt/maven
export PATH=${M2_HOME}/bin:${PATH}

建立一個onos app

git clone https://gerrit.onosproject.org/onos
cd onos
./tools/dev/bin/onos-create-app app org.foo foo-app 1.0-SNAPSHOT org.foo.app

Reference

https://wiki.onosproject.org/display/ONOS/ONOS


上一篇
Day18 - Mininet介紹與實做 II
下一篇
Day20 - Mininet 與 ONOS II
系列文
SDN/NFV 網路虛擬化調度平台30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言