ITPub博客

首页 > IT基础架构 > 网络通信/物联网 > Tungsten Fabric架构解析丨详解vRouter体系结构

Tungsten Fabric架构解析丨详解vRouter体系结构

原创 网络通信/物联网 作者:TF中文社区 时间:2019-12-23 20:28:45 0 删除 编辑
Hi!欢迎来到Tungsten Fabric架构解析内容的第三篇,本文将详细介绍Tungsten Fabric vRouter的体系结构。
Tungsten Fabric架构解析系列文章,由TF中文社区为你呈现,旨在帮助初入TF社区的朋友答疑解惑。我们将系统介绍TF有哪些特点、如何运作、如何收集/分析/部署、如何编排、如何连接到物理网络等话题。


先来看一张Tungsten Fabric vRouter功能组件的概念视图。

8784948e-1779-405a-aa7f-ad29d20a6313-image.png

vRouter代理在主机操作系统的用户空间中运行,而转发器可以是内核模块,在使用DPDK时在用户空间中运行,或者在可编程网络接口卡(也称为“智能NIC”)中运行。 这些选项在后续文章中有更详细的描述,这里说明了更常用的内核模块模式。

代理与控制器保持会话,并发送其需要的VRF、路由和访问控制列表(ACL)的信息。 代理将信息存储在自己的数据库中,并使用该信息配置转发器。 接口连接到VRF,每个VRF中的转发信息库(FIB)都配置有转发条目。

每个VRF都有自己的转发表和流表,然而MPLS和VXLAN表在vRouter中是全局的。转发表包含目的地的IP和MAC地址的路由,并且IP到MAC关联用于提供代理ARP功能。当VM接口启动时,vRouter选择MPLS表中的标签值,并且这些值仅对该vRouter本地有效。

在一个Tungsten Fabric域内,对于不同vRouters中同一虚拟网络的所有VRF来说,VXLAN网络标识符是全局的。

每个虚拟网络都有一个分配给它的默认网关地址,并且每个VM或容器接口都会在初始化时获得的DHCP响应中接收该地址。当工作负载将数据包发送到其子网外的地址时,它将为与网关IP的IP地址对应的MAC进行ARP,并且vRouter以其自己的MAC地址进行响应。

因此,vRouters支持所有虚拟网络的完全分布式默认网关功能。

详细的vRouter数据包处理逻辑

流出VM和流入VM的数据包的逻辑详细信息略有不同,以下两张图和说明中对此进行了描述。

21e2dcac-0078-4fbe-8b1d-2383e293801e-image.png


当从VM通过虚拟接口发送 时,转发器接收该 后,首先检查接口所在的VRF流表中是否存在与 的五元组(包括协议、源和目标IP地址、源和目标TCP或UDP)匹配的条目。

如果这是流中的第一个 ,则不会有条目,转发器通过pkt0接口将该 发送给代理。代理根据VRF路由表和访问控制列表确定流的操作,并使用结果更新流表。动作可以是DROP、FORWARD、NAT或MIRROR。


如果要转发 ,转发器将检查目标MAC地址是否是其自己的MAC地址,如果VM在目标位于VM的子网外时将 发送到默认网关。在这种情况下,将在IP转发表中查找目的地的下一跳,否则将使用MAC地址用于查找。虽然在计算节点内,但vRouter在这里执行物理路由器的IRB(集成路由和桥接)功能。

33ceb641-f0ec-4171-acb6-cf01b8270b59-image.png


从物理网络到达时,vRouter首先检查数据包是否具有支持的封装。如果不是,则将 发送到主机操作系统。

对于基于UDP的MPLS和基于GRE的MPLS,标签直接标识VM接口,但VXLAN需要由VLAN网络标识符(VNI)标识的VRF中查找内部报头中的目标MAC地址。


一旦识别出接口,如果没有为接口设置策略标志(指示允许所有协议和所有TCP / UDP端口),则vRouter可以立即转发 。否则,使用五元组来查找流表中的流,并使用与针对传出分组所描述的逻辑相同的逻辑。


相同子网虚拟机之间的数据包流

当VM中的应用程序首先将数据包发送到另一个VM时,发生的操作顺序如下图所示。


起点是两个VM均已启动,并且控制器已将L2(MAC)和L3(IP)路由发送到两个vRouter,以启用VM之间的通信。发送VM前尚未将数据发送到其他的VM,因此之前没有通过DNS解析目标名称。

a14014f1-644a-412b-9aa4-0825a96d748c-image.png


1. VM1需要向VM2发送数据包,因此首先查找自己的DNS缓存以获取IP地址,但由于这是第一个数据包,因此没有条目。
2. VM1在其接口启动时向DHCP响应中提供的DNS服务器地址发送DNS请求。
3. vRouter捕获DNS请求并将其转发到在Tungsten Fabric控制器中运行的DNS服务器。
4. 控制器中的DNS服务器以VM2的IP地址响应。
5. vRouter将DNS响应发送给VM1。
6. VM1需要形成以太网帧,因此需要VM2的MAC地址,它会检查自己的ARP缓存,但没有条目,因为这是第一个数据包。
7. VM1发出ARP请求。
8. vRouter捕获ARP请求,并在其自己的转发表中查找IP-VM2的MAC地址,并在控制器为VM2发送的L2 / L3路由中找到关联。
9. vRouter使用VM2的MAC地址向VM1发送ARP回复。
10. VM1的网络堆栈中发生TCP超时。
11. VM1的网络堆栈重试发送数据包,这次在ARP缓存中找到VM2的MAC地址,并可以形成以太网帧并将其发送出去。
12. vRouter查找VM2的MAC地址并找到封装路由,vRouter构建外部头部,并将结果数据包发送到S2。
13. S2上的vRouter对数据包进行解封装,并查找MPLS标签以识别将原始以太网帧发送到的虚拟接口,以太网帧被发送到接口并由VM2接收。


不同子网虚拟机之间的数据包流

将数据包发送到不同子网中的目标时,顺序是相同的,只是vRouter作为默认网关响应。VM1将在以太网帧中发送数据包,其中包含默认网关的MAC地址,其IP地址是在VM1启动时vRouter提供的DHCP响应中提供的。


当VM1对网关IP地址发出ARP请求时,vRouter将使用自己的MAC地址进行响应。当VM1使用该网关MAC地址发送以太网帧时,vRouter使用帧内数据包的目的IP地址在VRF中查找转发表以查找路由,该路由将通过封装隧道连接到正在运行目标的主机。


更多Tungsten Fabric解析文章


第一篇: TF主要特点和用例
第二篇: TF怎么运作


关注微信:TF中文社区
邮箱:tfzw001@163.com


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69957171/viewspace-2670121/,如需转载,请注明出处,否则将追究法律责任。

全部评论
Tungsten Fabric项目是一个开源项目协议,它基于标准协议开发,并且提供网络虚拟化和网络安全所必需的所有组件。项目的组件包括:SDN控制器,虚拟路由器,分析引擎,北向API的发布,硬件集成功能,云编排软件和广泛的REST API。

注册时间:2019-12-11

  • 博文量
    67
  • 访问量
    26520