Open vSwitch 入门实践(1)简介 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dushixiang
1.01D
V2EX    推广

Open vSwitch 入门实践(1)简介

  •  
  •   dushixiang 2020-12-12 21:40:39 +08:00 1473 次点击
    这是一个创建于 1846 天前的主题,其中的信息可能已经有所发展或是发生改变。

    OVS 简介

    Open vSwitch 是什么?

    Open vSwitch(以下简称 OVS)是一个用 C 语言开发的多层虚拟交换机,使用 Apcahe 2 开源许可证,现如今基本上已经成为了开源 SDN (软件定义网络)基础设施层的事实标准。

    OVS 支持哪些功能

    • 支持 NetFlow 、sFlow(R)、IPFIX 、SPAN 、RSPAN 和 GRE 隧道镜像等多种流量监控协议
    • 支持 LACP (IEEE 802.1AX-2008)
    • 支持标准 802.1Q VLAN 协议,允许端口配置 trunk 模式
    • 支持组播
    • 支持 BFD 和 802.1ag 链路监控
    • 支持 STP ( IEEE 802.1D-1998 )和 RSTP ( IEEE 802.1D-2004 )
    • 支持细粒度的 QoS (服务质量)配置
    • 支持 HFSC qdisc
    • 支持接管每一个虚拟机的流量
    • 支持基于源 MAC 的负载均衡、主备模式和 L4 哈希的端口绑带
    • 支持 OpenFlow 协议(包含了很多对虚拟化的扩展)
    • 支持 IPv6
    • 支持多种隧道协议( GRE 、VXLAN 、STT 、Geneve 和 IPsec )
    • 支持 C 和 Python 的远程配置协议
    • 支持内核和用户空间的转发引擎选项
    • 具有流缓存引擎的多表转发管道
    • 转发层抽象以简化向新软件和硬件平台的移植

    OVS 的术语解释

    Bridge

    中文名称网桥,一个 Bridge 代表一个以太网交换机( Switch ),一台主机中可以创建一个或多个 Bridge,Bridge 可以根据一定的规则,把某一个端口接收到的数据报文转发到另一个或多个端口上,也可以修改或者丢弃数据报文。

    Port

    中文名称端口,需要注意的是它和 TCP 里面的端口不是同样的概念,它更像是物理交换机上面的插口,可以接水晶头的那种。Port 隶属于 Bridge,必须先添加了 Bridge 才能在 Bridge 上添加 Port 。Port 有以下几种类型:

    • Normal

      用户可以把操作系统中已有的网卡添加到 Open vSwicth 上,Open vSwitct 会自动生成一个同名的 Port 开处理这张网卡进和出的数据报文。

      不过需要注意的是这种方式添加的 Port 不支持分配 IP 地址,如果之前网卡上配置的有 IP,挂载到 OVS 上面之后将不可访问。此类型的 Port 常用于 VLAN 模式的多台物理主机相连的那个口,交换机一端属于 Trunk 模式。

    • Internal

      当 Port 的类型是 Internal 时,OVS 会自动创建一个虚拟网卡( Interface ),此端口收到的数据报文都会转发给这块网卡,从这块网卡发出的数据报文也会通过 Port 交给 OVS 处理。当 OVS 创建一个新的网桥时,会自动创建一个与网桥同名的 Internal Port,同时也会创建一个与网桥同名的 Interface,因此可以通过 ip 命令在操作系统中查看到这张虚拟网卡,但是状态是 down 的。

    • Patch

      Patch Port 和 veth pair 功能相同,总是成双成对的出现,在其中一端收到的数据报文会被转发到另一个 Patch Port 上,就像是一根网线一样。Patch Port 常用于连接两个 Bridge,这样两个网桥就和一个网桥一样了。

    • Tunnel

      OVS 支持 GRE 、VXLAN 、STT 、Geneve 和 IPsec 隧道协议,这些隧道协议就是 overlay 网络的基础协议,通过对物理网络做的一层封装和扩展,解决了二层网络数量不足的问题,最大限度的减少对底层物理网络拓扑的依赖性,同时也最大限度的增加了对网络的控制。

    Interface

    ( iface/接口)接口是 OVS 与操作系统交换数据报文的组件,一个接口即是操作系统上的一块网卡,这个网卡可能是 OVS 生成的虚拟网卡,也有可能是挂载在 OVS 上的物理网卡,操作系统上的虚拟网卡( TUN/TAP )也可以被挂载在 OVS 上。

    Controller

    OpenFlow 控制器,OVS 可以接收一个或者多个 OpenFlow 控制器的管理,功能主要是下发流表,控制转发规则。

    Flow

    流表是 OVS 进行数据转发的核心功能,定义了端口之间转发数据报文的规则,一条流表规则主要分为匹配和动作两部分,匹配部分决定哪些数据报文需要被处理,动作决定了匹配到的数据报文该如何处理。

    OVS 常用操作

    安装

    yum install openvswitch systemctl enable openvswitch systemctl start openvswitch 

    如果当前软件源中没有 openvswitch,可以通过阿里云官方镜像站下载和操作系统版本对应的 rpm 包到本地再安装。 示例命令: yum localinstall openvswitch-2.9.0-3.el7.x86_64.rpm

    Bridge 操作

    添加网桥

    ovs-vsctl add-br br-int 

    查询网桥列表

    ovs-vsctl list-br 

    删除网桥

    ovs-vsctl del-br br-int 

    Port 操作

    • Normal Port
    # 将物理网卡 eth0 添加到网桥 br-int 上 ovs-vsctl add-port br-int eth0 # 移除网桥 br-int 上的 Port ovs-vsctl del-port br-int eth0 
    • Internal Port
    # 添加 Internal Port ovs-vsctl add-port br-int vnet0 -- set Interface vnet0 type=internal # 把网卡 vnet0 启动并配置 IP ip link set vnet0 up ip addr add 192.168.0.1/24 dev vnet0 # 设置 VLAN tag ovs-vsctl set Port vnet0 tag=100 # 移除 vnet0 上面的 VLAN tag 配置 ovs-vsctl remove Port vnet0 tag 100 # 设置 vnet0 允许通过的 VLAN tag ovs-vsctl set Port vnet0 trunks=100,200 # 移除 vnet0 允许通过的的 VLAN tag 配置 ovs-vsctl remove Port vnet0 trunks 100,200 
    • Patch Port
    ovs-vsctl add-br br0 ovs-vsctl add-br br1 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 
    • Tunnel Port
    #主机 10.1.7.21 上 ovs-vsctl add-br br-tun ovs-vsctl add-port br-tun vxlan-vx01 -- set Interface vxlan-vx01 type=vxlan options:remote_ip=10.1.7.22 options:key=flow ovs-vsctl add-port br-tun vxlan-vx02 -- set Interface vxlan-vx02 type=vxlan options:remote_ip=10.1.7.23 options:key=flow #主机 10.1.7.22 上 ovs-vsctl add-br br-tun ovs-vsctl add-port br-tun vxlan-vx01 -- set Interface vxlan-vx01 type=vxlan options:remote_ip=10.1.7.21 options:key=flow ovs-vsctl add-port br-tun vxlan-vx02 -- set Interface vxlan-vx02 type=vxlan options:remote_ip=10.1.7.23 options:key=flow #主机 10.1.7.23 上 ovs-vsctl add-br br-tun ovs-vsctl add-port br-tun vxlan-vx01 -- set Interface vxlan-vx01 type=vxlan options:remote_ip=10.1.7.21 options:key=flow ovs-vsctl add-port br-tun vxlan-vx02 -- set Interface vxlan-vx02 type=vxlan options:remote_ip=10.1.7.22 options:key=flow 
    • 其他基本操作
    # 设置 VLAN mode ovs-vsctl set port <port name> VLAN_mode=truk|access|native-tagged|native-untagged # 设置 VLAN tag ovs-vsctl set port <port name> tag=<1-4095> # 设置 VLAN trunk ovs-vsctl set port <port name> trunk=100,200 # 移除 Port 的属性 ovs-vsctl remove port <port name> <property name> <property value> # 查看 Port 的属性 ovs-vsctl list interface <port name> 

    接下来我们将使用 OVS 来实现单机和多台物理服务器下的虚拟 VLAN 网络。

    本文首发我的微信公众号:我在对面的角落 欢迎关注,接收第一时间更新通知。

    image

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     779 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 21:29 PVG 05:29 LAX 13:29 JFK 16:29
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86