管理用于ip联网的资源的制作方法

文档序号:7764430阅读:342来源:国知局

专利名称::管理用于ip联网的资源的制作方法
技术领域
:本发明涉及管理用于IP联网的资源。
背景技术
:例如Linux的操作系统在计算机中起很重要的作用,包括便于应用软件对计算机硬件和其它资源的使用。在一些情况下,操作系统或相关软件可以允许计算机资源被共享或组合以使其能够执行计算任务。例如,已经提出了多种允许计算机资源共享的系统。这些系统包括虚拟机监视器、机器模拟器、应用仿真器、操作系统仿真器、嵌入式操作系统、传统虚拟机监视器和引导管理器。下面对这些系统中的每一个进行简要的描述。虚拟机监视器20世纪60和70年代后期研究很密集的一个主题就是称为“虚拟机监视器”(VMM)的系统。例如参见R.P.Goldberg的"Surveyofvirtualmachineresearch,,,IEEEComputer,Vol.7,No.6,1974。而且,在那段时间,IBM公司采用了虚拟机监视器以在其VM/370系统中使用。虚拟机监视器是一段很小的软件,其直接在硬件上运行,并将机器的所有资源虚拟化。因为输出接口与机器的硬件接口相同,所以操作系统不能确定VMM的存在。结果,当硬件、接口与下层硬件兼容时,相同的操作系统可以在虚拟机监视器上或者在原始硬件上运行。虚拟机监视器在硬件缺乏且操作系统很简单时很流行。通过将计算机的所有资源虚拟化,多个独立的操作系统可以共存于同一个机器上。例如,各个用户可以有自己的运行单用户操作系统的虚拟机。对虚拟机监视器的研究还导致了特别适合于虚拟化的处理器体系结构的设计。其允许虚拟机监视器使用公知为“直接执行”的技术,该技术简化了监视器的实现并改善了性能。通过直接执行,VMM以具有降级特权的模式建立处理器,使得操作系统不能直接执行其特权化的指令。具有降级特权的执行产生陷阱(trap),例如在操作系统尝试发出特权化指令时。VMM因此只需要正确仿真陷阱以允许操作系统在虚拟机中的正确执行。因为硬件变得更加便宜并且操作系统也更加复杂,所以基于直接执行的VMM开始丧失它们的吸引力。但是,近来,已经提出使用它们来解决特定的问题。例如,3Hypervisor系统提供容错性,如由T.C.Bressoud禾口F.B.Schneider在"Hypervisor—basedfaulttolerance,,,ACMTransactionsonComputerSystems(TOCS),Vol.14.(1),1996年2月;以及美国专利号5,488,716"Faulttolerantcomputersystemwithshadowvirtualprocessor”(Schneider等人)中描述的。作为另一个实例,Disco系统在可升级微处理器上运行商品操作系统。见“Disco:RunningCommodityOperatingSystemsonScalabIeMultiprocessors",E.Bugnion,S.Devine,K.Govil禾口Μ·Rosenblum,ACMTransactiononComputerSystems(TOCS),Vol.15,No.4,1997年11月,第412到447页。虚拟机监视器还可以通过使用公知为“二元仿真”或“二元转变”的技术来提供不同处理器体系结构之间的体系结构兼容性。在这些系统中,VMM不能使用直接执行,因为虚拟和下层体系结构不匹配;更确切地,他们必须仿真在下层体系结构上的虚拟体系结构。这允许整个虚拟机(操作系统和应用程序)针对具体的处理器体系结构来写以在另一个之上运行。例如,近来已经建议IBMDAISY系统在VLIM体系结构上运行PowerPC和x86系统。例如,参见K.Ebcioglu和E.R.Altman,"DAISY=Compilationfor100%ArchitecturalCompatibilityProceedingsofthe24thInternationalSymposiumonComputerArchitecture,1997。机器模拟器/仿真器机器模拟器,也称为机器仿真器,作为应用程序在现有操作系统上运行。它们以足够的精确度模拟给定计算机系统的所有元件,以运行操作系统和其应用程序。在研究微处理器性能的研究中经常使用机器模拟器。例如,见M.Rosenblum等人的,“UsingtheSimOSmachinesimulatortostudycomplexcomputersystems,,,ACMTransactionsonModelingandComputerSimulation,Vol.7,No.1,1997年1月。它们已经被用来将Intelx86机器模拟为在基于PowerPC的苹果Macintosh系统上的“VirtualPC”或“RealPC”产品。机器模拟器与例如DAISY的一些VMM共享二元仿真技术。但是,他们本身与VMM的不同在于他们在主机操作系统上运行。这有很多优点,因为他们可以使用由操作系统提供的服务。另一方面,这些系统还可能受到主机操作系统的某些限制。例如,提供保护的操作系统永远不会允许应用程序直接发出特权化指令或改变其地址空间。这些限制一般导致很显著的开销,特别是当在被防止应用的操作系统上运行的时候。应用仿真器与机器模拟器类似,应用仿真器也作为应用程序运行,以提供不同处理器体系结构之间的兼容性。但是,与机器模拟器不同的是,它们仿真应用级别的软件,并将应用的系统转变为到主机操作系统中的直接呼叫。这些系统已经在对体系结构的研究中使用,并且被用于在更新的基于PowerPC的Macintosh系统上运行为68000体系结构所写的传统二元制。此外,它们已经被用于在运行微软NT的Alpha工作站上运行为微软NT所写的x86应用程序。在所有情况下,期望的操作系统匹配下层的一个系统,这使实现简化。其他系统,例如公知的Insigna的SoftWindows使用二元仿真来在除PC之外的平台上运行Windows应用程序以及Windows操作系统的变化版本。至少两个公知的系统允许Macintosh应用程序在其他系统上运行=Executer在运行Linux或Next的Intel处理器上运行它们,MAE在Unix操作系统上运行它们。操作系统仿真器操作系统(OS)仿真器允许为一个给定的操作系统应用程序二元接口(ABI)所写的应用程序在另一个操作系统上运行。它们将由应用程序对原始操作系统作出的所有系统调用转变为对下层操作系统的系统调用序列。ABI仿真器当前被用于允许Unix应用程序在WindowNT上运行(theSoftwayOpenNT仿真器),并被用于在公共域名操作系统(theLinuxWINE项目)上运行为微软操作系统所写的应用程序。与基本上独立于操作系统的虚拟机监视器和虚拟机模拟器不同,ABI仿真器与它们仿真的操作系统紧密相联。操作系统仿真器与应用程序仿真器不同之处在于应用程序已经被编译成目标处理器的指令集体系结构。OS仿真器不必担心应用程序的执行,而只担心它对下层操作系统作出的调用。嵌入式操作系统如果目标是给应用程序提供主机操作系统没有提供的额外保证,那么仿真用户等级的ABI就不是一个选择。例如,VenturComRTX实时子系统将实时内核嵌入在微软NT操作系统中。这有效地允许了实时处理与传统的NT处理共存于同一系统内。这种共存要求操作系统最低级别即其硬件抽象层(HAL)的改变。这允许RTX系统首先处理所有的I/O中断。该解决方法与WindowsNT紧紧联系,因为两种环境共享相同的地址空间和中断进入点。传统虚拟机监视器某些处理器,最明显的是那些具有Intel体系结构的处理器,包含特殊设计用来将给定传统体系结构虚拟化的特定执行模式。该模式被设计来支持严格的传统体系结构的虚拟化,但不支持严格的现有体系结构的虚拟化。传统虚拟机监视器包括合适的软件支持,其允许使用特定的处理器模式运行传统操作系统。具体地,微软的DOS虚拟机在虚拟机中在微软Windows和NT上运行DOS。作为另一个实例,免费软件DOSEMU系统在Linux上运行DOS。虽然这些系统统称为虚拟机监视器的形式,但是它们在现有的操作系统例如DOSEMU上运行,或者作为现有操作系统微软Windows和微软NT的一部分运行。在这方面,它们与上面描述的真实虚拟机监视器非常不同,并且与应用于上述发明的术语“虚拟机监视器”的定义也不同。关于组合资源,这种组合可以被用来处理在不组合时难以或不可能处理的费力的计算任务。例如,电信网络被日益地要求支持高带宽、低延迟信息流。对于一些应用,所需的带宽快速朝兆位每秒发展(特别是,例如,对于请求的视频;动画的共享仿真;和分布式计算)。为了提供“智能网络”便于例如到特定号码的呼叫重定向,计算机程序在与交换中心连接的大量(例如高达100)主机上运行。服务将被提供给具体消费者的方式(例如,对一个消费者的呼叫将被路由到的特定号码)取决于存储在主机上的与该消费者关联的数据。这样,在成百上千的主机上可以有几百万个用户记录。在"Twenty-twentyvision-softwarearchitecturesforintelligenceinthe21stcentury",P.A.Martin,BTTechnolJVol13No.2April1995中,作者提出使用面向对象技术来实现所需的分布式处理。对面向对象技术的描述将可以在例如由E.L.Cusack和E.S.Cordingley编辑的BTTechnolJvol.11No.3(July1993),“面向对象技术”中找到。虽然术语不总是被精确地使用,但是面向对象技术在这里指其中数据被以“封装”形式存储的计算技术,其中,数据不能直接被调用程序或例程访问,而只能由可以读、写和编辑数据的程序的有限部分访问。数据及其相关计算机代码的记录称为“对象”。到对象和从对象的通信一般通过“消息传递”进行;即,对对象的调用传递数据值,并调用包含在对象内的一个程序的操作,然后返回数据值。对于希望使用对象定向方法的程序员来说,有各种语言可用。在这些语言中,当前最常见的是C++。分布式处理与单处理器操作在以下几个方面不同。首先,取决于其它程序或数据是存在于相同的主机上作为调用程序还是存在于不同的主机上,可能需要不同的访问技术。程序或数据的位置还将影响可以从另一个程序到达这里的速度。此外,一个或多个主机可能失败,而留下了另一些处于工作中。分布式计算传统上通过使用“客户机_服务器”设置来进行,其中,在一个计算机上的“客户机”程序询问另一个计算机上的“服务器”程序,然后执行功能或返回客户机程序要求的数据。对象定向技术已经被广泛应用于分布式处理。该方面现有技术的概要可以在下列各处找至Ij“对象定向编程系统”;BlairG.,PitmanPublishing,London,1991(ISBN0-273-03132-5),具体在223-243页的第9章;“Distributedsystemsandobjects,,;DavidHutchison和JonathanWalpole。以前的尝试一般是向现有的计算机语言中增加新的语法,或者建立了新的计算机语言,来扩展传统的对象定向编程来处理分布式处理。虽然具体的应用可能不同,但是无线通信系统的部件一般是类似的,如在下面更详细描述的。例如,无线通信系统通常包括无线终端或移动站、无线基站、经常称为移动电话交换局(MTSO)的交换或网络控制设备,以及无线通信系统向其提供访问的网络,例如公共交换电话网络(PSTN)。各种无线通信应用使用用于传送信息以有效地利用可用频谱的多种调制技术中的任何一种。例如,使用频分多址(FDMA)、时分多址(TDMA)和码分多址调制技术来建立高容量多址系统。被设计用来与占用公共无线频谱的多个移动站通信的电信系统称为多址访问系统。例如,在FDMA模拟蜂窝系统中,例如在AMPS模拟蜂窝无线系统中,可用频谱被分成大量的无线信道,例如,发送和接收载频对,其中每一个对应于消息传送信道。每一个发送和接收频率信道的带宽是窄带,一般为25到30kHz。这样,FDMA系统允许信息将在可与所发送信息例如语音信号的带宽相比拟的带宽中被发送。FDMA系统中的小区服务区一般被分为多个小区,每一个小区具有被选来用于帮助减少小区间共信道干扰的一组频率信道。频分通常与时分结合,使得例如在FD/TDMA系统中,发送电路在频域和时域上都区别开。在数字FD/TDMA(通常称为TDMA)小区系统中,窄带频率信道被重新格式化为被分成大量时隙的数字传送路径。来自不同小区的数据信号被交织成被指定的时隙,并以相应地更高的位速率发出去,指定给每一个移动站的时隙是周期性重复的。虽然TDMA带宽可能稍大于FDMA带宽,但是约30kHz的带宽一般用于AMPS-D数字TDMA小区系统。用于小区多址调制的另一个途径是CDMA。CDMA是用于在无线通信系统上传送信6息的扩频技术,其中,由被传送信号占用的带宽远远大于基带信息信号(例如语音信号)所需的带宽。这样,CDMA调制使用代码字标识共享相同频率信号的各种信号,通过复合调制将窄带信息信号频谱扩展到宽带宽上。对被传送信号的识别通过选择使用合适代码字的、被频谱编码的信号而发生。与在FDMA和TDMA调制技术中使用的约30kHz的窄带信道相比,CDMA系统一般使用约1.25MHz或更大的带宽。典型地,上述的移动通信系统被分层设置,使得地理“覆盖区域”被分成大量更小的叫做“小区”的地理区域。现在参照图1,每一个小区优选地由基站收发信机(“BTS”)102a服务。数个BTS102『11通过固定链路10如-11由基站控制器(“85(”)1063集中管理。BTS和BSC有时被统称为基站子系统(“BS”)107。数个BSC106b_n可以通过固定链路108a-n被移动交换中心(“MSC”)110集中管理。MSC110起到本地交换交换机的作用(还具有处理移动性管理要求的附加特征,如下面讨论的),并通过干线组与电话网络(“PSTN”)120通信。美国移动网络包括本地MSC和服务MSC。本地MSC是对应于与移动用户(也将其如上称为移动站或“MS”)114相关联的交换机的MSC;这种关联是基于电话号码的,例如MS的区域代码。MS的实例包括手持设备,例如移动电话、PDA、双向寻呼机或膝上型计算机或移动单元装置,例如连接到冷藏车厢或机动轨道车、容器或拖车的移动单元。本地MSC对下面讨论的本地位置寄存器(“HLR”)118负责。另一方面,服务MSC是用来将MS调用连接到PSTN的交换机。结果,有时本地MSC和服务MSC功能由相同的实体服务,但其他时候不是这样(例如当MS漫游时)。典型地,访问位置寄存器(“VLR”)116与MSC110共同定位,并且在移动网络中使用逻辑单称HLR(逻辑单称HLR可以是物理分布的,但是被作为单个实体对待)。如将在下面描述的,HLR和VLR被用来存储用户信息和简档。无线信道112与整个覆盖区域相关联。如上所述,无线信道被分成分配给各个小区的信道组。信道被用于承载信令信息以建立调用连接和相关设置,并且在调用连接被建立时用于承载语音或数据信息。移动网络信令具有至少两个重要的方面。一个方面涉及MS与网络其余部分之间的信令。在2G(“2G”是“第二代”的行业术语)和更后的技术的情况下,该信令有关由MS使用的访问方法(例如TDMA或CDMA),其关于例如无线信道的分配和认证。第二方面涉及移动网络中各种实体之间的信令,例如在MSC、BSC、VLR和HLR之间的信令。该第二部分有时被称为移动应用部分(“MAP”),尤其是在七号信令系统(“SS7”)情境中使用时。SS7是公共信道信令系统,电话网络的单元通过该系统以消息的形式交换信息。各种形式的信令(以及数据和语音通信)根据各种标准来传送和接收。例如,电子工业协会(“EIA”)和电信行业协会(“TIA”)帮助定义许多美国标准,例如IS-41,其为MAP标准。类似地,CCITT和ITU帮助定义国际标准,例如GSM-MAP,其为国际MAP标准。有关这些标准的信息是公知的,并且可以从相关组织团体或从文献中找到,例如参见Bosse,SIGNALINGINTELECOMMUNICATIONSNETffORKS(Wiley1998)。为了从MS114传递调用,用户拨号码,并按下手机或其它MS上的“发送”。MS114通过BS107发送指示向MSC110请求的服务的所拨号码。MSC110检查相关VLR116(在下面描述)来确定MS114是否被允许所请求的服务。服务MSC将调用路由到在PSTN120上的被拨叫用户的本地交换机。本地交换机提醒被调用的用户终端,并且回答信号通过服务MSC110被路由回MS114,其然后结束到MS的语音路径。一旦设置被完成,调用就可以继续进行。为了将调用传递到MS114,(假设调用发起于PSTN120),PSTN用户拨叫MS的相关电话号码。至少根据美国标准,PSTN120将调用路由到MS的本地MSC(其可以是服务MS的MSC,也可以不是)。然后,MSC询问HLR118,以确定哪个MSC当前正服务MS。这也起到通知服务的MSC有调用即将到来的作用。然后,本地MSC将调用路由到服务的MSC。服务的MSC通过合适的BS寻呼MS。MS作出响应,合适的信令链路被建立。在调用过程中,如果需要,例如由于信号条件的原因,BS107和MS114可以合作来改变信道或BTS102。这些改变称为“切换”,它们含有它们自己类型的已知消息和信令。图2更详细地示出了CDMA移动网络中BS107与MSC110之间的信令和用户业务接口。BS107使用用于控制语音和数据电路的基于SS7的接口称为“Al”接口来传送信令信息。称为“A2”的接口在MSC的交换部分204与BS107之间承载用户业务(例如语音信号)。称为“A5”的接口被用来在源BS与MSC之间为电路交换数据调用(与语音调用相对)提供用户业务的路径。有关Al、A2、A5中一个或多个的信息可以在CDMAInternetworking-DeployingtheOpen-AInterface,Su-LinLow,RonSchneider,PrenticeHall,2000,ISBN0-13-088922-9中找到。移动通信供应商正提供更新的服务,例如向互联网的“数据调用”。对于这些服务中的至少一些服务来说,MSC不是成本有效的,因为它们最初是为语音调用设计的。由于许多MSC软件体系结构所使用的私有性和封闭式设计,向MSC中集成新的服务是很难的或者不可行的。即,提供服务所必需的软件逻辑不易被添加到MSC110中。通常,使用交换附件来提供这种服务。例如,交互工作功能(“IWF”)是用于将数据调用路由到互联网的附件。每一个途径——将功能集成到MSC或增加干线侧附件——在服务传递中都涉及MSC。通过MSC设计改变或者通过干线侧附件来集成新的服务会增加MSC处的网络拥塞,并且消耗大量的MSC资源。数据调用典型地使用互联网,这是分组交换介质的实例。分组交换介质如下操作。数据序列将在网络上从一个主机发送到另一个主机。数据序列被分割成一个或多个分组,每一个具有含有控制信息的报头,每一个分组通过网络被路由。分组交换的常见类型是数据报服务,其对于传递提供很少的保证或者没有保证。可能一起逻辑归属于更高层上的分组在网络层上彼此互不相关。分组可以在由发送器更早发送的另一个分组之前到达接收器,可以以被损坏的状态到达(在这种情况下,它可能被抛弃),可以被任意延迟(虽然有可能导致其被抛弃的终止机制),可以被复制,并且可能丢失。已经提出了至少一个无线互联网系统,其使用本地无线收发信机技术在很广的地理区域上提供对几十兆赫带宽的可靠访问(例如在微小区系统中)。与小区无线语音系统相比,蜂窝无线语音系统依赖于区域中成百上千个小区,本地无线收发信机系统依赖于区域中成千上万个收发信机。在这样的系统中,每一个收发信机可以覆盖例如0.05平方公里,这约为传统小区覆盖范围的一百分之一。无线频(RF)谱的高空间再用允许本地无线收发信机系统以给定数据速率容纳比传统蜂窝系统更多的活动设备。此外,因为用户更接近接入点,所以本地无线收发信机系统容纳更低的功率传输。局域无线收发信机系统可以支持大量的设备,这些设备以高速运行,对设备的电池具有较小的消耗。例如,在城市范围的10,000个收发信机接入点(小区中心)的本地无线收发信机系统网络中,如果每一点给其用户提供Ι-Mb/s的集中吞吐,那么可以以每一个100kb/S支持每个收发信机10个活动设备,城市中总计100,000个活动设备。如果每一个设备10%的时间是活动的,那么这种网络可以支持百万个设备,不过需要对用于信道访问、切换的开销以及对非对称业务(例如,其中流向设备的位多于从其中流出的位)的任何供应消耗的带宽作出某种计数。每一个本地无线收发信机系统接入点可以是或类似于无线局域网络(LAN)技术例如IEEE802.11的接入点。非对称数字用户线路(ADSL),或者电缆调制解调器线路可以被用来提供每一个接入点与互联网之间的链路(无线链路可以同时使用或作为替换)。关于访问设备的位置,因为每一个设备需要电源并且优选地被提高到足够的无线频率覆盖范围,所以设施杆和建筑物上的位置是代表性的候选位置,以高速相邻互联网访问基础结构作为骨干。
发明内容在本发明的一个方面中,用于IP联网的资源被管理。字段被添加到操作系统内核软件程序中。该字段标注虚拟路由器情境。分组处理软件代码被改变以使得分组处理软件代码根据虚拟路由器情境执行。本发明的实现可以提供下列的一个或多个优点。可以在相同的处理器上实现多个主机,或者在操作系统的相同例子中实现多个主机。相同的IP地址可以在两个不同的情境中使用,使得该IP地址作为两个不同的实体。一个设备可以参与多个专用网,而不会在专用网之间泄漏信息。对一个互联网协议(IP)地址的主机实现可以遍布在宽松耦合的、运行操作系统不同例子的多个处理器上。组合的处理能力可以被用于一个IP主机。分布式主机可以与现有配置或要求在一个主机上有所行动的现有协议兼容。该分布式主机可以与现有配置一起使用,使得消费者不需要改变消费者实现的一般设计。从下面包括附图的说明和权利要求中,其它优点和特征将变得很清楚。图1-2、3A_3B、4是通信系统的框图。图5-6是管理用于IP联网的资源中所用方法的流程图。具体实施例方式通信系统提供通信特征,包括依赖于共享或组合计算资源的特征。通信系统具有如下描述的互联网介质网关机制(“IMG”)和软交换机制。图3A图示了实例系统400,其具有连接在BSC415A与MSC420A之间、与软交换425A通信的IMG410A。IMG410A通过Al、A2和A5接口与BSC415A通信。如下面描述的,软交换425A通过IMG410A协调BSC415A与MSC420A之间的路径建立和通信。IMG410A还与互联网430通信,通过互联网430IMG410A能够将消息定向到邮件服务器440,如下面描述的。可以类似地提供其它IMG和软交换连同其它BSC和MSC,如在图3A中由IMG410B、软交换425B、BSC415B和MSC420B所示的。MSC420A、420B被连接到PSTN460,并且可以通过PSTN460彼此连接。软交换425A、425B被连接到SS7系统470,并且可以通过SS7系统470彼此通信。(图3B图示了可替换的设置402,其中,MSC420A被连接在IMG410A与BSC415A之间,MSC420B被连接在IMG410B与BSC415B之间。)图4图示了系统1010,其可以支持和帮助在一个或多个移动无线网络上提供语音和数据服务。在具体的实现中,系统1010可以包括Starent网络公司的ST-16IMG产品,其是承载等级的、高性能的平台,可以支持包括时分复用(TDM)数据、异步传输模式(ATM)信元数据和互联网协议(IP)分组数据的多种数据类型。ST-16体系结构使用加速卡(例如卡1020)例如分组加速卡(PAC)用于分组处理以及电话加速卡(TAC)用于语音处理。每一个PAC可以进行数据处理,每一个TAC可以进行语音处理。在ST-16中,物理输入/输出(I/O)接口在行业标准线路卡(例如卡1030A、1030B)上终接,并且可以承载根据各种物理接口标准的TDM、分组或ATM信元数据类型。因为TDM接口主要承载语音业务,所以TDM线路卡与TAC通信。以太网线路卡承载分组数据业务,并且可以与PAC通信。光纤线路卡支持ATM信元,其可以承载语音和数据业务,并且可以与PAC或TAC通信。ST-16还具有冗余四通卡(RCC)(例如卡1040A、1040B),其可以被用来允许在任意槽中的线路卡与ST-16的任意槽中的加速卡通信。ST-16使用卡到卡的通信系统(“STARCharmel”)来提供链路以将加速卡连接到线路卡和RCC。在示例性实现中,STARCharmel链路具有4.OGbps数据容量和包括在信道锁定模式下工组的两个物理串行链路。每一个物理串行链路以2.5Gbps(8B/10B编码)为时钟,并且可以承载2.OGbps数据。在ST-16中,期望实现虚拟化和分布式主机。关于虚拟化,多个主机在相同的处理器上或操作系统的相同例子中实现,使得可能多于一个的IP地址实现在相同的系统上并且具有如下描述的不同情境。关于IP联网,每一个情境彼此很好地分开。因此,相同的IP地址可以在两个不同的情境中使用,使得IP地址作为两个不同的实体起作用。这至少在隔离开互联网的专用网的情况下是期望的。不同的专用网可以使用相同的IP地址,但是因为专用网彼此分开,所以相同的IP地址在每一个专用网中具有不同的意义。有时期望使一件设备参与多个专用网,而不会在专用网之间泄漏信息。例如,设备可以同时给一组专用网中的每一个专用网提供一组功能,而不会将这些专用网转变为一个网络。情境允许两段软件在相同的物理设备件上运行,并且可能在操作系统的相同例子中运行,如同或几乎如同在一个物理系统上运行一段软件、而在另一个物理系统上运行另一段软件那么容易。例如,利用情境,服务两个专用网的单个设备件可以在两个专用网上具有相同的IP地址,并且可以取决于哪个网络发出消息来对进入消息作出不同的反应。专用网可以由于偶然事件或由于设计,或者作为地址缺乏的结果而共享IP地址。在后者的情况下,在互联网上,获得大量可路由地址空间(被用于在互联网上直接通信的地址空间)的使用可能很难或者很贵。结果是,专用网有时被用作对大块可路由地址空间的替换。专用网增加IP地址与具有分机的私人办公电话系统增加单个主要公共电话号码很相似,其中,专用网上的计算机可以通过互联网协议而不一定涉及互联网本身交互通信,10这与私人办公电话系统的用户可以互相通信而不一定涉及公共电话系统很相似。在虚拟化的情况中,单件设备可以在两个不同专用网上的相同地址找到,与例如语音邮件系统可以从两个单独的私人办公电话系统在相同的电话分机(例如分机110)处找到相似。在单件设备处的进入通信取决于哪个专用网发送通信而被不同地处理,与到达语音邮件系统的电话分机处的进入调用取决于哪个私人办公电话系统发出调用而被不同地处理类似。在两种情况下,其对于避免错误处理可能是很重要的。传统上,Linux操作系统不能如同语音邮件系统服务两个私人办公电话系统一样服务两个专用网。通过下面描述的虚拟化,Linux操作系统可以参与两个或多个不同的专用网,并且即使在相同的地址被用在专用网上时也能避免错误的处理。对于虚拟化,在处理IP组网的操作系统内核内部的许多或所有空间中,要素被添加到许多或所有合适的数据结构中,以通过例如情境号来指示合适的情境用于处理例如进入数据分组的数据。在具体的实现中,要素将情境号保留在内核内的每一个相关数据结构中,包括路由表,并且由系统处理的每一个分组用情境号标注,使得当分组经过系统时,系统跟踪分组与其相关的情境。Linux操作系统允许路由表的多种情况;每一个情境具有其自己的路由表,并且每一个路由表与情境号相关联。到系统的每一个接口与情境号相关联,使得当分组进入系统中时,系统能够确定分组所属的情境。作为到应用的内核接口部分的每一个数据结构与情境号相关联。这样,例如,应用程序使用网络所用的称为套接字的抽象与情境号相关联,使得系统可以确定正被应用程序使用的套接字属于的情境。结果是,在至少一些实现中,基于内核中的情境化/虚拟化,系统可以具有在多个情境中操作的单个操作系统的情况,使得系统可以运行一般为Linux或任何类似Unix的操作系统写出的应用程序代码,对应用程序代码的改变很少或没有改变。分布式主机与虚拟化不同之处在于分布式主机允许对一个互联网协议(IP)地址的主机实现扩展到运行分开的操作系统情况的多个宽松耦合的处理器上,使得处理器实现单个IP主机。因此,组合的处理能力可以用于一个IP主机,这可以允许仅通过一个处理器上可用的处理能力不可实现的或不可能的结果出现。与计算机系统在其中被使得行为如同多个主机的方案不同,分布式主机与现有配置或者要求行为在一个主机上进行的现有协议兼容。分布式主机可以与现有配置一起使用,例如使得消费者不需要改变消费者实现的一般设计。具体而言,在至少一些实现中,分布式主机系统可以运行为Linux或另一个Unix类型环境所写的应用软件,而对应用软件的改变很少或没有改变。因此,分布式主机系统允许添加的或扩展的特征并入该系统中,包括通过移植已经能够在Linux或另一个Unix类型的操作系统上运行的现有软件。关于具体的实现,对LinuxIP实现的修改落在两个大的类下(1)对于虚拟化,支持虚拟路由器和虚拟主机,以允许单独的操作系统情况支持IP的路由器(转发)和主机功能两者,如同其为多个操作系统的情况一样,即,即使空间在数字上重叠,也支持多个不同的IP地址空间,作为区分。(2)对于分布式主机,支持分布式IP主机,以允许根据不同的操作系统情况,在不同的传输控制协议(TCP)或相同主机的用户数据报协议(UDP)端口上提供服务。传统的Linux包括对多个路由表的支持,这是虚拟化的转发支持所需的全部或几乎全部。但是,传统的Linux不支持虚拟化的主机功能。具体地,传统的Linux不给处理或套接字提供选择其虚拟路由器情境的途径,也不给两个或多个不同的处理提供结合相同地址/协议/端口(在不同的虚拟路由器情境中)的途径。下面的改变(图5)增加了这种支持。字段被添加到存储处理的缺省虚拟路由器情境的proc结构或合适的子结构中(proc结构是内核数据结构,其被每个过程例示,并且含有内核处理状态信息)(步骤1010)。内核处理建立代码被合适地改变以使该字段可继承,使得处理的缺省虚拟路由器情境将是其被建立时的样子,而与其根源使用forkO或cloneO时曾为的缺省虚拟路由器情境无关。此外,建立原始系统处理的代码,init,被改变以确保init将使用在引导时自动建立的缺省虚拟路由器情境。字段被添加到互联网协议族(TCP、UDP和原始IP)的合适按套接字的数据结构中,指示套接字的虚拟路由器情境(步骤1020)。套接字建立代码被改变,使得在建立时,字段就根据过程的缺省虚拟路由器情境填充。增加支持,用于设置处理的缺省虚拟路由器情境(例如,作为procfs扩展)(步骤1030)。增加支持,用于设置套接字的缺省虚拟路由器情境(例如,作为设置套接字选择)(步骤1040)。增加支持,用于建立和删除虚拟路由器情境(例如,作为procfs或netlink扩展)(步骤1050)。增加支持,用于将接口与虚拟路由器情境关联起来(例如,作为procfs或net1ink扩展)(步骤1060)。用于TCP、UDP、原始IP套接字和互联网控制消息协议(ICMP)的分组进入处理代码被改变,以使其对与进入分组相关联套接字的确定考虑分组的进入接口的虚拟路由器情境(步骤1070)。用于TCP、UDP和原始IP套接字的分组进入处理代码被改变,以使对用于进入分组的路由表的选择考虑发送该分组的套接字的虚拟路由器情境(步骤1080)。在分布式主机的情况下,分布式主机功能允许在不同操作系统情况上运行的过程结合在相同主机(IP地址)上的不同套接字。在至少一个具体实现中,可以采用下面的方法。对于在网络处理器(NP)子系统可以确定某个处理器将是分组的消费者时的该进入分组,该分组被发送到该处理器。对于在NP子系统不能确定某个处理器将是分组的消费者的该进入分组,分组被发送到所有的处理器(例如经过介质访问控制(MAC)广播)。当处理器接收该处理器确定不是给它的分组(而可能是给不同处理器的分组)时,处理器忽略该分组并且不会以任何方式作出努力来响应于该分组。对于每一个(分布式)主机,一个具体的处理器被指定为该主机的主导处理器。该处理器具有处理和响应于分组的责任,所述分组对应于作为整体的主机而不是对应于任何具体的“连接”或“端口”,例如某些(而非所有)ICMP分组或地址解析协议(ARP)请求。所有其它的处理器忽略这种进入分组。对来自分布式主机的进入分组的处理与对正常主机的进入分组的处理基本上没12有变化。对于测试和模拟(没有NP子系统),增加功能以允许主机的主导处理器将不以其自身为目的地的分组转发(通过MAC广播)到其它处理器。在IP技术中,该功能不像传统转发(因为例如TTL没有被减值)而更像桥接。下面的内核改变(图6)被用来实现如上描述的分布式主机功能。增加扩展(例如procs或netlink扩展)以允许指定具体的接口是否是分布式主机的主导接口(步骤2010)。改变TCP和UDP进入代码,以避免对到达端口的没有被本地限定的分组作出任何响应(步骤2020)。改变ICMP进入代码,使得对于与具体端口或流相关的任何ICMP分组来说,除非该端口被限定或者该流存在于本地,否则该分组就被忽略,使得对于主机是全局的任何ICMP分组(例如回声请求)来说,只有主机的主导接口处理分组(步骤2030)。改变ARP代码,使得非主导接口不响应于ARP请求(步骤2040)。向进入路径增加代码,以支持上面描述的用于没有NP子系统的操作的转发/桥接(步骤2050)。更具体地有关内核IP虚拟化,内核内的所有IP分组缓冲(skbuff)标有情境号。正被处理的分组的情境号由以下两个机制中的一个确定(1)经由网络接口进入内核的分组由已经被配置到接口中的情境号标注。在ip_rcv()(net/ipv4/ip_input.c)中的下面的代码标注用于正由网络接口被引入的IP分组的缓冲if(dev!=&loopback_dev){if(in_dev){skb->vr_index=in_dev->vr_index;}else{skb->vr_index=0;/*XXXnotverygoodbutthere'sprobablyno-kbetteroption.I'mnotsureifit-kshouldeverhappenanywaysthata-kpacketwouldgetherefromadevice-kwithoutanin_devicestructure*/}}(2)通过应用套接字进入内核的分组被已经构造到套接字中的情境号(通过缺省,即形成套接字的应用的缺省情境号)标注,如被准备用于输出的那样。相关的软件代码主要在net/ipv4/ip_output.c中。下面是来自ip_build_xmit()的实例skb->vr_index=sk->vr_index;在上面的列举中,skb是到skbuff结构的指针;sk是到套接字结构的指针。此夕卜,vr_index指向两个结构以容纳虚拟化。当内核需要将分组传递到用户处理时,它在确定将分组传递到的处理时会考虑分组的情境号。下面是来自用于为TCP分组进行确定的软件代码的实例sk=—tcp_v4_lookup<#ifdefCONFIG_NET_IP_VIRTUALskb->vr_index,#endifskb_>nh.ipb_>saddr,th->source,skb_>nh.iph_>daddr,ntohs(th->dest),tcp_v4_iif(skb));上面列出的来自net/ipv4/tcp_ipv4.c中的tcp_v4_rcv()。C0NFIG_NET_IP.VIRTUAL在内核通过IP虚拟化支持而正被建立时被定义。如所示出的,在使用虚拟化时预先计划额外的自变量到_tcp_v4_l00kup的自变量列表中。此外,_tcp_v4_lookup()允许确定将消耗该分组的套接字,并在哈希表中进行查找。当使用虚拟化时,分组的情境号(skb->vr_index)被用作当执行查找时的密钥的单元。在这种方式下,例如,具有一致特性(源地址、源端口、目的地地址、目的地端口)但是属于不同情境的两个不同的分组可以被定向到两个不同的套接字中。当内核正执行IP转发查找时(例如当作为路由器或者当将发起于本地应用的分组传递到远程目的地时),该查找也考虑分组的情境来进行。具体而言,对每一个分组使用不同的路由表。对于虚拟化,下面的代码被添加到fib_l00kup()(在net/ipv4/fib_urles.c中),其进行许多或大部分路由查找#ifdefCONFIG_NET_IP_VIRTUALif(r==(&main_rule)){if((vr<r->r_vr_index_min)|(vr>r->r_vr_index_max)){printkCfib_lookup-badVRindex!\n〃);continue;}if((tb=fib_get_table((r->r_tab1e)+vr))==NULL)continue;}else{#endif/*CONFIG_NET_IP_VIRTUAL*/在上面所列出的中,vr是对fib_lookup的额外自变量,其在C0NFIG_NET_IP.VIRTUAL被定义时被预先计划到自变列表中。对fib_get_table()的调用采用路由表号;对虚拟化的支持利用Linux的线有能力来支持多个路由表。当时用情境化时,情境号被用来计算路由表号。Fib_l00kup()的剩余部分在由调用返回到fib_get_table()的路由表上操作。此外关于在Linux上实现分布式主机功能,下面的“集群”统一指实现单个分布式主机的一组系统。至少一个具体的实现取决于下面。参与分布式主机的每一个内核能够确定其是否是该分布式主机的“主导”,如果不是,确定哪个系统是用于该分布式主机的“主导”。分布式主机的“主导”是被指定(例如唯一地)用于对整个分布式主机执行某些服务的系统。一般来讲,这被用于那些本身不能被合理分布的服务。该信息被基于按接口地址保持在例如injfaddr结构中。对于将被在按端口或按连接基础上分布的那些协议(例如UDP和TCP)来说,实际的协议被改变使得当分组到达实现分布式主机的那组系统时,可以精确地确定哪个系统将处理该具体的分组。因此,一般来讲,数据库被保持有入口,指示哪些端口和/或连接正在哪个系统上被处理。这可以通过实现内核与用户处理之间的接口来实现,该接口与由实现路由协议的用户处理使用的“rtnetlink”接口有一些类似。具体而言,这种接口通过到bindO端口和acc印t()连接的其它用户处理将请求通知给用户处理。使用该接口的用户处理负责使数据库与集群中的远程主机或者至少与分布式接口的主导同步。在至少大部分情况下,例如tCp_V4_rCV()和udp_rcV()的功能被改变用于对每一个进入分组查找是否该分组应该被处理或者忽略和/或发送到集群的另一个成员。在至少一些实现中,对于一些协议(例如ARP),在主导系统上处理所有请求并总是忽略到达非主导系统的请求是足够简单的。对于ARP,这可以通过改变arp_rCV()来检查正被接收的分组是否对应于本地系统为主导的地址来实现。对于主导的情况,分组可以被正常处理。对于非主导的情况,分组可以被忽略或者发送到集群的另一个成员。对于一些协议(例如ICMP以及可能的IGMP,如果IP多播以分布方式被支持),所接收分组在分布式主机环境中被不同处理。对于ICMP,除回声请求之外的每一个数据分组可以被发送到实现分布式主机的集群中的所有系统,然后每一个系统可以在有行为时基于该分组确定采取的行为。回声请求由主导系统处理。其它ICMP分组一般由每一个系统以如同该系统不是分布式主机的一部分的相同方式处理。在分布式主机环境中的ICMP分组的精确处理取决于具体的实现。通过分布式主机集群内系统的ICMP错误分组的发起被参照在没有使用分布式主机设施时它们被如何产生来改变。具体地,“ICMP不可到达的”消息仅可以由主导系统产生。至少一些其它的ICMP消息可以由集群中的非主导系统产生,这取决于具体的实现。其它实施例在下面权利要求的范围内。例如,上面的一个或多个特征可以以对象代码或可执行代码实现。上面的一个或多个特征可以被实现为仅用于某些通信,例如仅用于进入通信、或仅用于输出通信、或仅用于实时通信或高优先级或高数据速率通信。操作系统可以提供有一个或多个特征作为内置功能。权利要求一种用于使用在不同操作系统实例上运行的多个处理器来实现单个IP主机的方法,该方法包括接收将被处理的进入分组;在可能时确定多个处理器中的哪一个将是进入分组的消费者;当多个处理器中的一个被确定为是进入分组的消费者时,将进入分组发送到多个处理器中的该一个处理器;当没确定出多个处理器中的哪一个是进入分组的消费者时,将进入分组发送到多个处理器中的每一个;指定多个处理器中的一个作为分布式主机的主导处理器,其中,该主导处理器处理与该单个IP主机的任何特定端口都不相应的进入分组。2.权利要求1的方法,其中,网络处理器子系统被用来确定多个处理器中的哪一个将是进入分组的消费者。3.权利要求1的方法,其中,在将进入分组发送到多个处理器中的每一个时使用介质访问控制广播。4.权利要求1的方法,还包括增加扩展,该扩展用于指定分布式主机的特定接口是否是分布式主机的主导接口。5.权利要求4的方法,其中,该扩展是procfs扩展和netlink扩展中的一个。6.权利要求4的方法,还包括修改地址解析协议(ARP)代码,使得分布式主机的非主导接口不对ARP请求作出响应。7.权利要求1的方法,其中,修改传输控制协议(TCP)和用户数据报协议(UDP)代码中的至少一个,使得进入分组在其到达不是本地限定的端口时被忽略。8.权利要求1的方法,还包括修改互联网控制消息协议(ICMP)代码,使得当进入分组是与特定端口相关的ICMP分组时,除非特定端口被限定,否则ICMP分组被分布式主机忽略。全文摘要管理用于IP联网的资源。向操作系统内核软件程序中增加字段。该字段标注虚拟路由器情境(1020)。分组处理软件代码被修改以使得分组处理软件代码根据虚拟路由器情境执行(1070)。文档编号H04L12/56GK101982950SQ201010534348公开日2011年3月2日申请日期2003年10月6日优先权日2002年10月4日发明者本杰民·A·拓布尔,里奥纳德·施瓦兹,马修·H·哈珀申请人:思达伦特网络有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1