1. 程式人生 > >Linux-虛擬網路裝置-OpenvSwitch(持續更新)

Linux-虛擬網路裝置-OpenvSwitch(持續更新)

概述


這裡寫圖片描述

     OpenvSwitch,簡稱OVS是一個虛擬交換軟體,主要用於虛擬機器VM環境,作為一個虛擬交換機,支援Xen/XenServer, KVM, and VirtualBox多種虛擬化技術。 在虛擬化平臺上,OVS 可以為動態變化的端點提供 2 層交換功能,很好的控制虛擬網路中的訪問策略、網路隔離、流量監控等等。

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

     在這種某一臺機器的虛擬化的環境中,一個虛擬交換機(vswitch)主要有兩個作用:傳遞虛擬機器VM之間的流量,以及實現VM和外界網路的通訊。

The bulk of the code is written in platform-independent C and is easily ported to other environments. The current release of Open vSwitch supports the following features:
• Standard 802.1Q VLAN model with trunk and access ports
• NIC bonding with or without LACP on upstream switch
• NetFlow, sFlow(R), and mirroring for increased visibility
• QoS (Quality of Service) configuration, plus policing
• Geneve, GRE, VXLAN, STT, and LISP tunneling
• 802.1ag connectivity fault management
• OpenFlow 1.0 plus numerous extensions
• Transactional configuration database with C and Python bindings
• High-performance forwarding using a Linux kernel module

幾個重要的概念

Bridge

Bridge代表一個乙太網交換機(switch),一個主機中可以建立一個或多個bridge裝置。

Port

埠與物理交換機的埠概念類似,每個port都隸屬於一個bridge。

Interface

連線到port的網路介面裝置。通常情況下,port和interface是一對一的關係,只有在配置port為bond模式後,port和interface才是一對多的關係。

Controller

OpenFlow控制器。OVS可以同時接受一個或多個OpenFlow控制器管理。

Datapath

在ovs中,datapath負責執行資料交換,也就是把從接收埠收到的資料包在流表中進行匹配,並執行匹配到的動作。

Flowtable

每個datapath都和一個“flowtable”關聯,當datapath接收到資料之後,ovs會在flow table中查詢可以匹配到的flow,執行對應的操作,例如轉發資料到另外的埠。

安裝與配置

下載程式碼

git clone https://github.com/openvswitch/ovs.git

編譯程式碼

./boot.sh
./configure

By default all files are installed under /usr/local. Open vSwitch also expects to find its database in /usr/local/etc/openvswitch by default. If you want to install all files into, e.g., /usr and /var instead of /usr/local and /usr/local/var and expect to use /etc/openvswitch as the default database directory, add options as shown here:

./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc

make && make install

load the kernel modules

/sbin/modprobe openvswitch

校驗安裝

/sbin/lsmod | grep openvswitch

啟動

export PATH=$PATH:/usr/local/share/openvswitch/scripts
ovs-ctl start

這裡寫圖片描述

校驗

ovs-vsctl add-br ovs-bridge-test

工作原理

元件介紹


這裡寫圖片描述

The main components of this distribution are:
• ovs-vswitchd, a daemon that implements the switch, along with a companion Linux kernel module for flow-based switching.
• ovsdb-server, a lightweight database server that ovs-vswitchd queries to obtain its configuration.
• ovs-dpctl, a tool for configuring the switch kernel module.
• Scripts and specs for building RPMs for Citrix XenServer and Red Hat Enterprise Linux. The XenServer RPMs allow Open vSwitch to be installed on a Citrix XenServer host as a drop-in replacement for its switch, with additional functionality.
• ovs-vsctl, a utility for querying and updating the configuration of ovs-vswitchd.
• ovs-appctl, a utility that sends commands to running Open vSwitch daemons.
Open vSwitch also provides some tools:
• ovs-ofctl, a utility for querying and controlling OpenFlow switches and controllers.
ovs-pki, a utility for creating and managing the public-key infrastructure

這裡寫圖片描述

openflow

      OpenFlow 是用於管理交換機流表的協議,ovs-ofctl 則是 OVS 提供的命令列工具。在沒有配置 OpenFlow 控制器的模式下,使用者可以使用 ovs-ofctl 命令通過 OpenFlow 協議去連線 OVS,建立、修改或刪除 OVS 中的流表項,並對 OVS 的執行狀況進行動態監控。
OpenFlow 的匹配流程,如下圖所示(來源於網路)


這裡寫圖片描述

flow語法

     flow被定義為某個特定的網路流量。例如:一個tcp連線就是一個flow,或者從某個ip地址發出來的資料包,都可以認為是一個flow。支援openflow協議的交換機應該包含一個或多個流表,流表中的條目包含:資料包頭的資訊、匹配成功之後要執行的指令和統計資訊。
     當資料包進入ovs後,會將資料包和流表中的流表項進行匹配,如果發現了匹配的流表項,則執行該流表項中的指令集。相反,如果資料包在流表中沒有發現任何匹配,ovs會通過控制通道把資料包傳送到openflow控制器中。

引數

     在ovs中,流表項作為ovs-ofctl的引數,採用如下的格式:欄位=值。如果有多個欄位,可以用逗號或者空格分開。一些常用的欄位列舉如下:


這裡寫圖片描述

動作

對於 add−flow,add−flows 和 mod−flows 這三個命令,還需要指定要執行的動作:actions=[target][,target…]
一個流規則中可能有多個動作,按照指定的先後順序執行。
常見的操作有:


這裡寫圖片描述

實驗


這裡寫圖片描述

初始化裝置資訊

#建立一個新的 OVS 交換機
ovs-vsctl add-br ovs-switch
#新增埠,並設定埠號(如果不指定,ovs會自動生成一個)
#對於 internal 型別的的網路介面,OVS 會同時在 Linux 系統中建立一個可以用來收發資料的模擬網路裝置。
#我們可以為這個網路裝置配置 IP 地址、進行資料監聽等等。
ovs-vsctl add-port ovs-switch p0 -- set Interface p0 type=internal ofport_request=100
ovs-vsctl add-port ovs-switch p1 -- set Interface p1 type=internal ofport_request=101
ovs-vsctl add-port ovs-switch p2 -- set Interface p2 type=internal ofport_request=102
#檢視裝置資訊
ethtool -i p0

driver: openvswitch
version: 
firmware-version: 
expansion-rom-version: 
bus-info: 
supports-statistics: no
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no

#建立network namespace和設定ip
ip netns add ns0
ip netns add ns1
ip netns add ns2

ip link set dev p0 netns ns0
ip link set dev p1 netns ns1
ip link set dev p2 netns ns2

ip netns exec ns0 ip addr add 100.2.96.100/24 dev p0
ip netns exec ns1 ip addr add 100.2.96.101/24 dev p1
ip netns exec ns2 ip addr add 100.2.96.102/24 dev p2

ip netns exec ns0 ifconfig p0 promisc up
ip netns exec ns1 ifconfig p1 promisc up
ip netns exec ns2 ifconfig p2 promisc up

ip netns exec ns0 ifconfig lo up
ip netns exec ns1 ifconfig lo up
ip netns exec ns2 ifconfig lo up

檢視裝置資訊

[email protected]:/home/sunld# ovs-vsctl show
ad3594eb-ebf6-4255-916f-c737b652d7bf
    Bridge ovs-switch
        Port ovs-switch
            Interface ovs-switch
                type: internal
        Port "p0"
            Interface "p0"
                type: internal
        Port "p2"
            Interface "p2"
                type: internal
        Port "p1"
            Interface "p1"
                type: internal
    ovs_version: "2.8.90"

檢視 Open vSwitch 中的埠資訊

#datapath ID (dpid),以及每個埠的 OpenFlow 埠編號,埠名稱,當前狀態
ovs-ofctl show ovs-switch

OFPT_FEATURES_REPLY (xid=0x2): dpid:0000b2e05257c141
n_tables:254, n_buffers:0
capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP
actions: output enqueue set_vlan_vid set_vlan_pcp strip_vlan mod_dl_src mod_dl_dst mod_nw_src mod_nw_dst mod_nw_tos mod_tp_src mod_tp_dst
 100(p0): addr:fe:7f:00:00:36:88
     config:     PORT_DOWN
     state:      LINK_DOWN
     speed: 0 Mbps now, 0 Mbps max
 101(p1): addr:fe:7f:00:00:36:88
     config:     PORT_DOWN
     state:      LINK_DOWN
     speed: 0 Mbps now, 0 Mbps max
 102(p2): addr:fe:7f:00:00:36:88
     config:     PORT_DOWN
     state:      LINK_DOWN
     speed: 0 Mbps now, 0 Mbps max
 LOCAL(ovs-switch): addr:b2:e0:52:57:c1:41
     config:     PORT_DOWN
     state:      LINK_DOWN
     speed: 0 Mbps now, 0 Mbps max
OFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0

檢視某個埠的編號

ovs-vsctl get interface p0 ofport

檢視datapath資訊

ovs-dpctl show
[email protected]:
    lookups: hit:33 missed:23 lost:0
    flows: 0
    masks: hit:58 total:0 hit/pkt:1.04
    port 0: ovs-system (internal)
    port 1: p1 (internal)
    port 2: ovs-switch (internal)
    port 3: p0 (internal)
    port 4: p2 (internal)

遮蔽資料包

#遮蔽所有進入ovs的乙太網廣播資料包
ovs-ofctl add-flow ovs-switch "table=0, dl_src=01:00:00:00:00:00/01:00:00:00:00:00, actions=drop"
#遮蔽 STP 協議的廣播資料包
ovs-ofctl add-flow ovs-switch "table=0, dl_src=01:80:c2:00:00:00/ff:ff:ff:ff:ff:f0, actions=drop"

修改資料包

#修改從埠p0收到資料包的源地址為192.168.100.2
ovs-ofctl add-flow ovs-switch "priority=1 idle_timeout=0, in_port=100, actions=mod_nw_src:192.168.100.2,normal"
#檢視效果
ip netns exec ns0 ping -c 4 100.2.96.101
#新開一個視窗監控p1
ip netns exec ns1 tcpdump -i p1 icmp

#資料包來源變成192.168.100.2
20:04:23.123827 IP 192.168.100.2 > 100.2.96.101: ICMP echo request, id 6266, seq 3, length 64
20:04:24.132375 IP 192.168.100.2 > 100.2.96.101: ICMP echo request, id 6266, seq 4, length 64

重定向資料包

#重定向icmp資料包到埠p2
ovs-ofctl add-flow ovs-switch "idle_timeout=0, dl_type=0x0800, nw_proto=1, actions=output:102"
#測試
#從p0傳送資料到p1
ip netns exec ns0 ping -c 4 100.2.96.101
#監控p2埠,發現數據包已被轉發到p2
ip netns exec ns2 tcpdump -i p2 icmp

20:12:00.305874 IP 100.2.96.100 > 100.2.96.101: ICMP echo request, id 6295, seq 1, length 64
20:12:01.324529 IP 100.2.96.100 > 100.2.96.101: ICMP echo request, id 6295, seq 2, length 64
20:12:02.353814 IP 100.2.96.100 > 100.2.96.101: ICMP echo request, id 6295, seq 3, length 64
20:12:03.365809 IP 100.2.96.100 > 100.2.96.101: ICMP echo request, id 6295, seq 4, length 64

修改資料包的vlan tag

除了使用“ping”、“tcpdump”和“iperf” 等 Linux 命令以外,我們也可以使用 OVS 提供的 ovs-appctl ofproto/trace 工具來測試 OVS 對資料包的轉發狀況。ovs-appctl ofproto/trace 可以用來生成測試用的模擬資料包,並一步步的展示 OVS 對資料包的流處理過程。

#設定埠p1 vlan=101
ovs-vsctl set port p1 tag=101

現在由於埠 p0 和 p1 屬於不同的 VLAN,它們之間無法進行資料交換。我們使用 ovs-appctl ofproto/trace 生成一個從埠 p0 傳送到埠 p1 的資料包,這個資料包不包含任何 VLAN tag,並觀察 OVS 的處理過程。

ovs-appctl ofproto/trace ovs-switch in_port=100,dl_src=1a:63:2e:ad:b9:c4,dl_dst=1a:50:8c:91:b3:07 -generate
Flow: in_port=100,vlan_tci=0x0000,dl_src=1a:63:2e:ad:b9:c4,dl_dst=1a:50:8c:91:b3:07,dl_type=0x0000

bridge("ovs-switch")
--------------------
 0. in_port=100, priority 1
    mod_nw_src:192.168.100.2
    NORMAL
     -> learned that 1a:63:2e:ad:b9:c4 is on port p0 in VLAN 0
     -> no learned MAC for destination, flooding

Final flow: unchanged
Megaflow: recirc_id=0,eth,in_port=100,vlan_tci=0x0000/0x1fff,dl_src=1a:63:2e:ad:b9:c4,dl_dst=1a:50:8c:91:b3:07,dl_type=0x0000
Datapath actions: 2,4

說明:
在第一行輸出中,“Flow:”之後的欄位描述了輸入的流的資訊。由於我們沒有指定太多資訊,所以多數字段 (例如 dl_type 和 vlan_tci)被 OVS 設定為空值。
在第二行的輸出中,“Rule:” 之後的欄位描述了匹配成功的流表項。
在第三行的輸出中,“OpenFlow actions”之後的欄位描述了實際執行的操作。
最後一段以”Final flow”開始的欄位是整個處理過程的總結,“Datapath actions: 2,4”代表資料包被髮送到 datapath 的 2 和 4 號埠。

#對於從埠 p0 進入交換機的資料包,
#如果它不包含任何 VLAN tag,則自動為它新增 VLAN tag 101
ovs-ofctl add-flow ovs-switch "priority=3,in_port=100,dl_vlan=0xffff,actions=mod_vlan_vid:101,normal"

#檢視資訊
#發現數據包進入埠 p0 之後, 會被加上 VLAN tag101, 同時轉發到埠 p1 上
ovs-appctl ofproto/trace ovs-switch in_port=100,dl_src=1a:63:2e:ad:b9:c4,dl_dst=1a:50:8c:91:b3:07 -generate

Flow: in_port=100,vlan_tci=0x0000,dl_src=1a:63:2e:ad:b9:c4,dl_dst=1a:50:8c:91:b3:07,dl_type=0x0000

bridge("ovs-switch")
--------------------
 0. in_port=100,vlan_tci=0x0000, priority 3
    mod_vlan_vid:101
    NORMAL
     -> learned that 1a:63:2e:ad:b9:c4 is on port p0 in VLAN 101
     -> no learned MAC for destination, flooding

Final flow: in_port=100,dl_vlan=101,dl_vlan_pcp=0,vlan_tci1=0x0000,dl_src=1a:63:2e:ad:b9:c4,dl_dst=1a:50:8c:91:b3:07,dl_type=0x0000
Megaflow: recirc_id=0,eth,in_port=100,vlan_tci=0x0000,dl_src=1a:63:2e:ad:b9:c4,dl_dst=1a:50:8c:91:b3:07,dl_type=0x0000
Datapath actions: push_vlan(vid=101,pcp=0),2,pop_vlan,1,push_vlan(vid=101,pcp=0),4

#反過來從埠 p1 傳送資料包,由於 p1 現在是帶有 VLAN tag 101 的 Access 型別的埠,
#所以資料包進入埠 p1 之後,會被 OVS 新增 VLAN tag 101 併發送到埠 p0
ovs-appctl ofproto/trace ovs-switch in_port=101,dl_dst=1a:63:2e:ad:b9:c4,dl_src=1a:50:8c:91:b3:07 -generate

Flow: in_port=101,vlan_tci=0x0000,dl_src=1a:50:8c:91:b3:07,dl_dst=1a:63:2e:ad:b9:c4,dl_type=0x0000

bridge("ovs-switch")
--------------------
 0. priority 0
    NORMAL
     -> learned that 1a:50:8c:91:b3:07 is on port p1 in VLAN 101
     -> forwarding to learned port

Final flow: unchanged
Megaflow: recirc_id=0,eth,in_port=101,vlan_tci=0x0000/0x1fff,dl_src=1a:50:8c:91:b3:07,dl_dst=1a:63:2e:ad:b9:c4,dl_type=0x0000
Datapath actions: push_vlan(vid=101,pcp=0),3

其他openflow常用操作

#刪除編號為 100 的埠上的所有流表項
ovs-ofctl del-flows ovs-switch "in_port=100"

#檢視交換機中的所有 Table
ovs-ofctl dump-tables ovs-switch
檢視交換機中的所有流表項
#ovs−ofctl dump−flows ovs-switch
#檢視交換機上的埠資訊
ovs-ofctl show ovs-switch

kvm安裝

常用命令

#檢視openflow協議版本
ovs-ofctl --version

ovs-ofctl (Open vSwitch) 2.8.90
OpenFlow versions 0x1:0x5
#修改ovs支援OpenFLow版本
ovs-vsctl set Bridge A1 protocols=OpenFlow12,OpenFlow13
#建立一個新的 OVS 交換機
ovs-vsctl add-br ovs-switch
#檢視交換機中的所有 Table
ovs-ofctl dump-tables ovs-switch
#檢視交換機中的所有流表項
ovs-ofctl dump-flows ovs-switch
#刪除編號為 100 的埠上的所有流表項
ovs-ofctl del-flows ovs-switch "in_port=100"
#檢視交換機上的埠資訊
ovs-ofctl show ovs-switch
#列出 open vswitch 中的所有網橋:
ovs-vsctl list-br
#判斷網橋是否存在
ovs-vsctl br-exists br0
#將物理網絡卡掛接到網橋:
ovs-vsctl add-port br0 eth0
#列出網橋中的所有埠:
ovs-vsctl list-ports br0
#列出所有掛接到網絡卡的網橋:
ovs-vsctl port-to-br eth0
#檢視 open vswitch 的網路狀態
ovs-vsctl show
#刪除網橋上已經掛接的網口:
vs-vsctl del-port br0 eth0
#刪除網橋:
ovs-vsctl del-br br0

port型別

       埠Port與物理交換機的埠概念類似,Port是OVS Bridge上建立的一個虛擬埠,每個Port都隸屬於一個Bridge。Port有以下幾種型別:

Normal

       把物理網絡卡(eth1)attach到ovs上,ovs會生成一個同名的port(eth1)處理這塊網絡卡進出的資料。此時埠型別為Normal。

ovs-vsctl add-port br-ex eth1
ovs-vsctl show
#顯示資訊如下:
Bridge br-ex
        Controller "tcp:127.0.0.1:6633"
            is_connected: true
        fail_mode: secure
        Port phy-br-ex
            Interface phy-br-ex
                type: patch
                options: {peer=int-br-ex}
        Port "eth1"
            Interface "eth1"
        Port br-ex
            Interface br-ex
                type: internal


注意:attach到ovs上的網絡卡裝置(物理網絡卡、虛擬網絡卡)不支援分配IP地址,因此若之前eth1有ip地址,attach之後ip地址失效。

Internal

       Internal型別是ovs內部建立的虛擬網絡卡介面,每建立一個port,ovs會自動建立一個同名介面(interface)掛載到新建立的port上。

ovs-vsctl add-br br0
ovs-vsctl add-port br0 port0 -- set Interface port0 type=internal
ovs-vsctl show

顯示資訊如下:

ad3594eb-ebf6-4255-916f-c737b652d7bf
    Bridge "br0"
        Port "br0"
            Interface "br0"
                type: internal
        Port "port0"
            Interface "port0"
                type: internal
    Bridge ovs-bridge-test
        Port ovs-bridge-test
            Interface ovs-bridge-test
                type: internal
    ovs_version: "2.8.90"

可以看到有兩個port。當ovs建立一個新網橋時,預設會建立一個與網橋同名的internal port(如:br0)。在ovs中,只有“internal”型別的裝置才支援配置IP地址資訊,因此我們可以為br0和port0配置ip地址。

ip addr add 100.2.97.10/24 dev br0
ip link set dev br0 up
ip route add default via 100.2.97.1 dev br0

上面兩種Port型別區別在於,Internal型別會自動建立介面(Interface),而Normal型別是把主機中已有的網絡卡介面新增到OVS中

Patch

      當主機中有多個ovs網橋時,可以使用patch port把兩個網橋連線起來。Patch port總是成對存在,分別連線在兩個網橋上,從一個patch port收到的資料包會被髮送到另一個patch port上,類似於linux中的veth。使用patch連線的兩個網橋跟一個網橋沒什麼區別,openstack neutron中使用到了patch port。比如連線br-int和br-ext的patch port。

Bridge br-int
    Port int-br-ex
            Interface int-br-ex
                type: patch
                options: {peer=phy-br-ex}

Bridge br-ex
    Port phy-br-ex
            Interface phy-br-ex
                type: patch
                options: {peer=int-br-ex}
[email protected]:/# ovs-vsctl add-br br0
[email protected]:/# ovs-vsctl add-br br1
[email protected]:/# ovs-vsctl \
> -- add-port br0 patch0 -- set interface patch0 type=patch options:peer=patch1 \
> -- add-port br1 patch1 -- set interface patch1 type=patch options:peer=patch0
[email protected]:/# ovs-vsctl show
ad3594eb-ebf6-4255-916f-c737b652d7bf
    Bridge "br1"
        Port "br1"
            Interface "br1"
                type: internal
        Port "patch1"
            Interface "patch1"
                type: patch
                options: {peer="patch0"}
    Bridge "br0"
        Port "br0"
            Interface "br0"
                type: internal
        Port "patch0"
            Interface "patch0"
                type: patch
                options: {peer="patch1"}
    Bridge ovs-bridge-test
        Port ovs-bridge-test
            Interface ovs-bridge-test
                type: internal
    ovs_version: "2.8.90"

連線兩個網橋不止上面一種方法,linux中支援建立Veth裝置對,我們可以首先建立一對Veth裝置對,然後把這兩個Veth分別新增到兩個網橋上,其效果跟OVS中建立Patch Port一樣,只是效能會有差別.

Patch port的作用

       Open vSwitch中PATCH型別的埠有如下定義:“A pair of virtual devices that act as a patch cable”(一根虛擬電纜),同時在OpenvSwitch官方FAQ可以找到PATCH埠的用途“If you still want to connect two bridges, you can use a pair of patch ports”(用於連線兩個網橋)。
簡單化,patch port成對,可以看作是一根虛擬電纜,用來連線兩個網橋,如下圖:


這裡寫圖片描述
#建立網橋br1、br2
ovs-vsctl add-br br1
ovs-vsctl add-br br2
#建立內部埠
ovs-vsctl add-port br1 tap1 -- set Interface tap1 type=internal
ovs-vsctl add-port br2 tap2 -- set Interface tap2 type=internal 
#配置namespace
ip netns add ns1
ip netns add ns2
ip link set dev tap1 netns ns1
ip link set dev tap2 netns ns2

ip netns exec ns1 ip addr add 100.2.96.11/24 dev tap1
ip netns exec ns1 ip link set tap1 up
ip netns exec ns1 ip link set lo up

ip netns exec ns2 ip addr add 100.2.96.12/24 dev tap2
ip netns exec ns2 ip link set tap2 up
ip netns exec ns2 ip link set lo up
# patch port

ovs-vsctl add-port br1 patch-ovs-1 -- set Interface patch-ovs-1 type=patch -- set Interface patch-ovs-1 options:peer=patch-ovs-2
ovs-vsctl add-port br2 patch-ovs-2 -- set Interface patch-ovs-2 type=patch -- set Interface patch-ovs-2 options:peer=patch-ovs-1
#test
ip netns exec ns1 ping 100.2.96.12 
ip netns exec ns2 ping 100.2.96.11

顯示資訊如下

[email protected]:/home/sunld# ovs-vsctl show
ad3594eb-ebf6-4255-916f-c737b652d7bf
    Bridge "br2"
        Port "tap2"
            Interface "tap2"
                type: internal
        Port "br2"
            Interface "br2"
                type: internal
        Port "patch-ovs-2"
            Interface "patch-ovs-2"
                type: patch
                options: {peer="patch-ovs-1"}
    Bridge "br1"
        Port "tap1"
            Interface "tap1"
                type: internal
        Port "patch-ovs-1"
            Interface "patch-ovs-1"
                type: patch
                options: {peer="patch-ovs-2"}
        Port "br1"
            Interface "br1"
                type: internal
    Bridge ovs-bridge-test
        Port ovs-bridge-test
            Interface ovs-bridge-test
                type: internal
    ovs_version: "2.8.90"

其他

通過 Floodlight 管理 OVS

參考資料

相關推薦

Linux-虛擬網路裝置-OpenvSwitch(持續更新)

概述      OpenvSwitch,簡稱OVS是一個虛擬交換軟體,主要用於虛擬機器VM環境,作為一個虛擬交換機,支援Xen/XenServer, KVM, and VirtualBox多種虛擬化技術。 在虛擬化平臺上,OVS 可以為動態變化的端

Linux-虛擬網路裝置-veth pair

基本概念 Virtual Ethernet Cable Bidirectional FIFO Often used to cross namespaces        Linux container 中用到一個叫做veth的東西,這是一種新的裝置,專門

Linux-虛擬網路裝置-LinuxBridge

基本概念        bridge是一個虛擬網路裝置,具有網路裝置的特性(可以配置IP、MAC地址等);而且bridge還是一個虛擬交換機,和物理交換機裝置功能類似。網橋是一種在鏈路層實現中繼,對幀進行轉發的技術,根據MAC分割槽塊,可隔離碰撞,將網路的多個

Linux虛擬網路裝置之bridge(橋)

繼前兩篇介紹了tun/tap和veth之後,本篇將介紹Linux下常用的一種虛擬網路裝置,那就是bridge(橋)。本篇將通過實際的例子來一步一步解釋bridge是如何工作的。什麼是bridge?首先,bridge是一個虛擬網路裝置,所以具有網路裝置的特徵,可以配置IP

Linux】Ubuntu14.04虛擬網路裝置TUN安裝

1、檢測系統中是否存在TUN模組,ctrl+alt+t開啟Ubuntu終端,輸入: ①modinfo tun modinfo: ERROR: Module tun not found. ②modprobe tun lsmod | grep tun 沒有任何輸出 就是說沒有

Linux - 常用參考資料(持續更新

linux 磁盤 文件 分區 達內1、MBR 與 GPT 的聯系和區別https://baike.baidu.com/item/GPT/15413476?fr=aladdin本文出自 “不動的流星” 博客,請務必保留此出處http://caihong.blog.51cto.com/277306/1980931

路由器終端常用linux命令匯總(持續更新

其它 -s pan 表示 文件夾 一次 分享 大小 顯示文件 ls:顯示文件名與相關屬性 ls -al;ls -l;ls -a 第一列: d:表示目錄,dir。 -:表示文件。 l:表示鏈接文件,linkfile。 接下來的字符三個為一組,且均為rwx這3個字母的組合

[linux環境配置]個人用持續更新ing~

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px "Andale Mono"; color: #28fe14; background-color: rgba(0, 0, 0, 0.9) } p.p2 { margin: 0.0px 0.0px 0.0px

linux下常用操作(持續更新

使用者和使用者組:  一,組操作 1,建立組  groupadd test  增加一個test組 新增使用者組: groupadd test 2,修改組 groupmod -n test2  test

Linux常用操作命令(持續更新

1、Linux防火牆iptables的關閉與啟動 1) 重啟後生效 開啟: chkconfig iptables on 關閉: chkconfig iptables off 2) 即時生效,

linux 常用命令列(持續更新

linux 常用命令列(持續更新) 1、使用pid查詢埠號 sudo netstat -antup|grep PID號 2、查詢埠號所有情況 sudo netstat -antup    3、啟動、重啟、關閉tomcat伺服器,若沒有許可權則加sudo service tomc

Linux系統網路裝置啟動和禁止“ifconfig eth0 up/down”命令的跟蹤

前面文章講了Linux系統的ethtool框架的一些東西,是從使用者空間可以直觀認識到的地方入手。同樣,本文從Linux系統絕大部分人都熟悉的“ifconfig eth0 up”命令來跟蹤一下此命令在核心中的發生了什麼事情。由於ifconfig啟動(up)和禁止(down)

Linux常用命令總結(持續更新

檢視作業系統:$ cat /etc/os-releaseCentOS 也可以檢視以下檔案,如果不是CentOS會提示沒有這個檔案$ cat /etc/redhat-release辨別是CentOS還是Ubuntu還可以看是不是有命令yum/apt-getyum install

Linux 命令列小技巧-持續更新

概述 你有將Linux物盡其用嗎?有些時候你會需要這些技巧。本博文會幫助你更好得使用一些命令,發揮其更強大的功能。 命令列小技巧 history命令來檢視曾經執行過的命令 # history history中顯示命令的執行

Linux驅動-網路裝置(1)

1.Linux網路裝置驅動結構 Linux網路裝置驅動體系分為四層,從上往下依次為 網路協議介面層,網路裝置介面層,裝置驅動功能層,網路裝置與媒介層 這裡值得一提的是Linux網路裝置體系和TCP,IP協議棧之間的關係.下圖是TCP/IP結構圖 Linux網路驅

《從樹莓派玩轉linux》讀書記錄(持續更新中)

第五章 Linux Shell Linux通用查詢命令 命令名: 用途: 使用示例: 命令名: lscpu 用途: 用於檢視本機的CPU資訊 使用示例: 命令名: free 用途:

Linux相關操作命令(持續更新

1、刪除某一目錄下的所有檔案及資料夾,但是剔除某一特定檔案或者資料夾 find . -maxdepth 1 ! -name 特定檔案(夾)名 -exec rm -rf {} \; 2、查詢某一目錄佔用的磁碟空間 du -sh PATH

Linux基本知識點整理(持續更新中..)

用戶登陸 擴展分區 獨立分區 https 搜索 pac 情況 編譯 ignore 基本的一些變量 : 將變量內保存的字符內容表示出來用$符號(也可以加上花括號${###}) 註意它和命令優先級符號$()(同反向單引號)的區別:一個內容是變量,一個內容是語句。 SHELL:

Linux 服務器命令,持續更新……

clas 如果 自己 失效 系統時間 date 註意 持續更新 日期 記錄一下常用命令給自己備忘備查,會持續更新…… 一、查看和修改Linux的時間 1. 查看時間和日期,命令: date 2.設定時間和日期 例如:

linux常用指令大全(持續更新中)

iptables linux 防火 ins enable name iptable tab str 查看電腦配置命令 查看內核/操作系統/CPU信息:uname -a 查看CPU信息:cat /proc/cpuinfo 查看內存使用:free -m 查看防火墻:su