作者:天翼云 郭爱杰
本文关键词:DPDK,多租户,DNS,私有域
一 概述
高性能内网DNS是基于DPDK的多租户私有域解析装置,涉及计算机域名解析领域技术,该系统包括控制面和数据面通信。控制面通信主要是用于同步租户配置信息到DNS网元节点,数据面通信是满足租户ECS的域名解析功能。 在DNS网元节点,底层采用DPDK收发报文,保证性能优势,同时协议栈处理会话时,将租户信息透传至业务进程用于数据隔离。租户的域名空间采用目录层次结构便于维护和部署。在驱动和协议栈对接时,严格区分数据和控制分流,大大降低了后期上线排查问题的难度,也不依赖于其它服务组件,部署方便,支持ARP学习,在复杂的云环网环境中,灵活部署。下面展开介绍高性能内网DNS。
二 系统组成
2.1 数据通信
2.1.1 网络拓扑
ECS 通过宿主机OVS 建立vxlan 隧道,直接达到内网DNS网元节点,在DNS侧利用VXLAN的携带的隧道信息即租户信息直接查找对应租户域名信息,将结果返回给ECS。
2.1.2 访问流程
域名访问流程依次是访问租户域名,共享域名,缓存模块,转发模块,只要查询命中即返回。共享域名是对所有租户共享的内部域名,同时缓存模块仅缓存转发获取的结果,在缓存未过期时,直接命中缓存返回结果,用于提高性能,节省系统资源。
2.2 控制通信
控制平台接受用户的配置信息后,通过IP通信直接发送至DNS 网元节点的agent进程。 Agent进程对配置信息进行增删改处理后,通知数据面的主进程加载变化的配置信息。同时控制器负责把多台DNS的节点选择性的分配到租户的ECS侧,且满足每台ECS具备2个DNS节点,起到容灾机制和负载均衡的目的。
2.3 域名空间
采用有层次的目录结构来隔离租户的私有域,同时VXLAN通信的唯一VNI和租户关联的VPC对应上,加载数据结构采用哈希桶和二叉树来实现高效查询服务。
ZONE
conf/{tenant_id}/zone/{zone_id}/{zone_name}
共享域名即天翼云内网域名对应的zone_id 是全0
缓存模块是域名树方式存储
VPC
conf/{tenant_id}/vpc/{vni}
第一行 100.125.200.1 #VTEP IP
第二行 192.168.0.0/16 #VPC 私网
第三行 8a106a4e7859c01801793fa5d84e01c2 #关联的zone id
第四行 ba106a4e7859c01801793fa5d84e01ab #关联的zone id
三 系统架构
DPDK收发报文,经驱动处理后,进行业务分流;数据面的VXLAN 4789和 DNS 53报文经freeBSD协议栈处理,业务进程处理查询业务;控制面的HTTP 80 经KNI,linux协议栈处理,agent进程处理增删改业务,最终通知业务进程加载变化的配置,实现热数据更新。
如上图,
1. DPDK收发报文,经驱动处理后,进行业务分流
2. VXLAN 4789和 DNS 53报文送至freeBSD协议栈处理
3. Agent北向接口服务的报文经KNI送至linux内核协议栈;
4. Agent南向接口服务的报文通知DNS主进程重新加载配置
5. DNS转发业务经freeBSD协议栈路由至外网口 获取结果,同时DNS 缓存模块会保存查询结果
四 系统性能
4.1 性能极限
在相同的物理系统资源配置下,本产品可达到百万级甚至千万级别QPS, 远高于其它同类产品的性能,同时流量均衡的情况下,实现性能随系统资源的增长而呈现线性上升。
在相同的虚拟系统资源配置下,已经实测:虚机单核 5W QPS 两核10W QPS 四核 20W QPS 8核 40W QPS。 远高于相同配置的虚机性能。
五 总结
简单总结一下,也可说明写作目的、应用场景、或经验分享等。
将来可能的应用场景
1. 天翼云网络产品线,作为云服务厂商的标配服务组件内网DNS上线后,满足客户的私有域解析,天翼云共享域名解析同时兼顾公网域名解析服务。
2. 作为公网DNS服务时,支持授权子域,同时在安全方面支持DNS Over TLS;将大大增加DNS细化产品线和迎合市场需求,扩大客户群体。
可能价值
1. 资源池内的系统资源是有限的,在固定的硬件配置下,采用此产品能够满足高性能的业务场景。
2. 资源池内的网络环境,拓扑结构复杂多变,采用此产品部署内网DNS, 大大降低了运维工程师部署上线的难度和维护成本。