Floodlight Mininet自定義拓撲及流表
實驗拓撲:
目的:(1)自定義構建以上拓撲
(2)實現h1,h2能通訊,h3,h4不能通訊,h1,h2與h3,h4之間能相互通訊
基本操作這裡就不仔細介紹了,可以參考之前的兩篇文。
1.構建拓撲,用Python實現以上自定義拓撲
程式碼:
- from mininet.topo import Topo, Node
- class MyTopo( Topo ):
- "Simple topology example."
- def __init__( self, enable_all = True ):
- "Create custom topo."
-
# Add default members to class.
- super( MyTopo, self ).__init__()
- # Set Node IDs for hosts and switches
- leftHost1 = 1
- leftHost2 = 2
- leftSwitch = 3
- rightSwitch = 4
- rightHost1 = 5
- rightHost2 = 6
- # Add nodes
-
self.add_node( leftSwitch, Node( is_switch=True
- self.add_node( rightSwitch, Node( is_switch=True ) )
- self.add_node( leftHost1, Node( is_switch=False ) )
- self.add_node( leftHost2, Node( is_switch=False ) )
- self.add_node( rightHost1, Node( is_switch=False ) )
-
self.add_node( rightHost2, Node( is_switch=
- # Add edges
- self.add_edge( leftHost1, leftSwitch )
- self.add_edge( leftHost2, leftSwitch )
- self.add_edge( leftSwitch, rightSwitch )
- self.add_edge( rightSwitch, rightHost1 )
- self.add_edge( rightSwitch, rightHost2 )
- # Consider all switches and hosts 'on'
- self.enable_all()
- topos = { 'mytopo': ( lambda: MyTopo() ) }
2.在floodlight的web頁面點選host如下圖
可以看到連結交換機03的host埠號為1,2,那麼可以推斷04交換機連結到03交換機的3埠。同樣連結交換機04的host埠號為2,3,那麼可以推斷03交換機連結到04交換機的1埠(寫流表就是根據這些資訊來的)。
3.此時使用pingall,得到相互ping不通,(在刪除.property檔案中的Forwarding則預設相互不通,參考上一篇文)如下圖
4.寫流表
python程式碼:
- import httplib
- import json
- class StaticFlowPusher(object):
- def __init__(self, server):
- self.server = server
- def get(self, data):
- ret = self.rest_call({}, 'GET')
- return json.loads(ret[2])
- def set(self, data):
- ret = self.rest_call(data, 'POST')
- return ret[0] == 200
- def remove(self, objtype, data):
- ret = self.rest_call(data, 'DELETE')
- return ret[0] == 200
- def rest_call(self, data, action):
- path = '/wm/staticflowentrypusher/json'
- headers = {
- 'Content-type': 'application/json',
- 'Accept': 'application/json',
- }
- body = json.dumps(data)
- conn = httplib.HTTPConnection(self.server, 8080)
- conn.request(action, path, body, headers)
- response = conn.getresponse()
- ret = (response.status, response.reason, response.read())
- print ret
- conn.close()
- return ret
- pusher = StaticFlowPusher('192.168.131.129')
- flow1 = {
- 'switch':"00:00:00:00:00:00:00:03",
- "name":"flow-mod-1",
- "cookie":"0",
- "priority":"32768",
- "ingress-port":"1",
- "active":"true",
- "actions":"output=flood"
- }
- flow2 = {
- 'switch':"00:00:00:00:00:00:00:03",
- "name":"flow-mod-2",
- "cookie":"0",
- "priority":"32768",
- "ingress-port":"2",
- "active":"true",
- "actions":"output=flood"
- }
- flow3 = {
- 'switch':"00:00:00:00:00:00:00:03",
- "name":"flow-mod-3",
- "cookie":"0",
- "priority":"32768",
- "ingress-port":"3",
- "active":"true",
- "actions":"output=flood"
- }
- flow4 = {
- 'switch':"00:00:00:00:00:00:00:04",
- "name":"flow-mod-4",
- "cookie":"0",
- "priority":"32768",
- "ingress-port":"2",
- "active":"true",
- "actions":"output=1"
- }
- flow5 = {
- 'switch':"00:00:00:00:00:00:00:04",
- "name":"flow-mod-5",
- "cookie":"0",
- "priority":"32768",
- "ingress-port":"3",
- "active":"true",
- "actions":"output=1"
- }
- flow6 = {
- 'switch':"00:00:00:00:00:00:00:04",
- "name":"flow-mod-6",
- "cookie":"0",
- "priority":"32768",
- "ingress-port":"1",
- "active":"true",
- "actions":"output=flood"
- }
- pusher.set(flow1)
- pusher.set(flow2)
- pusher.set(flow3)
- pusher.set(flow4)
- pusher.set(flow5)
- pusher.set(flow6)
相關推薦
Floodlight Mininet自定義拓撲及流表
實驗拓撲: 目的:(1)自定義構建以上拓撲 (2)實現h1,h2能通訊,h3,h4不能通訊,h1,h2與h3,h4之間能相互通訊 基本操作這裡就不仔細介紹了,可以參考之前的兩篇文。 1.構建拓撲,用Python實現以上自定義拓撲 程式碼: from min
mininet實現自定義拓撲結構--基於兩個資料中心的網路拓撲--fattree.py
前言 基於兩個資料中心的網路拓撲是最常見的、也是最基本的一種網路拓撲結構,這裡先拿這個作為練習。 其網路拓撲結構圖如下: 一、首先編寫生成拓撲結構的python程式碼fattree.py檔案 #建立網路拓撲,程式碼可以直接使用 from minine
nginx自定義站點目錄及簡單編寫開發網頁內容講解
linux[[email protected]/* */ conf]# egrep -v "^$|#" nginx.conf.default >nginx.conf[[email protected]/* */ conf]# pwd/application/nginx/conf[
vpshere6.5網絡拓撲及基礎架構
網絡拓撲1、5臺服務器,2臺存儲2、一臺服務器安裝vcenter,其他服務器安裝exsi3、采用一臺分布式交換機,管理使用vkernal端口組,其他使用業務端口組4、存儲使用NFS協議的開源NAS5、沒有嚴格按照vmware推薦的最佳實踐搭建6、每塊網卡設置的是主備關系 vpshere6.5網絡拓撲及基礎架
詳細分享UICollectionView的自定義布局(瀑布流, 線性, 圓形...)
init hide 屬性 png 繼承 del 屏幕旋轉 結束 效果 前言: 本篇文章不是分享collectionView的詳細使用教程, 而是屬於比較‘高級‘的collectionView使用技巧, 閱讀之前, 我想你已經很熟悉collectionView的基本使用,
JavaScript中自定義函數以及文本框、radio、下拉框的值的獲取,結合淘寶競拍案例來理解。。。
支付寶 價格 select back html alt 文本框 lec 獲取 淘寶競拍案例: HTML部分代碼: <form action="#" method="post"> <h2>歡迎進入淘寶競拍</h2> &l
Django——模板層(template)(模板語法、自定義模板過濾器及標簽、模板繼承)
num 序列 document 希望 可讀性 數量 AC 自然 同學 前言:當我們想在頁面上給客戶端返回一個當前時間,一些初學者可能會很自然的想到用占位符,字符串拼接來達到我們想要的效果,但是這樣做會有一個問題,HTML被直接硬編碼在 Python代碼之中。
php自定義函數及內部函數
定義函數 turn mon 數組 函數 變量的作用域 訪問 記錄 只有一個 1、變量的作用域 變量的作用域也稱為變量的範圍,變量的範圍即它定義的上下文背景(也是它的生效範圍)。大部分php變量只有一個單獨的範圍。這個單獨的範圍跨度同樣包含了include和require引入
Xamarin自定義佈局系列——瀑布流佈局
原文: Xamarin自定義佈局系列——瀑布流佈局 Xamarin.Forms以Xamarin.Android和Xamarin.iOS等為基礎,自己實現了一整套比較完整的UI框架,包含了絕大多數常用的控制元件,如下圖 雖然XF(Xamarin.Forms簡稱XF,下同)為我們提供大這麼多的控制元件,但在
自定義JSR validation及Swagger的一些坑
地址:https://blog.csdn.net/z28126308/article/details/77748798 http://sishuok.com/forum/blogPost/list/7798.html JSR-Java Specification Reque
自定義結構體及初始化
自定義結構體及初始化,以及標頭檔案先宣告巨集,然後宣告結構體 <pre name="code" class="cpp">/********************** macro definition **********************/ #ifndef CVALGO_
docker overlay網路拓撲及服務註冊問題
跨主機docker網路有多種方案,如overlay、flannel、calico、weave等,其中overlay是docker原生的跨主機網路方案。最近使用overlay方案部署容器叢集,在進行服務註冊時遇到問題,需要手動建立veth裝置解決。 1. overlay網路拓撲 over
WPF筆記:WPF自定義treeview樣式及資料繫結
定義treeview 展開按鈕(togglebutton)樣式,建立資源: <Style x:Key="ExpandCollapseToggleStyle" TargetType="ToggleButton"> <Setter Property="Foc
【.NET Core專案實戰-統一認證平臺】第七章 閘道器篇-自定義客戶端限流
原文: 【.NET Core專案實戰-統一認證平臺】第七章 閘道器篇-自定義客戶端限流 【.NET Core專案實戰-統一認證平臺】開篇及目錄索引 上篇文章我介紹瞭如何在閘道器上增加自定義客戶端授權功能,從設計到編碼實現,一步一步詳細講解,相信大家也掌握了自定義中介軟體的開發技巧了,本篇我們將介紹如
QT如何自定義滑鼠樣式及如何用windows自帶畫圖工具進行滑鼠樣式的設計
眾所周知,QT系統自身擁有眾多的滑鼠樣式,這些滑鼠樣式均比較常見,顏色、樣式為系統所固有,無法更改。哪麼能不能自定義滑鼠的形狀、顏色等特點呢?答案是可以的。自定義的滑鼠樣式可以隨意指定,顏色更是多種多樣,極具個性化。 QT自帶的滑鼠樣式(在此不做過多介紹): 可以直接拿來用,具體用法如下:
百度地圖API 自定義座標點及圖片
var map = new BMap.Map("allmap");var point = new BMap.Point(105.955754,36.525109);map.centerAndZoom(point,8);map.en
22 自定義ioctl命令及使用者程序操作GPIO
自定義ioctl命令 ioctl ---> kernel ---> cdev.fops->unlocked_ioctl(...) 系統呼叫ioctl函式的作用:使用者程序用於通過相應的裝置驅動來獲取或者設定硬體狀態。 在字元裝置驅動裡,unlo
(三)高德地圖之自定義縮放及縮放動畫效果
這一節主要實現的功能是地圖的自定義縮放及縮放的動畫效果,還是直接放上程式碼更直觀些,主要部位裡面基本有註解 還是老樣子,首先是新建activity_zoom_animate.xml佈局檔案 <?xml version="1.0" encoding="utf-8"?> <
C++11使用自定義hash函式及比較函式的unordered_set
#include <unordered_set> #include <functional> #include <iostream> struct MyKey { int key; }; struct MyKeyHashHasher { size_
java自定義註解解析及相關場景實現
註解(Annotation)是java1.5之後提供的一種語法。其主要作用是編譯檢查(比如@override)和程式碼分析(通過程式碼中添加註解,利用註解解析器對添加了註解的程式碼進行分析,獲取想要的結果,一般自定義的註解都是這一種功能)。 1.1 JDK提供的註解 JDK提供的