随着专有网络(Virtual Private Cloud,简称VPC)在公司的全面铺开,相关的网关产品种类越来越丰富,已经逐渐构建了一套较完善的网络产品,包括NAT网关、EIP网关、负载均衡网关、云联网网关等,满足用户访问公网,打通VPC、经典网络,跨地域等多种网络访问场景。
网关种类增多的同时,也带来了一些问题。首先不论是司内还是对外交付,当新增一个可用区时,为了保持功能的完整性,所有种类的网关都要进行部署,会带来较大的部署成本;其次众多种类的网关角色也会增加部署人员的理解难度,延长部署周期;再次网关流量规模不同,灵活扩展能力不足,不能快速利用其他种类网关机器,只能重新部署服务后上线。
所以我们根据现有的需求,将多种类型网关功能进行了整合,并设置了开关,可以按需开启功能。当业务规模较小时,网关可以一台承担多种角色,节省成本;随着规模逐渐扩大,可以按需独立划分网关集群,让流量路径更清晰。
超融合网关基于DPDK框架实现,由转发面和控制面组成。控制面对外提供API,对内给转发面下发配置,用于转发面逻辑匹配。
转发面根据可配置参数按需加载网络功能,选定最优的转发策略,打通流量路径。目前已适配多种架构服务器,包括Intel、鲲鹏、飞腾和海光等。操作系统支持centOS、麒麟os、Anolis OS和统信UOS在内的,多种主流操作系统。
超融合网关要达成的目标有以下几点:
1. 网关功能可以按需开启,配置支持热加载
2. 实现功能基础上,不影响原有转发效率
3. 不仅仅支持网关的超融合,还需要与计算和存储超融合
实现中最关键的点就在于各类网关策略的优先级选择,由于网关基于DPDK,通过用户态类协议栈处理报文转发。DPDK收包后通过上送到用户态IPV4协议栈后进入转发模块。而转发模块inet_hook_ops是通过HOOK的方式挂载在INET_HOOK_PRE_ROUTING上。HOOK挂载的优先级是通过设置priority来实现的。从网关功能分析,我们将优先级定为CCN > EIP > NAT。即优先判断是否为VPC间东西向访问流量,不是则继续判断是否是南北向流量,最后判断是否是主动出公网或访问VIP的流量。
1 负载均衡健康检查场景报文处理
原生Keepalived不支持云上健康检查,VPC内的负载均衡健康检查是通过复用EIP网关功能来实现的,即给每个VPC内的RS(real server)分配一个唯一映射IP,转发面做规则替换后封装VXLAN流量扔给后端计算节点。网关独立部署时,没有问题。但超融合部署后,当虚机也同时绑定了一个真实的EIP,此时转发面无法判断两种绑定该如何转换。
解决方案:从EIP的映射关系来看,普通虚机绑定EIP与健康检查表现出来的形式是没有区别的。但是映射关系下发接口的调用位置不同,普通虚机绑定EIP是通过控制面调用FIPADM工具直接下发至转发面。健康检查是通过Keepalived进程IPC通信至转发进程,因此可以在下发EIP映射关系的时候增加一个FLAG,区分转发进程中的EIP映射关系来源。健康检查来源的FLAG为1,普通EIP绑定FLAG为0。
2.VPC内虚机(已绑定EIP)访问VIP时,如何绕过EIP逻辑,直接进入NAT HOOK?
解决办法:当报文中携带VXLAN信息时,EIP的映射关系查询是根据VMIP进行的。因此,如果流量报文访问的目的地址是VIP并且走至EIP HOOK时会在当前EIP映射关系中找到转发策略,直接在当前HOOK中走转发逻辑。而我们期望的目的HOOK应该是之后的NAT HOOK。应该跳过NAT之前的所有HOOK直接进入vip的流程。因此在CCN和EIP的HOOK中添加一个判断,如果当前目的ip是vip的话,直接accept走下一个HOOK。
3. 计算节点与网关超融合后,同节点数据包不转发如何处理
对外交付时,网关和计算节点都部署在同一节点上。而当同节点虚机请求同节点网关时,内核层面会因为判断目的IP是同物理机上IP,而不将数据包扔出物理机,在lo发出。这导致目的mac地址不正确,网关无法正常处理流量,从而不通。
解决方法:在该物理节点通过BGP三层通告一个VIP,该IP不配置在物理机上。此时虚机请求网关时,会将数据包正常走协议栈发送出去。网关基于DPDK,从而实现的是用户态路由,修改该默认路由的源IP为VIP。数据包绕行交换机继续回到该节点,网关处理完成后发送数据包至计算节点,此时源IP为VIP,这样整条链路就打通了。
超融合网关将当前所有类型网关进行了整合,但并不是简单的网关功能合并,更多的是要保证符合多种场景的数据包,如何得到正确的处理,因此涉及到了很多复杂的条件判断。我们也针对不同的操作系统和CPU架构都做了适配,让交付更简单。
目前的超融合网关极大地增强了网关部署的灵活性。角色快速变更,能够充分提升网关的利用率。但是由于不同类型流量混在一起,也会给问题排查增加一些难度。超融合网关目前主要用于TOB部署,后面将会在司内小规模的机房上线,降低75%部署成本,提升网关利用率。
END