前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >非网络专业人士看NSX--浅谈NSX架构和ARP压制

非网络专业人士看NSX--浅谈NSX架构和ARP压制

作者头像
魏新宇
发布2018-03-22 11:45:26
1.7K0
发布2018-03-22 11:45:26
举报

一直以来,网络方面都不是笔者的强项,来了VMware以后,由于工作的需要,经常和客户一起交流NSX,有一些心得,自己也查了一些资料,更请教过我司的网络方面的专家,如Alex You、Rick Chen、Wu WanLi同学,在此对给予的帮助表示感谢!

本篇文章,我将从非网络专业人士角度分享对NSX理解,以及我被客户最多问到的问题:NSX如何避免广播风暴。

  • NSX的由来

2013年,VMware收购NSX的前身Nicira。该公司发明了OpenStack中的网络组件,这段历史不再赘述。NSX的名字怎么来的?我们知道,VMware的起家产品vSphere的核心是ESXi,那么ESXi的名字含义是什么?

ES for Elastic Sky(一个乐队的名称),X for any,i for internal.

VMware想把NSX做成网络界的ESXi,因此最终命名为NSX(N forNetwork)。

  • NSX的架构

NSX提供OSI 3-7层网络虚拟化。NSX结合VDS,实现的是2-7层的网络虚拟化。没有NSX的话,vSphere只提供二层网络虚拟化。

没错,上面这张图,乍一看,很复杂。我们从左向右进行分析。

该图最左边一列,讲的是NSX的三个层面:数据平板、控制平面、管理平面。顾名思义,数据平面负责负责数据实际传输,控制平面负责协议控制,管理平面负责NSX整体管理和配置。

在正式开始介绍之前,需要解释清楚几个概念,这几个概念都是NSX范畴的,千万不要和vSphere中的VSS和VDS搞混:

分布式逻辑交换机=NSX virtual switch=Logical Switch

它的“落脚点”是vSphere中VDS的一个PortGroup。我们知道在vSphere中,中,portgroup可以用于隔离vLan,在NSX中,一个NSX virtual switch将相当于一个VXLAN。因此NSX virtual switch(逻辑交换机)和vSphere中的VDS和VSS是完全不同的。

分布式逻辑路由器=NSX router(东西流量)

分布式逻辑防火墙=NSX firewall(东西流量)

分布式负载均衡器=NSX load balancer

VTEP:A Virtual Tunnel End Point (VTEP). 用于多VXLAN报文进行封装/解封装。一个主机可能有多个VTEP实例。VTEP的安装程序只有一个,位于每个ESXi上(就是VIB中的VXLAN)。

VTEP实例的落脚点也是一个VDS端口组,但只是一个管理的端口组,不需要虚拟机去连。VETP的IP地址落脚点是VMkernel网络。VTEP实例不能手工创建,有多少个实例取决于负载。

在NSX实际安装配置的时候,只有控制平面的NSX Manager需要安装,其它组件或是由NSX Manager推送,或是在NSX Manager界面进行手工配置。

(1) 数据平面

NSX的数据平面是在esxi内核中(通过推送VIB),VIB(vSphereInstallation Bundle)包含三个组件:VXLAN、分布式逻辑路由器、分布式逻辑防火墙。

数据平面除了VIB的三个模块以外,还有NSX EDGE。NSX EDGE不在VIB中,NSX EDGE的“落脚点”是一个虚拟机。VIB的三个组件受NSX controller控制,而是直接受NSX Manager控制。NSX EDGE虚拟机有10个虚拟网卡(vSphere虚拟机的限制,所以一个EDGE最多有10个接口)。NSX EDGE主要有两个功能:防火墙和路由器。它与VIB中的防火墙和路由器有什么区别呢?区别是:VIB中的NSX防火墙是分布式的,负责东西流量,NSX EDGE中的防火墙是集中式的,负责南北流量。EDGE的路由器也是负责南北向的。

(2)控制平面

控制平面的核心组件包括NSX逻辑路由器的control VM,还有NSX controller。生成一个NSX路由器就会自动创建一个controller VM,它对路由器的信息进行控制。真的数据传输通过数据板。补充说明的是,创建NSX 路由器,也可以不生成control VM,但是这样创建出来的NSX路由器只能走静态路由协议,不能支持BGP和OSPF。

NSX Controller:最少部署一个,一般建议部署三个。三个控制器自动做负载均衡。有一个坏了以后,其它两个分担。需要注意的是,在实际配置过程中,笔者做过尝试,创建多余三个的NSX controller可以,但这种不被VMware官方所支持。Controller中存在三张表:ARP MAC,VTEP。

UWA:做数据传输和消息传递。通过NSX manager自动推送。UWA与NSX Controller进行通讯,并且将ESXi上VM的MAC,ARP, VTEP定期表更新到NSX controller中。

(3)管理平面

管理平面的核心是NSX Manager。NSX manager是整个NSX体系中实际需要安装的组软件。NSX Manager与vCenter集成。它干几个活:管理三个NSX controller,管理NSX EDGE、为用户提供NSX管理和配置接口。

  • ARP压制

广播风暴的问题,是很多朋友关心的。为了减少广播行为, NSX提供了ARP压制的功能,从而很大程度上避免了传统二层网络出现的风暴。ARP压制功能在NSX逻辑交换机上启用。如下图,选中“Enable IP Discovery”。

概括来讲,在NSX中,当VM加入到NSX逻辑交换机时,VTEP会将该VM的MAC, IP,ARP信息注册到NSX Controller中。然后NSX controller将表的信息复制到相关的VTEP上(ESXi)。

虚拟机发起ARP请求时,首先会查看本ESXi上的ARP表信息,如果没有,ARP请求会发往Controller,如果Controller ARP表有相应的信息,将会直接反馈给虚拟机。如果Controller此时的ARP中没有虚拟机请求的信息,那么ARP请求将会按照单播/组播/混合的模式,通过VTEP,在VMKernel网络上进行传输,并且请求只会发送到和NSX逻辑交换机相关的ESXi上(比如ARP需要获取的是VNI 6000网络里的ARP信息,那么请求就只会发给和6000相连接的ESXi)。

也就是说,正是由于NSX Controller的存在以及学习机制,大大减少了NSX网络中的广播行为,才使NSX网络中的网络风暴问题要大大少于传统物理网络。

在NSX里,TransportZone中控制板模式可以配置成单播模式、组播模式,或者混合模式。

单播模式:

组播模式:

混合模式

我们举一个实际的例子,来说明ARP压制是如何起作用的:

在正在介绍例子之前,先介绍一个组件:VXLAN SwSec module,它是ARP压制的实现模块。它是一种dvFilter,依附与VM的虚拟网卡上。SwSec在一定条件下,会主动向controller发起ARP表更新。

当一个虚拟机连接一个NSX逻辑交换机的时候,它需要经过几个安全服务,其中就包含SwSec。

SLOT 0 : implement vDS Access List

SLOT 1: Switch Security module (swsec) capture DHCP Ack and ARP message, this info then forward to NSX Controller.

SLOT2: NSX Distributed Firewall.

SwSec将在什么情况下向控制器发起ARP信息更新呢?

(1) 当它收到了一个ARP请求

(2) 当SwSec所在的VM向DHCP Server发起的请求进行响应时(DHCP ACK)

NSX实验环境里有两个ESXi,上面分别有两个VM:

ESXi1上的VM1连接到VNI5000(VXLAN);

172.16.10.11 00:50:56:a6:7a:a2

ESXi2上的VM2也连接到VNI5000;

172.16.10.12 00:50:56:a6:a1:e3 6

开始的时候,所有的ESXi ARP表和缓存都都空的:

ESXi-1

# net-vdl2 -M arp -s Compute_VDS -n 5000ARP entry count: 0~ # net-vdl2 -M mac -s Compute_VDS -n 5000MAC entry count: 0

ESXi-2

~ # net-vdl2 -M arp -s Compute_VDS -n 5000ARP entry count: 0~ # net-vdl2 -M mac -s Compute_VDS -n 5000MAC entry count: 0

这个时候,VM1向VM2发起ping。

在ESXi-1上,ARP请求将会被Switch Security module (SwSec), 捕获,然后送至NSX controller,询问controller是知道VM2的MAC和IP地址对应关系。

--> ARP (v4) Query:len = 16

--> SwitchID:0,VNI:5000

--> Num of entries:1

--> #0 VM IP:172.16.10.12 与此同时, VM1的MAC和IP地址对应关系也会主动传递给控制器。

--> VM IP (v4) Update: len = 24

--> SwitchID:0, VNI:5000

--> Num of removed entries: 0

--> Num of added entries: 1

--> #0 VMIP:172.16.10.11 VM MAC:00:50:56:a6:7a:a2

如果此时controller没有缓存VM2的MAC和IP地址对应关系,它会告诉回复给VM1,“我不知道”.

--> ARP (v4) Update: len = 32 --> SwitchID:0, VNI:5000 --> Num of entries: 1 --> #0 VMIP:172.16.10.12 VMMAC:ff:ff:ff:ff:ff:ff VTEPIP:255.255.255.255 VTEP MAC:ff:ff:ff:ff:ff:ff 此时,ESXI-2上的SwSec发现有虚拟机在请求VM2的ARP信息,它就会主动把VM2的ARP信息发给controller。 --> VM IP (v4) Update: len = 24 --> SwitchID:0, VNI:5000 --> Num of removed entries: 0 --> Num of added entries: 1 --> #0 VMIP:172.16.10.12 VM MAC:00:50:56:a6:a1:e3

ESXi上地址表将会更新如下,

ESXi-1:

~ # net-vdl2 -M arp -sCompute_VDS -n 5000

ARP entrycount: 1

IP: 172.16.10.12

MAC: ff:ff:ff:ff:ff:ff <== “我不知道” 第一次ARP controller的返回值。

Flags: F

ESXI-2

~ # net-vdl2 -M arp -sCompute_VDS -n 5000

ARP entrycount: 0 <== 没有学习到,因为VM2并没有尝试向controller询问VM1的ARP信息

但此时,controller已经学习到了VM1和VM2的ARP信息:

nvp-controller # showcontrol-cluster logical-switches arp-table 5000

VNI IP MAC Connection-ID

5000 172.16.10.12 00:50:56:a6:a1:e3 6

5000 172.16.10.11 00:50:56:a6:7a:a2 7

这样,而当VM1如果再次发起对VM2的ping请求时,controller就会将VM2的信息反馈给VM。这样一个完整的ARP学习过程就完成了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-12-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大魏分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档