searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Tungsten:一款基于vrouter的SDN控制器

2023-11-27 02:50:51
78
0

是什么?能做什么?

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

为什么这么做?

Tungsten Fabric为不同类型的数据中心或多云环境的部署,提供网络和安全性的单点控制、可见性和管理,可以将SDN技术提升到新的水平,其中包括:
1)为使用不同编排器(OpenStack、Kubernetes、VMware等)编排不同类型的工作负载(虚拟机、容器、裸机)提供一致的网络功能和实施安全策略
2)为数据中心和公有云(AWS、Azure、GCP)和Edge云部署提供生产级网络和安全堆栈Tungsten Fabric发展成为一个SDN软件定义网络框架,用于为Telco Cloud和NFV用例提供SDN解
 
 

怎么做?

控制面怎么去做的?

1)混合云如何管理?
能够对接多款编排器,比如openstack、k8s,提供插件;
 
 

转发面怎么去做的?

转发面主要依赖于tungsten提供的vrouter,会为每个网络提供一个VRF,利用了路由器的IRB,提供集成路由和桥接能力。大部分功能在vrouter里面完成,同节点使用mlps over udp封包进行转发。如果跨节点,则需要vrouter Fabric提供vxlan封包的能力。使用fip与外网通信时,先使用外部网络创建vrf,利用BGP将路由进行通告,到bgp网关。访问underlay也是利用bgp做通过。
 
1)网络模型;
 
2)各个转发面组件原理
使用vrouter作为转发平面。
 
 
3)网络流量转发路径
同子网
 
 
跨子网跨节点
将封包发送到不同子网中的目标时的顺序是相同的,只是vRouter作为默认网关响应。VM1将在以太网帧中发送封包,其中包含默认网关的MAC地址,其IP地址是在VM1启动时vRouter提供的DHCP响应中提供的。当VM1对网关IP地址发出ARP请求时,vRouter将使用自己的MAC地址进行响应。当VM1使用该网关MAC地址发送以太网帧时,vRouter使用帧内封包的目的IP地址在VRF中查找转发表以查找路由,该路由将通过封装隧道连接到主机目的地正在运行。
 
 
其它
提供了服务链,可以基于策略进行转发(类似NFV功能)
 
 

组成

 
概括而言,Tungsten Fabric中有7个角色和(最多)30个微服务。
  • 角色:vRouter,控制,配置,配置数据库,分析(从5.1开始,可以进一步细分为分析,snmp,分析警报),分析数据库,webui
尽管组件很多,但在简单的用例中,只需要4个角色
  • vRouter,control,config,config-database,尽管在大多数情况下,也将需要webui。
如果您只对Tungsten Fabric的控制平面/数据平面部分感兴趣,也可以省略分析,尽管在这种情况下,某些功能(v1服务链,haproxy负载平衡器(和k8s入口),SNAT等)将无法正常工作。
 

control、vrouter

control控制面、vrouter数据面。二者的很多高级功能都继承自MPLS。
由于控件和vrouter-agent在内部使用VPNV4 bgp,因此vRouter及其内部VRF将根据扩展的社区(即路由目标)安装所需的前缀。因此,当在vRouter上创建容器或vm时,它可以向VPNV4路由发出控制信号,并将所有路由反映到其他vRouter,并且dataplane将了解自动将数据包发送到何处。
vRouter的虚拟网络可能具有多个默认网关,并且具有相同的ip和相同的mac!(用junos的术语来说,与virtual-gateway-address的行为类似)由于不需要VRRP来为每个虚拟网络提供默认gw,因此它消除了瓶颈,并使所有内容完全分布。
vRouter还在为某些功能(例如全状态防火墙,NAT,基于流的ECMP等)进行基于流的处理。这是一个重要的区别,因为这种行为会引入一些调整点,例如每秒连接数和最大流数。(在基于数据包的系统中,PPS(每秒数据包)和吞吐量(在某些情况下是等待时间)将是关键。)。
 

config

config由包含很多部分,主要用来为tungsten提供配置的入口。Config-api作为tungsten fabric配置的endpoint,也可用在如control、analytics等组件中。
注意:vrouter的配置需要通过control发送xmpp信息通信。
另外两个进程,schema-transformer和svc-monitor。
 

schema-transformer

该进程将一些抽象的逻辑概念(如logical-router,network-policy,service-chain)转换成L3VPN语言。它将完成一些MPLS-VPN无法做到的工作。
对于logical-router,在内部是创建一个route-target id,它包含了所连接的虚拟网络地址前缀,如果一个虚拟网络加入到logical-router中,那么它将接收logical-router拥有的所有routes。这些行为虽然使用MPLS-VPN,但是是由schema-transformer控制。
所以,配置下发流程如下:
edit config -> (rabbitmq) -> schema-transformer, which creates new route-target -> (internally edit config) -> (rabbitmq) -> control -> (xmpp) -> vrouter-agent -> (netlink) -> vrouter.ko
 

svc-monitor

它为内部服务提供访问外部进程(haproxy load balancer, v1 service-chain instance based on nova API, iptables MASQUERADE for SNAT)的能力。
在内部,vrouter-agent需要使用haproxy或者设置iptables MASQUERADE,svc-monirtor将完成这些相关的设置。
 

config-database

tungsten Fabric使用多个数据库。大部分数据都保存在cassandra中,如果数据发生了变化,rabbitmq会被通知这些变化以传播其他组件,比如control、schema-transformer、vc-monitor……
 

nodemgr

Nodemgr基本上是每个节点状态的源,所以它检查/的使用情况,docker ps或cpu使用情况,并发送分析UVE NodeStatus。这个值可能是contrail-status和其他逻辑(如分析-告警或svc-monitor)的来源,这些逻辑在选择vRouter时检查该值是否有效,因此保持这些功能对于钨织物的运行是相当重要的。
 
 

device-manager

基于config-database的对象、来配置物理路由器。
 

analytic

系统数据分析。
 

analytic-database

analytics还使用了几个数据库,如redis, cassandra, kafka(内部,它也使用zookeeper来部署可选组件)。
 

WebUI

提供界面控制服务。
 

 
0条评论
作者已关闭评论
l****n
2文章数
0粉丝数
l****n
2 文章 | 0 粉丝
l****n
2文章数
0粉丝数
l****n
2 文章 | 0 粉丝
原创

Tungsten:一款基于vrouter的SDN控制器

2023-11-27 02:50:51
78
0

是什么?能做什么?

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

为什么这么做?

Tungsten Fabric为不同类型的数据中心或多云环境的部署,提供网络和安全性的单点控制、可见性和管理,可以将SDN技术提升到新的水平,其中包括:
1)为使用不同编排器(OpenStack、Kubernetes、VMware等)编排不同类型的工作负载(虚拟机、容器、裸机)提供一致的网络功能和实施安全策略
2)为数据中心和公有云(AWS、Azure、GCP)和Edge云部署提供生产级网络和安全堆栈Tungsten Fabric发展成为一个SDN软件定义网络框架,用于为Telco Cloud和NFV用例提供SDN解
 
 

怎么做?

控制面怎么去做的?

1)混合云如何管理?
能够对接多款编排器,比如openstack、k8s,提供插件;
 
 

转发面怎么去做的?

转发面主要依赖于tungsten提供的vrouter,会为每个网络提供一个VRF,利用了路由器的IRB,提供集成路由和桥接能力。大部分功能在vrouter里面完成,同节点使用mlps over udp封包进行转发。如果跨节点,则需要vrouter Fabric提供vxlan封包的能力。使用fip与外网通信时,先使用外部网络创建vrf,利用BGP将路由进行通告,到bgp网关。访问underlay也是利用bgp做通过。
 
1)网络模型;
 
2)各个转发面组件原理
使用vrouter作为转发平面。
 
 
3)网络流量转发路径
同子网
 
 
跨子网跨节点
将封包发送到不同子网中的目标时的顺序是相同的,只是vRouter作为默认网关响应。VM1将在以太网帧中发送封包,其中包含默认网关的MAC地址,其IP地址是在VM1启动时vRouter提供的DHCP响应中提供的。当VM1对网关IP地址发出ARP请求时,vRouter将使用自己的MAC地址进行响应。当VM1使用该网关MAC地址发送以太网帧时,vRouter使用帧内封包的目的IP地址在VRF中查找转发表以查找路由,该路由将通过封装隧道连接到主机目的地正在运行。
 
 
其它
提供了服务链,可以基于策略进行转发(类似NFV功能)
 
 

组成

 
概括而言,Tungsten Fabric中有7个角色和(最多)30个微服务。
  • 角色:vRouter,控制,配置,配置数据库,分析(从5.1开始,可以进一步细分为分析,snmp,分析警报),分析数据库,webui
尽管组件很多,但在简单的用例中,只需要4个角色
  • vRouter,control,config,config-database,尽管在大多数情况下,也将需要webui。
如果您只对Tungsten Fabric的控制平面/数据平面部分感兴趣,也可以省略分析,尽管在这种情况下,某些功能(v1服务链,haproxy负载平衡器(和k8s入口),SNAT等)将无法正常工作。
 

control、vrouter

control控制面、vrouter数据面。二者的很多高级功能都继承自MPLS。
由于控件和vrouter-agent在内部使用VPNV4 bgp,因此vRouter及其内部VRF将根据扩展的社区(即路由目标)安装所需的前缀。因此,当在vRouter上创建容器或vm时,它可以向VPNV4路由发出控制信号,并将所有路由反映到其他vRouter,并且dataplane将了解自动将数据包发送到何处。
vRouter的虚拟网络可能具有多个默认网关,并且具有相同的ip和相同的mac!(用junos的术语来说,与virtual-gateway-address的行为类似)由于不需要VRRP来为每个虚拟网络提供默认gw,因此它消除了瓶颈,并使所有内容完全分布。
vRouter还在为某些功能(例如全状态防火墙,NAT,基于流的ECMP等)进行基于流的处理。这是一个重要的区别,因为这种行为会引入一些调整点,例如每秒连接数和最大流数。(在基于数据包的系统中,PPS(每秒数据包)和吞吐量(在某些情况下是等待时间)将是关键。)。
 

config

config由包含很多部分,主要用来为tungsten提供配置的入口。Config-api作为tungsten fabric配置的endpoint,也可用在如control、analytics等组件中。
注意:vrouter的配置需要通过control发送xmpp信息通信。
另外两个进程,schema-transformer和svc-monitor。
 

schema-transformer

该进程将一些抽象的逻辑概念(如logical-router,network-policy,service-chain)转换成L3VPN语言。它将完成一些MPLS-VPN无法做到的工作。
对于logical-router,在内部是创建一个route-target id,它包含了所连接的虚拟网络地址前缀,如果一个虚拟网络加入到logical-router中,那么它将接收logical-router拥有的所有routes。这些行为虽然使用MPLS-VPN,但是是由schema-transformer控制。
所以,配置下发流程如下:
edit config -> (rabbitmq) -> schema-transformer, which creates new route-target -> (internally edit config) -> (rabbitmq) -> control -> (xmpp) -> vrouter-agent -> (netlink) -> vrouter.ko
 

svc-monitor

它为内部服务提供访问外部进程(haproxy load balancer, v1 service-chain instance based on nova API, iptables MASQUERADE for SNAT)的能力。
在内部,vrouter-agent需要使用haproxy或者设置iptables MASQUERADE,svc-monirtor将完成这些相关的设置。
 

config-database

tungsten Fabric使用多个数据库。大部分数据都保存在cassandra中,如果数据发生了变化,rabbitmq会被通知这些变化以传播其他组件,比如control、schema-transformer、vc-monitor……
 

nodemgr

Nodemgr基本上是每个节点状态的源,所以它检查/的使用情况,docker ps或cpu使用情况,并发送分析UVE NodeStatus。这个值可能是contrail-status和其他逻辑(如分析-告警或svc-monitor)的来源,这些逻辑在选择vRouter时检查该值是否有效,因此保持这些功能对于钨织物的运行是相当重要的。
 
 

device-manager

基于config-database的对象、来配置物理路由器。
 

analytic

系统数据分析。
 

analytic-database

analytics还使用了几个数据库,如redis, cassandra, kafka(内部,它也使用zookeeper来部署可选组件)。
 

WebUI

提供界面控制服务。
 

 
文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0