专栏首页Tungsten Fabric中文社区三个理由告诉你,为什么在TF中必须使用MPLSoUDP
原创

三个理由告诉你,为什么在TF中必须使用MPLSoUDP

Tungsten Fabric大量使用了overlay,它的整个体系结构基于利用overlay来提供L2/L3虚拟化,并使底层IP fabric对虚拟工作负载透明。

Tungsten Fabric支持三种封装类型,分别是:

1. MPLSoGRE

2. MPLSoUDP

3. VXLAN

其中,MPLSoGRE 和 MPLSoUDP用于L3虚拟化,而VXLAN用于L2虚拟化。

如果我们计划实施L2用例,那么没什么可考虑的……VXLAN就对了!

不过,在L3用例中出现了一个问题:选择基于GRE的MPLS?还是基于UDP的MPLS?

正如行业中常见的那样,答案可能是“取决于”某些具体情况。不过,这里的答案却十分明确——必须是MPLSoUDP!

在理解为什么选择MPLSoUDP之前,让我们先来看看何时需要使用MPLSoGRE。

答案同样是不言而喻的,当我们不能使用MPLSoUDP时——这可能是因为我们的SDN GW运行的软件版本不支持MPLSoUDP——我们使用MPLSoGRE。

除了这种情况以外,建议都使用MPLSoUDP!

为了理解为什么MPLSoUDP更好,我们需要回顾一下如何构建MPLSoUDP数据包。

首先将原始raw数据包添加一个mpls标签。该标签表示服务标签,并且是contrail/sdn_gw将数据包与正确的virtual_network/vrf相关联的方式。

接下来,添加UDP (+ IP)标头。UDP标头包括源端口和目标端口。源端口是对内部数据包执行哈希操作的结果。结果是,该字段将会出现很大变化。源端口带来了巨大的熵!

而这种熵就是我们选择MPLSoUDP的原因!

使用MPLSoUDP可以带来不同级别的优势。

第一个好处是在SDN GW上体现的。假设你在SDN GW和计算节点之间有一条MPLSoUDP隧道。在两个端点之间有多个ECMP路径。

选择一个ecmp路径到另一个路径是基于对数据包执行的哈希函数。为了获得更好的分发,我们需要很高的熵,并且正如我们所看到的,MPLSoUDP已经为我们提供好了!

让我们看一个有关SN GW的示例:

我们看到,有2个ecmp数据包流向计算节点。使用MPLSoUDP将使我们能够以更平衡的方式在两个路径之间分配数据包。

如果我们查看从计算节点发送的数据包,则可以看到使用MPLSoUDP的另一个好处。

考虑到接口vhost0是bod接口(将2个物理NIC连接在一起)的设置,那么我要说的就是正确的。

在这种场景下,计算节点被多宿主到了两个叶子节点(运行evpn + vxlan的IP Fabric,使用esi处理多宿主CE)上。结果是,当数据包离开服务器时,将通过绑定的2个链接之一发送数据包。

现在,基于绑定配置,根据哈希在两个链接之间进行选择。同样,使用MPLSoUDP会更好,因为它带来更多的熵,这意味着更好的分发。在所有bond成员之间平均分配流量,可能会导致流量在整个fabric中分配得很好!

最后一条需要关注的MPLSoUDP好处,在于dpdk节点上的性能。要理解这一点,我们至少需要对dpdk vRouter的某些方面如何工作,在一个非常高的层级上有所了解。

为DPDK vRouter分配了一定数量的核心(基于配置参数)。假设为vRouter分配了4个内核。结果就是,通过ethdev,dpdk vRouter会在物理NIC(vif0/0)上对4个队列进行编程。然后,我们就在vRouter核心和NIC队列之间建立了1:1映射。

对于来自服务器外部的数据包(物理网卡接收数据包),vRouter核心充当轮询核心(vRouter核心可以执行其它角色,处理核心;只是在这里我们对dpdk vRouter的详细理解不感兴趣,因此我们以后讨论这个问题)。

这里重要的是,充当轮询核心的每个vRouter核心都会不断检查其分配的物理网卡是否有要轮询的数据包。在进行轮询操作之前,物理网卡首先在线路上接收到数据包,然后将该数据包“发送”到一个队列中。为此,物理NIC在数据包上执行哈希操作。

到这里,事情应该很清楚了。由于涉及哈希,MPLSoUDP确保我们可以在NIC队列上更好地分配流量。在NIC队列上更好地分配数据包,意味着可以在vRouter核心之间更好地分配数据包(请记住,nic队列和vRouter核心之间存在1:1映射关系)。

为什么在转发核心之间尽可能平衡地分配流量很重要?

每个转发核心最多可以处理X个PPS(每秒数据包)。PPS间接意味着吞吐量。通常来说,PPS越高,吞吐量越高。

让我们举个例子。例如每个转发核心最多可处理2M PPS。这意味着vRouter最多可以处理8M PPS。

现在,假设使用MPLSoGRE。这种封装不能保证有效的流量分发。这就意味着,可能会将流量仅发送到4个转发核心中的2个(或者至少大多数流量可能主要落在4个转发核心中的2个上)。如果是这样,vRouter的性能大约为4M PPS(约占总容量的50%)。而如果使用MPLSoUDP,流量将更好地分布在所有4个转发核心上。这意味着vRouter总共可以达到8M PPS。换句话说,性能要好得多!

总结:网关更好平衡,计算节点更好平衡,dpdk vRouter内部更好平衡。除非你的SDN GW仅支持MPLSoGRE,否则没有理由不适用MPLSoUDP,因为它只有好处!


作者:Umberto Manferdini 译者:TF编译组

原文链接:https://iosonounrouter.wordpress.com/2020/09/11/why-we-must-use-mplsoudp-with-contrail/(注:原文为Contrail,在本系列文章中,Tungsten Fabric的功能与Contrail一致)


原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 配置SDN网关:关于VRF、本地路由及inet-vpn路由

    上次谈到SDN网关及其在Tungsten Fabric集群中的作用,简单地说,SDN网关是Tungsten Fabric和网络其它部分之间的“胶水”。

    Tungsten Fabric
  • 如何设置TF SDN网关,并与Tungsten Fabric协同工作

    Tungsten Fabric并不是“vanilla”(意为完美的)Openstack与OVS。

    Tungsten Fabric
  • TF虚拟网络流量排错:在正确的时刻使用正确的工具

    对于虚拟网络来说,也依然如此!即使是在Tungsten Fabric集群内部,按理说,我们在故障排除环节的第一步,也会进行某种流量嗅探或流量识别。

    Tungsten Fabric
  • Tungsten Fabric如何实现路由的快速收敛?收敛速度有多快?

    在发布R2008版本之前,Tungsten Fabric无法同时提供南北向和东西向流量的快速收敛。

    Tungsten Fabric
  • pps数据无法回答“哪种SDN解决方案更好”,你需要考虑这些

    最近我参与了一个项目,我们在Tungsten Fabric(注:原文为Contrail,本文将以功能一致的Tungsten Fabric替换)集群中部署了虚拟移...

    Tungsten Fabric
  • 为OpenStack和K8s集群提供无缝虚拟网络

    现实情况下,可能会发生虚拟机和容器需要相互“交谈”的情况。如果是这样,我们需要以某种方式实现两个独立集群之间的通信。

    Tungsten Fabric
  • N个理由告诉你,为啥插画在UI设计中这么火?

    在过去几年当中,插画开始以一种坚挺的姿势,站在设计趋势的最前列。不止是原本身处各个领域的画手和插画师开始越来越受追捧,而且连网页、UI和动效设计师都纷纷学习插画...

    用户5009027
  • 洞察Tungsten Fabric内部的XMPP

    XMPP是一个用于通讯和表示的开放标准协议。从本质上讲,它是一个允许实体交换信息和进行聊天的协议。

    Tungsten Fabric
  • 代码实例:如何使用 Google 近日推出的 TensorFlow 2.0 Preview

    去年8月13日,谷歌宣布 “TensorFlow 2.0 is coming”, 最近几天,谷歌 TensorFlow 团队刚刚发布了 TensorFlow ...

    杨熹
  • 升级到tensorflow2.0,我整个人都不好了

    Tensorflow 2.0发布已经有一段时间了,各种基于新API的教程看上去的确简单易用,一个简单的mnist手写识别只需要下面不到20行代码就OK了,

    OpenCV学堂
  • 大型翻车现场,升级到tensorflow 2.0,我整个人都不好了

    Tensorflow 2.0发布已经有一段时间了,各种基于新API的教程看上去的确简单易用,一个简单的mnist手写识别只需要下面不到20行代码就OK了,

    小白学视觉
  • Flash写入性能下降问题

    在《NAND Flash基础知识简介》中,我们介绍了NAND Flash的一些特征。本文主要从文件操作的角度看下写入性能问题。

    coderhuo
  • 治啰嗦利器~TF-IDF!| 文本分析

    这个系列打算以文本相似度为切入点,逐步介绍一些文本分析的干货,包括分词、词频、词频向量、TF-IDF、文本匹配等等。 第一篇中,介绍了文本相似度是干什么的; 第...

    数说君
  • 教程 | 如何通过Scikit-Learn实现多类别文本分类?

    机器之心
  • SLAM

    机器人研究的问题包含许许多多的领域,我们常见的几个研究的问题包括:建图(Mapping)、定位(Localization)和路径规划(Path Planning...

    小飞侠xp
  • 使用Ansible部署器设置一个小型的TF+K8s实验室

    Kubernetes绝对是SDN和虚拟化世界中最热门的趋势之一。简单来说,对于虚拟机我们有OpenStack,而对于容器那就是Kubernetes了(或者Red...

    Tungsten Fabric
  • Python数据处理实战

    本文是数据科学家Susan Li撰写的一篇技术博文,主要介绍了在商业中使用多类文本分类的应用。

    WZEARW
  • TF-IDF与余弦相似性文本处理:自动提取关键词、找出相似文章

    这个标题看上去好像很复杂,其实我要谈的是一个很简单的问题。 有一篇很长的文章,我要用计算机提取它的关键词(Automatic Keyphrase extract...

    机器学习AI算法工程
  • 《Scikit-Learn、Keras与TensorFlow机器学习实用指南(第二版)》第19章 规模化训练和部署TensorFlow模型

    有了能做出惊人预测的模型之后,要做什么呢?当然是部署生产了。这只要用模型运行一批数据就成,可能需要写一个脚本让模型每夜都跑着。但是,现实通常会更复杂。系统基础组...

    SeanCheney

扫码关注云+社区

领取腾讯云代金券