• 前言

最近使用搭建了一个基于VXLAN的OpenStack 环境,发现要去dump ovs interfaces的包其实还是蛮麻烦的,

经过多番努力,找到了如下的在openstack下网络环境的一些trouble shooting的方法。

除了常见的工具如:ping, host, traceroute, tcpdump, ip neighbor, arp, arping, 还可以使用port mirror来完成ovs 包的dump。


  • 环境

我的环境里面有两个nodes,node1 启用了Nova和Neutron,node2只启用了Nova相关服务。

Node1的ovs环境:

sudo ovs-vsctl show
47a7cda2--485a-8ae4-1be7cf53ed44
Bridge br-tun
fail_mode: secure
Port "veth0"
Interface "veth0"
Port patch-int
Interface patch-int
type: patch
options: {peer=patch-tun}
Port br-tun
Interface br-tun
type: internal
Port "vxlan-0a674d0e"
Interface "vxlan-0a674d0e"
type: vxlan
options: {df_default="true", in_key=flow, local_ip="10.103.77.13", out_key=flow, remote_ip="10.103.77.14"}
Bridge br-int
fail_mode: secure
Port "tapb5e83be9-f9"
tag:
Interface "tapb5e83be9-f9"
type: internal
Port "qvo42d126bc-e1"
tag:
Interface "qvo42d126bc-e1"
Port int-br-ex
Interface int-br-ex
type: patch
options: {peer=phy-br-ex}
Port patch-tun
Interface patch-tun
type: patch
options: {peer=patch-int}
Port br-int
Interface br-int
type: internal
Bridge br-ex
Port "eth1"
Interface "eth1"
Port br-ex
Interface br-ex
type: internal
Port phy-br-ex
Interface phy-br-ex
type: patch
options: {peer=int-br-ex}
ovs_version: "2.0.2"

我要做的是dump出br-tun上patch-int这个interface的所有packages, 以便看到package在经过br-tun转换后的样子

  • 首先,创建类型为veth的interface
ip link add type veth
ip link set veth0 up
ip link set veth1 up
  • 其次,把这个veth0添加到br-tun上面
ovs-vsctl add-port br-tun "veth0"
  • 然后,创建port mirror
ovs-vsctl -- set Bridge br-tun mirrors=@m \
-- --id=@veth0 get Port veth0 \
-- --id=@patch-int get Port patch-int \
-- --id=@br-tun get Port br-tun \
-- --id=@m create Mirror name=veth select-src-port=@br-tun,@patch-int \
select-dst-port=@br-tun,@patch-int output-port=@veth0

成功后会输出一个mirror的id,你可以使用

ovs-vsctl list bridge

查看mirror是否在outout里面

_uuid               : 18303d75--408d-b9d7-5ef0424734f2
controller : []
datapath_id : "0000763d30188d40"
datapath_type : system
external_ids : {}
fail_mode : secure
flood_vlans : []
flow_tables : {}
ipfix : []
mirrors : [d2bcbe65-ae4c-4b88-9172-cf84dae39d0e]
name : br-tun
netflow : []
other_config : {}
ports : [3eb258b0-f9db-4dfa-bbd5-697162f26142, 6755f9ce-a8fa-4b52-ba3a-06c798e12b9b, c45bbbd7-6baf--b0e4-493d74ae0589, ffcf5619-baaf-469a-bb2d-9016ede95c92]
protocols : ["OpenFlow10"]
sflow : []
status : {}
stp_enable : false
  • 最后,使用tcpdump来查看veth0上的package(我一般会把output输出到cap文件,然后用wireshark查看,非常直观)
sudo tcpdump -i veth0 -vv -ne -w veth0.cap

使用wireshark查看你会发现,这些package已经是被translate成普通而不是VXLAN的package了,所以看不到vxlan的tunnel id了

完成tcpdump后使用下面命令删除mirror

ovs-vsctl clear Bridge br-tun mirrors

参考资料:

VXLAN:https://tools.ietf.org/pdf/rfc7348.pdf

Neutron Troubleshooting:http://docs.openstack.org/openstack-ops/content/network_troubleshooting.html

OpenvSwitch Port Mirror in OpenStack Neutron的更多相关文章

  1. Openstack Neutron OVS ARP Responder

    ARP – Why do we need it? In any environment, be it the physical data-center, your home, or a virtual ...

  2. Openstack Neutron L2 Population

    Why do we need it, whatever it is? VM unicast, multicast and broadcast traffic flow is detailed in m ...

  3. OpenStack—neutron组件介绍与安装

    neutron介绍 Neutron 概述:传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要创建.修改和 ...

  4. 六、OpenStack—neutron组件介绍与安装

    一.neutron介绍 Neutron 概述:传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要创建.修 ...

  5. [转]OpenStack Neutron运行机制解析概要

    转载自:http://panpei.net.cn/2013/12/04/openstack-neutron-mechanism-introduce/ 自从开学以来,玩OpenStack也已经3个月了, ...

  6. openstack Neutron分析(3)—— neutron-dhcp-agent源码分析

    1.neutron dhcp3个主要部件分别为什么?2.dhcp模块包含哪些内容?3.Dnsmasq配置文件是如何创建和更新的?4.DHCP agent的信息存放在neutron数据库的哪个表中? 扩 ...

  7. OpenStack Neutron 之 Load Balance

    OpenStack Neutron 之 Load Balance 负载均衡(Load Balance)是 OpenStack Neutron 支持的功能之一.负载均衡能够将网络请求分发到多个实际处理请 ...

  8. openstack——neutron网络服务

    一.neutron 介绍:   Neutron 概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要 ...

  9. openstack neutron中涉及的网络设备

    一.openstack neutron网络设备介绍 Bridge(网桥) 用于将两个LAN连接起来,主要靠的MAC地址学习机制.当网桥的Port收到包时会将包的源mac和port ID关联起来记入ma ...

随机推荐

  1. JSP EL表达式 param、paramValues的使用

    JSP EL表达式 param.paramValues的使用: <%@ page language="java" import="java.util.*" ...

  2. overflow:hidden 你所不知道的事

    overflow:hidden 你所不知道的事 overflow:hidden这个CSS样式是大家常用到的CSS样式,但是大多数人对这个样式的理解仅仅局限于隐藏溢出,而对于清除浮动这个含义不是很了解. ...

  3. CentOS 6.5下NFS安装配置

    [root@local /]# yum -y install nfs-utils rpcbind3.创建共享目录:[root@local /]# mkdir /sharestore4.NFS共享文件路 ...

  4. JDK源码分析-AtomicInteger

    AtomicInteger可以看做Integer类的原子操作工具类.在java.util.concurrent.atomic包下,在一些使用场合下可以取代加锁操作提高并发性.接下来就从几个方面来介绍: ...

  5. 三分钟解读springmvc依赖

    长期以来都在写SSM框架的项目,却未能深入理解框架的搭建原理,而只是浅薄的理解前辈的架构,然后不断套用,项目做过几个,但框架的内涵却没有把握.小编打算今天从SpringMVC的依赖分析做起,一步步进行 ...

  6. 微信小程序----关于变量对象data 和 前端wxml取后台js变量值

    (一)页面变量对象data 对象data 有两个方面用途 第一,前端wxml的数据渲染是通过设置此对象中定义的变量进行关联展现的 第二,定义JS页面中的页面局部变量,使其整个页面中可使用或调用 对象d ...

  7. 用css改变console.log的输出样式

    console.log允许你通过css来格式化输出,格式如下: console.log('%c字符串[%c字符串]', 样式1, [样式2]) 其中"%c"为模板字符串 例子: 1 ...

  8. UI 常用(UIButton)

    1.手势 UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@sele ...

  9. iOS 即时通讯 + 仿微信聊天框架 + 源码

    这些你造吗? 即时通讯(IM),在IOS这片江湖里面已经算是一个老者了,我这小旋风也是在很早以前巡山的时候,就知道有即时通讯这个妖怪,以前也多多少少接触过一些,在造APP的时候用过,哎呀,说着说着就感 ...

  10. java udp 发送小数数字(较难)

    代码全部来自:http://825635381.iteye.com/blog/2046882,在这里非常感谢了,我运行测试了下,非常正确,谢谢啊 服务端程序: package udpServer; i ...