基于GPU的域名快速解析技术研究与设计*

2014-12-21 02:40陈康先陈文杰康书芳ChenKangxianChenWenjieKangShufangLiuXia
互联网天地 2014年11期
关键词:互通域名队列

陈康先,陈文杰,康书芳,刘 霞/Chen Kangxian,Chen Wenjie,Kang Shufang,Liu Xia

(1.华南理工大学 广州510640;2.广州杰赛科技股份有限公司技术中心 广州510310;3.广州军区空军指挥自动化工作站 广州510071)

1 引言

随着移动互联网的快速发展,智能终端的数量呈爆发式增长,加速了IPv4 地址的枯竭,使人们对IPv6的期待日益迫切。为了保护既有的投资,实现从IPv4到IPv6的跨越还需要较长的过渡期。在过渡期内,为保障IPv4网络和IPv6网络之间的互通,互通网关设备将会扮演非常重要的角色。

目前主流设备商普遍采用高速网络处理器和高性能通用计算平台组成硬件平台,在高速网络处理器上实现大吞吐量的IPv4 和IPv6网络数据的收发,在高性能通用计算平台上运行IPv4、IPv6 互通协议和一些应用网关、网络管理等功能的软件,从而形成IPv4/IPv6 互通网关。为了实现高可用性和高效性,目前网关都采取多计算板的方式进行冗余备份以及均衡负载设计。IPv4 和IPv6 互通网关架构如图1所示。

IPv4/IPv6 互通网关的DNS 服务器和普通的纯IPv4 或IPv6 服务器不同,其需要在解析或者逆解析时对IP 地址进行特殊处理,所以一般转换协议的DNS服务器都会部署在网关上。目前IPv4/IPv6 互通网关普遍采用单个或多个CPU 进行计算,CPU的单计算能力虽然强大,但其同时支持的线程数不多,而IPv4/IPv6互通网关经常有大流量并发的情况,所以一般IPv4/IPv6 互通网关在部署转换协议和其需要的DNS 服务器时,为了高效率地处理多用户的并发情况,一般采用分布式部署(即转换协议在一块计算板上,其所需要的DNS 服务器在另外一块计算板上)。如果要实现网关的高可用性,则需要另外2 块计算板作为转换协议和DNS 服务器的备份,占用较多的硬件资源。

图1 IPv4 和IPv6 互通网关架构

另外,IPv4/IPv6 互通网关在过渡协议运算过程中,需要进行大量计算,如果是多用户并发的情况下,需要同时耗费大量的计算资源,而通用CPU 采用的是串行计算方式,处理能力有限,导致同时支持的连接数量有限。当今互联网接入设备众多,加上各类需要高数据流量的业务应用,网络上通过的数据流量每年都在急剧增加,必然导致IPv4 和IPv6 互通网关需要进行大量DNS 解析和转换计算,在网关CPU 处理能力不足的情况下,将导致网络拥塞,降低服务质量。

针对这些问题,本文基于GPU 资源及其并发运算的能力,在保证转换协议和DNS 解析协议性能的情况下,将原本需要2 块计算板进行的工作集合在一块计算板上,降低了网关设备的硬件成本,在同样的硬件资源下,可以做更多冗余备份工作,提高设备的总体可用性。应用GPU 在降低CPU的计算负载的同时,提高了IPv4/IPv6 互通网关单片计算板的并发处理能力,可以更好地应对并发数据。

2 域名快速解析技术设计

本文提出的解决方案可用于IPv4/IPv6 互通网关或类似装置中,该互通网关在网络中的位置如图1所示,其一端连接IPv4网络,另一端连接IPv6网络,IPv4网络和IPv6网络可以通过该网关实现互通的功能。IPv4/IPv6 互通网关或类似装置主要是由高性能计算平台和网络处理平台构成,硬件平台上部署多块高性能计算板,交换板主要用于内部对外的数据交换。

基于此,为解决现有的IPv4/IPv6 互通网关DNS解析存在的问题,本文提出一种基于GPU的DNS 解析方法,利用GPU的并行运算能力,在多用户并发的情况下,通过GPU 进行IPv4/IPv6 互通网关的DNS 解析运算。

在获取DNS 查询报文后,首先对其进行预处理,生成GPU 可识别的DNS 查询数据。然后将这些DNS查询数据按并行队列写入CPU 与GPU的第一共享内存中。通过GPU 从第一共享内存中读取DNS 查询数据,并利用GPU 根据DNS 查询数据进行DNS 解析,生成DNS 解析数据分组,将DNS 解析数据分组按并行队列写入CPU 与GPU的第二共享内存中。最后,从第二共享内存中读取DNS 解析数据分组,合并处理DNS解析数据分组,重整为网络格式数据并发送。总体框架与流程如图2所示。

具体流程如下:

①网卡将接收到的报文放入网卡缓存队列中,CPU 会从该缓存队列中过滤出DNS 查询报文,并放入DNS 报文接收队列;

②将DNS 报文接收队列中的报文取出并进行预处理,将报文整理成GPU 可识别格式。因为网卡报文的数据都是一维的,为了提高GPU的运算效率,GPU处理格式一般是多维格式,所以需要预先将网络报文处理成多维数据格式;

③将预处理完的报文放入并行队列,等待写入CPU 和GPU的共享内存中,由于CPU 和GPU 在处理数据时的区别是单核CPU 采用串行的方式而GPU 采用多线程并行的方式,因此,为了充分利用GPU的优势,将需要处理的数据报文并行排列;

④将已经预处理好的并行队列统一写入CPU 与GPU的共享内存中,由于CPU 和GPU 数据交互部分在整个过程中会占用较多时间,所以会把数据缓冲区填满后才进行写入操作;

⑤CPU 将数据写入共享内存后,就可以执行其他任务,DNS 解析和转换的工作则交由GPU 并行处理,可以有效地利用GPU 空闲资源并节省CPU 资源;

⑥GPU 获取到共享内存中的队列信息后,并行对各队列的DNS 进行解析,已经解析过的DNS 信息会预先保存在GPU 自身的内存中,可以提高查询效率;

图2 总体框架与流程

⑦对于还未解析过的DNS 信息,则会询问上一级DNS 进行查询,并将接收到的IPv4 地址根据转换协议的转换规则生成对应的IPv6 地址,并以一定格式保存在GPU的DNS 缓存中。以过渡协议中的Nat64 和百度域名为例,域名信息和IPv4、IPv6 地址对应关系见表1 所列。

表1 域名信息和IPv4、IPv6 地址对应关系

⑧将已经处理完成的DNS 解析结果放入并行队列中,并写入CPU 和GPU的第二块共享内存中;

⑨CPU 在共享内存中读取已处理的结果,将GPU处理后的数据重整为网络报文格式,合并队列中的数据写入待发送队列;

⑩网卡接口读取发送队列中的信息,根据路由路径将各数据分组通过物理网卡分发出去。

GPU 在进行DNS 解析运算时,优先在自身GPU内存中的DNS 列表中进行查询,若查询到对应的DNS信息,直接生成解析结果;若未查询到对应的DNS 信息时,则访问上一级的DNS 服务器,在上一级服务器中获取DNS 信息,由该DNS 信息生成DNS 解析数据分组。DNS 信息通常保存在GPU 内存的DNS 列表中,以方便下一次解析运算。

GPU 处理流程如图3所示。

①判断DNS 请求的类型(如A、AAAA、PTR 等),A表示IPv4 正向解析,即由域名查询IPv4 地址;AAAA表示IPv6 正向解析,即由域名查询IPv6 地址;PTR 为方向解析请求。

②判断DNS 请求是正向解析还是反向解析,然后根据域名或者IP 地址对GPU中已有缓存DNS 进行查询。

③如果在缓存中没有查询到DNS 记录,则向上一级DNS 进行请求并将获取到的DNS 根据过渡协议的规则进行转换,并保存到缓存中。如NAT64中的DNS规则为前缀为2001:da8:ff::/96,则将180.97.33.67 转换为2001:da8:ff::b461:2143。

④根据类型返回相应的处理结果,并将处理完的数据分组放入并行队列中。

⑤等队列缓冲区满后,将处理后的信息写入共享内存中。

3 结束语

IPv4/IPv6 互通网关上的GPU 资源,通过GPU 编程接口将网关或类似装置的DNS 放置到GPU 上运行,因为GPU 采用的是多线程并行处理的方式,这些方法可以提高IPv4/IPv6 互通网关在应对多用户并发时的处理能力。

同时,利用了GPU 自身的内存资源(显示内存),将DNS 列表放置在显示内存中,在不影响计算机CPU所占用内存的情况下提高DNS的查询速度。在保证转换协议和DNS 解析协议性能的情况下,将原本需要2 块计算板进行的工作集合在一块计算板上,降低了网关设备的硬件成本,在同样硬件资源的条件下可以做更多冗余备份工作,进而提高设备的总体可用性。

图3 GPU 处理流程

1 Despres R.IPv6 Rapid Deployment on IPv4 Infrastructures(6rd).http://www.rfc-editor.org/rfc/rfc5569.txt,2010

2 Bao C,Huitema C,Bagnulo M,et al.IPv6 Addressing of IPv4/IPv6 Translators.http://www.rfc-editor.org/rfc/rfc6052.txt,2010

3 Durand A,Droms R,Woodyatt J,et al.Dual-Stack Lite Broadband Deployments Following IPv4 Exhaustion.http://www.rfc-editor.org/rfc/rfc6333.txt,2011

4 Li X,Bao C,Chen M,et al.The China Education and Research Network (CERNET) IVI Translation Design and Deployment for the IPv4/IPv6 Coexistence and Transition.http://www.rfc-editor.org/rfc/rfc6219.txt,2011

5 Bagnulo M,Matthews P,Van Beijnum,et al.Stateful NAT64: Network Address and Protocol Translation from IPv6 Clients to IPv4 Servers.http://www.rfc-editor.org/rfc/rfc6146.txt,2011

6 Bi Jun,Wu Jianping,Leng Xiaoxiang.IPv4/IPv6 Transition Technologies and Univer6 Architecture.Internation Journal of Computer Science and Network Security,2007,7(1):232~242

7 吴贤国,刘敏,李忠诚.面向NAT用户的IPv6 隧道技术研究.计算机学报,2007(1):1~9

8 田野,张玉军,张瀚文等.移动IPv6网络基于身份的层次化接入认证机制.计算机学报,2007(6):905~909

9 马同杰,陈蜀宇,陈孝文.基于层次化管理的移动IPv6网络接入认证研究.计算机技术与发展,2009(10):22~25

10 吴建平,崔勇,李星等.基于软件线的互联网IPv6 过渡技术构架.电信科学,2008(10):23~29

猜你喜欢
互通域名队列
队列队形体育教案
队列里的小秘密
基于多队列切换的SDN拥塞控制*
《江苏教育研究》官方网站域名变更公告
《江苏教育研究》官方网站域名变更公告
编读互通
中日ETF互通“活水来”
在队列里
宜毕高速陈贝屯互通立交桥
面向VDC组网的VXLAN控制面互通方案探讨