设为首页 收藏本站
查看: 1284|回复: 0

[经验分享] OpenStack Neutron问题调试的一点点心得

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2015-10-11 08:54:22 | 显示全部楼层 |阅读模式
  在OpenStack方面也工作了一年多了,有一点点心得。终于有时间记录下来,希望对别人能有一点点帮助。不对的地方请赐教,我先谢了。
  


  下面我简单介绍一下Neutron网络从虚机到默认网桥br-int的路径和涉及到的一些概念,这样有助于对Neutron安装中问题的调试。简单来说,虚机的网卡会连接到一个由Neutron创建的Linux Bridge上,然后通过一对veth pair连接到OpenVSwitch(ovs)的bridge(一般默认为br-int)上。根据您的配置,从br-int上又可以连接到外部网络或者其他OpenStack tenant network。为什么要用一个Linux Bridge,而不是ovs bridge,是因为Neutron的Security
Group机制使用的iptables技术,它只能用在Linux Bridge上。
  


DSC0000.jpg


  


  1. 找出虚机(demo9)的ID
  

[iyunv@ip]# nova show demo9
+--------------------------------------+------------------------------------------------------------+
| Property                             | Value                                                      |
+--------------------------------------+------------------------------------------------------------+
| OS-DCF:diskConfig                    | MANUAL                                                     |
| OS-EXT-AZ:availability_zone          | nova                                                       |
| OS-EXT-SRV-ATTR:host                 | x.x.x.x                        |
| OS-EXT-SRV-ATTR:hypervisor_hostname  | x.x.x.x                        |
| OS-EXT-SRV-ATTR:instance_name        | instance-00000009                                          |

  
  2.用虚机的ID找出网卡的ID。虚机的网络配置可以从libvirt的配置中读到。

[iyunv@ip]# cat /etc/libvirt/qemu/instance-00000009.xml|grep -b3 tap
2523-    <interface type='bridge'>
2553-      <mac address='fa:16:3e:37:c0:2b'/>
2594-      <source bridge='qbr6298f624-95'/>
2634:      <target dev='tap6298f624-95'/>
2671-      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
2753-    </interface>
2770-    <serial type='file'>
  



3.从Linux Bridge的信息中可以看到网卡连接到了qbrxxx的网桥上,然后上面还有一个端口qvbxxx

[iyunv@ip]# brctl show
bridge name     bridge id               STP enabled     interfaces
qbr6298f624-95          8000.aa9a367d02ec       no              qvb6298f624-95
tap6298f624-95

  4.qvbxxx和qvoxxx形成了一个veth pair。veth pair是两个连接在一起的端口,就像一根铜线,从一个端口进入的数据,会从另外一端出来。
  

[iyunv@ip]# ip -d link show|grep -b3 6298f624-95
1026-    link/ether d2:07:58:f8:11:3f brd ff:ff:ff:ff:ff:ff
1081-20: tep2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
1163-    link/ether c6:af:e2:f7:3f:da brd ff:ff:ff:ff:ff:ff
1218:23: qbr6298f624-95: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
1310-    link/ether aa:9a:36:7d:02:ec brd ff:ff:ff:ff:ff:ff
1365:24: qvo6298f624-95: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
1472-    link/ether 8a:5c:1c:6c:81:12 brd ff:ff:ff:ff:ff:ff
1527-    veth
1537:25: qvb6298f624-95: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
1644-    link/ether aa:9a:36:7d:02:ec brd ff:ff:ff:ff:ff:ff
1699-    veth
1709:26: tap6298f624-95: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
1812-    link/ether fe:16:3e:37:c0:2b brd ff:ff:ff:ff:ff:ff

  
  


  如果不太清楚veth pair的配对,可以用ethtool找出另外一端的ID号(例如 25: qvb6298f624-95)
  

[iyunv@ip]# ethtool -S qvo6298f624-95
NIC statistics:
peer_ifindex: 25



  

5.veth pair的一端最后接在了br-int上。  

[iyunv@ip]# ovs-vsctl show|grep -b3 6298f624-95
1001-        Port br-int
1021-            Interface br-int
1050-                type: internal
1081:        Port &quot;qvo6298f624-95&quot;
1111-            tag: 1
1130:            Interface &quot;qvo6298f624-95&quot;
1169-    Bridge br-tun
1187-        Port &quot;gre0&quot;
1207-            Interface &quot;gre0&quot;

  了解了Neutron网络的路径,有利于我们排查网络路径上的问题。假定我们给虚机分配的IP为10.0.20.2/24。将一个不用的IP付给所在linux bridge即可ping通虚机。
  

[iyunv@ip]# ifconfig qbr6298f624-95 10.0.20.100/24
[iyunv@ip]# ping -c3 10.0.20.2
PING 10.0.20.2 (10.0.20.2) 56(84) bytes of data.
64 bytes from 10.0.20.2: icmp_seq=1 ttl=64 time=3.93 ms
64 bytes from 10.0.20.2: icmp_seq=2 ttl=64 time=0.572 ms
64 bytes from 10.0.20.2: icmp_seq=3 ttl=64 time=1.73 ms

  


  另外利用Neutron提供的neutron-debug工具也可以检查tenant网络的连通性。neutron-debug可以在指定的网络中加入测试端口(probe),用来执行命令。probe创建后的ID可以从probe-list中得到。
  [iyunv@ip]# export NEUTRON_TEST_CONFIG_FILE=/etc/neutron/l3_agent.ini
[iyunv@ip]#  neutron-debug probe-create 9f6b9038-6738-4222-ba2e-84304a182c38
[iyunv@ip]# neutron-debug probe-exec e84d33b8-9230-485b-8988-cc8090173499 'ping -c3 10.0.10.2'
PING 10.0.10.2 (10.0.10.2) 56(84) bytes of data.
64 bytes from 10.0.10.2: icmp_seq=1 ttl=64 time=0.086 ms
64 bytes from 10.0.10.2: icmp_seq=2 ttl=64 time=0.069 ms
64 bytes from 10.0.10.2: icmp_seq=3 ttl=64 time=0.093 ms





  
  


  


  参考文章
  OpenStack Networking Troubleshooting


  scottlowe blog



版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-125277-1-1.html 上篇帖子: 基于OPenStack平台的C++ API 设计 下篇帖子: openstack登陆dashboard连接失败:[Errno 111] Connection refused
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表