1. 程式人生 > >OVS的學習理解(部分修改,部分轉載引用)

OVS的學習理解(部分修改,部分轉載引用)

Q: 什麼是 OpenvSwitch(即常說簡稱:OVS)?

A: OpenvSwitch 是一個生產環境質量級的、開源的虛擬交換機軟體。在虛擬化環境中,單個物理機的上的不同虛擬機器、多個物理機上的不同虛擬機器之間通過它進行網路通訊。OpenvSwitch 被設計為可以與當下流行的交換機晶片相容,這意味著它可以與物理交換機協同工作,並提供自由、靈活的管理手段。

Q: OpenvSwtich 支援哪些虛擬化平臺?

A: OpenvSwitch 支援執行在 Linux上 的下列虛擬化平臺: KVM, VirtualBox, Xen, Xen Cloud Platform, XenServer.

Q: 怎樣獲取 OpenvSwitch?

A: 可以在 Linux 下編譯原始碼;Debian, Ubuntu, Fedora的軟體倉庫中已有軟體包,可以直接安裝使用;下載最新的 XenServer 或 Xen Cloud Platform 的 ISO 映象,它們已經整合了 OpenvSwitch。

Q: 為何要用 OpenvSwitch 替換 Linux Bridge?

A: 相比於簡單的 Linux Bridge,OpenvSwitch 可以實現網路隔離、QoS 配置、流量監控、資料包分析等物理交換網路所具有的功能。

Q: OpenvSwitch 與 VMware vNetwork distributed switch or the Cisco Nexus 1000V 這樣的分散式虛擬交換應用有何不同?

A: 分散式虛擬交換應用提供一個集中管理、監控遠端主機上的網路的功能。而 OpenvSwitch 本身不具備分散式架構,OpenvSwitch 單獨執行在每個物理主機上,而由上層管理軟體來提供分散式特性。

Q: 為何 OpenvSwitch 不是分散式架構?

A: OpenvSwitch 意圖成為一個被用來自由構建網路的實用元件。分散式網路系統需要平衡簡單性、可擴充套件性、硬體相容性、收斂時間等。相比於實現一套有特定優劣的系統,OpenvSwitch 選擇成為一個基本元件。

Q: 我把 OpenvSwitch 認作是一個虛擬乙太網交換機,但是為何文件中不斷的提到 bridge,什麼是 bridge?

A: 在計算機網路中,術語 bridge 與 switch 是同義詞。OpenvSwitch 實現一個乙太網交換機(Ethernet switch),與實現一個乙太網橋(Ethernet Bridge)是幾個意思,奧不對,是一個意思。

Q: 如何將一個埠配置為 ACCESS 埠?

A: 將 tag=VLAN,新增至你的 ovs-vsctl add-port 命令中。

例如,下列命令將 eth0 配置為 br0 的 trunk 埠。tap0 配置為 br0 的 access 埠,屬於 VLAN9。

ovs-vsctl add-br br0
ovs-vsctl add-port br0 eth0
ovs-vsctl add-port br0 tap0 tag=9
如果想將一個已經添加了的埠設定為 access 埠,可以使用 ovs-vsctl set 命令,例如:

ovs-vsctl set port tap0 tag=9
Q: 我建立了一個 bridge,然後把我的物理網絡卡與其綁定了,就像這樣:

ovs-vsctl add-br br0
ovs-vsctl add-port br0 eth0
然後,然後我的 eth0 網絡卡就宕了!救命!(=_=)

A: 一塊物理乙太網卡如果作為 OpenvSwitch bridge 的一部分,則它不能擁有 IP 地址,如果有,也會完全不起作用。如果發生了上述情況,你可以將 IP 地址繫結至某 OpenvSwitch “internal” 裝置來恢復網路訪問功能。

例如,假設你的 eth0 IP 地址為 192.168.128.5,在執行上文問題中的命令後,你可以使用如下方法來將 IP 地址繫結至br0 上:

ifconfig eth0 0.0.0.0
ifconfig br0 192.168.128.5
Q: 我建立了一個 bridge,然後我把兩塊物理網絡卡繫結到了上面,就像這樣:

ovs-vsctl add-br br0
ovs-vsctl add-port br0 eth0
ovs-vsctl add-port br0 eth1
然後,我的網路訪問就完全混亂了!CPU 利用率也非常高!(=_=)

A: 基本上,你把你的網路打成一個環了。

在上面的設定下,OpenvSwitch 在 eth0 上收到一個廣播包後會將其發給 eth1,然後 eth1 上的物理交換機又將這個廣播包發還給 eth0,如此往復。當有多個 switch 時,還會產生更復雜的情況。

解決方案1:

如果你想將 eth0 與 eth1 都繫結至同一個 bridge 從而獲得更大的頻寬、更高的可靠性,可以像下面這樣做:

ovs-vsctl add-br br0
ovs-vsctl add-bond br0 bond0 eth0 eth1
解決方案2:

如果你不想把他們放到一塊,你可以弄兩個 bridge 嘛:

ovs-vsctl add-br br0
ovs-vsctl add-port br0 eth0
ovs-vsctl add-br br1
ovs-vsctl add-port br1 eth1
解決方案3:

如果你已經擁有了一個複雜或冗餘的網路拓撲結構,但你想預防結環,你就需要開啟生成樹協議(spanning tree protocol, STP).

按照下面的命令序列,依序建立 br0, 開啟 STP, 然後將 eth0 與 eth1 繫結至 br0.

ovs-vsctl add-br br0
ovs-vsctl set bridge br0 stp_enable=true
ovs-vsctl add-port br0 eth0
ovs-vsctl add-port br0 eth1
Q: 我好像不能在無線網路中使用 OpenvSwitch?

A: 不可以,Linux Bridge 也不可以。

Q: 有關於 OpenvSwitch 資料庫的表結構的文件麼?

A: 有的,ovs-vswitchd.conf.db(5) 有詳細解釋。

Q: 我執行 ovs-dpctl 的時候看不到已建立的 bridge,而只看到一個名叫 ovs-system 的datapath。我怎樣能看到特定 bridge 的 datapath?

A: 在 OpenvSwitch 1.9.0 版中,所有 switch 都共享單個 datapath。命令 ovs-appctl dpif/* 提供與 ovs-dpctl 類似的 datapath 資訊,但是按照不同的 bridge 區分。

Q: 什麼是VLAN?

A: 最簡單的來說,VLAN(Virtual LAN 的縮寫)技術就是把一個交換機劃分為多個交換機的技術。舉個例子,你有兩組機器 A 與 B,你想讓 A 與 B 中的機器只能組內訪問,兩個交換機當然可以,但是如果你只有一個交換機,你就可以使用 VLAN技術來做同樣的事。通過設定 A 中機器為 VLAN1 的access port,B 中的機器為 VLAN2 的 access port,使交換機僅僅會在同一 VLAN 的埠之間轉發資料包。這樣你就把一個交換機劃分為兩個獨立的交換機來使用了。

相關推薦

OVS學習理解部分修改部分轉載引用

Q: 什麼是 OpenvSwitch(即常說簡稱:OVS)? A: OpenvSwitch 是一個生產環境質量級的、開源的虛擬交換機軟體。在虛擬化環境中,單個物理機的上的不同虛擬機器、多個物理機上的不同虛擬機器之間通過它進行網路通訊。OpenvSwitch 被

Ipv6_Only 簡單的理解已驗證專案已經上線

網上好多關於ipv6的資料,說半天ipv6是什麼,怎麼建立測試環境,,,可是沒有看到具體的操作和解決的方案,這裡,為大家提供一種方案,希望給大家帶來幫助吧。 總的來說有三個方面需要進行檢查和修改: 1、專案裡面涉及和網路有關的網路請求是否支援ipv6。 2、專案裡面涉及和網路有關的sdk是否支援ipv6。

樹狀陣列區間修改單點查詢

這裡介紹樹狀陣列+差分思想,算是對下面大神的補充吧。 何為差分現在我們有一個從小到大的數列a[] a{1,3,6,8,9}; 然後還有一個差分陣列b[] b{1,2,3,2,1} 相信某些小夥伴已經看

二維樹狀陣列區間修改單點查詢

好像不管是幾維都和一維原理差不多,多了一個維度也就多了一層迴圈而已(QAQ) #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath&g

我的LTE學習筆記總篇CSDN下載連結

本人自己總結的LTE學習文件,有時間會繼續更新 http://download.csdn.net/download/a34140974/10269899 文件內繪圖基本為本人繪製,敬請使用,但請標明

MongoDB 學習筆記之 TTL索引部分索引和文本索引

強制 類型 支持 行存儲 pan 事件 搜索 篩選 ext TTL索引: TTL集合支持mongodb對存儲的數據進行失效時間設置,經過指定的時間段後、或在指定的時間點過期,集合自動被mongod清除。這一特性有利於對一些只需要保存一定時間的數據信息進行存儲,比如機器產生

總結篇-Javascript部分絕對乾貨未完待續...

0-0.常用的四種設計模式 1.工廠模式:解決多個相似的問題; 2.單例模式:只能被例項化一次; 3.沙箱模式:自執行函式,使用閉包把內部方法暴露出來,例: var fn=(function(){ function aFn(){}; return {

總結篇-CSS部分絕對乾貨未完待續...

1.自定義溢位顯示...(省略號) //情景一:單行顯示省略號 div{ width:100px; //多寬就要顯示省略號 overflow:hidden; //溢位隱藏 text-overflow:ellipsis; //文字溢位模式 whit

Swift學習總結個人總結以方便理解為主

swift總結 一、註冊cell 1.用nib, 向 tableview 註冊 cell 全域性變數 let cellIdentifier = "myCell" myTableView!.registerNib(UINib(nibName: "MyCell", bundle

XRecyclerView實現RecyclerView下拉重新整理上來載入 自己做了部分修改使程式碼更簡潔易用

首先感謝 開源作者 /** * Created by jianghejie on 15/11/26. */ 的無私奉獻  我是在他的基礎上做的修改 以前一直是用的XListView   可是 測試發現有一個奇奇怪怪的BUG,我們還無法解決。最嚴重的是 XListV

Jquery學習理解 課堂

n) out checked 返回值 數組 sub 綁定 addclass index Jquary概述 3 1.Jquary簡介 3 1.1什麽是jquery 3 2.使用jquary 4 2.1瀏覽器如何解析HTML文件 4 2.2利用選擇器定位節點 4 2.3調用方法

solr學習測試類含普通與ExtractingRequestHandler測試

list clas map ber -h div comment test bst solr客戶端基本是配置出來的,服務端可以對其進行測試,我使用的是solrj服務端。 如果初學solr,先使用普通的測試類: Java代碼 import java.io.IO

python 學習筆記循環print的幾種寫法操作符

alt 例如 並且 col str .com 判斷 標準 一起 一、循環( for, while) while循環是指在給定的條件成立時(true),執行循環體,否則退出循環。for循環是指重復執行語句。 break 在需要時終止for /while循環 continue

Mysql——實現按字段部分升序部分降序的方法

font none cor 知識庫 family sta 字段 select lec      mysql order排序時可以通過asc參數實現升序,desc參數實現降序。 例如: 升序排序:select * from 表名 order by 字段 asc

大資料分析學習筆記Z檢驗分類器以及Association Rule

大資料分析學習筆記(Z檢驗,分類器以及Association Rule) Task 1 – Hypothesis Testing To improve student learning performance, a teacher developed two new learning app

python學習日記格式化輸出初始編碼運算子

格式化輸出:顧名思義,按照個人意願定製想輸出的格式。 name = input('請輸入姓名:') age = int(input('請輸入年齡:')) job = input('請輸入工作:') hobbie = input('您的愛好:') msg='''********information o

python學習日記格式化輸出初始編碼運算符

() 邏輯運算 格式化 學習日記 解決 單位 升級版 特殊 愛好 格式化輸出:顧名思義,按照個人意願定制想輸出的格式。 name = input(‘請輸入姓名:‘) age = int(input(‘請輸入年齡:‘)) job = input(‘請輸入工作:‘) hobb

PADS學習1基礎入門認識PADS

編寫時間:2018.8 版本:PADS9.5 網路資源較為豐富,學習下載都很方便。 教材1:PADS9.5實戰攻略與高速PCB設計 林超文 編著 教材2:我要自學網 PADS9.5視訊教程 講師 王龍 http://www.51zxw.net/list.aspx?cid=628 教材3:逆天

【迅為iTop4412學習筆記】2. make menuconfig即Kconfig的仿寫簡單說說但是很重要

在寫第5篇的註冊驅動的時候,發現還是要寫一下這裡,這裡其實就圍繞了Kconfig展開 make menuconfig 是圖形化配置介面,Kconfig是真正背後修改的檔案。 看一下linux的結構會發現,目錄裡有個Kconfig,而它包含了子目錄下的Kconfig,子目錄的Kco

使用SpringMVC的crud操作時進行資料修改但是修改成功後頁面無法顯示lastName屬性值修改的那條記錄

我這個錯誤的原因在於,把map的鍵寫錯了,它必須和類名第一個字母小寫相同 @ModelAttribute public void getEmployee(@RequestParam(value="id",required=false) Integer id, Map&l