华云 | 网络虚机化之SDN简介
网络作为云计算中三驾马车之一,承担着重要基础设施角色。随着云计算规模的不端扩大,对网络虚拟化的需求也越来越高。软件定义的网络(SDN)应运而生,提高了网络的高可靠性,可扩展性,和一些高级的功能。
本期“智汇华云”为您邀请到华云数据网络组高级SDN开发工程师任金姚为您带来“ 网络虚机化之SDN简介”。
本期嘉宾
任金姚 华云数据 网络组 高级SDN开发工程师
本文旨在介绍开源SDN控制器TungstenFabric(OpenContrail)的一些实现方式。从下图可以看出SDN的控制层面与数据层面之间的交互是通过XMPP协议,而控制器之间以及网关之间是通过BGP协议来进行的。数据面之间是通过隧道的方式进行转发,可以支持的封装类型为MPLSoverUDP/MPLSoverGRE/VXLAN三种。
配置节点则负责将从REST或者web上下发的配置请求通过IF-MAP组件传递给控制节点并最终下发的数据面。
分析节点则负责可以将配置以及状态信息抓出来,并保存到数据库中。这些数据可以通过北向REST接口进行获取。包括了流的信息,节点状态信息,节点资源信息等。
控制器的互联互通是通过BGP协议来实现。多个控制器只要保证三层可达,就可以通过BGP路由的交互进行互联互通,极大的增加了可扩展性。
我们可以看到集成后Overlay网络的配置信息即可以通过OpenStack的Horizon GUI来进行配置,也可以通过TungstenFabric自带的GUI来进行。同原生OpenStack的区别在于Neutron部分和Compute节点部分。GUI下发的网络相关配置通过Neutron Plugin的方式下发到SDN的配置节点,并通过控制节点最终下发vRouter节点。这里vRouter是数据层面的核心组件,其在linux内核里实现了自己流表,并提供了诸如NAT/FLOW/ACL等高级功能。
虚机创建完成后,我们可以通过查看端口信息来看出其类型已经是vrouter了。
当虚机获取到IP后,vRouter会向控制节点发送两条信息,一个是向控制器发送路由更新注册消息,如果该网络有相关路由更新,则会发送给该vRouter节点;一个是路由通告信息,将本节点的路由信息通告给控制器。其中的路由信息包括了主机路由,下一跳以及封装格式。控制收到各个虚机的通告消息后会形成新的vrf路由表,并将更新后的路由表发送给各个vRouter节点(见第6,7步)。
待第一个报文被vRouter处理后,就会在kernel里面形成一条流表,以后的转发会根据流表进行。
以上是对SDN的简单介绍,其中还有一些高级的功能(如服务链、路由策略等)以及分析的功能,大家感兴趣的可以自行探究一下。
参考文档: kubeconf2018-trace-traffic.pptx https://tungstenfabric.github.io/website/Tungsten-Fabric-Architecture.html |
有话要说