ovs

openvswitch常用操作

霸气de小男生 提交于 2020-03-31 07:15:50
原理讲解:   当我们创建一个交换机(网桥)之后即(ovs-vsctl add-br brname),此时网络功能不受影响,但是 会产生一个虚拟网卡,名字为brname(与网桥名字同名,可以使用  ifconfig brname查看),之所以会产生一个虚拟网卡 ,是为了实现接下来的网桥(交换机)功能,有了这个交换机以后,还需要为这个交换机增加端口(port), 一个  端口就相当于一个物理网卡 ,当网卡加入到这个交换机之后,其工作方式就和普通交换机的一个端口的工作方式类似了;   再执行(ovs-vsctl add-port brname port)之后,即网卡加入网桥之后,按照网桥的工作标准工作,则加入的端口(网卡)必须以混杂模式工作,工作在链路层,处理2  层的帧,所以这个port就不需要配置IP的(应该没有见过哪个交换机的端口有IP的吧)   那么接下来你可能会问,通常的交换机不都是有一个管理接口,通过telnet到交换机上进行配置的,那么在OVS中创建的虚拟机有没有该接口呢,有的!上面提到创建交换机brname的时候产生了一个虚拟网口brname,那么,给这个虚拟网卡配置了ip之后,就相当于给交换机的管理接口配置了IP,对此一个正常的虚拟交换机就搞定了!!   除此之外,与网桥同名的网卡(端口)起到了桥的功能; 二、工作场景   ovs主要是用来虚拟化环境中

Open VSwitch简介

半腔热情 提交于 2020-03-28 20:13:07
OVS简介   OpenvSwitch ,简称 OVS 是一个虚拟交换软件,主要用于虚拟机 VM 环境,作为一个虚拟交换机,支持 Xen/XenServer, KVM, and VirtualBox 多种虚拟化技术。虽然是虚拟交换机,但是其工作原理与物理交换机类似。在虚拟交换机的实现中,其两端分别连接着物理网卡和多块虚拟网卡,同时虚拟交换机内部会维护一张映射表,根据 MAC 地址寻找对应的虚拟机链路进而完成数据转发。   OpenvSwitch 是实现虚拟化网络的重要基础组件,在 OpenStack 中利用 OpenvSwitch 作为底层部件来完成虚拟网络提供和租户网络管理。 OpenvSwitch 可以实现访问控制功能,通过转发规则,可以实现简单的安全行为,包括通过、禁止等。 OVS组件 ovsdb-sever: OVS 的数据库服务器,用来存储虚拟交换机的配置信息。它于 manager 和 ovs-vswitchd 交换信息使用了 OVSDB(JSON-RPC) 的方式。 ovs-vswitchd: OVS 的核心部件,实现 switch 的 daemon ,包括一个支持流交换的 Linux 内核模块;和上层 controller 通信遵从 OPENFLOW 协议,与 ovsdb-server 通信使用 OVSDB 协议,和内核模块通过 netlink 通信,支持多个独立的

RYU 灭龙战 third day

♀尐吖头ヾ 提交于 2020-03-24 07:59:57
RYU 灭龙战 third day 前言 传统的交换机有自学习能力。然而你知道在SDN的世界里,脑子空空的OpenFlow交换机是如何学习的吗?今日说法带你领略SDN的mac学习能力。 RYUBook 从中学习 场景描述 传统交换机原理 学习连接到传统交换机的主机的mac地址,并把其存在mac地址表中 对于已经记录下来的mac地址,若是收到送往该mac地址的数据包时,就往对应的端口进行转发 对于mac地址表中没有的数据包,则进行flooding OpenFlow交换机实现传统交换机功能 对于接收到的数据包针对指定的端口转发 把接收到的数据包发送给控制器(Packet-In) 把从控制器接收到的数据包转发到指定的端口(Packet-Out) 图示 1.初始状态 mac地址表和交换机的流表均为空的表项 2.Host A -> Host B 当Host A 向 Host B 发送数据包时。这个时候会出发PacketIn消息。Host A的mac地址以及对应的端口会记录到mac地址表内。然后由于Host B的mac不在mac地址表内,此时会flooding 3.Host B -> Host A 数据包从host B回复给Host B时,在Flow table上新增一条流表,讲数据包转发给端口1 4.Host A -> Host B 再次由主机A向主机B发送数据包,新增流表

OVN简介

点点圈 提交于 2020-03-12 16:36:47
三、OVN入门 3.1 OVN简介 Open vSwitch(OVS)是一款开源的“虚拟交换机”,控制协议方面它不但支持OpenFlow的所有特性而且扩展了部分OpenFlow的功能;Overlay协议方面它支持GRE, VXLAN, STT, Geneve四种主流Overlay数据包。OVS已经是 数据平面 的事实标准了,很多白盒交换机都兼容它提供的接口;还有一些x86架构的交换机则直接是基于OVS和DPDK的。所以无论“上层”的ODL、ONOS、Neutron如何的翻天覆地的“闹腾”而OVS还是岿然不动(最后流表的执行者还是OVS)。 但是长期一来OVS都缺乏一个统一的网络模型(Neutron虽然花费巨大力气实现一个网络模型但是仅仅适用于OpenStack而无法用于容器更加无法单独使用),于是在2015年OVS社区宣布了一个子项目——Open Virtual Network(OVN)。它旨在为OVS提供一个控制平面,通过一个统一的网络模型为容器、虚拟机提供相同的网络服务。 虽然很多人不愿意承认但是事实上它瞄准的对象是三个——ODL、ONOS、Neutron。我们可以看一下OpenStack中networking-ovn子项目,它是基于OVN实现的“Neutron”旨在替换Neutron的L2、L3功能。对比传统的Neutron的L2、L3的实现代码它的代码量非常少

Neutron 理解 (4): Neutron OVS OpenFlow 流表 和 L2 Population [Netruon OVS OpenFlow tables + L2 Population]

余生长醉 提交于 2020-03-07 17:35:32
OVS bridge 有两种模式:“normal” 和 “flow”。“normal” 模式的 bridge 同普通的 Linux 桥,而 “flow” 模式的 bridge 是根据其流表(flow tables) 来进行转发的。Neutron 使用两种 OVS bridge:br-int 和 br-tun。其中,br-int 是一个 “normal” 模式的虚拟网桥,而 br-tun 是 “flow” 模式的,它比 br-int 复杂得多。 1. 基础知识 1.1 OpenFlow 结构、流表和数据包处理 下面左图是 Open vSwitch 中流表的结构。右图这个流程图详细描述了数据包流通过一个 OpenFlow 交换机的过程。 更详细的描述请参见 这里 。 1.2 ARP Proxy Proxy ARP 就是通过一个主机(通常是Router)来作为指定的设备对另一个设备作出 ARP 的请求进行应答。 举个例子:主机A,IP地址是192.168.0.11/24;主机B,IP地址是192.168.1.22/24。主机A和主机B通过路由器R相连接,并且路由器R启用了Proxy ARP,并配置有路由。网络拓扑如下: eth0 eth0 eth1 eth0 A------------------------Router R----------------------B 192.168

【docker+openvswitch系列三】ovs-docker配置网络

给你一囗甜甜゛ 提交于 2020-02-28 22:15:39
ovs-docker配置网络 docker和openvswitch的环境搭建教程参考: 【docker+openvswitch系列一】在ubuntu下搭建docker环境 【docker+openvswitch系列二】在ubuntu下搭建openvswitch环境 本文参考:https://www.cnblogs.com/whych/p/9601889.html 首先搬来了实验结构图: 正题: 一、辅助工作: 1. 安装openvswitch项目提供的支持Docker容器的辅助脚本ovs-docker: wget https://github.com/openvswitch/ovs/raw/master/utilities/ovs-docker chmod a+x ovs-docker ps:该链接时好时坏,作者没有找到更好的下载方法,如果不成功多试几次 2. 安装Docker的辅助镜像,方便在容器里面使用linux命令: service docker start 开启docker服务 docker pull busybox:latest 下载busybox镜像 准备工作做好了我们开始正式搭建网络,嘿嘿嘿 二、正式开始 1. 搭建网桥和docker容器: ovs-vsctl add-br br0 ovs-vsctl add-br br1 ovs-vsctl show

Openstack中Neutron的实现模型

血红的双手。 提交于 2020-02-26 02:27:34
一、Neutron概述 众所周知,整个Open stack中网络是通过Neutron组件实现,它也成为了整个Open stack中最复杂的部分,本文重点介绍Neutron的实现模型与应用场景,闲言少叙,步入正题。 1. Neutron的架构 Neutron的架构如下图所示: Neutron Serve由Core Plugins和Service Plugins组成,原生Neutron的Core Plugins使用的是ML2插件,它又分为类型驱动和机制驱动,可以提供基础的网络类型和实现机制,高级的功能如×××等通过Service Plugins实现,同时Neutron作为一个开放性的组件,允许厂商在1,2,3位置处对接自己的插件,本文采用Core Plugins的ML2插件进行说明,通过OVS重点讲述VLAN和VXLAN类型的网络。 2. Open stack部署模型 以3节点为例,Open stack由控制节点,网络节点和计算节点组成,当位于控制节点的Neutron server通过RESTful或CLI接收到请求后,会通过RPC的方式将信息传递给网络和计算节点的Agent,Agent在指挥具体的程序实现功能 举例来说,当Neutron Server通过CLI接收到开启DHCP功能的指令后,会将该指令下发给DHCP Agent,DHCP

openvswitch 使用记录(一)

馋奶兔 提交于 2020-02-22 16:27:49
openvswitch-2.12.0 基于loongson平台的编译安装 下载源码路径为: http://www.openvswitch.org/download/ tar xvf ../../ext_tools/openvswitch-2.12.0.tar.gz -C ./ cd openvswitch-2.12.0/ 1、./boot.sh 2、./configure --with-linux=/lib/modules/3.10.0irqfd+/build/ 或者 ./configure --with-linux=/lib/modules/`uname -r`/build 或者 ./configue 3、make -j4 make install make modules_install modprobe openvswitch //加载openvswitch内核模块 启动脚本内容 #!/bin/bash echo "start" export PATH=$PATH:/usr/local/share/openvswitch/scripts ovs-ctl start echo "start ovsdb-serveryy" ovs-ctl --no-ovs-vswitchd start echo "start ovs-vswichd server" ovs-ctl --no

ovs 实战

风流意气都作罢 提交于 2020-02-12 17:35:28
[root@kunpeng82 ovs]# ovs-vsctl add-br ovs-switch [root@kunpeng82 ovs]# ovs-vsctl add-port ovs-switch p0 -- set Interface p0 ofport_request=100 ovs-vsctl: Error detected while setting up 'p0': could not open network device p0 (No such device). See ovs-vswitchd log for details. ovs-vsctl: The default log directory is "/var/log/openvswitch". 添加ovs网桥 ovs-vsctl add-br ovs-switch 添加三个port #ovs-vsctl add-port ovs-switch p0 -- set Interface p1 ofport_request=100 #ovs-vsctl add-port ovs-switch p1 -- set Interface p1 ofport_request=100 #ovs-vsctl add-port ovs-switch p2 -- set Interface p2 ofport