一 数据通信
1.1 网络拓扑
ECS 通过宿主机OVS 建立vxlan 隧道,直接达到内网DNS网元节点,在DNS侧利用VXLAN的携带的隧道信息即租户信息直接查找对于租户域名信息,将结果返回给ECS
1.2 访问流程
域名访问流程是依次访问租户域名,共享域名,缓存模块,转发模块,只要查询命中即返回。共享域名是对所有租户共享的内部域名,同时缓存模块仅缓存转发获取的结果,在缓存未过期时,直接命中缓存返回结果,用于提高性能,节省系统资源。
二 控制通信
控制平台接受用户的配置信息后,通过IP通信直接发送至DNS 网元节点的agent进程。 Agent进程将对配置信息就行增删改处理后,通知数据面的主进程加载变化的配置信息。同时控制器负责把多台DNS的节点选择性的分配到租户的ECS侧,且满足每台ECS具备2个DNS节点,起到容灾机制和负载均衡的目的。
三 域名空间
采用有层次的目录结构来隔离租户的私有域,同时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进程处理增删改业务,最终通知业务进程加载变化的配置,实现热数据更新。
如上图,
- DPDK收发报文,经驱动处理后,进行业务分流
- VXLAN 4789和 DNS 53报文送至freeBSD协议栈处理
- Agent北向接口服务的报文经KNI送至linux内核协议栈;
- Agent南向接口服务的报文通知DNS主进程重新加载配置
- DNS转发业务经freeBSD协议栈路由至外网口 获取结果,同时DNS 缓存模块会保存查询结果
4.1 性能极限
在相同的物理系统资源配置下,本产品可达到百万级甚至千万级别QPS, 远高于其它同类产品的性能,同时流量均衡的情况下,实现性能随系统资源的增长而呈现线性上升。
在相同的虚拟系统资源配置下,本产品可达到百万级甚至千万级别QPS, 远高于其它同类产品的性能,同时流量均衡的情况下,实现性能随系统资源的增长而呈现线性上升。
已经实测:虚机单核 5W QPS 两核10W QPS 四核 20W QPS 8核 40W QPS