附图简述
图1是在消息路由网络中的一个节点网络和上述节点之间的链路的典型示例图。
图2是示出了在其中经网络传送的消息被传输给一个或多个收件人的本发明的一个实施方式的示例性进程的流程图。
图3是示出了在其中可以实现本发明的合适计算系统环境的一个示例的框图。
贯穿于附图,相应的参照符号指示相应的部分。
本发明的详细描述
首先参考图1,提供了在其中可以实现本发明的消息路由网络中的一个节点网络和上述节点之间的链路的典型示例图。计算机网络100包括能够经由连接至各节点的链路发送并接收消息(诸如电子消息、电子邮件、信息包等)的多个节点或消息传输代理(MTA)。每个节点都含有收件人,这些收件人接收通过网络从发送节点路由至该收件人所在的目标节点的消息或邮件。连接网络100各节点的线段附近的黑体数字表示与经由各链路传输消息相关联的假定传输成本。在此示例中,与消息从节点102(夏威夷)发送至节点104(西雅图)相关联的传输成本可以是200。还应该考虑成本与网络可用性成反比,并由此可将成本看作是使用链路的机会成本。在此示例中,出于说明的目的使用固定成本,但是在更为先进的实现中,实际成本随着所占用/消耗的带宽动态更新。
作为经网络路由消息的示意,位于节点102(夏威夷)的消息发件人将邮件发送给位于UK格林威治的节点108的第一收件人,以及位于法国巴黎的节点112的第二收件人。如果将此消息作为两个分离的消息分别从夏威夷发送至格林威治以及从夏威夷发送至巴黎,则把各文件发送给两个收件人的总传输成本将会是740(例如,200+80+90(从夏威夷到格林威治)加上200+80+90(从夏威夷到巴黎)。
然而,如果将该消息作为单个文件通过到不同收件人的路径所公用的路由而发送,就能够降低传输成本并且能够节省网络带宽。于是,如果将该消息作为单个文件沿着从节点102(夏威夷)至节点104(西雅图)的公用路径传输,并在节点106(纽约)处分为两条消息分别发送至节点108(格林威治)和节点112(巴黎),则传输该邮件的总成本将会是460(例如,200+80(夏威夷到纽约)加上90+90(纽约到格林威治以及纽约到巴黎)。当这些结点不是分叉点而且也没有网络故障时,网络带宽通过避免应用程序级传输对这些节点的干涉而得以节省。例如,消息可以直接从夏威夷发送至纽约。然而,如果夏威夷无法到达纽约,就会做出将该消息从夏威夷传输至西雅图的尝试。
当消息在一节点处分叉时,该节点负责将该消息传输至在通向目标节点的路径上的后续节点。于是,例如该消息在一节点处被分解并且被发送至三个不同节点,则当前节点对该消息传输的继续负责。一旦接收节点接受该消息,该接收节点就承担将该消息传输至在通向目标节点的路径上的下一个节点的责任,并且由此向前,直到该消息由目标节点所接受。
在本发明的系统和方法的一个实施方式中,通过延迟消息的分岔直到两收件人的最后公用节点,来优化该消息经网络的路由。这一实施方式通过将消息中继至根据传输成本离收件人目标节点最近的分叉公用节点,就能够有利地降低节点102(夏威夷)传输成本,节省了可用网络带宽,并且还改善节点102(夏威夷)收件人接收消息的可靠性和速度。使用上述示例,本发明的系统和方法就能够延迟在节点106(纽约)处消息的分岔,而是将该文件转发至两收件人最后的分叉公用节点,即根据图1,为节点110(伦敦)。在节点110(伦敦)处,该消息最终被分岔并被传输至节点108(格林威治)和节点112(巴黎)。于是,用于将该消息传输至两收件人的传输成本将会是400(例如,200+80+100(夏威夷到伦敦)以及10+10(伦敦到格林威治以及伦敦到巴黎)。
在此所述的对一节点的接近程度或距离的描述指的是将一消息从一节点发送至目标节点所要求的传输成本。于是,离目标节点“最近”的节点将会是把一文件发送给该目标节点所需的传输成本或其他抽象(诸如,上述机会成本)成本最低的节点。
通过网络将消息传输至离收件人最近的节点,这在网络上出现会延迟消息传输的故障时很有意义。通过将消息尽可能地传输到离收件人最近,就在发生网络故障的情况下做出了朝向目标节点的移动。在此情况下,该消息能够在网络变为可用时被快速传输至收件人。这还能处理在相同时刻不是全部链路都可用的情形。例如,从初始节点到目标节点的端对端连接可能从未真正可用过。然而通过利用本发明的方法和系统,则仍旧可以往前进,并且该消息最终也将到达。此外,网络节点对离它们较近的节点相比于离其较远的节点通常具有更好的或者更为可靠的成本和路由信息。于是,如果在收件人目标节点附近发生节点故障,则在附近的一个节点既能够识别通向该收件人的一条有成本效率的可选路径,同时该路径又确保信息由收件人所接收而不是作为无法投递被返回给发件人。
可以使用若干种方法来确定在文件无法直接传输至目标节点的情况下应该把该信息传输至哪个节点。
在一个实施方式中,识别一条从当前节点开始以目标节点结束并且含有连接至位于该当前节点和目标节点之间的网络的一个或多个中间节点的线性路径。如果目标节点不可用,就尝试将该文件传输至最接近该目标节点的中间节点。如果该节点也不可用,则做出将该消息传输至次接近该目标节点的中间节点等等,直到没有尚未尝试的其他中间节点剩余,或者直到已经到达预定的尝试次数阈值。在此情况下,消息被延迟以供随后重新发送或者作为无法投递而被返回给发件人。
在另一个实施方式中,识别与该目标节点传输的成本在指定范围内的各节点。随后按其传输成本的优先级次序组织各节点,其中带有最低传输成本的节点具有最高的优先级。这样,如果对目标节点的传输尝试失败,接下来的尝试就针对最高优先级节点,即传输成本最低的节点。如果该传输尝试失败,第三次尝试就针对最次高优先级节点(即,具有次高传输成本的节点)做出。重复此进程直到没有尚未尝试的其他节点剩余,或者直到已经到达预定的尝试次数阈值。如上所述,在此情况下,消息被延迟以供随后重新发送或者作为无法投递而被返回给发件人。在另一个实施方式中,可以识别围绕第一成本范围形成同心圆的第二最小传输成本范围。针对第二范围内各节点做出的传输尝试与上述有关最小成本范围的相类似。进一步的实施方式可以包括传输成本范围的补充同心圆。
在另一个实施方式中,接下来是“二等分再处理”进程,在其中识别位于当前节点和目标节点之间的中间节点的线性线段。如果对目标节点的传输尝试失败,就做出将消息传输至中间节点,例如“节点D”的尝试。如果对节点D的传输尝试失败,就做出将消息传输至位于当前节点和节点D之间的半路程处的中间节点。持续此进程直到没有其他节点剩余,或者直到已经到达预定的尝试次数阈值。如上所述,在此情况下,消息可以被延迟以供随后重新发送或者作为无法投递而被返回给发件人。
在另一个实施方式中,可以利用加速再处理进程来识别可将消息传输给它的潜在可选节点。如果目标节点不可用,该加速再处理进程就识别例如是离目标节点的四个节点的节点。如果将文件发送给该节点的传输失败,就做出将文件发送给例如12个节点远的节点等等,直到没有其他节点剩余,或者直到已经到达预定的尝试次数阈值。如上所述,在此情况下,消息可以被延迟以供随后重新发送或者作为无法投递而被返回给发件人。
在又一个实施方式中,可以基于各独立节点的运行时间表做出将消息发送到离目标节点尽可能近的地方的尝试。该方法可以与上述涉及在无法将消息直接传输至目标节点的情况下传输消息的再处理策略所标识的各模式中的任何模式相结合。例如,在当前节点和目标节点之间路径由中间节点A、B和C组成,其中A离目标节点最远而节点C离目标节点最近。如果现在是3:30p.m.而节点A从1:00p.m.到4:00p.m.接收文件,而节点B从3:00p.m.到6:00p.m.接收文件,而节点C从6:00p.m.到10:00p.m.接收文件,那么就会根据运行时间表首先做出将该消息传输至作为离目标节点最近可用节点的节点B的尝试。
本发明的另一个方面是它路由消息的稳定性,而不考虑可由网络中不同节点确定的变动的/全局弱化的、一致/不一致的传输成本。网络节点之间路由消息的传输成本通常由节点或MTA操作者之外的第三方提供。于是,常常会有两个节点不被提供相同的传输成本信息,特别是在单一的时间点上。这样收件人节点可能会确定通向目标节点的一条不同的路径,它比由发送节点确定的路径更短,即成本更低。例如,发送节点A确定通向目标节点D的最近传输成本路径是将信息从A传输至B至C最后到达D。因为传输成本有时不一致,所以节点C可能具有通向D的最短路径是先将其发送回B的成本信息。于是就会出现消息在节点B和节点C之间来回循环的问题。
替换延迟传输消息直到各节点对传输成本达成一致的做法,本发明监视或跟踪一文件在其通向目标节点的路径上所经过的节点的数目。例如,在email文档中,该文件在其从发件人节点到目标节点的路径上所经过的节点被添加至SMTP报头,或者用于其他系统的其他机制。例如,X.400为此目的利用包封(Envelope)这一概念。这样,如果一文件在其通向目标节点的路径上所经过的节点数超过最小阈值,则该节点就在一时间段(一稳定(settling)周期)内暂停进一步的传输以允许传输成本在网络间的稳定。在稳定周期过后,就根据最短路径(最低传输成本)尝试将该消息传输至目标节点并且继续监视文件提供各节点的次数。如果传输成本在所经过的时间周期之后已经稳定,该文件就被成功发送给通过地址接收它的目标节点。然而,如果传输成本仍然没有稳定并且文件循环仍在继续,那么就在一文件在其通向目标节点的路径上所经过的节点数达到最大阈值时终止该文件循环。如果到达最大阈值,就把该文件标记为不可投递和/或将一无法投递的报告附至该文件,并将其返回给发件人。
在一个实施方式中,最小阈值是10个或更多的节点。在另一个实施方式中,最小阈值是10到15个节点。
在一个实施方式中,稳定周期可达一小时。在另一个实施方式中,稳定周期可达30分钟。在又一个实施方式中,稳定周期可达15分钟。
在一个实施方式中,最大阈值是20个或更多的节点。在另一个实施方式中,最大阈值是25到35个节点。
在一个实施方式中,本发明的计算机网络包括连接至因特网的节点。在另一实施方式中,本发明的计算机网络是横跨多个国家的公司或大学的网络。在另一实施方式中,本发明的计算机网络是横跨多个州的公司或大学的网络。在另一实施方式中,本发明的计算机网络是横跨多个城市的公司或大学的网络。在又一实施方式中,本发明的计算机网络是横跨单个城市或公司或大学校园内多幢楼的公司或大学的网络。
通过监视或跟踪一文件所经过的节点数量,替代了延迟该消息的发送直到成本完全稳定的做法,就能够在网络上出现局部传输成本不等的情况下,得到一个向收件人传输消息的更稳定路由的系统和方法。因此,本发明的系统和方法并不延迟传输消息直到所有的节点对成本达成一致,而是将各文件传输至更接近目标节点的节点。如前所述,相对于更远的节点,各节点对在附近的节点具有更好的传输成本和网络状态信息。这样通过将消息传输至离目标节点更近的节点,各文件就不会被延迟,并且更接近目标节点的各节点更有可能具有更为精确的成本和网络状态信息,从而允许其成功地将该文件传输至目标节点。
接下来参考图2,提供了本发明一个实施方式的示例性进程的流程图,在其中经网络传送的消息被传输至一个或多个收件人。该流程图描述了由一节点(下文中将其称为“当前节点”)所执行的进程。在202处,当前节点接收要发送给位于该当前节点之外的一个或多个目标节点上的一个或多个收件人的消息。当前节点可以是发送一消息的原始节点也可以是与在原始发送节点和目标节点之间的网络相连接的一个中间节点。
在203处,计算该网络上的最低成本路径以及节点的分叉点。这些方法在本领域内周知并且不限于任何特定的计算。对系统配置的变化进行监视并且在系统配置改变时重新计算最低成本路径和分叉点。
在204处,做出该消息是否已被传输至MIN数目的节点的判定,其中MIN是预定的最小阈值数。如果文件已经传输至的节点数目超过该最小阈值数,就在206处将该文件搁置一预定稳定周期以允许传输成本的稳定。
在208处,做出该消息是否已被传输至MAX数目的节点的判定,其中MAX是预定的最大阈值数。如果文件已经传输至的节点数目等于该最大阈值数,就在210处将该文件返回给发送方并将其标记为无法投递。在一个实施方式中,向发件人提供进一步描述该文件投递失败的无法投递报告。
在212处,当前节点建立一目的地表,该表识别与将消息发送至该网络内各节点相关联的传输成本。该目的地可选表还根据与从当前节点向其传输消息相关联的最小传输成本排列了网络上各节点的优先级。在214处做出该消息是要被发送给位于单个节点上的一个或多个收件人还在该文件要被发送给位于两个或多个节点上的两个或多个发件人的判定。
如果判定该消息是要被发送给位于单个节点上的一个或多个收件人,就在216处将该消息添加至用于传输至目的地节点的队列。
在218处连接管理器算法确定该邮件应该被送至目的地节点。在220处该连接管理器算法首先尝试将该消息直接发送给在该消息中标识的目标节点。如果该文件因为不存在直接连接或者因为目标节点出于某种原因(例如,组件故障、带宽限制、网络故障、配置差错、低级系统策略等)不接收该文件而无法被直接发送至该目标节点,该文件就被传输至在目的地可选表中标识的尚未被当前节点尝试的最高优先级节点。在222处,当前节点判定该文件是否在X次尝试内被成功传输至该目的地节点,其中X是由当前节点进行的预定的传输尝试次数。可选地或者附加地,预定的传输尝试次数X可以包括在其内必须发送本消息的预定时间限制。如果该文件被成功发送给目的地节点,则当前节点的责任就已履行并且该进程结束。
在222处如果当前节点判定该文件没有在X次尝试内被成功传输至该目的地节点(或者已经超过关于X的时间限制),在224处当前节点就判定是否已经对目的地可选表内所标识的所有目的地节点做出了邮件传输尝试。如果尚未对所有被标识的目的地节点做出尝试,在220处当前节点就尝试对尚未尝试的最高优先级节点发送消息。如果已经对所有被标识的目的地节点做出了投递尝试,则当前节点就在226处判定针对所有节点的投递是否尝试了Y次,其中Y是由当前节点做出的预定的传输尝试次数。可选地或者附加地,预定的传输尝试次数Y可以包括在其内必须发送本消息的预定时间限制。如果当前节点没有尝试投递Y次(或者已经超过关于Y的时间限制),在228处该消息就被搁置一指定时间段以允许网络修复。在这一指定时间段过后,在218处连接管理器重新判定是否应该将该邮件发送至目的地节点。
如果当前节点已经尝试投递Y次或者已经超过当前节点必须投递该消息的时间限制,当前节点在230处判定该消息是否寄往具有公用分叉节点的多个目的地。如果是,在232处该文件就为该独立目的地而非分叉节点重新排队,并且在216处被添加至该队列。
在230处如果当前节点判定该消息是寄往位于单个目标节点上的一个或多个收件人,在210处该文件就被返回给发送方并被标记为无法投递。在一个实施方式中,无法投递报告被提供给发件人,它进一步描述该文件的投递失败。
在214处如果当前节点判定该消息是寄往位于两个或多个不同节点上的多个收件人,就在234处创建其中当前节点是根的最小生成树。在一个实施方式中,最小生成树被预先计算并且用于传输多个不同的消息。生成树本地分区表在236处创建。它是编码有关该网络的最小成本生成树的最小生成树。该最小生成树用于找出分叉点。利用最小生成树和生成树本地分区表,当前节点在238处识别关于各收件人的最后分叉节点。如果在240处判定当前节点是关于各收件人的最后分叉节点,在242处该消息就分岔至各收件人的目标节点并且在216处将该消息放入队列。
如果当前节点不是分叉节点,当前节点就在244处根据有关每一组的最后分叉节点对收件人目的地节点进行分组并且在216处将分组的目的地放入队列。
在本发明的一个实施方式中,如图2所述,最后分叉节点可能不可用或者无法接受尝试向其发送的消息。在此情况下,本发明就在当前节点分岔该消息,从而以额外的传输成本和带宽确保将该消息成功传输至收件人。于是,当以延迟分岔文件直到最后分叉节点的方式首次尝试传输消息时,如果延迟分岔将会引起该文件延迟投递或不可投递时,本系统和方法就替代地提前分岔该消息,籍此将该文件传输至收件人。于是因为相信对于收件人能够接收到该消息比节省额外的传输成本和带宽更为重要,而该额外的传输成本和带宽与延迟该文件并在最后分叉节点处分岔该文件相关联,所以该文件就被提早分岔。这一示例在图1中举例说明,其中当前节点是试图向节点110(伦敦)转发消息的节点106(纽约),而节点110(伦敦)是位于节点108(格林威治)和节点112(巴黎)的收件人的最后分叉节点。如果节点106(纽约)无法向节点110(伦敦)转发消息,那么它就在230处分岔该消息收件人并且将两消息放入队列,其中一个消息被传输至节点108(格林威治)而另一消息则被传输至节点112(巴黎)。于是,传输成本从120增加至180,但是代替了消息的延迟以及将该文件作为无法投递返回给发件人的情况,该文件被直接发送给节点108(格林威治)和节点112(巴黎)的收件人节点。
在另一个实施方式中,该系统和方法维护所有近来失败的连接的一个高速缓存。在另一个实施方式中,该系统和方法维护按各失效连接经过的邻近节点分组的所有近来失败的连接的一个高速缓存。这些实施方式可用于避免尝试向近来失败节点传输消息并籍此避免延迟文件的传输。在一个实施方式中,维护在一预定时间段内出现的失败连接的一个高速缓存。在一个实施方式中,该时间段是最近的六个小时。在另一个实施方式中,维护在最近一小时内出现的失败连接的一个高速缓存。在另一个实施方式中,维护在最近三十分钟内出现的失败连接的一个高速缓存。
在一个实施方式中,做出同时向多个可选节点传输消息的传输,而非一次打开一个对可选节点的连接。在此实施方式中,选择最接近最终目标并在预定时间内(例如,一秒钟内)传输成功的节点。如果在预定的时间段内没有成功接受的节点,那么就使用首先成功接受的节点。如果没有成功,则可以使用更长的时间段。
在一个实施方式中,如果当前的连接“较慢”,即字节/秒明显低于平均水平,则做出打开与“靠近的”节点的连接的尝试以传输第二消息。如果“靠近的”节点处于“平均水平”或以上,就应该停止向该“较慢”节点发送消息以支持向“靠近的”节点的发送。
图3示出了计算机130形式的通用计算设备的一个示例。在本发明的一个实施方式中,诸如计算机130等计算机适用于在此处所示和描述的其它附图中使用。计算机130具有一个或多个处理器或处理单元132以及系统存储器134。在所示的实施方式中,系统总线136将包括系统存储器134的各种系统组件耦合到处理器132。总线136表示若干种总线结构类型的任一种,包括存储器总线或存储器控制器、外围总线、加速图形端口,以及使用各类总线体系结构的处理器或局部总线。作为示例而非局限,这类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线以及外围部件互连(PCI)总线,也称为Mezzanine总线。
计算机130通常至少具有某一形式的计算机可读介质。计算机可读介质可以包括易失性和非易失性介质、可移动和不可移动介质,它可以是可由计算机130访问的任一可用介质。作为示例而非局限,计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括以用于储存诸如计算机可读指令、消息结构、程序模块或其它消息等信息的任一方法或技术实现的易失性和非易失性,可移动和不可移动介质。例如,计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所期望的信息并可由计算机130访问的任一其它介质。通信介质通常具体化为诸如载波或其它传输机制的已调制消息信号中的计算机可读指令、消息结构、程序模块或其它消息,并包括任一信息传送介质。本领域的技术人员熟悉已调制数据信号,它以对信号中的信息进行编码的方式设置或改变其一个或多个特征。有线介质如有线网络或直接连线连接等,以及无线介质如声学、RF、红外和其它无线介质等是通信介质的示例。上述任一的组合也应当包括在计算机可读介质的范围之内。
系统存储器134包括以可移动和/或不可移动、易失性和/或非易失性存储器形式的计算机存储介质。在所示的实施方式中,系统存储器134包括只读存储器(ROM)138和随机存取存储器(RAM)140。基本输入/输出系统142(BIOS)包括如在启动时帮助在计算机130内的元件之间传输信息的基本例程,通常储存在ROM 138中。RAM 140通常包含处理单元132立即可访问和/或当前正在操作的数据和/或程序模块。作为示例而非局限,图3示出了操作系统144、应用程序146、其它程序模块148和程序数据150。
计算机130也可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。例如,图3示出了对不可移动、非易失性磁介质进行读写的硬盘驱动器154。图3还示出了对可移动、非易失性磁盘158进行读写的磁盘驱动器156,以及对可移动、非易失性光盘162,如CD ROM或其它光介质进行读写的光盘驱动器160。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器154以及磁盘驱动器156和光盘驱动器160通常通过非易失性存储器接口,如接口166连接到系统总线136。
上文讨论并在图3示出的驱动器或其他海量存储及其相关联的计算机存储介质为计算机130提供了计算机可读指令、消息结构、程序模块和其它消息的存储。例如,在图3中,示出硬盘驱动器154储存操作系统170、应用程序172、其它程序模块174和程序数据176。注意,这些组件可以与操作系统144、应用程序146、其它程序模块148和程序数据150相同,也可以与它们不同。这里对操作系统170、应用程序172、其它程序模块174和程序数据176给予不同的标号来说明至少它们是不同的副本。
用户可以通过输入设备或用户界面选择设备,如键盘180和定位设备182(例如,鼠标、跟踪球、笔或触摸垫)向计算机130输入命令和信息。其它输入设备(未示出)可包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常通过耦合至系统总线136的用户输入接口184连接至处理单元132,但是也可以通过其它接口和总线结构连接,如并行端口、游戏端口或通用串行总线(USB)。监视器188或其它类型的显示设备也通过接口,如视频接口190连接至系统总线136。除监视器188之外,计算机通常包括其它外围输出设备(未示出),如打印机和扬声器,它们可通过输出外围接口(未示出)连接。
计算机130可以使用到一个或多个远程计算机,如远程计算机194的逻辑连接在网络化环境中操作。远程计算机194可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,并通常包括许多或所有相对于计算机130所描述的元件。图3描述的逻辑连接包括局域网(LAN)196和广域网(WAN)198,但也可包括其它网络。LAN 136和/或WAN 138可以是有线网络、无线网络,它们的组合等等。这类网络环境常见于办公室、企业范围计算机网络、内联网以及全球计算机网(例如,因特网)。
当在局域网网络环境中使用时,计算机130通过网络接口或适配器186连接至LAN 196。当在广域网网络环境中使用时,计算机130通常包括调制解调器178或用于通过WAN 198,如因特网建立通信的其它装置。调制解调器178可以是内置或外置的,它通过用户输入接口184或其它适当的机制连接至系统总线136。在网络化环境中,相对于计算机130所描述的程序模块或其部分可储存在远程存储器存储设备(未示出)中。作为示例,而非局限,图3示出远程应用程序192驻留在存储器设备上。示出的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其它手段。
一般而言,计算机130的消息处理器是通过在不同的时刻驻留在计算机的各种计算机可读存储介质中的指令来编程的。程序和操作系统通常例如分布在软盘或CD-ROM上。从那里,它们被安装或加载到计算机的辅助存储器中。在执行时,它们至少部分地被加载到计算机的主电子存储器中。当这些和其它各种类型的计算机可读存储介质用于实现在下文中结合微处理器或其它消息处理器描述的步骤的指令或程序时,此处所描述的本发明的实施方式包含这种介质。当依照此处所描述的方法和技术来编程时,本发明也包括计算机本身。
为说明起见,程序和诸如操作系统等其它可执行程序组件在此处被示出为离散的框,然而可以认识到,这些程序和组件在不同的时刻驻留在计算机的不同存储组件中,并由计算机的消息处理器执行。
尽管结合包括计算机130的示例性计算系统环境进行了描述,然而本发明的一个实施方式可以使用众多其它通用或专用计算系统环境或配置来操作。该计算系统环境并非对本发明的实施方式的使用范围或功能提出任何局限。此外,也不应将计算系统环境解释为对示例性操作环境中示出的任一组件或其组合具有任何依赖或需求。适用于本发明的实施方式的众所周知的计算系统、环境和/或配置的示例包括但不限于,个人计算机、服务器计算机、手持式或膝上设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子设备、移动电话、网络PC、小型机、大型机、包括任一上述系统或设备的分布式计算环境等等。
本发明的实施方式可以在诸如由一个或多个计算机或其它设备执行的程序模块等计算机可执行指令的一般上下文环境中描述。一般而言,程序模块包括但不限于,例程、程序、对象、组件、抽象消息类型等等,它们执行特定的任务或实现特定的抽象消息类型。本发明的实施方式也可以在分布式计算环境中实践,其中,任务由通过通信网络连接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机存储介质中。
软件体系结构上下文中的接口包括软件模块、组件、代码部分、或其它计算机可执行指令序列。接口包括,例如访问第二模块来代表第一模块执行计算任务的第一模块。在一个示例中,第一和第二模块包括诸如由操作系统提供的应用程序编程接口(API)、组件对象模型(COM)接口(例如,用于对等应用程序通信)、以及可扩展标记语言元数据交换格式(XMI)接口(例如,用于Web服务之间的通信)。
接口可以是一种紧耦合的同步实现,诸如在Java 2平台企业版本(J2EE)、COM或分布式COM(DCOM)示例中。作为替代或除此之外,接口可以是诸如Web服务(例如,使用简单对象访问协议)中的松耦合的异步实现。一般而言,接口包括以下特征的任一组合:紧耦合的、松耦合的、同步和异步。此外,接口可符合标准协议、专有协议、或标准和专有协议的任何组合。
此处所描述的接口可以都是单个接口的一部分,或者可以被实现为单独的接口或其中的任何组合。接口可以本地或远程地执行以提供功能。此外,接口可包括比此处所示或所描述的更多或更少的功能。
以下各实施例将进一步举例说明本发明
实施例——经网络的电子邮件路由
初始化
在初始化期间,要计算两个消息结构。它们在整个进程执行过程中都会被用到。如果底层的消息改变,能够简单地重新计算这些消息结构并用于该点的转发。
目的地可选表
对于组织内的每个节点而言,确定接近当前机器的投递节点并将其放入一列表或表格(目的地可选表)。该列表根据它们对所述目标的最小传输成本而被排序。这包括了在当前节点和目标节点之间最小成本路径上的所有节点。这还包括了从源到目标的其他路径上的其他节点,只要它们到该目标的最小成本要小于从当前节点到目的地节点的传输成本。最初,这还可以包括位于通向该目标的一路径上的节点,但该路径不是从当前节点到目标的路径。此处,距离是根据在各节点之间定义的、因链路桥原因的链路成本而定的。
这是对该算法有多兼容的探试式的决定。包括更大的集合将允许该系统尝试尽可能多的可选步骤以到达该目标;籍此增加成功的机会,但却会降低面对链路失败时的总效率。因变得更为兼容,允许我们解释该可能性,即底层的节点链路记录只是底层拓扑结构的模型而不表示物理网络拓扑结构的每一方面。
最小生成树
最小生成树以当前节点作为根对于网络节点/链路进行计算。此外,也建立生成树本地分区表。对于每个目的地D,确定下一个跳点(hop)(在从当前节点到目标D的最小生成树的路径内的第一个邻近节点)。
处理不一致的全局消息
本算法假设网络节点/链路的消息是全局一致的。在实践中,这一假定通常是真实的,因为消息被过分地复制,还因为它变化缓慢,仅受操作者的控制。然而由于复制等待时间而不能保证上述假定一直为真。
本系统将使用例如SMTP接收的报头,来跟踪一消息已经从节点到节点的传输次数。如果传输计数超过第一阈值,该邮件将被延迟,给于复制一个机会以便稳定。如果该传输计数超过最大计数,该系统就被推定为损坏并且将带有关于失败投递的信息(诸如,无法投递报告(NDR))的邮件返回给发件人。
本算法的一个益处是它需要有关更远离它的各节点的最小信息。结果,它就对全局节点/链路消息的不一致不那么敏感。
单个目的地的情况
在单个目的地的情况下,邮件被路由至单独收件人的地址。因为只有一个收件人,所以无需考虑在多个节点处的收件人扇出问题。扇出问题可能会因为该邮件最初寄往单独收件人而出现,或者可能会因为该邮件最初寄往多个收件人而出现,并且该邮件已被扇出。
在路由时,消息被放入队列以等待向目的地节点的投递。
在中继时(当该系统希望将邮件从本地机器移动至远程机器时),连接管理器算法确定该邮件应该被中继至目的地T。
首先尝试将该邮件传输至收件人所在的目的地节点。如果针对目的地节点的传输失败,就随着目的地可选表内每个可选当前节点的最小传输成本的变化做出传输该邮件的额外尝试。这些额外传输尝试按照中间节点和目的地节点之间最小传输成本的优先级次序执行。这样就能达到在目的地本身无法到达的情况下将该邮件移动至离该目的地最近的节点的效果。
如果一目的地不能到达,TCP将判定在一段时间内无法做出连接。例如,如果连接无法在20秒内做出,每个站点平均具有两个桥头,该网络的直径可达10,则尝试所有的可选站点就需要400秒或者7分钟的延迟时间。这还能通过保持一个近来尝试并失败的连接(例如,在最近30分钟内失败)的高速缓存并且不尝试连接那些站点而得到进一步地优化。
如果没有连接能够做出,则在单个目的地的情况下,就搁置该消息队列并因预料该网络将会在随后被修复,而在稍后执行传输该队列的尝试。
多个目的地的情况
在某些情况下,邮件被寄往位于不同节点上的一个以上的收件人。在此情况下,网络通信量优化方法就沿着在系统启动时算出的最小生成树内的各链路中继该邮件。
邮件收件人根据通向各收件人节点路径第一次分叉处的最后节点而被分组。该节点是在目的地可选表上具有最高优先级(例如,分叉节点和目的地节点之间的最小成本)的分叉节点。在该分叉节点创建消息的分岔并且将该邮件放入队列以等待用于走这条路径的收件人的分叉节点。该消息在两个收件人具有仅仅在当前节点处并发的路径时才必须被分岔。尽可能地延迟分岔是有利的,所以假定在三个收件人的情况下,该邮件被传输至一个更近的“下一个跳点”来避免额外的分岔。
可以使用在初始化部分描述的生成树本地分区表来有效地计算该节点。使用该分区表,就能够根据最小生成树中对收件人目的地的下一个跳点来分组该邮件的收件人。为每个收件人组创建一消息分岔;并且排队该邮件以等待在最小生成树内从当前节点到目标节点的路径中出现的、且离当前节点最远的节点(即,具有针对目的地节点的最小成本的节点)。
一旦该邮件已被排队,就进行在上述单个目的地的情况中所描述的传输。
如果针对有关一个以上目标的各可选分叉节点中的任何一个都无法做出连接,就在当前节点处执行消息分岔并且排队该邮件以等待做出该分岔结果出现的新目标。以此方式,如果一节点不可用,就在当前节点处分岔该消息以向该邮件提供更大的投递机会。这的确会降低节点不可用时的效率,但能允许对该邮件的部分或全部的成功传输。
此处所示且描述的方法的执行或实现顺序不是必要的,除非另外指定。即,方法的要素可以用任何顺序来执行,除非另外指定,且方法可包括比此处所揭示的更多或更少的要素。例如,可以构想,在另一要素之前、与其同时或之后执行或实现特定要素是在本发明的范围之内。
当介绍本发明或其实施例的要素时,冠词“一”、“一个”、“该”和“所述”意指存在一个或多个要素。术语“包括”、“包含”和“具有”旨在包含性的,且意味着除所列出的要素之外还可以有其它要素。
鉴于上述内容,可以看到,实现了本发明的若干目的并获得了其它有利的结果。
由于可以在不脱离本发明的实施例的范围的情况下在上述构造和方法中做出各种改变,因此包含在以上描述且在附图中示出的所有内容都旨在说明性的解释,而非在限制的意义上的解释。