版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 XXXX2007届学士学位毕业论文一种虚拟路由器的体系结构及实现学 号: 07407310 姓 名: XXX 指导教师: XX 专 业: 网络工程 系 别: 计算机系 完成时间:2011年5月目录摘 要:2关键词:21虚拟路由技术及典型应用32 虚拟路由器的体系结构42.1虚拟路由器模板42.2虚拟路由器运行实例52.3全局管理模块53使用封装技术实现代码的多实例化64总结7参考文献一种虚拟路由器的体系结构及实现专业:网络工程 姓名:XXX 学号:07407310(山西省长治市XXXX计算机系07级3班)指导教师:XX 摘 要: 提出了一种虚拟路由器体系结构,并对其中的关键组成部件如虚拟协议
2、栈模块、虚拟路由协议模块以及虚拟管理模块等功能和实现进行了描述,为了实现单一代码能够运行多个实例,使用封装技术修改了协议栈代码、路由协议代码和路由器中其它的功能模块代码,并以BSD4.3为基础实现了虚拟路由器原型。通过对原型的测试,表明提出的体系结构和实现方法能够达到预期效果,具有实际应用价值。应用需求不断要求Internet提供新的、复杂的服务,而VPN(Virtual Privacy Network) 则是代价相对较高的服务之一。为了在网络边界(PE)设备上提供VPN服务,需要有复杂的访问控制和路由过滤机制来保证用户之间无须相互了解的路由信息是互相隔离的;同时,有许多用户需要对路由配置信息
3、等进行单独控制,对于服务提供商而言,为了提供这些额外的控制,必须为这类客户提供单独的路由器设备,这种方法昂贵且难以管理。针对这种需求,出现了“路由器聚合系统”的概念,它是指同一个系统下能单独配置的一个或多个路由器的集合,每一个路由器能灵活绑定某个/些接口,可以灵活配置其支持的协议等。因为其灵活性和高性价比成为边界网络设备的重要使用技术之一。目前,路由器聚合系统的实现主要有两种方法,一是基于软件虚拟实现虚拟路由器(Virtual Router) ,另外一种是基于软硬件协调工作的多计算机系统多路由器(Multi Router)。本文根据对虚拟路由器的实现进行了详细的需求分析,提出了一种虚拟路由器体
4、系结构,并在BSD4.3协议栈的基础上实现了原型,实验结果表明它不仅能够满足应用需求,而且具有简单、易于实现的优点。关键词:虚拟路由器,虚拟私有路由网络,虚拟路由器模板,虚拟路由器运行实例1虚拟路由技术及典型应用虚拟路由可以认为是一种软件设计方法:提供物理路由器在软件层的仿真,从本质上来讲,是许多路由器实例(instance)和协议代码互相独立地运行在同一个平台上,它们共享CPU、内存、接口等资源。对用户而言,就像拥有多台路由器一样。通过使用虚拟路由技术,服务提供商可以轻而易举地为企业或高级用户提供VPN 服务和额外的控制功能,而这些客户使用的是同一台边界路由器。虚拟路由技术能够保证各虚拟路由
5、器在IP 层的私有,所以可以非常方便地在单一设备上创建虚拟私有路由网络(VPRN)。比较图1中的两个例子,其中 (a)没有虚拟路由功能,每一个用户局域网接入Internet 需要安装独立的路由器,以保证用户之间的安全性、私有性和各自网络的高可管理性;(b)则使用了虚拟路由技术,提供同等功能只需要一台物理路由器。2 虚拟路由器的体系结构根据本文对虚拟路由器的实现所作的需求分析,我提出了一种虚拟路由器体系结构,见图2 。整个体系结构由3大部分组成:虚拟路由器模板,全局管理模块以及若干个虚拟路由器运行实例 (虚线矩形框所表示的范围)。2.1虚拟路由器模板 在本体系结构中,所有的路由协议、管理平台及T
6、CP/IP协议栈由相同的目标代码实现,我们称之为虚拟路由器模板,它是路由器系统所有软件代码的集合。虚拟路由器模板是所有虚拟路由器运行实例的模板,各虚拟路由器实例所能支持的功能仅仅是虚拟路由器模板的一个子集,也就是说如果虚拟路由器模板没有包含某个协议的代码,则这些协议代码在各实例中是不可用的,如模板中没有实现BGP 协议,则任何一个虚拟路由器都不提供BGP 协议。虚拟路由器模板按功能包含4 个部分:虚拟TCP/IP 协议栈,虚拟路由协议,虚拟管理平台以及全局管理接口。前面个3功能部分使用封装技术使得相同的目标代码可以运行多个实例,每一个虚拟路由器对应一个运行实例;全局管理接口则提供与全局管理模块
7、的接口,实现对整个系统的管理,它只运行1 个实例。2.2虚拟路由器运行实例 一个虚拟路由器运行实例实际上就是一台虚拟路由器,它包含了路由器的所有关键元素,如接口、路由协议、管理界面等。每一个虚拟路由器实例拥有各自的 协议栈、TCP/IP转发信息库,以及路由协议和虚拟路由器管理平台,它们都依赖于相同的目标代码,只是属于不同的运行实例而已。虚拟路由器管理是系统整个管理功能中的一部分,有两个部分含义:一是授权的虚拟路由器管理员 通过(VRA)登录,使用命令行接口 对虚拟路由器进行配置;Telnet (CLI)另外一个是使用标准的网络管理协议如 实现对虚拟路SNMP由器的管理,这一功能由SNMP 子代
8、理完成。2.3全局管理模块全局管理模块分为两部分:全局配置模块和SNMP 主代理。SNMP主代理通过各个虚拟路由器中的SNMP子代理实现全局管理,这里不作详细说明。全局配置模块由全局管理员通过控制台使用,包含的功能有虚拟路由器的增加和删除、接口的分配、对虚拟路由器支持的协议的增加/删除等涉及到多个虚拟路由器的所有公共操作。实现这些全局配置的接口函数主要有:(1)创建一个新的虚拟路由器实例,实质上为启动一个新的行实例。VRID* pVID virtualRouterCreate /*返回值为虚拟路由器ID*/(char* pName, /*虚拟路由器实例名称,必须是唯一的 */)(2)初始化新创
9、建的虚拟路由器实例。int virtualRouterInit(VRID vrid, /* 虚拟路由器实例创建函数返回的ID*/int maxUnits /* 最大接口数目*/)(3)删除一个已存在的虚拟路由器实例virtualRouterDelete(VRID vrid /* 被删除的虚拟路由器ID*/)(4)为虚拟路由器分配一个接口。一个接口只能属于一台虚拟路由器,已分配接口不能再进行分配。int intAttach(VRID vrid; /* 虚拟路由器ID*/char* ifname /*接口名称,如“eth0 ” */)(5)从虚拟路由器中删除一个接口 int intDetach(V
10、RID vrid; /*虚拟路由器 ID*/char* ifname /*接口名称,如“ eth0 ” */) 其它的功能接口如对模板中协议增加/删除的操作等,由于篇幅限制,不一一列出。3使用封装技术实现代码的多实例化实现本文提出的体系结构的关键是使同一目标代码可以运行多个实例。这里采用了封装技术,把原协议栈代码、路由协议代码等的全局变量进行局部化,使这些变量只在一个实例中有效。同时,为了保证网络构件(如IP、TCP 、路由表等)能在同一个内存空间共存,所有的全局变量被封装成相应的类,这些全局变量涉及到ARP、路由、ICMP 、UDP、IP、TCP 等所有支持的协议和功能。首先举例说明全局变量
11、局部化的实现方法,这里以协议为ICMP例。首先定义ICMP 协议结构VR_ICMP 如下: typedef struct vrIcmp struct icmpstat _icmpstat; int icmpmaskrepl; struct sockaddr_in icmpsrc; struct sockaddr_in icmpdst; struct sockaddr_in icmpgw u_short mtuTable MAXT int mtuTableSize; VOIDFUNCPTR _icmpEr int icmpMask; BOOL maskReplyReceive struct st
12、ruct ip ih; struct icmp icmph; icmpMsg; VR_ICMP;然后定义以下宏:#define VR_ICMP_DATA (VR_ICMP *)vrTblmyStackNum-pIcmpGlobals)#define _icmpstat VR_ICMP_DATA-_icmpstat#define icmpmaskrepl VR_ICMP_DATA-icmpmaskrepl#define icmpprintfs VR_ICMP_DATA-icmpprintfs#define icmpsrc VR_ICMP_DATA-icmpsrc#define icmpdst V
13、R_ICMP_DATA-icmpdst#define icmpgw VR_ICMP_DATA-icmpgw#define mtuTable VR_ICMP_DATA-mtuTable#define mtuTableSize VR_ICMP_DATA-mtuTableSize#define _icmpErrorHook VR_ICMP_DATA-_icmpErrorHook#define maskReplyReceived VR_ICMP_DATA-maskReply Received#define icmpMsg VR_ICMP_DATA-icmpMsg#define icmpMask VR_
14、ICMP_DATA-icmpMask接下来以局部化的全局变量为基础构造虚拟路由器运行实例的上下文环境,即将对应网络构件的全局变量封装成一个一个的类。首先定义全局结构BSD_GLOBAL_DATA:typedef struct bsd_global_data char nameVR_NAME_MAX + 1; /*虚拟路由器实例名称*/ void * pCoreGlobals; /*网络核心数据封装*/ void * pRadixGlobals; /* radix 路由数据封装*/ void * pRouteGlobals; /*静态路由数据封装*/ void * pRipGlobals; /*
15、 RIP协议数据封装*/ void * pOSPFGlobals; /* OSPF协议数据封装*/ void * pProxyArpGlobals; /* ProxyArp数据封装*/ void * pArpGlobals; /* Arp协议数据封装*/ void * pIcmpGlobals; /* ICMP协议数据封装*/ BSD_GLOBAL_DATA上述结构中的每一个分量定义了一个类,它们是对第一步中定义的数据结构的引用指针,如pIcmpGlobals 为指向ICMP协议结构VR_ICMP的指针,这些指针在创建虚拟路由器实例时初始化。在整个系统中,如果最多允许VR_MAX 个运行实例(
16、即可配制成VR_MAX 台虚拟路由器) ,则定义变量vrTbl如下:BSD_GLOBAL_DATA* vrTblVRID_MAX ;经过以上3 个步骤后,就实现了全局变量的局部化,并对新的全局变量进行了封装。这样,原代码中对变量的引用就成为了对本运行实例中相应变量的引用。如在ICMP 协议中,对原全局变量_icmpstat的引用,通过宏定义转换为对myStackNum运行实例的对应变量的引用。根据这一方法,修改协议栈中的所有代码以及路由协议、管理模块等代码,就可以保证同一目标代码能够运行多个实例,因而实现了虚拟路由器。4总结虚拟路由技术在边界路由器上被广泛使用。本文提出了一种虚拟路由器体系结构,通过封装使得相同的目标代码在同一硬件平台上运行多个虚拟路由器实例,每个实例相互独立,拥有
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年丰台区卫生健康委直属事业单位公开招聘医疗卫生专业工作人员备考题库及答案详解1套
- 心理咨询合同(2025年线上咨询)
- 办公类活动策划书
- 2026年中国甘肃国际经济技术合作有限公司关于公开招聘各类专业技术人员的备考题库参考答案详解
- 写字楼租赁使用合同2025年模板
- 2026年三亚市人力资源集团有限公司招聘备考题库完整答案详解
- 2026年中国机电设备招标中心(工业和备考题库化部政府采购中心)招聘备考题库完整答案详解
- 2026年国核备考题库科技有限公司招聘备考题库及1套参考答案详解
- 2026年上海对外经贸大学公开招聘工作人员备考题库及1套参考答案详解
- 2026年宁波农商发展集团有限公司招聘15人备考题库及一套完整答案详解
- 市政工程施工机械管理制度
- 带货主播年终述职报告
- 成都大学《C语言程序设计》2023-2024学年第一学期期末试卷
- JJF 1375-2024机动车发动机转速测量仪校准规范
- DL∕T 1512-2016 变电站测控装置技术规范
- GB/T 4074.6-2024绕组线试验方法第6部分:热性能
- 医疗卫生机构6S常态化管理打分表
- 危险源辨识、风险评价、风险控制措施清单-05变电站工程5
- 2023年副主任医师(副高)-推拿学(副高)考试历年真题摘选带答案
- 朱子治家格言(朱子家训)课件
- 20S517 排水管道出水口
评论
0/150
提交评论