DPDK和DNS服务器关系
来源:互联网 发布:mac如何查看qq群相册 编辑:程序博客网 时间:2024/05/16 11:47
为了更好的抗DDOS攻击与服务更多的用户,需求单机处理千万级别的DNS服务器。
要达到单机处理千万级别的只能采用轮询而非中断方式,在市面上的可实现技术方案有DPDK/pf_ring/netmap等.
其中DPDK为Intel公司主推,并有BAT之类的大型公司进行商用,而且也比较适合处理UDP类型协议。
DPDK 的组成架构如下图所示,相关技术原理概述如下:
在最底部的内核态(Linux Kernel)DPDK 有两个模块:KNI 与 IGB_UIO。
其中,KNI 提供给用户一个使用 Linux 内核态的协议栈,以及传统的 Linux 网络工具(如ethtool, ifconfig)。IGB_UIO(igb_uio.ko 和
kni.ko. IGB_UIO)则借助了 UIO 技术,在初始化过程中将网卡硬件寄存器映射到用户态。
DPDK 的上层用户态由很多库组成,主要包括核心部件库(Core Libraries)、平台相关模块(Platform)、网卡轮询模式驱动模块(PMD-Natives&
Virtual)、QoS 库、报文转发分类算法(Classify)等几大类,用户应用程序可以使用这些库进行二次开发.
用户态模式下的PMD Driver
- 去除了中断影响,减少了操作系统内核的开销,消除了IO吞吐瓶颈;
- 避免了内核态和用户态的报文拷贝;用户态下软件崩溃,不会影响系统的稳定性;
- Intel提供的PMD驱动,充分利用指令和网卡的性能;
HugePage和m_buf管理
- 提供2M和1G的巨页,减少了TLB Miss,TLB Miss严重影响报文转发性能;
- 高效的m_buf管理,能够灵活的组织报文,包括多buffer接收,分片/重组,都能够轻松应对;
Ring
- 无锁化的消息队列,实际验证,性能充足;
82599 SR-IOV NIC
- 实现虚拟化下高速吞吐;
Vector Instance /向量指令
- 明显的降低内存等待开销,提升CPU的流水线效率。
采用其源码examples目录下l3fwd为基础进行最小原型开发demo。
为了使网络可达,我们做了如下开发:
- 先在simpleDNS服务端中临时配置一个服务IP进行过滤.
- 在DNS客户端通过手工配置ARP表使得客户端ping/dig操作的请求包可达服务端,
在simpleDNS服务端做解析请求包,如果是DNS请求构造响应包,其他类型如ARP/ICMP请求则通过KNI入接口ingress()重入Linux内核由
其来处理后再通过KNI的egress()接口响应给客户端。经过上述编码调试后,最简单的原型验证通过了,为下面的全面开发提供了参考依据。
- DPDK和DNS服务器关系
- DNS服务器和DNS从属关系部署
- DPDK-KNI学习和利用(DNS服务)
- 电子邮件服务器与DNS系统的关系
- 搭建域服务器和DNS
- DNS服务器搭建和设置
- DNS服务器配置和测试
- 构建DNS服务器和DHCP服务器
- NS,DNS和A记录 之间关系
- DNS,VPN和Hosts的关系
- IP、DNS、网关、服务器、路由器、交换机,互联网、局域网等的含义和它们的关系?是怎样实现连接的
- DNS服务器类型和DNS服务实战部署
- DNS与DNS服务器
- DNS服务器的安装 和配置
- rndc和TSIG安全防护DNS服务器
- linux下安装和配置DNS服务器
- 树莓派配置静态id和dns服务器
- dns服务器的配置和解析
- Oracle 11g 针对SQL性能的新特性(一)- Adaptive Cursor Sharing
- NDK-JNI实战教程(二) JNI官方中文资料
- Intent详解
- 要学!要会!!要练!!!--程序员笔试面试知识梳理
- 【一天一道LeetCode】#9. Palindrome Number
- DPDK和DNS服务器关系
- Twitter 工程师谈 JVM 调优
- Android Log升级版
- R——Matrix
- C# Dictionary
- 【poj 3321】 Apple Tree 树状数组+dfs序
- mysql中drop、truncat、delete的用法区别
- 虚拟机调用函数是栈堆之间的变化
- 【新人笔记16.04.05】JS--事件绑定