OVS上配置bond(轉自:https://www.jianshu.com/p/f6ddcb5afe73)


#創建兩對veth口
ip link add vetha type veth peer name vethb
ip link add vethx type veth peer name vethy
ip link set dev vetha up
ip link set dev vethb up
ip link set dev vethx up
ip link set dev vethy up

#創建兩個bridge
ovs-vsctl add-br br1
ovs-vsctl add-br br2

#在兩個bridge上,分別創建bond口,其slave口為兩對veth口的一端
ovs-vsctl add-bond br1 bond1 vetha vethx
ovs-vsctl add-bond br2 bond2 vethb vethy

#刪除bond口。添加bond時,可用add-bond命令,但是刪除bond口,沒有del-bond命令可用,可使用 del-port 刪除bond口
ovs-vsctl del-port bond1

#再創建兩對veth口
ip link add vethm type veth peer name vethn
ip link add vethw type veth peer name vethz
ip link set dev vethm up
ip link set dev vethn up
ip link set dev vethw up
ip link set dev vethz up

#兩對veth口的一端加入兩個bridge
ovs-vsctl add-port br1 vethn
ovs-vsctl add-port br2 vethz

#創建兩個netns
ip netns add test1
ip netns add test2

#將兩對veth口的另一端加入netns
ip link set dev vethm netns test1
ip link set dev vethw netns test2

#在netns中,將veth口up起來,並配置同網段的ip
ip netns exec test1 ip link set dev vethm up
ip netns exec test1 ip addr add dev vethm 10.10.10.1/24
ip netns exec test2 ip link set dev vethw up
ip netns exec test2 ip addr add dev vethw 10.10.10.2/24

在test1 netns ping test2 netns,能ping通,說明配置是沒問題的

root@master:~# ip netns exec test1 ip a
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
49: vethm@if48: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 72:af:9d:1b:40:bb brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.10.10.1/24 scope global vethm
       valid_lft forever preferred_lft forever
    inet6 fe80::70af:9dff:fe1b:40bb/64 scope link
       valid_lft forever preferred_lft forever
root@master:~# ip netns exec test1 ping 10.10.10.2
PING 10.10.10.2 (10.10.10.2) 56(84) bytes of data.
64 bytes from 10.10.10.2: icmp_seq=1 ttl=64 time=0.113 ms
^C
--- 10.10.10.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.113/0.113/0.113/0.000 ms
看一下當前ovs的配置,在配置層可看到非bond口只有一個interface,bond口有多個interface,但是openflow層和datapath層都只顯示interface,不會顯示port。
#在配置層可看到非bond口只有一個interface,bond口有多個interface
root@master:~# ovs-vsctl show
163a03bf-8b1b-4043-8d37-8b2287bf94fe
    Bridge "br1"
        Port "bond1"
            Interface vetha
            Interface vethx
        Port "br1"
            Interface "br1"
                type: internal
        Port vethn
            Interface vethn
    Bridge "br2"
        Port "bond2"
            Interface vethb
            Interface vethy
        Port vethz
            Interface vethz
        Port "br2"
            Interface "br2"
                type: internal
#openflow層只顯示interface,不會顯示port。
root@master:~# ovs-ofctl show br1
OFPT_FEATURES_REPLY (xid=0x2): dpid:0000baae9ee6ba4b
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
 1(vetha): addr:da:62:a2:ec:13:ad
     config:     0
     state:      0
     current:    10GB-FD COPPER
     speed: 10000 Mbps now, 0 Mbps max
 2(vethx): addr:8a:56:d7:03:9e:8a
     config:     0
     state:      0
     current:    10GB-FD COPPER
     speed: 10000 Mbps now, 0 Mbps max
 3(vethn): addr:3e:09:a2:3a:69:40
     config:     0
     state:      0
     current:    10GB-FD COPPER
     speed: 10000 Mbps now, 0 Mbps max
 LOCAL(br1): addr:ba:ae:9e:e6:ba:4b
     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
#datapath層也只顯示interface,不會顯示port。
root@master:~# ovs-appctl dpctl/show
system@ovs-system:
        lookups: hit:92 missed:142 lost:0
        flows: 0
        masks: hit:324 total:0 hit/pkt:1.38
        port 0: ovs-system (internal)
        port 1: br1 (internal)
        port 2: br2 (internal)
        port 3: vetha
        port 4: vethx
        port 5: vethb
        port 6: vethy
        port 7: vethn
        port 8: vethz

看一下bond口配置,bond_mode默認為 active-backup

root@master:~# ovs-appctl bond/show
---- bond2 ----
bond_mode: active-backup
bond may use recirculation: no, Recirc-ID : -1
bond-hash-basis: 0
updelay: 0 ms
downdelay: 0 ms
lacp_status: off
lacp_fallback_ab: false
active slave mac: 9a:8d:2d:62:ab:24(vethy)

slave vethb: enabled
        may_enable: true

slave vethy: enabled
        active slave
        may_enable: true

---- bond1 ----
bond_mode: active-backup
bond may use recirculation: no, Recirc-ID : -1
bond-hash-basis: 0
updelay: 0 ms
downdelay: 0 ms
lacp_status: off
lacp_fallback_ab: false
active slave mac: 8a:56:d7:03:9e:8a(vethx)

slave vetha: enabled
        may_enable: true

slave vethx: enabled
        active slave
        may_enable: true

從上面bond/show結果可知,對於bond1來說,active slave是vethx,現在嘗試將vethx down掉,驗證active slave會變成vetha,並且仍然可以ping通。

root@master:~# ip link set dev vethx down
root@master:~# ovs-appctl bond/show
---- bond2 ----
bond_mode: active-backup
bond may use recirculation: no, Recirc-ID : -1
bond-hash-basis: 0
updelay: 0 ms
downdelay: 0 ms
lacp_status: off
lacp_fallback_ab: false
active slave mac: 0a:44:22:44:75:1d(vethb)

slave vethb: enabled
        active slave
        may_enable: true

slave vethy: disabled
        may_enable: false

---- bond1 ----
bond_mode: active-backup
bond may use recirculation: no, Recirc-ID : -1
bond-hash-basis: 0
updelay: 0 ms
downdelay: 0 ms
lacp_status: off
lacp_fallback_ab: false
active slave mac: da:62:a2:ec:13:ad(vetha)

slave vetha: enabled
        active slave
        may_enable: true

slave vethx: disabled
        may_enable: false

root@master:~# ip netns exec test1 ping 10.10.10.2
PING 10.10.10.2 (10.10.10.2) 56(84) bytes of data.
64 bytes from 10.10.10.2: icmp_seq=1 ttl=64 time=0.838 ms
^C
--- 10.10.10.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.838/0.838/0.838/0.000 ms

 

將bond1上的兩個slave口down掉,ping就會不通

root@master:~# ip link set dev vetha down
root@master:~# ip link set dev vethx down
root@master:~# ip netns exec test1 ping 10.10.10.2
PING 10.10.10.2 (10.10.10.2) 56(84) bytes of data.
^C
--- 10.10.10.2 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2037ms

root@master:~# ovs-appctl bond/show
---- bond2 ----
bond_mode: active-backup
bond may use recirculation: no, Recirc-ID : -1
bond-hash-basis: 0
updelay: 0 ms
downdelay: 0 ms
lacp_status: off
lacp_fallback_ab: false
active slave mac: 00:00:00:00:00:00(none)

slave vethb: disabled
        may_enable: false

slave vethy: disabled
        may_enable: false

---- bond1 ----
bond_mode: active-backup
bond may use recirculation: no, Recirc-ID : -1
bond-hash-basis: 0
updelay: 0 ms
downdelay: 0 ms
lacp_status: off
lacp_fallback_ab: false
active slave mac: 00:00:00:00:00:00(none)

slave vetha: disabled
        may_enable: false

slave vethx: disabled
        may_enable: false
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM