https://mp.weixin.qq.com/s/CeoEFBycUziGTLDi6zY0kw

很久没写东西了,这篇写一个轻松的话题。

文章创意来自某天一个读者的留言,TA 对 NSX 中的部分名词意思表示困惑,希望知道其准确意思。这篇就来吐槽一下 NSX-v 中一些不合理的命名,纯属娱乐。

0x00. 传输区域 - Transport Zone

说实话,这是我刚学 NSX 时花了1年时间还没准确理解这个设定意义的名词。

在 NSX 架构中,网络分为 Overlay(叠加层/覆盖层) 和 Underlay (底层网络)两个层面,上面的 Overlay 是虚拟出来的逻辑网络,Underlay 是底层硬件组成的网络。

Overlay 的网络使用 VXLAN 去搭建,VXLAN 很类似于 VLAN,都是有一个个 ID。在物理网络中,我们需要给使用某 VLAN 的交换机配置此 VLAN,在 NSX 中,同样需要给使用某 VXLAN 的设备配置此 VXLAN,NSX 使用了集中配置来统一下发这一策略,背后有以下设定:

所以所谓的传输区域,全称应该为限制 VXLAN 传输范围的区域。

那么传输区域怎么用?我整理了以下简单使用原则:

1、一套 NSX manager,管理多套网络相互隔离的集群的环境,使用多个传输区域(有这种环境的多为服务提供商);

2、多 NSX manager 链接环境可能需要使用多个传输区域;

3、其他环境均使用一个传输区域。

在 NSX-T 之前,传输一词几乎只有传输区域在用,所以很难理解是个什么东西。直到 NSX-T 中,Tranport Zone 才稍微好理解一点:Overlay 的网络由一台台 ESXi 主机和其他一些 NSX 组件组成,这些参与 NSX 网络的主机被称作传输节点(Transport Node,传输 VXLAN 网络的节点)。那么 Transport Zone 就代表一组组有共性的 Tranport Node,共性便是提供相同的 VXLAN 网络。

0x01. Overlay - 翻译过来咋就这么蹩脚

上面简单说了 Overlay 和 Underlay,这两个词真的很好理解,随便拉一张拓扑图就能看清。vSphere Distributed Switch 上面的就是 Overlay,下面的就是 Underlay。

简而言之,Overlay 代表上层虚拟网络,Underlay 代表底层物理网络。

我觉得这样翻译就可以了啊,然而很多官方对 Overlay 的翻译是叠加网络、覆盖网络,反正我是觉得难以理解,难以记忆,难以说清。翻译的信雅达去了哪里。。

0x02. Logical Switch - 逻辑交换机

遇到过 N 次大家问,VMware 的虚拟交换机能不像物理交换机一样嵌套,会不会有环路,这个问题我能接受,谁让我们有交换机功能,以物理交换机的知识,确实能问出这样的问题。

到了 NSX-v 里,问题变成了逻辑交换机和分布式虚拟交换机是什么关系,这个我就真没办法解答了。

从原理上看,Logical Switch 就是一个 VXLAN ID,代表一个二层的虚拟隔离网络(Virtual Local Area Network),可是 NSX 竟然将这个叫做交换机?

从用户层面,一个 Logical Switch 等于一个 vDS 的端口组,这也能叫交换机?

或许研发意识到了这个问题,在 NSX-T 中,一开始 LSW 依然叫 LSW,后来改为了 Segment 分段,我觉得这样才真正表达清楚了 LSW 的涵义。

0x03. Edge

新手一定会被 Edge 这个词弄懵。

在 NSX 中,Edge 既可以是 Edge Service Gateway 的简称(非官方简称,官方简称为 ESG),也可以代表创建 DLR 和 Edge Service Gateway 的地方。这个设定实在奇葩。

Edge 这个词单独只在 UI 界面配置上会出现,比如你要添加一个分布式逻辑路由器(DLR),需要点击”网络与安全>NSX Edge“,再去点击”+“,选择逻辑路由器,然后再创建。

Edge 直译为边界,NSX Edge 如果直译过来估计很多人搞不懂是做什么的,所以最终就没人翻译了。。

很明显,这里的 Edge 代表的就是虚拟路由设备,而这个虚拟路由设备包含了分布式逻辑路由器和 Edge 服务网关。那直接把 Edge 替换为“虚拟路由器”,或者“路由器”不更好嘛?不知道曾经的产品经理怎么想的。

0x04. Edge 设备

如果说 Edge 一词设定奇葩,那 Edge 设备就是奇葩的二次方。

我们都说 NSX 是转控分离的 SDN 架构,转代表转发层面,控代表控制层面。

下图详细描述了 NSX 各个层面的组件。

可以看到,分布式逻辑路由器是有两个组件的:控制层面有个虚拟机,数据平面有个进程。

其区别在于:数据平面只进行数据的三层转发,不参与任何决策;控制层面只负责动态路由的学习和相关路由表的下发。

熟悉网络的都知道,路由分为动态路由和静态路由,静态路由一般是人为计算通信路径是怎样,手动配置路由表,动态路由则是人工配置让设备相互间学习对方的网络,再自己算出路由表。

NSX 中,延续了这一设定,工作流程是这样子:

  • 静态路由在 VC+NSX Manager 上配置,配置完成后直接通过 Controller 下发给数据层;

  • 动态路由必须有控制平面的 DLR 虚拟机参与,这个虚拟机进行动态路由协商(例如 OSPF 建邻居),算路由表,算好的路由表通过 Controller 下发给数据层。

简而言之,如果需要使用动态路由,必须在创建 DLR 的时候部署一个虚拟机出来,只使用静态路由时不需要部署这个虚拟机。

这个配置在哪做?看下图

按照原理,实际上这里的 Edge 设备指的是 DLR 控制层虚拟机,那直接叫 DLR 控制层虚拟机不应该更好吗?(目前 H5 界面的配置已改成控制虚拟机,Flash 界面依然是部署 Edge 设备)。

PS:在 VMware 中,很多封装好的实现某一功能的 Linux 系统都叫做 Appliance(设备),例如 vcsa、vr 等。对于这一词我也很无奈。

0x05. VXLAN 配置

在配置 NSX 时有一步叫做 VXLAN 配置,如果你以为这代表 VXLAN 配置完了,那么你想多了。

VXLAN 全称 Virtual Extended Local Area Network,在实现上,VXLAN 并不像 VLAN 那么简单直接。

要使用 NSX 搭建一套基于 VXLAN 虚拟网络,需要做以下事:

1、部署 NSX manager,部署 NSX Controller

2、主机准备,安装数据层面的组件

3、VXLAN 配置,为主机安装 VTEP VMKernel (此步骤是搭建 Underlay 网络的最后一步)

4、配置 LSW、DLR、ESG 等

仔细看第3步,NSX 竟然将准备 VTEP 网络称作 VXLAN 配置,实在不知道说什么(举个不恰当的例子,你把做饺子皮叫做包饺子),我觉得直接改成 VTEP 网络准备更恰当些吧。

0x06. 东西向防火墙

还有一个经常被别人问起的问题,NSX DFW 和 ESG 的防火墙有什么区别?怎么用?是不是 DFW 只能管控东西向流量,ESG 只能管控南北向流量?甚至有些同行直接说 DFW 提供东西向防火墙功能,ESG 提供南北向防火墙功能。

为何会有这些问题?因为我们官方文档中这么说:

不得不佩服文档用词的”恰当“,侧重一词似乎很确切的说明了两者的用法,然而实则不然。下表完整列出了两者的对比,个人觉得影响实际用法的就三点:价钱、架构,管理。

文档的问题在于从未考虑过防火墙怎么用!任意的防火墙,要能防,前提是流量经过此防火墙,而一旦流量经过了防火墙,必须设定 Allow 还是 Deny 的策略。

所以如果你用了 DFW,所有和虚拟机相关的流量都可以管控,也必须管控,那么这时候说 DFW 侧重东西向就不对了,在执行层面,你必须同时设定东西向和南北向的策略才行,做不到 DFW 管控东西向流量,ESG 管控南北向流量。

当然,如果你用黑名单防火墙机制,东西南北流量就可以分得开,只是这样用真有点浪费 DFW 了。

0x07. Locale-ID - 区域ID

NSX-v 有个挺好玩的技术 Cross-vCenter NSX,字面意思即跨 vCenter 的 NSX。NSX-v 的架构规定每个 NSX Manager 必须一对一和一个 vCenter 连接,这时候遇到一种客户需求,就是多个 vCenter 想要共用一套 NSX 逻辑网络。于是 NSX-v 新增了 Cross-vCenter NSX 这一架构,保持 NSX manager-vCenter 一对一,将多个NSX manager 链接在一起,组成一主N备的架构,实现跨 vCenter 的统一逻辑网络。

在多中心网络架构中,有个永恒的问题是路由怎么配,数据流从哪边走。

一般有三种架构:

  • 所有流量从A中心出去、进来

  • 所有流量同时从A和B的网络出去、进来

  • 业务负载在A中心时,使用A的网络设备传输数据;业务负载在B中心时,使用B的网络设备传输数据。

NSX 也支持这三种架构:

第三种架构中,NSX 有个私有技术(Local Egress)控制虚拟机的出向流量路径,这个技术便用到了一个概念Locale-ID。

Locale-ID 就像字面意思一样是个 ID,默认这个 ID 继承 NSX manager 的 UUID。

Locale-ID 对两个对象生效,ESXi 主机和 UDLR 控制虚拟机。

假如主机所在集群归 nsx-mgr-a 管理,那么这个主机的 Locale-ID 等于 nsx-mgr-a 的 UUID。同样,在启用 Local Egress 功能后,一个 UDLR 可以在不同中心创建多个控制层虚拟机,每个控制层虚拟机使用本地 NSX Manager 的 UUID。

Locale-ID 最终决定哪些主机从哪个 UDLR 控制虚拟机去接收路由,从而实现不同位置的主机使用不同的路由,进而完成出流量本地优化。

Local-ID 这个用词还算比较准确,只是,中文翻译成位置 ID 应该更合适一点,毕竟 Locale-ID 背后代表的多个位置不同的数据中心中 NSX manager 的 UUID。

0x08. Connected - 已连接

NSX 的某些英文命名完全不会考虑本地化,例如 Connected 这一词,这个词脱离语境用很容易有歧义,翻译成中文就更歧义。

在网络的世界里,存在很多路由协议,BGP、OSPF、EIGRP 等,这些协议间默认是不能相互兼容的,也就意味着 BGP 中的设备和 OSPF 中的设备不能通。于是聪明的人类发明了一种技术叫做 Route Redistribution(路由重发布)或者叫路由注入 Import。

这种技术可以将一个协议的路由信息传送给另一个协议,实现路由的共享,达成互通的目的。

如果要将 OSPF 重发布到 BGP,那就开启 BGP 协议的重发布,将 OSPF 路由引入;

如果要将静态路由重发布到 BGP,那就开启 BGP 协议的重发布,将静态路由引入;

如果要将设备本地接口产生的直连路由重发布到 BGP,那就开启 BGP 协议的重发布,将直连路由引入。

下图是两个直连路由的示例,每个本地的接口都会在路由表中产生一个直连路由:

再回到 NSX 配置界面,已连接其实就代表 directly connected,英文省去 directly 只留下 connected,比较难理解。

0x09. 想不到更多了

凑不够 10 个了,下面整理一些翻译不够准确的词:

Graceful Restart - 正常重新启动,行业内一般的翻译为“优雅重启”。

Default Originate - 默认源,指下放默认路由操作。

nexthop - 下一跃点,一般称作“下一跳”。

cost - 成本,一般称作“(路由)开销”。

欢迎补充

盘点下 NSX-v 中“不合理”的命名相关推荐

  1. php文件内含有隐藏的^m字符,【整理】如何取消Linux下,vi中显示的^M符号

    [整理]如何取消Linux下,vi中显示的^M符号 [背景知识] ^M 是ascii中的'\r', 回车符,是16进制的0x0D,8进制的015,十进制的13. 对于换行这个动作,unix下一般只有一 ...

  2. dos下 和 批处理中的 for 语句的基本用法

    原文地址:http://blog.csdn.net/wh_19910525/article/details/7912440 for 语句的基本用法 : 最复杂的for 语句,也有其基本形态,它的模样是 ...

  3. ubuntu docker一键安装mysql_mysql5.6在ubuntu下的docker中安装的办法详细说明

    软件安装:装机软件必备包 SQL是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言.在使用它时,只需要发出& ...

  4. 用Javascript代码实现浏览器菜单命令(以下代码在 Windows XP下的浏览器中调试通过

    每当我们看到别人网页上的打开.打印.前进.另存为.后退.关闭本窗口.禁用右键等实现浏览器命令的链接,而自己苦于不能实现时,是不是感到很遗憾?是不是也想实现?如果能在网页上能实现浏览器的命令,将是多么有 ...

  5. 解开 Windows 下的临界区中的代码死锁

    解开 Windows 下的临界区中的代码死锁 发布日期: 1/13/2005 | 更新日期: 1/13/2005 Matt Pietrek和 Russ Osterlund 本文假定您熟悉 Win32. ...

  6. docker安装启动mysql5.6_mysql5.6在ubuntu下的docker中安装的方法详解

    这篇文章主要介绍了ubuntu下在docker中安装mysql5.6 的方法,需要的朋友可以参考下 1.安装mysql5.6docker run mysql:5.6 等所有项目都是Download c ...

  7. 懒人修仙传ce修改方法_盘点《西游记》中增长寿命的6种方法,其中长生不老的方法有三种...

    长生不老是每个人梦寐以求的事情,古代那么多皇帝没事就请道士来炼丹,不就是希望自己能长生不老么,结果不仅没长生不老,反而因丹毒而英年早逝.而这种思想,也是深深的影响着诸多小说,比如<西游记> ...

  8. 三叔学FPGA系列之二:Cyclone V中的POR、配置、初始化,以及复位

    对于FPGA内部的复位,之前一直比较迷,这两天仔细研究官方数据手册,解开了心中的诸多疑惑,感觉自己又进步了呢..... 原创不易,转载请转原文,注明出处,谢谢.   一.关于POR(Power-On ...

  9. 20220528【聊聊假芯片】贪便宜往往吃大亏,盘点下那些假的内存卡和固态硬盘

    [聊聊假芯片]贪便宜往往吃大亏,盘点下那些假的内存卡和固态硬盘_分销与供应链-面包板社区 [聊聊假芯片]贪便宜往往吃大亏,盘点下那些假的内存卡和固态硬盘 正在上传-重新上传取消我的果果超可爱  97 ...

最新文章

  1. 在大型软件中用Word做报表: 书签的应用
  2. ansys如何删除线_ANSYS影响面计算与绘制方法介绍
  3. Java原子操作Atomic
  4. 用原生js封装get方法
  5. Python导包、模块报错的问题
  6. 引用数据类型的方法调用
  7. 从云服务器上拷贝文件,从云服务器上拷贝文件
  8. azure云数据库_使用Azure SQL数据库构建ASP.NET应用
  9. Moorhuhn Kart 2 XXL Maps
  10. focal loss小结
  11. 斯坦福CS229(吴恩达授)学习笔记(2)
  12. 线性函数、非线性函数与线性回归的区别
  13. JAVA多线程设计模式篇 4、Guarded Suspension 模式——等我准备好了再来
  14. Docker 配置 国内 阿里云、网易云 镜像加速!
  15. 行车路线(CCF201712-4)
  16. 一款适合小白的jmeter入门文档,性能测试工具-jmeter使用教程
  17. 调戏木马病毒的正确姿势——下
  18. PM2入门及其常用命令
  19. C语言 自动排课系统课程设计(附源码,实验报告)
  20. 树莓派如何终端手动配网

热门文章

  1. 打砖块游戏c语言设计,打砖块游戏的源代码(请多指教)
  2. html英文怎么换成中文的,英文版Win7系统怎么换成中文的
  3. java 等待线程结束 框架_深入理解Java多线程与并发框架——线程的状态
  4. linux中启动不了服务,Linux系统xinetd服务启动不了
  5. 电子商务概论_大学专业介绍之“电子商务专业”
  6. dbcp连接池配置详解_重学MySQL:事务与连接池,一文详解带你搞懂
  7. python paramiko并发_Python之paramiko
  8. python玩转android_怎样用python玩安卓版跳一跳
  9. mysql parameters_MySqlCommand Command.Parameters.Add已过时?mysql-问答-阿里云开发者社区-阿里云...
  10. mysql lock trx id_MySQL中RR模式下死锁一例