学士学位论文Word文档格式.docx
《学士学位论文Word文档格式.docx》由会员分享,可在线阅读,更多相关《学士学位论文Word文档格式.docx(33页珍藏版)》请在冰豆网上搜索。
BasedonTILE64Processor
AThesisin
SoftwareEngineering
By
GengKui
Advisedby
YangShuqun
SubmittedinPartialFulfillment
OftheRequirements
FortheDegreeof
BachelorofEngineering
May,2011
基于64核下TCP/IP协议栈的实现
软件学院软件工程专业
123012007003耿魁指导教师:
杨淑群
【摘要】TCP/IP协议作为成熟的网际互联手段和标准,已成为嵌入式系统接入互联网的首选协议。
但是在嵌入式系统中,硬件资源较少,难以支持整个TCP/IP协议。
本文以TILExpress-64开发板作为硬件平台,根据网络开发应用的需求,对TCP/IP协议栈进行研究和改进,实现基于64核下的TCP/IP协议栈。
【关键字】多核处理器,TCP/IP,协议栈,嵌入式系统。
目录
1.引言1
1.1课题背景1
1.2课题介绍1
2.Tilera硬件平台1
2.1TILExpress-64开发板1
2.1.1TILE64多核处理器1
2.1.2开发板结构2
2.2Tilera系统的软件架构3
3.TCP/IP协议4
3.1地址解析协议——ARP协议5
3.2网际协议——IP协议6
3.3传输控制协议——TCP协议6
3.4用户数据报协议——UDP协议6
3.5域名系统——DNS协议6
4.协议栈的设计与实现6
4.1协议栈本质及其分层架构7
4.2打开和关闭套接字——socket、close函数7
4.2.1socket函数7
4.2.2close函数9
4.3绑定本地地址——bind函数9
4.4设置和获取套接字选项——setsockopt、getsockopt函数10
4.4.1setsockopt函数10
4.4.2getsockopt函数11
4.5管理网络接口——ioctl函数11
4.6管理套接字——fcntl函数12
4.7监视套接字——select函数12
4.8建立连接——connect函数13
4.9传送数据——sendto、send函数16
4.9.1sendto函数16
4.9.2send函数18
4.10接收数据——recvfrom、recv函数18
4.10.1recvfrom函数18
4.10.2recv函数18
4.11解析域名——gethostbyname函数19
5.TILE64平台上的Nmap移植19
5.1协议栈功能验证19
5.2Nmap移植20
6.结束语22
6.1本文成果总结22
6.2后续工作展望22
致谢24
参考文献25
1.引言
1.1课题背景
随着计算机技术的不断发展,多核处理器[1]已经成为时代的主流。
多核市场目前由两大阵营组成:
以Intel公司和AMD公司组成的X86阵型;
以NetLogic、Cavium、Telira、ARM、IBM等公司组成的MIPS阵型。
X86采用CISC(ComplexInstructionSetComputing)复杂指令集,按顺序串行执行程序命令,控制简单,适于PC以及中、低端服务器,而MIPS采用RISC(ReducedInstructionSetComputing)精简指令集,其相对于CISC指令来说格式统一,种类和寻找方式较少,并采用了“超标量和超流水线结构”,大大提高了处理速度,适于网络通信、信息安全及高端服务器[2]。
为了提升在信息安全领域的竞争力,MIPS阵营提出了SoC(SystemonChip),即片上系统[3],将网络连接、负责均衡、加/解密、应用加速等功能集成在每个芯片上[4],更适合开发超高速网络流量的网络完全产品。
国内一线信息安全厂商联想网御在2008年率先在国内推出了基于MIPS多核架构的万兆安全网关,其网络处理能力可达40Gbps,新建连接速率可达每秒30万个以上[5]。
1.2课题介绍
在本课题中,硬件平台是由Tilera公司生产的TILExpress-64多核处理器开发板。
TILExpress-64开发板具有64个相同的处理器内核,这些处理器内核既可以各自运行一个独立的操作系统,也可以几个内核合起来运行一个支持多进程的操作系统。
该开发板同时也支持标准C/C++编程,对外提供了6个RJ45的网络接口。
Tilera系统提供了应用层编程(NetIO模式),系统函数库提供了相应的API函数,如收包函数netio_get_packet()、发包函数netio_send_packet()等。
在NetIO编程模式下,应用程序可以自己构造MAC包,然后调用发包函数将数据发送到指定的网络接口上[6]。
该平台虽提供了发送/接收底层数据包的接口,但其只实现到数据链路层,不利于软件向多核处理器的移植,无法体现多核处理的优势。
我们平常进行网络应用开发,习惯采用BSDsocket所提供的一系列TCP/IP协议栈函数,例如调用socket()创建套接字、调用sendto()发送数据、调用connect()进行TCP连接等。
如果让开发者自己用NetIO提供的收发包函数完成各类协议之间的通信,无疑是困难而复杂的。
因此本课题的主要内容就是编写一套基于该64核开发板的TCP/IP协议栈,通过我们的封装,开发者只需要像平常使用BSDsocket函数一样调用本协议栈函数进行开发,而不必关系底层数据包的发送和各类协议之间的通信过程(例如TCP连接的三次握手)。
本协议栈主要用来移植IDStest(IntrusionDetectionSystems,入侵检测系统测试工具)[7]、Nmap(一款开源的主机端口扫描工具)[8]等网络安全测试设备。
2.Tilera硬件平台
2.1TILExpress-64开发板
2.1.1TILE64多核处理器
Tilera公司是位于硅谷的新创无晶圆半导体公司,该公司由麻省理工学院(MIT)教授阿南特·
阿加瓦尔(AnantAgarwal)在2004年创建。
该公司已经量产了TILE64核处理器,该处理器是建立在一个“网格”架构上的,这种架构英特尔等公司还没有研究成功。
90nm工艺的RISC处理器——Tile64,每核主频仅仅在600MHz和1GHz之间,总体功耗不过19.2W,但该芯片的总体性能却是当前英特尔双核Xeon的10倍,每瓦特性能更是高达惊人的30倍。
TILE64多核处理器是Tilera公司推出的第一款多核处理器(如图2-1所示),它由64个相同的处理器内核(被称为Tile)组成,每个Tile内核都是一个完整的全功能处理器,拥有自己的一层、二层缓存,并通过内置的无阻塞交换矩阵与其他Tile内核互联,从而形成一个高速的无阻塞的Mesh网络,即Tilera独有的iMesh片上网络。
此外,由于Tilera拥有独特的动态分布式缓存技术,所以TILE64处理器上的cache缓存将具有2倍于其他多核处理器的使用性能[9]。
图2-1TILE64处理器硬件结构图[10]
TILE64多核处理器集成了一套完备的内存与I/O控制器[11],不再需要借助于传统的南北桥芯片来实现外部数据的接入,从而大大降低了硬件系统的设计复杂度与成本。
TILE64多核处理器支持标准的C/C++编程,这意味着大多数的软件或开源代码只要经过简单移植即可在TILE64平台上运行,提供了程序的可重用性[12]。
此外,TILE64多核处理器还支持同时运行多个操作系统实例,既可以每个Tile内核运行一个独立的操作系统,也可以几个Tile内核合起来运行一个支持多进程的操作系统。
当然,部分或者全部的Tile内核还可以在完全无操作系统的模式下运行,这非常适合数据平面的大数据量处理,最大限度消除操作系统对性能的消耗[13]。
2.1.2开发板结构
基于Tilera多核处理器的开发板提供了多种规格的标准PCIe[14](PeripheralComponentInterconnectExpress,第三代I/O接口标准)板卡,具有集成度高、处理性能强、接口丰富等特点,同时板卡上配置大容量的内存,可广泛应用在网络、多媒体、无线通信等密集计算领域。
Tilera多核处理器开发板是非常理想的高性能计算平台,完全同构并且高速互连的iMeshTM片上网络,支持标准Linux+C/C++的集成开发环境。
TILExpress-64开发板便是基于TILE64多核处理器设计、开发的PCIe全场卡,板上集成了2个DDR2插槽和1个CF卡插槽,对外可提供6个(可扩展至12个)GE网口已经1个10GE的CX4接口,板上还提供一个mezzanine扩展槽,可进一步用于扩展I/O接口或协处理卡。
同时提供了丰富的网络接口哦,非常适合用作高速网络处理及高性能多媒体的加速卡,开发板的结构如下图2-2所示。
图2-2TILExpress-64开发板结构图[15]
2.2Tilera系统的软件架构
Tilera系统软件与组件提供了一种操作系统结构和用户层的运行时软件(run-timesoftware),从而是应用程序可以在Tile处理器上运行。
该Tilera运行时软件包含以下几层,如图2-3所示。
图2-3Tilera系统的软件架构[10]
(1)、应用层(Applications)。
在应用层中,用户的应用程序可以调用linux中的标准函数库,比喻C语言函数库;
除此之外,应用层还包括Tilera系统封装的iLib库、NetIO库。
(2)、管理层(Supervisor)。
管理层为用户的应用程序和函数库提供了系统调用和I/O设备,包括linux内核驱动。
在管理层可以通过多进程应用程序和多线程编程来提高性能,操作系统软件管理着硬件资源,提供高层服务,例如虚拟内存分配等。
Tilera系统已经开发了体系结构兼容代码来支持Tile处理器体系结构。
(3)、高级管理层(Hypervisor)。
高级管理层抽象了运行在管理层的Tilera芯片的一些硬件细节,并且管理着内核之间的通信以及内核与I/O控制的通信,同时它还提供了一种底层的虚拟内存系统。
每个内核都运行着一个独立的高级管理层实例,如IPP驱动。
(4)、硬件(TILE64hardware)。
硬件部分是TILE64多核处理器,芯片上融合了外部存储器和I/O接口,外部存储器和I/O接口经由iMesh网络与内核通信。
Tile处理器的每一个内核都是一个独立的32位处理引擎,可以运行一个完整的操作系统。
3.TCP/IP协议
TCP/IP是TransmissionControlProtocol/InternetProtocol的简写,中文译名为传输控制协议/因特网互联协议,又叫网络通信协议,这个协议是Internet最基本的协议、Internet国际互联网络的基础,简单的说,就是由网络层的IP协议和传输层的TCP协议组成的。
TCP/IP定义了电子设备如何连入因特网,以及数据如何在它们之间传