openvswitch入门

举报
黄生 发表于 2023/04/21 23:16:24 2023/04/21
【摘要】 环境:Ubuntu 20.04.4 LTS参考:https://bbs.huaweicloud.com/blogs/358029 《跟唐老师学习云网络》 - OVS交换机apt updateapt-get install -y openvswitch-switch服务: openvswitch-switch.service loaded active exited Ope...

环境:Ubuntu 20.04.4 LTS
参考:https://bbs.huaweicloud.com/blogs/358029 《跟唐老师学习云网络》 - OVS交换机

apt update
apt-get install -y openvswitch-switch
服务:
  openvswitch-switch.service         loaded active exited  Open vSwitch
  ovs-record-hostname.service        loaded active exited  Open vSwitch Record Hostname
  ovs-vswitchd.service               loaded active running Open vSwitch Forwarding Unit
  ovsdb-server.service               loaded active running Open vSwitch Database Unit

ovs-vsctl add-br br-first
ovs-vsctl show
b755653d-f278-47e5-a527-d66ca2a7ba2c
    Bridge br-first
        Port br-first
            Interface br-first  #创建了一个主机上的虚拟网卡,默认是DOWN的状态
                type: internal
    ovs_version: "2.13.8"

上面是ovs-vsctl命令

ip a s br-first  
#这个到底是bridge还是interface? 应该是Interface ovs的bridge在这里应该看不到
#因为linux网桥工具brctl show看不到OVS建立的br-frist
4: br-first: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether ce:10:50:d8:7b:4d brd ff:ff:ff:ff:ff:ff

ip link set br-first up
ip a s br-first  #后面给它配上IP:192.168.0.3  #没有NO-CARRIOR 说明有虚拟网线插上了?
4: br-first: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    inet6 fe80::cc10:50ff:fed8:7b4d/64 scope link
	   
ifconfig br-first
br-first: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::cc10:50ff:fed8:7b4d  prefixlen 64  scopeid 0x20<link>
        ether ce:10:50:d8:7b:4d  txqueuelen 1000  (Ethernet)
        
ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.14  netmask 255.255.255.0  broadcast 10.0.0.255      

br-first这个网卡,和主机的其他物理网卡看上去没什么区别。
它是主机上的虚拟网卡

ovs-vsctl list-ports br-first
#但是这个自动创建的端口,在list-ports里并没有列出来

ip addr add 192.168.0.3/24 dev br-first

ip link add p-0 type veth peer name p-1
#可以理解是2个网卡/网络设备,但是它们2个是相连的,也许是通过一根网线,一辈子是一对
#重启后这一对就消失了
5: p-1@p-0: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether c2:6f:e6:76:7b:8a brd ff:ff:ff:ff:ff:ff
6: p-0@p-1: <BROADCAST,MULTICAST,M-DOWN> ...
    link/ether 56:65:0e:e9:1c:44 ...

ip netns add ns-1  #重启后ns-1也不存在了

ovs-vsctl add-port br-first p-1  #这时可以用list-ports看到有了这个端口
#同时它的属性也有了变化:
5: p-1@p-0: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop master ovs-system state DOWN group default qlen 1000

#注意M-DOWN属性,这一对设备都UP时,应该会消失

ip link set p-1 up
变成这样:
5: p-1@p-0: <NO-CARRIER,BROADCAST,MULTICAST,UP,M-DOWN> mtu 1500 qdisc noqueue master ovs-system state LOWERLAYERDOWN group default qlen 1000

ip link set p-0 netns ns-1
#这个将p-0设备移动到ns-1网络空间,注意是移动,所以ip a 看不到它了。同时它的另一半的属性添加了Link-netns

#同时另一半的称呼也变了,从@p-0变成@if6,从小甜甜变成了牛夫人

5: p-1@if6: <NO-CARRIER,BROADCAST,MULTICAST,UP> ...
    link/ether c2:6f:e6:76:7b:8a brd ff:ff:ff:ff:ff:ff link-netns ns-1

ip netns exec ns-1 ip link set p-0 up
ip netns exec ns-1 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
6: p-0@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 56:65:0e:e9:1c:44 brd ff:ff:ff:ff:ff:ff link-netnsid 0

ip netns exec ns-1 ip addr add 192.168.0.2/24 dev p-0

做一下连通性验证

ip netns exec ns-1 ping 192.168.0.3 #可以通

ip netns exec ns-1 arp -an
? (192.168.0.3) at ce:10:50:d8:7b:4d [ether] on p-0

ip netns exec ns-1 ip route add default via 192.168.0.3
#添加默认路由后,可以ping通本机的eth0。
ip netns exec ns-1 ping 10.0.0.14

#但是ping外网是不通的,具体原因是没有做SNAT转换,加上以下就可以了
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

最后看一下流表命令

ovs-ofctl show br-first

OFPT_FEATURES_REPLY (xid=0x2): dpid:0000ce1050d87b4d
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(p-1): addr:da:2e:5d:5c:9c:90

 LOCAL(br-first): addr:ce:10:50:d8:7b:4d

OFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0


ovs-ofctl dump-flows br-first
 cookie=0x0, duration=13278.389s, table=0, n_packets=55, n_bytes=3818, priority=0 actions=NORMAL
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。