當前位置:首頁 » 操作系統 » openvswitch源碼

openvswitch源碼

發布時間: 2022-07-12 14:53:12

1. openvswitch源碼 從哪個文件開始看

建議先去了解下ovs的架構,ovs代碼本身較為混亂,並且數據包處理(datapath)在內核空間,較為復雜。
大概了解模塊結構後,可以去看看網上相關的源碼分析,比自己看更快。
如果是自己去看,建議從一個bridge的創建到運行開始逐步深入,需要注意bridge的主循環中ctrlplane和dataplane沒有分離,大量代碼都是處理用戶配置修改。

2. 如何在linux發行版上安裝和配置KVM和Open vSwitch

將Open vSwitch安裝在Ubuntu或Debian上

雖然OVS以程序包的方式出現在Ubuntu或Debian上,但我在此還是通過源代碼來構建OVS,這將擁有最新的功能特性和修正版。

首先,安裝用於構建OVS的依賴項。

$ sudo apt-get install build-essential libssl-dev linux-headers-$(uname -r)
通過源代碼來構建OVS,如下所示。下列步驟將構建OVS內核模塊以及OVS用戶空間工具。

$ wget http://openvswitch.org/releases/openvswitch-1.9.3.tar.gz
$ tar xvfvz openvswitch-1.9.3.tar.gz
$ cd openvswitch-1.9.3
$ ./configure --with-linux=/lib/moles/`uname -r`/build
$ make
接下來,繼續在/usr/local/share/下安裝OVS用戶空間組件:

$ sudo make install
下一步是,測試OVS內核模塊(安裝該模塊之前)。為此,先在內核中裝入內核模塊。

$ sudo insmod ./datapath/linux/openvswitch.ko
證實OVS內核模塊已成功裝入。

$ lsmod | grep openvswitch
openvswitch 97934 0
一旦你證實openvswitch.ko已成功裝入到內核中,繼續安裝內核模塊,如下所示。

$ sudo make moles_install
配置和啟動Open vSwitch

創建一個框架式OVS配置資料庫

$ sudo mkdir /etc/openvswitch
$ sudo ovsdb-tool create /etc/openvswitch/conf.db ./vswit
chd/vswitch.ovsschema
啟動OVS資料庫伺服器。

$ sudo ovsdb-server --remote=punix:/usr/local/var/run/ope
nvswitch/db.sock - remote=db:Open_vSwitch,manager_options
--pidfile --detach
OVS配置資料庫初始化。

$ sudo ovs-vsctl --no-wait init
最後,啟動OVS守護程序。

$ sudo ovs-vswitchd --pidfile --detach
將KVM安裝在Ubuntu或Debian上

使用apt-get命令,安裝KVM和必要的用戶空間工具。

$ sudo apt-get install qemu-kvm libvirt-bin bridge-utils
virt-manager
將一個普通的非根用戶(如alice)添加到libvirtd群組,那樣該用戶不需要根用戶許可權,就能啟動虛擬機。

$ sudo adser alice libvirtd
退出,重新以該用戶身份登錄,讓群組成員的變更生效。

運行下面這個命令。如果你看到空空如也的虛擬機列表,這意味著KVM已成功設置完畢。

$ virsh -c qemu:///system list
Id Name State
為KVM配置Open vSwitch

現在是時候創建OVS網橋啟動腳本了,那樣啟動或終止虛擬機時,OVS就能自動配置。

安裝依賴項(用戶模式Linux實用工具),這些依賴項將用於處理Linux網橋模式。

$ sudo apt-get install uml-utilities
創建網橋啟動腳本,如下所示。

$ sudo vi /etc/openvswitch/ovs-ifup
#!/bin/sh
switch='br0'
/sbin/ifconfig $1 0.0.0.0 up
ovs-vsctl add-port ${switch} $1
$ sudo vi /etc/openvswitch/ovs-ifdown
#!/bin/sh
switch='br0'
/sbin/ifconfig $1 0.0.0.0 down
ovs-vsctl del-port ${switch} $1
$ sudo chmod +x /etc/openvswitch/ovs-if*
然後,創建一個默認的網橋br0,並添加一個物理網路介面,虛擬機將通過這個介面與外部網路進行聯系。在該教程中,我假設這類網路介面是eth5。

$ sudo ovs-vsctl add-br br0
$ sudo ovs-vsctl add-port br0 eth5
藉助KVM啟動虛擬機

現在你可以准備啟動訪客虛擬機了。

我假設,你已經准備好了一個訪客虛擬機映像(比如ubuntu-client.img)。使用下面這個命令,啟動訪客虛擬機。

$ sudo kvm -m 1024 -net nic,macaddr=11:11:11:EE:EE:EE -ne
t tap,script=/etc/openvswitch/ovs-ifup,downscript=/etc/op
envswitch/ovs-ifdown -vnc :1 -drive file=/home/dev/images
/ubuntu-client.img,boot=on
這會創建並啟動一個訪客虛擬機;一旦訪客虛擬機啟動,其虛擬介面就自動添加到OVS網橋br0。

3. 如何使用Floodlight連接並管理Open vSwitch

Open vSwitch(下面簡稱為 OVS)是由 Nicira Networks 主導的,運行在虛擬化平台(例如 KVM,Xen)上的虛擬交換機。在虛擬化平台上,OVS 可以為動態變化的端點提供 2 層交換功能,很好的控制虛擬網路中的訪問策略、網路隔離、流量監控等等。

OVS 遵循 Apache 2.0 許可證, 能同時支持多種標準的管理介面和協議。OVS 也提供了對 OpenFlow 協議的支持,用戶可以使用任何支持 OpenFlow 協議的控制器對 OVS 進行遠程管理控制。

Open vSwitch 概述

在 OVS 中, 有幾個非常重要的概念:

Bridge: Bridge 代表一個乙太網交換機(Switch),一個主機中可以創建一個或者多個 Bridge 設備。
Port: 埠與物理交換機的埠概念類似,每個 Port 都隸屬於一個 Bridge。
Interface: 連接到 Port 的網路介面設備。在通常情況下,Port 和 Interface 是一對一的關系, 只有在配置 Port 為 bond 模式後,Port 和 Interface 是一對多的關系。
Controller: OpenFlow 控制器。OVS 可以同時接受一個或者多個 OpenFlow 控制器的管理。
datapath: 在 OVS 中,datapath 負責執行數據交換,也就是把從接收埠收到的數據包在流表中進行匹配,並執行匹配到的動作。
Flow table: 每個 datapath 都和一個「flow table」關聯,當 datapath 接收到數據之後, OVS 會在 flow table 中查找可以匹配的 flow,執行對應的操作, 例如轉發數據到另外的埠。
Open vSwitch 實驗環境配置

OVS 可以安裝在主流的 Linux 操作系統中,用戶可以選擇直接安裝編譯好的軟體包,或者下載源碼進行編譯安裝。

在我們的實驗環境中,使用的操作系統是 64 位 Ubuntu Server 12.04.3 LTS,並通過源碼編譯的方式安裝了 Open vSwitch 1.11.0

$ lsb_release -a
No LSB moles are available.
Distributor ID:Ubuntu
Description:Ubuntu 12.04.3 LTS
Release:12.04
Codename:precise
OVS 的源碼編譯安裝方式可以參考官方文檔 How to Install Open vSwitch on Linux, FreeBSD and NetBSD。

安裝完畢後,檢查 OVS 的運行情況:

$ ps -ea | grep ovs
12533 ? 00:00:00 ovs_workq
12549 ? 00:00:04 ovsdb-server
12565 ? 00:00:48 ovs-vswitchd
12566 ? 00:00:00 ovs-vswitchd
查看 OVS 的版本信息, 我們安裝版本的是 1.11.0

$ ovs-appctl --version
ovs-appctl (Open vSwitch) 1.11.0
Compiled Oct 28 2013 14:17:16
查看 OVS 支持的 OpenFlow 協議的版本

$ ovs-ofctl --version
ovs-ofctl (Open vSwitch) 1.11.0
Compiled Oct 28 2013 14:17:17
OpenFlow versions 0x1:0x4
基於 Open vSwitch 的 OpenFlow 實踐

OpenFlow 是用於管理交換機流表的協議,ovs-ofctl 則是 OVS 提供的命令行工具。在沒有配置 OpenFlow 控制器的模式下,用戶可以使用 ovs-ofctl 命令通過 OpenFlow 協議去連接 OVS,創建、修改或刪除 OVS 中的流表項,並對 OVS 的運行狀況進行動態監控。

4. openswitch安裝apt

1.更新系統sudoapt-getupdate,sudoapt-getupgrade2.安裝OVS,sudoapt-getinstallopenvswitch-switch3.驗證sudoovs-vsctlshow。
在補充的時候安裝libssl相關套件,以及其他需要的套件。
還有一種方法,首先更新可安裝的組件,安裝相關依賴,從ovs的git倉庫下載源碼文件,並進入到ovs文件中,在ovs目錄下執行,編譯安裝,最後啟動。

5. open vswitch和網橋的區別

下載完後輸入以下命令解壓
[root@localhost ~]# tar –xzvf openvswitch-1.1.0pre2.tar.gz

進入解壓後目錄,輸入以下命令配置Open vSwitch工程,生成Makefile文件。
[root@localhost ~]# ./configure --with-linux=/lib/moles/`uname -r`/build

–with- linux:生成內核模式的Open vSwitch時需指定的內核源碼編譯目錄
指定Open
vSwitch的安裝位置加參數:–prefix=/…
如有其他問題可參考源碼根目錄下的幫助文件:INSTALL.Linux

編譯、鏈接、生成和安裝Open vSwitch,命令如下,make install目錄只安裝Open vSwitch除內核模塊外的其他所有模塊,如ovs-vsctl、ovs-vswitchd、ovs-ofctl等
[root@localhost ~]# make[root@localhost ~]# make install

卸載原有虛擬網橋模塊,命令如下,如果Xend正常啟動,將自動載入linux虛擬網橋模塊bridge.ko。
[root@localhost ~]# rmmod bridge

如果無法卸載,可用「lsmod」命令查看已載入的依賴於bridge的內核模塊,並用「rmmod 模塊名」卸載,常見的無法卸載的情況可通過預先執行下面兩條命令解決。
[root@localhost ~]# /etc/init.d/iptables stop[root@localhost ~]# rmmod xt_physdev

載入Open
vSwitch內核模塊openvswitch_mod.ko和linux虛擬網橋兼容模塊brcompat_mod.ko
[root@localhost ~]# insmod openvswitch-1.1.0pre2/datapath/linux-2.6/openvswitch_mod.ko[root@localhost ~]# insmod openvswitch-1.1.0pre2/datapath/linux-2.6/brcompat_mod.ko

根據ovsdb模板vswitch.ovsschema創建ovsdb資料庫ovs-vswitchd.conf.db,用於存儲虛擬交換機的配置信息,只需第一次運行Open
vSwitch時創建
[root@localhost ~]# ovsdb-tool create/usr/local/etc/ovs-vswitchd.conf.dbopenvswitch-1.1.0pre2/vswitchd/vswitch.ovsschema

啟動ovsdb資料庫伺服器,Open vSwitch虛擬網橋模塊將通過ovsdb-server獲得虛擬交換機配置信息,「—detach」表示以後台方式運行, ovsdb-server其他參數請參考「ovsdb-server –help」
[root@localhost ~]# ovsdb-server/usr/local/etc/ovs-vswitchd.conf.db--remote=punix:/usr/local/var/run/openvswitch/db.sock--remote=db:Open_vSwitch,manager_options--private-key=db:SSL,private_key--certificate=db:SSL,certificate--bootstrap-ca-cert=db:SSL,ca_cert--detach

初始化Open
vSwitch控制介面,以便用ovs-vsctl管理配置虛擬交換機
[root@localhost ~]#
ovs-vsctl –no-wait init

啟動Open
vSwitch用戶態模塊,unix:後的文件為socket文件,為ovsdb-server監聽的socket文件。
[root@localhost ~]#
ovs-vswitchd unix:/usr/local/var/run/openvswitch/db.sock –detach

啟動linux原有虛擬網橋兼容模塊用戶態組件ovs-brcompatd,該模塊必須在ovsdb-server和ovs-vswitchd啟動後才能啟動。
[root@localhost ~]# ovs-brcompatd--pidfile--detach

2.2 apt-get安裝

$apt-get install openvswitch-*

注意:使用deb安裝openvswitch-datapath*也是需要依賴/lib/moles/`uname -r`/build,否則無法編譯內核模塊

6. 如何在linux下安裝floodlight

一、安裝VmwareWorkstation
附贈可用注冊碼5C4A7-6Q20J-6ZD58-K2C72-0AKPE

二、安裝floodlight及mininet
1、安裝floodlight
Ctrl+Alt+T打開控制台輸入:
$sudo apt-get update
$sudo apt-get install build-essential default-jdk ant python-dev
$git clone git://github.com/floodlight/floodlight.git
$cd floodlight
$ant
$cd target
$java -jar floodlight.jar #運行Floodlight
打開瀏覽器輸入:localhost:8080/ui/index.html進入如下界面則說明安裝成功:

2、安裝mininet
新建一個終端控制台,輸入:
$sudo apt-get install mininet
註:如果之前安裝過openvswitch將會報錯,這是只需要輸入以下命令刪除ovs殘存文件即可:
$sudo rm /usr/local/bin/ovs*
解決完錯誤之後再輸入安裝mininet的命令此時不再報錯,但是使用mininet創建命令的時會在報錯,提示6633埠已被佔用。這是因為mininet安裝完畢之後會自行啟動,輸入以下命令關閉服務:
$sudo service openvswitch-controller stop
Mininet同時也是開機自啟動,關閉自啟動:
$sudo update-rc.d openvswitch-controller disable
這是在用mininet的創建命令就沒有任何問題了:
$sudo mn --controller=remote,ip=172.168.1.2,port=6633(此處的IP地址運行floodlight控制器的機器的IP地址,請根據自己的情況自行修改)

需要注意的是使用命令行安裝的mininet的版本比較老,貌似只有1.4+,而通過源碼安裝則可以安裝到最新版本(2.2+)。
源碼編譯安裝:
$git clone git://github.com/mininet/mininet#下載源碼
$git checkout -b 2.2.0 2.2.0#選擇2.2版本
$./util/install.sh#編譯安裝
這里自帶的腳本會幫你處理好一切的,安心好了。不過建議看一下mininet的INSTALL文件,看一下對系統有什麼要求。
同樣需要注意命令安裝的情況,關閉自啟動。

三、安裝wireshark
新建終端控制台,輸入:
$sudo apt-get install wireshark
這樣全部的准備工作已經做完了

四、聯機調試抓包
在進行抓包之前將之前運行的floodlight和mininet全部關閉
1、運行floodlight
$java -jar floodlight/target/floodlight.jar
2、運行wireshark
$sudo wireshark (一定要用root許可權打開,否則無法檢測網卡埠)
點擊監測的埠,如果在同一台機器上測試,就選擇lo環回埠,如果mininet鏈接練成控制器則監測eth0埠。
在開始對網卡埠監測之後在啟動mininet,確保能抓到Hello包

3、啟動mininet
$sudo mn --controller=remote,ip=202.119.167.224
這時你就能從wireshark中看到各種OFP的數據包了!

7. 如何用openvswitch-switch搭建多虛擬機環境

將Open vSwitch安裝在Ubuntu或Debian上 雖然OVS以程序包的方式出現在Ubuntu或Debian上,但我在此還是通過源代碼來構建OVS,這將擁有最新的功能特性和修正版。 首先,安裝用於構建OVS的依賴項

8. openvswitch能夠裝在什麼系統中

將Open vSwitch安裝在Ubuntu或Debian上 雖然OVS以程序包的方式出現在Ubuntu或Debian上,但我在此還是通過源代碼來構建OVS,這將擁有最新的功能特性和修正版。 首先,安裝用於構建OVS的依賴項。 $ sudo apt-get install build-essential libssl-d...

9. 如何去研究SDN&OpenFlow

Nick McKeown主頁上的教程ppt和演講ppt。Nick的幾篇關於OpenFlow的主要paper做精讀。

OpenFlow官網上的Tutorial非常非常好,一步一步做下來,再做2遍,然後對著OpenFlow對應版本的Spec學習,知其然知其所以然。
開源的那麼多Controller和Switch,找一對學習源代碼,個人覺得floodlight和open vswitch不錯。(根據學習的深淺,2周到半年都有可能)
前沿的方向,比如P4,比如POF,比如ONOS,比如ODL……這些方向都有很多內容
每年的ONS會議,網站注冊後可以看到視頻和ppt,這都是最新的東東
如果你是學生,尤其是以此為研(bi)究(ye)方向的研究生,就需要考慮選啥方向做畢業選題了,比如可以有幾個方向
做個APP實現,比如做爛了的TE/LB演算法、管理、可視化?混個畢業應該問題不大
修改下floodlight、openvswith搞點新特性啥的
做個前沿方向?比如P4、POF、ONOS、ODL、甚至OCP……每一條裡面可研究的東西很多
如果是清華中科大的話,他們相關的實驗室已經有自己探索的方向了,跟著老師走多幹活多思考
多討論、多練手、多思考、多筆記

10. ubuntu桌面版能裝kvm嗎

可以安裝。

安裝KVM所需要的軟體包:

$ apt-get install qemu-kvm libvirt-bin virt-manager bridge-utils

其中:virt-manager為GUI管理窗口,bridge-utils:用於網路橋接

熱點內容
剪力牆壓腳筋大小怎麼配置 發布:2025-01-23 00:50:53 瀏覽:534
騰訊雲cos雲伺服器 發布:2025-01-23 00:46:47 瀏覽:63
如何給安卓平板刷上MIUI系統 發布:2025-01-23 00:45:51 瀏覽:73
2開方演算法 發布:2025-01-23 00:27:21 瀏覽:16
如何看自己steam伺服器 發布:2025-01-23 00:07:21 瀏覽:710
armlinux命令 發布:2025-01-23 00:01:08 瀏覽:137
戰地4亞洲伺服器為什麼被攻擊 發布:2025-01-22 23:45:42 瀏覽:671
javascript反編譯 發布:2025-01-22 23:37:57 瀏覽:432
夏天來了你的巴氏奶存儲對嗎 發布:2025-01-22 23:37:56 瀏覽:206
求最大值c語言 發布:2025-01-22 23:22:35 瀏覽:250