从CL210 OpenStack考试看Neutron网络

CL210考试环境

笔者在今年5月份参加了OpenStack CL210培训。但是对培训过程中实验环境的网络拓扑当时没有弄明白,后来看了一些资料,总算有了大概的了解。

书上实验的拓扑图见上图。乍一看,是不是有点复杂?

在实验中,每个人分配了一个台式机,台式机是一个RHEL操作系统。通过里面的KVM虚拟化,虚拟出了两个虚拟机Server-a和Server-b。Server-a有两个网卡:eth1和eth2。后来我们做的事情,是在Server-a上以All-in-one的方式安装OpenStack,第二个实验是将ServerB作为Nova-Compute加入到OpenStack中。

当server-a上的openstack安装好以后,创建的虚拟机实例就是基于servera RHEL中的KVM做的。也就是说,最终我们创建的openstack实例,实际上的三层嵌套虚拟化。

谈到OpenStack的网络,很多人不是很了解细节,但vSphere的网络大家都比较了解,下面我们先上一张熟悉的图:

  • 一个标准的虚拟机交换机,可以有上行链路或者没有上行链路(Uplink)。这取决于这个VSS是否要对外通讯。而一个VSS实际是一个虚拟的二层桥接设备。
  • 一个VSS可以接多个VM,通过不同的PortGroup可以区分vLAN。
  • 在一个esxi上的VSS的通讯,是在VMKernel完成的。而在不同esxi上的VSS,是通过物理网络来通讯的。
  • 在vSphere中,物理网卡叫Nic,虚拟网卡叫vNIC。

接下来,我们看下面这张图:

在上图中,最右边的Instance,也就是是三层嵌套下的OpenStack实例。这这个实例,要实现对完通讯,需要有几个步骤。

第一步:虚拟机发出网络包。虚拟机实例有一个虚拟网卡,叫eth0。数据包从eth0出来以后,首先连接到vnet0上。vnet0是一个tap设备。那么,什么是tap呢?

Tap实现连接作用,实现二层包通讯。在上图中,tap连接了qbr和实例中的eth0。我们可以理解成tap将虚拟机的虚拟网卡和qbr设备连接到了一起。

第二步:网络包到达qbr。

那么qbr是什么呢?

qbr是一个Linux网桥。这个网桥存在于server-a上。从qbr到br-ex经过了两个设备:qvo和qvb。这两个设备是成对出现的,用于连接linux bridge和OVS bridge。qvb位于bridge侧,qvo位于OVS bridge侧。

第三步:网络包到达br-int。

那么,什么是br-int呢?br-int是由OVS虚拟出来的网桥,它的作用和vSphere中的VSS是类似的。(实际上,OVS在作为网桥功能的时候,本身与Linux Bridge类似)。Br-int的作用,就是将本KVM Hypervisor上的所有虚拟机实例都连接到这个虚拟交换机上。

我们知道,在vSphere的VSS上,可以通过portgroup区分vLAN。同样,br-int的port也有这个功能。

Port的一个重要的方面就是VLANConfiguration,有两种模式:

  • trunk port
  • access port

第四步:网络包到达Router1

我们接着看,br-int向右连接到了qdhcp上,它的作用就是为虚拟网络提供dhcp功能的。

br-int向左连接到了router1上,而router1又连接到了br-ex上。Br-init与路由器的连接,经过了qr设备,qr提供的是从二层虚拟网络到三层虚拟网络的连接。

router1实现的是路由功能,它也是由OVS提供的。它里面包含的内容是一系列的路由表,作用是为不同子网提供路由功能。路由器中还有NAT的表,负责给实例分配浮动IP。

第五步:网络包通过br-ex发出去到物理网络:

br-ex也是一个OVS虚拟网桥,br-ex实际上是混杂模式加载在物理网卡上,实时接收着网络上的数据包。

那么有人会问,在OpenStack架构中,既然有OVS提供bridge,为何还要用Linux网桥?为什么不让虚拟机实例中的eth0(vnet0)直接连接到br-int上呢?

答案如下:

也就是说,理想情况下,本来虚拟机虚拟网卡连接设备tap0,直接连接br-ini应该是可以的。但由于Openstack的安全组使用的是iptables,而OVS不支持iptables,因此才在vnet0和br-int上放了一个linux bridge,用于存放iptables规则。这算是一个折中方案。

需要指出的是,目前Neutron支持的网络分为两大类型,Provider Network和Self Network。

Provider network:管理员创建的和物理网络有直接映射关系的虚拟网络。使用Provider Network,虚拟机对外通讯不需要走Neutron中的Router。

Tenant network:租户普通用户创建的网络,物理网络对创建者透明,其配置由 Neutron根据管理员在系统中的配置决定。这种网络下,虚拟机对完通讯需要经过Router。而Router也可以隔离租户。

无论哪种方式,对于我们在分析内部虚拟网络的网络包走向,区别不是很大,那么,在下图中(Provider network),实例中的虚拟机如何将网络包传出到物理网络呢?

有两个虚拟机instance1、instance2位于同一个Hypervisor,它们的网卡在两个vLAN中。instance1的网络包发送的物理网络需要如下几个步骤:

第一步:网络包离开instance1

第二步:网络包到达qbr,也就是linux bridge

第三步:网络包到达qvo以后,qvo给网络包打上内部的vlan tag。(Provider network才需要内部和外部vLAN的转换)

第四部:网络包到达br-ex(br-eth1),内部的vlan tag被换成真实的vlan tag。

第五步:网络包通过eth1传送到物理网络。

上面的例子中,hypervisor都是一个,如果多个nova节点,显然用一个br-int已经无法连接两个服务器上的VM。怎么办呢?

在物理交换机上,可以通过级联线级联。在OVS bridge中则通过br-tun进行级联,让各个物理服务器上的br-int构成一个统一的通信层。

Openvswitch支持三类Tunnel

  • gre
  • vxlan

看到vxlan,可能很多同学眼睛一亮。是的,目前业内大多数大二层网络的实现,都是通过vxlan协议。而大二层又通常是“双活数据中心”这个高大上名词的基础。

在NSX中,VXLAN的封包和解包是通过ESXi上的VTEP(A Virtual Tunnel End Point)完成的:

我们看一下下面这个图:两个实例属于同一个子网,但是在不同的物理服务器上,那么就需要br-tun来进行通讯。

在Neutron中,可以实现对VXLAN的封包和解包的功能。但如果想提高性能,也可以与物理网络设备进行配合。

原文发布于微信公众号 - 大魏分享(david-share)

原文发表时间:2016-11-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

互联网公司WAF系统设计

0×01 WAF简介 WAF 全称是Web Application Firewall, 简单讲就是web防火墙, 是对web业务进行防护的一种安全防护手段。 ...

43810
来自专栏皮振伟的专栏

[linux][network]ICMP协议分析

前言: ICMP比较基础,说简单不简单,说难不难。 简单在于字段少,不能携带用户数据,没什么地方可以玩出太多花样;一般和它相关的就是ping和tracerout...

3566
来自专栏架构师之路

秒杀系统架构优化思路

《秒杀系统架构优化思路》 上周参加Qcon,有个兄弟分享秒杀系统的优化,其观点有些赞同,大部分观点却并不同意,结合自己的经验,谈谈自己的一些看法。 一、为什么难...

3318
来自专栏jojo的技术小屋

原 域名被封(微信)后的思索

作者:汪娇娇 时间:2017年11月23日 一、先说下微信屏蔽域名的分类吧,大致分为以下3种: 1、域名被微信封杀,显示的是链接无法访问; 2、域名被微信拦截,...

1.9K8
来自专栏大数据架构师专家

应用负载均衡之LVS(一):基本概念和三种模式

本文目录: 1. LVS简介 2. LVS-ipvs三种模式的工作原理  2.1 VS/NAT模式  2.2 VS/TUN模式  2.3 VS/DR模式  2....

1364
来自专栏FreeBuf

看我如何在前期踩点过程中发现价值$4500的漏洞

首先,我用来测试子域名漏洞的工具是Aquatone(洛克希德U2侦察机代号也叫这个),这个工具非常好用,可算是众多白帽的必备利器了。非常幸运的是,我不经意地用它...

996
来自专栏安恒网络空间安全讲武堂

为安全出把力:CVE-2011-1938漏洞分析以及exp编写

## 0x01 前言 首先这是我第一次尝试在linux写实际的漏洞利用的exp,水平有限欢迎指出。本次要讲的是php的一个栈溢出漏洞,远程的exp说实在的,现在...

2766
来自专栏FreeBuf

局域网聊天软件攻防战

0×00 前言 笔者发现不少甲方公司的办公网络依靠五花八门的局域网聊天软件进行办公通信,而这些软件中同样存在各种安全风险。本文就带大家利用协议分析技术来还原一款...

2808
来自专栏开源项目

Git 项目推荐 | H5活动开源平台

H5营销活动平台采用P3-Weixin插件开发框架,开发微信H5活动,插件以JAR形式存在,支持独立部署,解决H5活动,用户量大,并发高的问题。(提供成熟的分布...

4389
来自专栏phodal

我是如何Hack掉一个机器人!

在Hack Day这样的伟大节日里,还是应该做一点Hack的事。很久没有干过这么刺激的事,想想也觉得有点小激动。 Blabla,当然这个Robot可能没有你想的...

22010

扫码关注云+社区

领取腾讯云代金券