openvswitch入门
【摘要】 环境: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)