排查ovs网络中虚实结合不通的问题

来源:互联网 发布:新会维修网络 编辑:程序博客网 时间:2024/04/29 10:56

问题描述:在neutron网络中创建了子网192.168.201.0/24,子网中有一台虚拟机ip为192.168.201.166,也有一台物理机,物理机挂载在千兆交换机下面,千兆交换机挂载在SDN交换机下面,已用物理机的mac地址通过neutron获取了子网ip,ip为192.168.201.168,问题是物理机不能自动通过dhcp获取ip。(时间仓促,步骤有些乱,以后有时间再整理)

解决步骤如下:

1、    首先看下ovs的配置:ovs-vsctl show

研发环境上只有五个节点,加上SDN交换机,一共是六个vtep,所以需要五条隧道,上图是添加好后的截图,添加的命令为:
ovs-vsctl add-port br-tun vxlan0 -- set interface vxlan0 type=vxlan options:df_default="true" option:in_key=flow option:local_ip="xxxxxx" option:out_key=flow option:remote_ip="xxxxxx"
2、然后看下控制节点上起的dns服务:
因为知道自己的网络是201段,所以通过openstack后台查出网络id,然后通过ports表查出设备名称

port ID 的前11数字就是tap的设备名字,所以设备名称是tap48ae812c-f6。

3、通过设备名称得到设备的编号:ovs-ofctl show br-int | grep 'tap48ae812c-f6'

4、显示flow entries:ovs-ofctl dump-flows br-int | grep 140

5、查看br-int:ovs-ofctl dump-flows br-int | grep "table=0" | grep "in_port=53"

6、查看br-tun:ovs-ofctl dump-flows br-tun | grep "table=22"

原先没有in_port=53的那条记录,现在添加上了,添加的语句为:
ovs-ofctl add-flow br-tun "table=0, priority=1,in_port=53 actions=resubmit(,4)"
删除语句为:
ovs-ofctl del-flows br-int "table=0, in_port=53"
7、查看流表的规则是否完整:

原先的output是缺少一个的,现在重新运行neutron的extension代码,规则已经全了。

8、用物理机去ping虚拟机接口,然后去计算节点上去抓包:tcpdump -i eth1 -ennvv udp

如果只有大量的ARP包说明不通,如果有icmp包,说明虚拟机到sdn交换机是通的。

9、后来通过调整物理网络,tcp抓包的数据中有如下数据,说明虚拟机到计算节点是没有问题的,但是没有168回166的包,说明虚拟机到计算节点之间可能有问题。

10、我们定义4表为vxlan的数据处理表,vni是153,转化成16进制是0x99,查看流表信息:ovs-ofctl  dump-flows br-tun | grep "table=4" | grep "0x99"

11、然后查找处理vlan32的port:ovs-vsctl show

12、根据port查找端口:ip addr ls | grep 8bc80dcd-85

依附关系:372 --> 371 --> 369 --> 370,如果数据包到了372,就说明已经到虚拟机内部了,现在通过tcpdump抓tap8bc80dcd-85的包是抓不到的,但是能抓到qvo8bc80dcd-85的数据包,说明可能是iptables的问题,后来停掉iptables就好了。

0 0