目录
VTN简述
OpenDaylight虚拟租户网络(VTN)是在SDN控制器上的一个应用程序,旨在提供多租户虚拟网络。
传统上,由于网络被配置为每个部门和系统的“竖井”,所以需要在网络系统和运行费用上投入大量资金。因此,必须为每个租户安装各种网络设备,并且不能与其他租户共享这些设备。整个复杂网络的设计、实现和运行都是一项繁重的工作。
VTN的唯一性是一个逻辑抽象平面。这使逻辑平面与物理平面完全分离。用户可以在不知道物理网络拓扑或带宽限制的情况下设计和部署所需的任何网络。VTN允许用户使用传统的L2/L3网络的外观和感觉来定义网络。一旦在VTN上设计了网络,它将自动映射到底层物理网络,然后利用SDN控制协议在单个交换机上配置。逻辑平面的定义不仅可以隐藏底层网络的复杂性,还可以更好地管理网络资源。它实现了减少网络服务的重新配置时间和最小化网络配置错误。
VTN Overview
VTN应用程序包含两个组件:
- VTN Manager:VTN管理器
- VTN Coordinator:VTN协调器
VTN Manager
1.一个OpenDaylight插件通过与其他模块交互可以实现VTN模型的组件功能。OpenDaylight插件还提供了一个REST接口来配置OpenDaylight中的VTN组件。
2.VTN管理器作为一个OpenDaylight的插件被实现。VTN管理器提供了一个REST接口来创建/更新/删除VTN组件。
3.VTN协调器中的用户命令被OpenDaylight驱动程序组件转换为REST API到VTN管理器。
4.VTN管理器还提供了OpenStack L2网络函数API的实现。
VTN管理器功能介绍
1.odl-vtn-manager 提供vtn管理器的JAVA API
2.odl-vtn-manager-rest 提供vtn管理器的REST API
3.odl-vtn-manager-neutron 提供与neutron集成的接口
REST API
VTN管理器通过提供REST API实现虚拟网络功能,如下两个例子:
1.创建虚拟网络:
curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X POST \ http://localhost:8181/restconf/operations/vtn:update-vtn -d '{"input":{"tenant-name":"vtn1"}}'
2.获取所有虚拟网络:
curl --user "admin":"admin" -H "Accept: application/json" -H "Content-type: application/json" -X GET \ http://localhost:8181/restconf/operational/vtn:vtns
VTN Coordinator
VTN协调器是一个外部应用程序,它为使用OpenDaylight VTN虚拟化的用户提供了一个REST接口。它与VTN管理器插件交互来实现用户配置。它还可以进行多个OpenDaylight编配。它实现了OpenDaylight实例中的虚拟租户网络(VTN)配置。在OpenDaylight体系结构中,VTN协调器是网络应用程序、编排和服务层的一部分。VTN协调器将使用VTN管理器公开的REST接口,使用OpenDaylight实现虚拟网络。它使用OpenDaylight api (REST)在OpenDaylight实例中构建虚拟网络。它为北向的VTN应用提供REST api,支持跨OpenDaylight跨多个OpenDaylight跨越多个OpenDaylight的虚拟网络。VTN协调器的REST API请参考:https://wiki.opendaylight.org/view/OpenDaylight_Virtual_Tenant_Network_%28VTN%29:VTN_Coordinator:RestApi
网络功能虚拟化
1.用户首先定义VTN。
2.用户将VTN映射到一个物理网络,该网络允许根据VTN定义进行通信。
3.使用VTN定义,L2和L3传输函数和基于流的流量控制函数(过滤和重定向)是可能的。
虚拟网络功能构建
下表显示了构成VTN的元素。在VTN中,使用虚拟节点(vBridge、vRouter)和虚拟接口和链接构建虚拟网络。通过连接虚拟链接上的虚拟节点的虚拟接口,可以配置具有L2和L3传输功能的网络。
vBridge | l2层交换功能的逻辑表示 |
vRouter | 路由功能的逻辑表示 |
vTep | 隧道端点TEP的逻辑表示 |
vTunnel | Tunnel隧道的逻辑表示 |
vBypass | 控制网络之间连通性的逻辑表示 |
Virtual interface | 虚拟节点上端点的表示 |
Virtual Linkv(vLink) | L1连接在虚拟接口之间的逻辑表示 |
下图显示了构造的虚拟网络的一个示例。VRT定义为vRouter, BR1和BR2定义为vBridges。vRouter和vbridge的接口使用vlink连接。
VTN 构建
物理网络资源映射
将物理网络资源映射到构造的虚拟网络。映射标识由虚拟网络和虚拟接口决定,该虚拟网络的数据包被openflow交换机接受和转发,该虚拟接口被映射到openflow交换机上进行接受或者转发数据包的功能。有两种映射方法。当从OFS接收数据包时,首先搜索端口映射,查找对应的映射定义,然后搜索VLAN映射,根据第一个匹配映射将数据包映射到相应的vBridge。
port mapping | 使用传入l2层帧的交换机ID、端口ID和VLAN ID将物理网络资源映射到vBridge的接口。也支持无标记的帧映射。 |
vlan mapping | 使用传入L2层帧的VLAN ID将物理网络资源映射到vBridge。使用传入L2帧的交换机ID和VLAN ID将特定交换机的物理资源映射到vBridge。 |
mac mapping | 使用传入L2帧的MAC地址将物理资源映射到vBridge的一个接口 |
VTN可以从连接到VTN的交换机上的终端学习终端信息。此外,还可以引用VTN上的终端信息。
1.VTN学习属于VTN的终端信息。它将存储终端的MAC地址和VLAN ID与交换机端口的关系。
2.由VTN学习的终端信息终端信息的老化会一直被维护,直到终端的数据包在VTN中继续流动。如果终端与VTN断开连接,则老化计时器将开始运行,终端信息将保持直到超时。
下图显示了一个映射示例。使用端口映射将BR1的一个接口映射到OFS1的端口GBE0/1。从OFS1的GBE0/1接收的数据包视为来自BR1对应接口的数据包。BR2使用VLAN映射映射到VLAN 200。从任意OFSs的任何端口接收到的VLAN标记200的数据包都被视为来自BR2接口的数据包。
vBridge 功能
vBridge提供桥功能,根据目标MAC地址将包传输到预期的虚拟端口。vBridge查找MAC地址表,并在学习目标MAC地址时将数据包传输到相应的虚拟接口。当目标MAC地址没有被了解时,它将数据包传输到除接收端口(泛流)之外的所有虚拟接口。MAC地址通过如下所示来学习:
1.mac学习:vBridge学习连接主机的MAC地址。每个接收帧的源MAC地址被映射到接收虚拟接口,这个MAC地址存储在每 个vbridge基础上创建的MAC地址表中
2.mac老化:只要主机返回ARP应答,存储在MAC地址表中的MAC地址将被保留。在主机断开连接后,将保留地址,直到老化计时器超时。要让vBridge静态地学习MAC地址,您可以手动注册MAC地址。
vRouter功能
(该功能尚未被实现)
vRouter在vbridge之间传输IPv4数据包。vRouter支持路由、ARP学习和ARP老化功能,下面概述了这些功能。
1.路由功能:当一个IP地址注册到vRouter的虚拟接口时,将注册该接口的默认路由信息。还可以静态地为虚拟接口注册路由信息。
2.ARP学习功能:vRouter根据对其主机的ARP请求或对ARP请求的应答包将目标IP地址、MAC地址和虚拟接口关联起来,并将这些信息保存在为每个路由域准备的ARP表中。注册的ARP条目被保留到老化计时器(稍后描述)超时。vRouter根据单个老化计时器发送一个ARP请求,如果不返回应答,则从ARP表中删除相关条目。对于静态ARP学习,您可以手动注册ARP条目信息。
3.DHCP中继代理功能:vRouter也提供DHCP中继代理功能。
流过滤功能
流过滤器功能类似于ACL。允许或禁止仅与满足特定条件的某种数据包通信是可能的。此外,它还可以执行一种称为重定向-路径点路由的处理,这与现有ACL不同。流过滤器可以应用于VTN中vNode的任何接口,并且可以控制传递接口的数据包。可以在流过滤器中指定的匹配条件如下所示。也可以指定多个的组合条件。
- Source MAC address
- Destination MAC address
- MAC ether type
- VLAN Priority
- Source IP address
- Destination IP address
- DSCP
- IP Protocol
- TCP/UDP source port
- TCP/UDP destination port
- ICMP type
- ICMP code
下表给出了可以应用于与流过滤器条件匹配的包的操作类型。只有那些与特定条件相匹配的数据包,才能通过指定动作中的重定向通过特定的服务器。例如,可以根据目标IP地址对从特定终端发送的每个数据包更改流的路径。还支持VLAN优先级控制和DSCP标记。
操作 | 功能 |
通过 | 传递与指定条件相匹配的特定数据包 |
丢弃 | 丢弃与指定条件匹配的特定数据包 |
转发 | 将数据包重定向到所需的虚拟接口。支持透明重定向(不更改MAC地址)和路由器重定向(更改MAC地址) |
下图显示了流过滤器函数如何工作的示例。
如果在虚拟网络中传输的数据包通过虚拟接口时,流过滤器指定了任何匹配条件,则该函数将计算匹配条件,以查看数据包是否与它匹配。如果包与条件匹配,函数将应用流过滤器指定的匹配操作。在图中所示的示例中,函数计算BR1上的匹配条件,并在与该条件匹配的情况下丢弃数据包。
上面所述多为参考官网翻译过来,如有影响阅读理解,建议直接阅读官网:https://docs.opendaylight.org/en/stable-nitrogen/user-guide/virtual-tenant-network-(vtn).html#vtn-overview。
以上讲述了vtn的功能以及作用方式,后期文章将会针对每个功能做详细介绍以及实践测试。