ovs

美团云OVS-DPDK 2017年工作总结(SRIOV、热升级、热扩容、跨OVS-kernel热迁移)

泪湿孤枕 提交于 2019-12-04 20:02:21
2017年,美团云网络研发团队,对OVS-DPDK的高可用方面,做了很多自研工作,解决了很多关键难题,同时也积累了很多switch性能优化的经验。 1. SRIOV方式优化local性能 KNI和TAP是常用的DPDK网络设备和内核数据交互的方案,为了提升Local port 的性能,满足一些宿主机特殊场景。美团云将SRIOV和BOND结合,优化OVS-DPDK bridge的local port性能,现在Local 可以跑满万兆。 2. 平滑热升级 OVS-DPDK进程重启时间长,一直是存在的一个重要问题。美团云在今年上半年,重点解决了这个问题。这里采用的方案主要是双进程模式,以及dpdk vhost后端双进程模式,同时也对restore flow时间做了优化。60+VM,10G,2000条流表的情况下,原生OVS-DPDK需要2min+时间,经过改造后,可以达到1s以内。达到了OVS-DPDK进程平滑热升级,以及故障快速自恢复的功能。 3. VM内存热扩容 云环境中,有很多用户有对动态VM内存热扩容的需求,原生OVS-DPDK还不支持大页VM的热扩容,会引发VM以及OVS进程crash。我们的技术同学对DPDK-VHOST端进行了修改,解决了crash问题。同时也分析了大内存VM初始化时间长的问题,解决了超大内容VM扩容时间长的问题。 4. 跨OVS-kernel和 OVS

Tap as a Service

戏子无情 提交于 2019-12-04 16:35:29
TAPaaS,全称为Tap as a Service,其主要功能是将流量镜像到特定的、运行有流量分析软件的虚拟机中,以实现租户流量的可视化。 数据类型 TaaS中主要定义了两个数据类型,如下: Tap Service :指的是一个流量镜像服务的实例,其中一个Tap Service需要关联一个Destination Port(流量需要镜像到的目的地,即:镜像目的地),同时,一个Tap Service可以包含多个Tap Flow,对于Tap Flow的解释参见如下。Tap Service中定义了若干个字段值,具体如下所示,其中port_id即为关联的Destination Port。 1234567891011121314151617 'tap_services': { 'id': {'allow_post': False, 'allow_put': False, 'validate': {'type:uuid': None}, 'is_visible': True, 'primary_key': True}, 'tenant_id': {'allow_post': True, 'allow_put': False, 'validate': {'type:string': None}, 'required_by_policy': True, 'is_visible': True},

OpenFlow(OVS)下的“路由技术”

牧云@^-^@ 提交于 2019-12-04 08:40:46
前言 熟悉这款设备的同学,应该也快到不惑之年了吧!这应该是Cisco最古老的路由器了。上个世纪80年代至今,路由交换技术不断发展,但是在这波澜壮阔的变化之中,总有一些东西在嘈杂的机房内闪闪发光,像极了工程师的头顶,充满了智慧! Cisco“古董”路由器 本文主要描述了一种将三层路由变成二层交换转发(以及二层转发变成三层路由)的实现方式,以应对OVS(OpenFlow)跨网段路由复杂的问题;当然技术本身是客观的,具体应用还要看场景。 随着SDN技术不断“发展”,玩路由器交换机的变成了“传统网工”,搞控制器、转发器的才算是正常工作,当然任何新技术的掌握都离开对“历史”了解或者反刍;也许几年以后当有人听到一条一条的配置ACL、配置路由表是一件很不可思议的事情,因为那时所有的配置都是控制器做好模型生成配置自动下发的,点点鼠标或者写个py脚本就可以了 传统的路由交换机 OK,言归正传,我们先来了解一下传统路由、交换的区别: 交换: 一般指的是同网段内分组包的转发,转发依据:MAC地址 PC视角:当两台主机在同一个网段,PC1需要访问PC2时,PC1首先会发送arp请求报文,请求PC2的的MAC地址;收到响应后,PC1会把PC2的MAC地址封装在分组包的目的MAC的位置,然后将分组报文扔给交换机;PC2也会做类似的动作。 交换机视角:交换机会接收网段上的所有数据帧

2019SDN上机第二次作业

这一生的挚爱 提交于 2019-12-04 06:28:58
2019 SDN上机第二次作业 1. 利用mininet创建如下拓扑,要求拓扑支持OpenFlow 1.3协议,主机名、交换机名以及端口对应正确,请给出拓扑Mininet执行结果,展示端口连接情况 1.1创建拓扑 1.2Mininet执行结果 1.3展示网络信息 2.直接在Open vSwitch下发流表,用vlan得到下列虚拟网段,请逐条说明所下发的流表含义 将主机1,2,3进入s1的包打上vlan tag,转发端口4 sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4096-\>vlan_vid,output:4 sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4097-\>vlan_vid,output:4 sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=3,actions=push_vlan:0x8100,set_field:4098-\>vlan_vid,output:4 将从端口4的包去除vlan tag,

2019SDN上机第二次作业

 ̄綄美尐妖づ 提交于 2019-12-04 06:24:38
1. 利用mininet创建如下拓扑,要求拓扑支持OpenFlow 1.3协议,主机名、交换机名以及端口对应正确,请给出拓扑Mininet执行结果,展示端口连接情况  答:创建拓扑的方法有两种:一种是使用python代码编写拓扑的方式,另外一种是用miniedit创建拓扑。在本次实验中使用miniedit的方式。截图如下: python代码如下: from mininet.topo import Topo class Topo2( Topo ): def init ( self ): Topo.__init__( self ) s1 = self.addSwitch('s1') s2 = self.addSwitch('s2') h1 = self.addHost('h1') h2 = self.addHost('h2') h3 = self.addHost('h3') h4 = self.addHost('h4') h5 = self.addHost('h5') h6 = self.addHost('h6') self.addLink(h1,s1,1,1) self.addLink(h2,s1,1,2) self.addLink(h3,s1,1,3) self.addLink(h4,s2,1,1) self.addLink(h5,s2,1,2) self.addLink(h6

2019 SDN上机第二次作业

大城市里の小女人 提交于 2019-12-04 06:22:34
2019 SDN上机第二次作业 1.利用mininet创建如下拓扑,要求拓扑支持OpenFlow 1.3协议,主机名、交换机名以及端口对应正确,请给出拓扑Mininet执行结果,展示端口连接情况 1.1创建拓扑 1.2执行结果 1.3展示网络信息(包括端口) 1.4展示端口连接情况 2.直接在Open vSwitch下发流表,实现如下连通性要求,请逐条说明所下发的流表含义 2.1s1流表 #s1将从端口号为1,2,3的主机发来的数据贴上相同的vlan tag,然后从4端口发往s2(vlan_id从0开始) sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4096-\>vlan_vid,output:4 sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4097-\>vlan_vid,output:4 sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=3,actions=push_vlan:0x8100,set_field

2019 SDN上机第2次作业

僤鯓⒐⒋嵵緔 提交于 2019-12-04 05:06:52
2019 SDN上机第2次作业 1. 利用mininet创建如下拓扑,要求拓扑支持OpenFlow 1.3协议,主机名、交换机名以及端口对应正确,请给出拓扑Mininet执行结果,展示端口连接情况 创建拓扑 2. 直接在Open vSwitch下发流表,用vlan得到下列虚拟网段,请逐条说明所下发的流表含义 将h1,h2,h3进入s1的包打上vlan tag,转发端口4 sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4096-\>vlan_vid,output:4 sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4097-\>vlan_vid,output:4 sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=3,actions=push_vlan:0x8100,set_field:4098-\>vlan_vid,output:4 将从端口4的包去除vlan tag, 并根据tag进行转发 sudo ovs-ofctl -O

2019 SDN上机第2次作业

旧巷老猫 提交于 2019-12-04 05:02:28
1. 利用mininet创建如下拓扑,要求拓扑支持OpenFlow 1.3协议,主机名、交换机名以及端口对应正确,请给出拓扑Mininet执行结果,展示端口连接情况 from mininet.topo import Topo from mininet.net import Mininet from mininet.node import RemoteController,CPULimitedHost from mininet.link import TCLink from mininet.util import dumpNodeConnections class MyTopo( Topo ): def __init__( self ): Topo.__init__( self ) s = [] for i in range( 2 ): sw = self.addSwitch( 's{}'.format( i + 1 ) ) s.append( sw ) count = 1 for sw1 in s: for i in range(3): host = self.addHost( 'h{}'.format( count ) ) self.addLink( sw1, host ) count += 1 self.addLink(s[0],s[1]) topos = { 'mytopo'

2019 SDN上机第2次作业

帅比萌擦擦* 提交于 2019-12-04 04:58:18
一、利用mininet创建如下拓扑,要求拓扑支持OpenFlow 1.3协议,主机名、交换机名以及端口对应正确,请给出拓扑Mininet执行结果,展示端口连接情况 创建py文档 在终端输入命令,创建拓扑 sudo mn --custom ./SDN1.py --topo mytopo --switch ovsk,protocols=OpenFlow13 使用pingall命令测试所有节点连通性 结果Results: 100% dropped 为互不连通状态 使用net命令查看拓扑 二、 直接在Open vSwitch下发流表,用vlan得到下列虚拟网段,请逐条说明所下发的流表含义 h1 -- h4互通 h2 -- h5互通 h3 -- h6互通 其余主机不通 sw1 sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=1,actions=push_vlan:0x8100,set_field:4096->vlan_vid,output:4 //将主机1进入sw1的包打上vlan tag,转发端口4 sudo ovs-ofctl -O OpenFlow13 add-flow s1 priority=1,in_port=2,actions=push_vlan:0x8100,set_field:4097->vlan_vid

2019 SDN上机第2次作业

我与影子孤独终老i 提交于 2019-12-04 04:28:35
1. 利用mininet创建如下拓扑,要求拓扑支持OpenFlow 1.3协议,主机名、交换机名以及端口对应正确,请给出拓扑Mininet执行结果,展示端口连接情况 可以使用miniedit创建相关拓扑也可以使用python代码编写拓扑的方式创建相关拓扑,本次采用miniedit 端口连接情况如下(注意连线顺序): 2. 直接在Open vSwitch下发流表,用vlan得到下列虚拟网段,请逐条说明所下发的流表含义 使用以下命令可以实现为主机1、2、3发送的报文分别打上不同的vlan_id并从交换机s1端口4发送出去 add-flow需要注意的参数为 协议(OpenFlow13)、交换机(s1)、进端口(in_port)、对匹配报文执行的操作(actions=)、在报文外层压入一层vlan tag(push_vlan)、设置VLAN ID(set field值为4096+vlan_id)、出端口(output) sudo ovs-ofctl add-flow -O OpenFlow13 s1 in_port=1,actions=push_vlan:0x8100,set_field:4097-\>vlan_vid,output:4//将交换机s1从端口1收到的报文打上vid = 1 的vlantag并从端口4发送出去 sudo ovs-ofctl add-flow -O