首页 > 编程知识 正文

ovs流行词是什么意思,ovs如何识别流量入接口

时间:2023-05-04 09:37:14 阅读:154665 作者:2828

在docker的网络中,OVS是一个重要的概念,它使用软件实现交换功能。 再加上VXLAN(overlay )隧道技术,实现了主机间的通信。

OVS是通过软件实现交换功能的虚拟交换机,因此也称为软件交换机。 与传统的物理交换机相比,虚拟交换机具有许多优点: 1 .灵活配置。 软件实现允许在一台物理服务器上配置数十台或数百台虚拟交换机,并提供灵活的端口数选择。 2 .低成本,通过软件简单地实现10Gbps的开关速度。

原文: 3359 blog.csdn.net/QQ _ 32261399/article/details/77456577

一.什么是openv交换机

OVS是一种高质量、多层的虚拟交换机(网络层),旨在通过编程扩展大型网络的自动化。 同事仍然支持标准的管理借口和协议。 NetFlow、SFlow等。 它还支持多台物理机的分布式环境。

什么是虚拟交换机? 通过利用软件形成更换部件,也称为软件开关。 与传统的物理交换机相比,虚拟交换机具有许多优点。 1灵活的配置和软件实现使您可以在一台物理服务器上配置10或数百台虚拟交换机,并提供灵活的端口数选择。 2低成本,通过软件方式简单地达成10Gbps的交换速度。 因此,OVS是可用于配置虚拟网络的虚拟交换机,虚拟机具有其他类型的不同体系结构。

2 .虚拟网络

如图所示,这是一个使用虚拟交换机配置的网络,即与物理网络相比的虚拟网络。

三. OVS组件

OVS的内部组件,简单来说,OVS由3个封口构成:

1 .包含虚拟交换机配置信息的ovsdb-server3360OVS数据库服务器。 OVSDB(json-rpc )方式用于与manager和ovs-v交换机交换信息。

2.OVS-vswitchd :与上层控制器通信并符合OPENFLOW协议的OVS核心部件。 通过与OVS-vswitchd通信使用OVSDB协议,通过netlink与内核模块通信,支持多个独立的数据路径(网桥),并修改fllink

3.ovs kernel module: OVS的内核模块处理包交换和隧道,缓存流,在内核缓存中发现传输规则时进行传输,否则发送到用户空间进行处理。

四. OVS结构细节

OVS到底由哪个模块构成,以及个模块的作用。 图:

包括ovs-vswitchd主要模块、实现交换机的守护程序、支持流交换的Linux内核模块;

提供ovsdb-server轻量级数据库服务器、ovs-vswitchd以获取配置信息;

ovs-brcompatd将Linuxbridge替换为ovs-v交换机,包括获取bridge ioctls的Linux内核模块;

ovs-dpctl用于配置交换机内核模块; 某些Scripts and specs辅助OVS作为默认交换机安装在Citrix XenServer上。

更新ovs-vsctl查询和ovs-vswitchd配置;

ovs-appctl发送命令消息并执行关联的daemon;

ovsdbmonitorGUI工具。 可以远程获取OVS数据库和OpenFlow流表。

OVS还提供了支持OpenFlow的功能实现,包括

ovs-OpenFlowd :简单的openflow交换机;

ovs-controller :简单的OpenFlow控制器;

咨询和控制OVS-ofCTLopenflow交换机和控制器;

ovs-PKI :创建和管理openflow交换机公钥框架;

分析ovs-tcpundump:tcpdump修补程序和OpenFlow消息;

工作原理:

内核模块可实现诸如桥接器之类的多个“数据路径”,每一个可具有多个“vports”(诸如桥接器中的端口)。 每个数据路径都与流表(flow table )相关联地设置操作,流表是用户空间基于消息头和元数据映射到的重要信息。 正常操作将数据包转发到另一个vport。 包到达vport后,内核模块将提取流的重要信息,并在流表中查找该重要信息。 如果存在匹配的流,请执行相应的操作。 如果不匹配,则数据包将进入用户空间处理队列。 作为处理的一部分,用户空间可能会设置流,以便稍后遇到相同类型的包并在内核中进行操作。

五.范例

1 .在物理机之间通过虚拟交换机

可以看到虚拟机的两个网卡是虚拟的

交换机虚拟出来的两个端口。

  2. 一台物理机上的虚拟机之间的虚拟交换机

 

 

      原文链接:https://www.cnblogs.com/bakari/p/8097439.html

  Linux Bridge#

  和物理网络一样,虚拟网络要通信,必须借助一些交换设备来转发数据。因此,对于网络虚拟化来说,交换设备的虚拟化是很关键的一环。

  上文「网络虚拟化」已经大致介绍了 Linux 内核为了满足网络虚拟化的要求,实现了一套虚拟交换设备——Bridge。本文重点介绍下 Bridge 的加强版——Open vSwitch(OVS),并从 Bridge 过渡到 OVS 的缘由讲起,让大家有个全面的认识。

  借助 Linux Bridge 功能,同主机或跨主机的虚拟机之间能够轻松实现通信,也能够让虚拟机访问到外网,这就是我们所熟知的桥接模式,一般在装 VMware 虚拟机或者 VirtualBox 虚拟机的时候,都会提示我们要选择哪种模式,常用的两种模式是桥接和 NAT。

  NAT 也很好理解,可以简单理解为当虚拟机启用了 NAT 模式之后,宿主机便通过 DHCP 为其生成可以访问外网的 IP,当 VM 访问外网的时候,就可以用该 IP 访问,其实就是宿主机为其做了地址转换。更详细的内容请自行搜索了解。

  物理交换机有个重要的功能,就是虚拟局域网(VLAN),是对局域网(LAN)的软件化升级。一般,两台计算机通过一台交换机连接在一起就构成了一个 LAN。

  一个 LAN 表示一个广播域,这意味着这个 LAN 中的任何节点发的数据包,其他节点都能收到,这有两个问题,一个是容易形成广播风暴,造成网络拥塞,另一个是广播包无法隔离,比如节点 B 不想接收节点 A 的包,但节点 A 强行要发,这就有点说不过去了。

  解决这个问题的方案就是 VLAN,VLAN 能够对广播包进行有效隔离,它的做法是从软件上将交换机的端口虚拟出多个子端口,用 tag 来标记,相当于将交换机的端口划分多个 LAN,同一个 LAN 中的节点发出的数据包打上本 LAN 的 tag,这样,其他 LAN 中的节点就无法收到包,达到隔离的目的。

  Bridge 本身是支持 VLAN 功能的,如下图所示,通过配置,Bridge 可以将一个物理网卡设备 eth0 划分成两个子设备 eth0.10,eth0.20,分别挂到 Bridge 虚拟出的两个 VLAN 上,VLAN id 分别为 VLAN 10 和 VLAN 20。同样,两个 VM 的虚拟网卡设备 vnet0 和 vnet 1 也分别挂到相应的 VLAN 上。这样配好的最终效果就是 VM1 不能和 VM2 通信了,达到了隔离。

  Linux Bridge + VLAN 便可以构成一个和物理交换机具备相同功能的虚拟交换机了。对于网络虚拟化来说,Bridge 已经能够很好地充当交换设备的角色了。

  OVS#

  但是为什么还有很多厂商都在做自己的虚拟交换机,比如比较流行的有 VMware virtual switch、Cisco Nexus 1000V,以及 Open vSwitch。究其原因,主要有以下几点(我们重点关注 OVS):

  1)方便网络管理与监控。OVS 的引入,可以方便管理员对整套云环境中的网络状态和数据流量进行监控,比如可以分析网络中流淌的数据包是来自哪个 VM、哪个 OS 及哪个用户,这些都可以借助 OVS 提供的工具来达到。

  2)加速数据包的寻路与转发。相比 Bridge 单纯的基于 MAC 地址学习的转发规则,OVS 引入流缓存的机制,可以加快数据包的转发效率。

  3)基于 SDN 控制面与数据面分离的思想。上面两点其实都跟这一点有关,OVS 控制面负责流表的学习与下发,具体的转发动作则有数据面来完成。可扩展性强。

  4)隧道协议支持。Bridge 只支持 VxLAN,OVS 支持 gre/vxlan/IPsec 等。

  5)适用于 Xen、KVM、VirtualBox、VMware 等多种 Hypervisors。

  ......

  除此之外,OVS 还有很多高级特性,详情可以查阅官网自行了解。

  下面简单看下 OVS 的整体架构,如下图所示,OVS 在 Linux 用户态和内核态都实现了相应的模块,用户态主要组件有数据库服务 ovsdb-server 和守护进程 ovs-vswitchd。内核态中实现了 datapath 模块。

  其中, ovs-vswitchd 和 datapath 共同构成了 OVS 的数据面,控制面由 controller 模块来完成,controller 一般表示的是 OpenFlow 控制器,在 OVS 中,它可以借由第三方来完成,只要支持 OpenFlow 协议即可。

  这里额外提一点,很多的一些产品级的虚拟交换机都是自身集成了控制器,比如 Cisco 1000V 的 Virtual Supervisor Manager(VSM),VMware 的分布式交换机中的 vCenter,而 OVS 是把这个事交由第三方去做,这么做的意义还是比较大的,可以让自己的产品很好地融入到各种解决方案中。

  OpenFlow
  OpenFlow 是控制面和数据面通信的一套协议,我们常常把支持 OpenFlow 协议的交换机称为 OpenFlow 交换机,控制器称为 OpenFlow 控制器,业界比较知名的 OpenFlow 控制器有 OpenDaylight、ONOS 等。

  OpenFlow 是一个独立的完整的流表协议,不依赖于 OVS,OVS 只是支持 OpenFlow 协议,有了支持,就可以使用 OpenFlow 控制器来管理 OVS 中的流表。OpenFlow 不仅仅支持虚拟交换机,某些硬件交换机也支持 OpenFlow 协议。

  ovs-vswitchd
  ovs-vswitchd 是 OVS 的核心组件,它和内核模块 datapath 共同构成了 OVS 的数据面。它使用 OpenFlow 协议与 OpenFlow 控制器通信,使用 OVSDB 协议与 ovsdb-server 通信,使用 netlink 和 datapath 内核模块通信。

  ovsdb-server
  ovsdb-server 是 OVS 轻量级的数据库服务,用于整个 OVS 的配置信息,包括接口、交换内容、VLAN 等,ovs-vswitchd 根据这些配置信息工作。

  OpenFlow 控制器
  OpenFlow 控制器可以通过 OpenFlow 协议连接到任何支持 OpenFlow 的交换机,比如 OVS 。控制器通过向交换机下发流表规则来控制数据流向。

  Kernel Datapath
  datapath 内核模块和 ovs-vswitchd 是相互协作工作的,datapath 负责具体的收发包,而 ovs-vswitchd 通过 controller 下发的流表规则指导 datapath 如何转发包。

  举个例子,datapath 从主机物理网卡 NIC 或者 VM 的 虚拟网卡 vNIC 收到包,如果是第一次收到包,datapath 不知道怎么处理这个包,于是将其丢给 ovs-vswitchd , ovs-vswitchd 决定该如何处理这个包之后又丢给 datapath,datapath 根据 ovs-vswitchd 的指示执行相应的动作,是丢弃还是从哪个口传出去。同时,ovs-vswitchd 会让 datapath 缓存好这个包的动作,下次再来就可以直接执行动作。

  如果不是第一次收到包,就是按照之前缓存好的动作执行,这样极大地提高了数据处理的速度。

  本文先对 OVS 有个初步印象,下文再详细介绍 OVS 的其他组件。



转载于:https://www.cnblogs.com/lnlvinso/p/11203829.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。