热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

细说TF服务链丨一文讲透什么是服务链(多图)

作者:UmbertoManferdini译者:TF编译组 如果你看过任何有关TungstenFabric(附注:原文为Contrail,在本系列文章中,TungstenFab

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

 
如果你看过任何有关Tungsten Fabric (附注:原文为Contrail,在本系列文章中,Tungsten Fabric的功能与Contrail一致,文中出现Contrail之处均以Tungsten Fabric替换) 的演示,可能都会碰到“服务链(service chain)”这个热词。现在,是时候对这个功能好好动手研究一番了。
 
那么什么是服务链? 简而言之,就是使流量在两个虚拟网络之间流动的过程中,经过一项或多项“服务”。
 
让我们举个例子吧!这里有2个虚拟网络:pippo和pluto。我们希望这两个网络互相通信。在Tungsten Fabric中,只需在两个虚拟网络上配置相同的RT(route target)即可实现(虚拟网络是vrfs,还记得吗?)。 (附注:Route target 即RT,在Tungsten Fabric用来作为路由的标记,也是MPLS中常用的路由更新标记。)
 
还有一个选择,我们可以构建一个网络策略,同时适用于两个网络,就是“允许这些虚拟网络之间的任何流量”。而在幕后,Tungsten Fabric仍然依赖于路由route target(隐藏和自动生成目标)。
 
细说TF服务链丨一文讲透什么是服务链(多图)
因此我们可以说,这两种方法是相同的。
 
这看起来是正确的,但从根本上是错误的!使用网络策略,使我们可以指定在虚拟网络之间移动时,流量必须通过的一个或多个服务实例。这是第一种方法无法做到的。而这就是服务链! (附注:此处作者希望表达的是,尽管结果相同,但是实现的内容不一样,第一种same RT实现的内容,是不同的网络之间的路由属性相同,意味着可以相互泄露和打通,而第二个则不是。)
 
如前所述,服务链可以包括一项或多项服务。这意味着从pippo到pluto的流量可以穿越防火墙,也同时穿越(一个接一个)防火墙和DPI。
 
细说TF服务链丨一文讲透什么是服务链(多图)
乍一看,有人会说:“好,很酷!但我也可以通过路由做同样的事情……”。没错,但这里真正重要的是——易于部署。Tungsten Fabric负责所有事务,并自动配置所有需要的路由。你只需要告诉Tungsten Fabric自己的意图即可:“允许这些网络进行通话,并使流量通过这些服务实例”。我们正处于基于意图的时代,不是吗?
 
当然,这还不是故事的全部。Tungsten Fabric在表中引入了其它功能,例如运行状况检查(health checks),以提供高可用性和扩展能力。此外,网络策略本身也可以用于基于L4的规则拒绝/允许流量。
 
那么,现在的问题是:创建服务链需要做些什么?
让我们来仔细研究所有要素!
首先,我们需要两个虚拟网络。无需对它们配置任何route target。
 
细说TF服务链丨一文讲透什么是服务链(多图)
接下来,我们在它们之间配置一个网络策略,允许所有流量通过:
 
细说TF服务链丨一文讲透什么是服务链(多图)

此时,两个网络可以互相通信! 是时候转向服务链了。
首先,我们创建一个虚拟机,该虚拟机将成为我们服务实例的一部分。这是两个虚拟网络(VNF)之间的流量将遍历的虚拟机!
例如,该虚拟机可以是防火墙。 该VM必须在Openstack中创建; 就像通过Nova创建的任何其它VM一样。

细说TF服务链丨一文讲透什么是服务链(多图)

是在Openstack上执行的唯一操作。
接下来,回到Tungsten Fabric!我们创建一个名为服务模板(service template)的对象:
 
细说TF服务链丨一文讲透什么是服务链(多图)

  顾名思义,服务模板是对服务的描述。 下面五个参数是必须要配置的:
  • 版本(version),必须为v2

  • 虚拟化类型(virtualization type),除非你打算使用物理网络功能(PNF),否则必须为虚拟机

  • 服务类型(service type),可以是防火墙或分析器,我们使用第一个。

  • 服务模式(service mode),可以是transparent(bump in the wire),in-network(最常见),in-network-nat(使用nat时的特殊用例)

  • 接口列表,通常我们定义两个接口:左和右

 
由于这是模板,因此可以多次用于不同VM的配置。例如,Juniper防火墙服务实例和第三方供应商防火墙服务实例都可以用服务模板进行部署。重要的是,在这两种情况下,在OpenStack中创建的虚拟机都有两个接口,可以将它们映射到服务模板中定义的接口(左和右)上。
 
接下来,我们创建服务实例。在服务实例对象中可以配置很多东西。这里,我们将专注于使链条正常工作的最小配置。
 
细说TF服务链丨一文讲透什么是服务链(多图)
服务实例引用服务模板。 一旦指定了此引用,就可以将服务模板(左和右)中定义的 接口映射到实际的虚拟网络。 例如,在这种情况下,我们向左映射到fourcade,向右映射到wierer。
 
现在,我们引入一个关键对象:端口元组(port tuple)。它是引用虚拟机接口的元组。如前所述,充当防火墙的实际VM不是由Tungsten Fabric定义的,而是像OpenStack中的任何其它VM一样所创建的。但是,我们需要将该虚拟机“链接”到我们的服务实例。这是通过端口元组实现的。“链接”在虚拟机接口(vmi)级别执行。
 
在这种情况下,端口元组将包含两个元素,一个用于服务模板中定义的每个接口(左和右)。此外,我们将服务模板接口映射到虚拟网络(向左映射到fourcade,向右映射到wierer)。
 
现在,让我们看一下虚拟机。它有3个端口:eth0连接到我们不关心的虚拟网络,eth2连接到fourcade,eth3连接到wierer。下一步是什么?很明显!端口元组将包括eth2和eth3。这就是我们告诉Tungsten Fabric在遍历服务实例时流量应该流向何处的方式。
 
没有什么能阻止我们让单个服务实例拥有多个端口元组…… ECMP怎么办? active/backup如何处理? …有主意吗? 我们稍后会处理。
 
现在,让我们先聚焦这个用例。我们现在到哪儿了?来自fourcade网络中的VM的流量,要发往更wierer网络中的一个IP地址。流量需要从fourcade到wierer。这个通信在网络策略中是允许的。由于网络策略告诉从fourcade到wierer的流量必须经过服务实例,因此数据包被发送到VM eth2端口,并将从eth3端口进入wierer网络。
 

细说TF服务链丨一文讲透什么是服务链(多图)


由于Tungsten Fabric是基于流的,因此可以保证对称性和粘性!
这就是珠穆朗玛峰的理论。
 
在下篇文章中,我们将看到一个真实的例子。这将使我们看到创建一条服务链有多么容易,以及Tungsten Fabric如何掩盖了所有的复杂性!
 

原文链接: https://iosonounrouter.wordpress.com/2020/06/09/whats-a-service-chain/




  Tungsten Fabric 架构解析 列文章 ——

  • 第一篇: TF主要特点和用例

  •   第二篇: TF怎么运作

  •    第三篇:详解vRouter体系结构

  •    第四篇: TF的服务链

  •   第五篇: vRouter的部署选项

  •    第六篇: TF如何收集、分析、部署?

  •    第七篇: TF如何编排

  •   第八篇: TF支持API一览

  •   第九篇: TF如何连接到物理网络

  •   第十篇: TF基于应用程序的安全策略


细说TF服务链丨一文讲透什么是服务链(多图) 细说TF服务链丨一文讲透什么是服务链(多图)

推荐阅读
  • php网站_十周后,62%的PHP网站将运行在一个不受支持的PHP版本上
    本文由编程笔记#小编为大家整理,主要介绍了十周后,62%的PHP网站将运行在一个不受支持的PHP版本上相关的知识,希望对你有一定的参考价值。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • iOS 集成Facebook 第三方分享报错[FBSDKInternalUtility validateAppID]: failed for URL: fbauth2:/error:...
    2019独角兽企业重金招聘Python工程师标准出现这种原因主要是因为info.plist文件里面没有添加一些配置文件转载于:https:my.oschina.net1715 ... [详细]
  • 第七章•Firewalld防火墙实战
    1、防火墙安全基本概述在CentOS7系统中集成了多款防火墙管理工具,默认启用的是firewalld(动态防火墙管理器)防火墙管理工具,Firewalld支持CLI(命令行)以及G ... [详细]
  • 上界|下界_重学C++:笔记C++基础容器&C++指针引用
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了重学C++:笔记C++基础容器&C++指针引用相关的知识,希望对你有一定的参考价值。文章目录 ... [详细]
  • #python没有类似于java和C#的接口类(interface),需要使用抽象类和抽象方法来实现接口功能#!usrbinenvpython#_*_coding ... [详细]
  • 如何使用阿里云虚拟主机搭建博客(二)搭建篇
    原文地址五、域名绑定解析接下来需要进行的就是域名和空间的绑定就是域名解析选择你的域名点解析新手建议直接点新手引导在此处选择你购买的主机即可接着去进入主机面板绑定域名至此你的网站可以 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • pdf在这里:http:mfinocchiaro.files.wordpress.com200807java-virtual-machine-neutral.pdf以及关于gc的 ... [详细]
  • 栈是一种先进先出的线性表,对么
    常见问题栈,先进先出,线性表常见问题网络电视直播源码php,ubuntu安装固态硬盘,爬虫思路有哪些,php安全实例,江苏360seolzw栈是一种先进先出的线性表,不对。网页挖矿 ... [详细]
  • 之前我曾经写过一篇关于CSS的border-image属性的文章。现在几乎所有的现代浏览器都支持这个属性——除了IE10及以下IE版本。看起来这是一个非常 ... [详细]
author-avatar
润秋赋_137
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有