用于在消息通讯系统内部路由消息的系统和方法

文档序号:7637230阅读:92来源:国知局
专利名称:用于在消息通讯系统内部路由消息的系统和方法
技术领域
本发明的各实施方式涉及经网络向一个或多个收件人路由消息的领域。本发 明的各实施方式尤其涉及以最小的传输成本经网络可靠路由电子邮件的系统和方 法;特别是在单个系统对系统传输能够传递对多个收件人的责任时;尤其是在涉及 存储并转发责任传输的系统中。本发明的实施方式还有利地提供了系统和方法,它 们在使得管理的网络通信量最小的同时,使得寄往位于不同节点上多个收件人的邮 件的传输网络通信量最小来降低成本;同时还防止由于网络的前后不一致的意见所 导致的无限循环。
背景技术
某些早先的系统和方法提供了基于由组成该网络的不同节点对网络成本所达 成的一致而经网络路由邮件的技术。然而这些系统在传输成本变化或波动时缺乏稳 定性,因为各节点必须在邮件传输之前对传输成本达成一致。这些系统还会为解决 各节点对网络拓扑结构的观点的不同所增加的复杂性或网络通信量付出过高的代 价。这样,就会不必要地延迟邮件直到对成本达成一致。
其他的系统和方法提供了基于到收件人的最短独立路径计算路由路径的路由 至多个收件人的技术。然而这些方法通过经由多条链路将相同的邮件文件发送给多 个收件人而不必要地使用了带宽。
依赖于在关于网络拓扑结构的应用程序级上一致的系统,对管理员而言是不 可预知的。本系统因为其行为在广泛的网络条件下可预测,所以使得它能够更容易 地进行诊断。本发明的系统和方法确保如果消息无法到达其最终目的地,则该消息 也能尽可能地接近该预定目的地。
因此,就希望一种经由网络将邮件可靠路由给一个或多个收件人的系统和方 法以解决这些或其他缺点中的一个或多个缺点。
发明概述
6本发明通过提供一种系统和方法来克服现有技术中的各种缺陷,该系统和方 法经由网络路由消息而在发送和接收节点之间不要求传输成本的绝对一致,在该系 统和方法中,消息被中继给按传输成本最接近接收节点的可用节点。本系统和方法 还能够在经由网络将一消息路由给位于不同节点上的多个收件人时优化网络带宽, 这是通过延迟该消息的分岔直到最后分岔节点来实现,这种分岔对于网络路由到各 收件人对其扩展是很普通的,而这些节点持有相同的拓朴视图。本系统和方法还通
过基于各节点的可用时间表把邮件路由至离收件人节点最近的节点来改善可靠性。 此外,本发明的系统和方法通过确定该消息应被传输至的一个或多个可用节点,以 及在一节点不可用的情况下选择该消息应被传输至的次优节点来优化将消息路由 至收件人的速度。
根据本发明, 一个方面提供了一种经由计算机网络传输消息的计算机实现的 方法,其中该计算机网络包括当前节点、目标节点以及与该当前节点和目标节点之 间的网络相连接的一个或多个中间节点。本方法包括创建位于网络上的对目标节点 的传输成本小于当前节点对目标节点的传输成本的中间节点的目的地可选表,其中 各中间节点根据它们的的最小传输成本被排列优先级。尝试向目标节点传输消息。 如果针对目标节点的消息传输失败,就作为在目的地可选表中标识的中间节点的优 先级的函数而尝试向至少一个中间节点传输该消息。
本发明的另一个方面包括在消息通信网络的当前服务器和目标服务器之间传 输消息的消息通信系统。该系统包括当前服务器、目标服务器、以及连接至该网络 的一个或多个中间服务器。该系统还包括位于该网络上并具有针对该目标服务器的 传输成本的中间服务器的目的地可选表,其中各中间服务器根据它们的最小传输成 本被排列优先级。当前服务器被配置执行尝试向目标服务器传输消息的计算机可执 行指令。如果针对目标服务器的消息传输失败,那么当前服务器就随着在目的地可 选表中标识的中间服务器的优先级的变化而尝试向至少一个中间服务器传输该消 息。
本发明的另一个方面包括具有用于经由计算机网络传输消息的计算机可执行 指令的计算机可读介质。该网络包括当前节点、目标节点以及与该当前节点和目标 节点之间的网络相连接的一个或多个中间节点。计算机可执行指令包括用于确定从 各中间节点到目标节点的传输成本并且根据各中间节点的最小传输成本排列它们 的优先级的指令。该指令还包括用于尝试向目标节点传输消息的指令;如果针对目 标节点的消息传输失败,就随着在目的地可选表中标识的中间节点的优先级的变而尝试向至少一个中间节点传输该消息。
另外,本发明还可以包括各种其他的方法和装置。 其他的特征有一部分显而易见并有一部分将在下文中指出。
附图简述


图1是在消息路由网络中的一个节点网络和上述节点之间的链路的典型示例图。
图2是示出了在其中经网络传送的消息被传输给一个或多个收件人的本发明 的一个实施方式的示例性进程的流程图。
图3是示出了在其中可以实现本发明的合适计算系统环境的一个示例的框图。 贯穿于附图,相应的参照符号指示相应的部分。
本发明的详细描述
首先参考图1,提供了在其中可以实现本发明的消息路由网络中的一个节点网 络和上述节点之间的链路的典型示例图。计算机网络100包括能够经由连接至各节 点的链路发送并接收消息(诸如电子消息、电子邮件、信息包等)的多个节点或消 息传输代理(MTA) d每个节点都含有收件人,这些收件人接收通过网络从发送 节点路由至该收件人所在的目标节点的消息或邮件。连接网络ioo各节点的线段附 近的黑体数字表示与经由各链路传输消息相关联的假定传输成本。在此示例中,与 消息从节点102(夏威夷)发送至节点104(西雅图)相关联的传输成本可以是200。 还应该考虑成本与网络可用性成反比,并由此可将成本看作是使用链路的机会成 本。在此示例中,出于说明的目的使用固定成本,但是在更为先进的实现中,实际 成本随着所占用/消耗的带宽动态更新。
作为经网络路由消息的示意,位于节点102 (夏威夷)的消息发件人将邮件发 送给位于UK格林威治的节点108的第一收件人,以及位于法国巴黎的节点112 的第二收件人。如果将此消息作为两个分离的消息分别从夏威夷发送至格林威治以 及从夏威夷发送至巴黎,则把各文件发送给两个收件人的总传输成本将会是740 (例如,200+80+卯(从夏威夷到格林威治)加上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:30 p.m.而节点A从1:00 p.m. 到4:00 p.m.接收文件,而节点B从3:00 p.m.到6:00 p.m.接收文件,而节点C从6:00 p.m.到10:00 p.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,如CDROM或其它光介质进行读写的光盘驱动器160。可以在 示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质 包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态 ROM等等。硬盘驱动器154以及磁盘驱动器156和光盘驱动器160通常通过非易 失性存储器接口,如接口 166连接到系统总线136。
上文讨论并在图3示出的驱动器或其他海量存储及其相关联的计算机存储介 质为计算机130提供了计算机可读指令、消息结构、程序模块和其它消息的存储。 例如,在图3中,示出硬盘驱动器154储存操作系统170、应用程序172、其它程 序模块174和程序数据176。注意,这些组件可以与操作系统144、应用程序146、 其它程序模块148和程序数据150相同,也可以与它们不同。这里对操作系统17应用程序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连接 至LAN196。当在广域网网络环境中使用时,计算机130通常包括调制解调器178 或用于通过WAN 198,如因特网建立通信的其它装置。调制解调器178可以是内 置或外置的,它通过用户输入接口 184或其它适当的机制连接至系统总线136。在 网络化环境中,相对于计算机130所描述的程序模块或其部分可储存在远程存储器 存储设备(未示出)中。作为示例,而非局限,图3示出远程应用程序192驻留在 存储器设备上。示出的网络连接是示例性的,也可以使用在计算机之间建立通信链 路的其它手段。
一般而言,计算机130的消息处理器是通过在不同的时刻驻留在计算机的各 种计算机可读存储介质中的指令来编程的。程序和操作系统通常例如分布在软盘或 CD-ROM上。从那里,它们被安装或加载到计算机的辅助存储器中。在执行时,
它们至少部分地被加载到计算机的主电子存储器中。当这些和其它各种类型的计算 机可读存储介质用于实现在下文中结合微处理器或其它消息处理器描述的步骤的
指令或程序时,此处所描述的本发明的实施方式包含这种介质。当依照此处所描述
17的方法和技术来编程时,本发明也包括计算机本身。
为说明起见,程序和诸如操作系统等其它可执行程序组件在此处被示出为离散的框,然而可以认识到,这些程序和组件在不同的时刻驻留在计算机的不同存储组件中,并由计算机的消息处理器执行。
尽管结合包括计算机130的示例性计算系统环境进行了描述,然而本发明的
一个实施方式可以使用众多其它通用或专用计算系统环境或配置来操作。该计算系
统环境并非对本发明的实施方式的使用范围或功能提出任何局限。此外,也不应将计算系统环境解释为对示例性操作环境中示出的任一组件或其组合具有任何依赖
或需求。适用于本发明的实施方式的众所周知的计算系统、环境和/或配置的示例包括但不限于,个人计算机、服务器计算机、手持式或膝上设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子设备、移动电话、网络PC、小型机、大型机、包括任一上述系统或设备的分布式计算环境等等。
本发明的实施方式可以在诸如由一个或多个计算机或其它设备执行的程序模块等计算机可执行指令的一般上下文环境中描述。 一般而言,程序模块包括但不限于,例程、程序、对象、组件、抽象消息类型等等,它们执行特定的任务或实现特定的抽象消息类型。本发明的实施方式也可以在分布式计算环境中实践,其中,任务由通过通信网络连接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机存储介质中。
软件体系结构上下文中的接口包括软件模块、组件、代码部分、或其它计算机可执行指令序列。接口包括,例如访问第二模块来代表第一模块执行计算任务的第一模块。在一个示例中,第一和第二模块包括诸如由操作系统提供的应用程序编
程接口 (API)、组件对象模型(COM)接口 (例如,用于对等应用程序通信)、以及可扩展标记语言元数据交换格式(XMI)接口 (例如,用于Web服务之间的
通信)。
接口可以是一种紧耦合的同步实现,诸如在Java 2平台企业版本(J2EE)、COM或分布式COM (DCOM)示例中。作为替代或除此之外,接口可以是诸如Web服务(例如,使用简单对象访问协议)中的松耦合的异步实现。 一般而言,接口包括以下特征的任一组合紧耦合的、松耦合的、同步和异步。此外,接口可符合标准协议、专有协议、或标准和专有协议的任何组合。
此处所描述的接口可以都是单个接口的一部分,或者可以被实现为单独的接口或其中的任何组合。接口可以本地或远程地执行以提供功能。此外,接口可包括比此处所示或所描述的更多或更少的功能。以下各实施例将进一步举例说明本发明
实施例——经网络的电子邮件路由初始化
在初始化期间,要计算两个消息结构。它们在整个进程执行过程中都会被用到。如果底层的消息改变,能够简单地重新计算这些消息结构并用于该点的转发。目的地可选表
对于组织内的每个节点而言,确定接近当前机器的投递节点并将其放入一列表或表格(目的地可选表)。该列表根据它们对所述目标的最小传输成本而被排序。这包括了在当前节点和目标节点之间最小成本路径上的所有节点。这还包括了从源到目标的其他路径上的其他节点,只要它们到该目标的最小成本要小于从当前节点
到目的地节点的传输成本。最初,这还可以包括位于通向该目标的一路径上的节点,但该路径不是从当前节点到目标的路径。此处,距离是根据在各节点之间定义的、因链路桥原因的链路成本而定的。
这是对该算法有多兼容的探试式的决定。包括更大的集合将允许该系统尝试尽可能多的可选步骤以到达该目标;籍此增加成功的机会,但却会降低面对链路失败时的总效率。因变得更为兼容,允许我们解释该可能性,即底层的节点链路记录只是底层拓扑结构的模型而不表示物理网络拓扑结构的每一方面。
最小生成树
最小生成树以当前节点作为根对于网络节点/链路进行计算。此外,也建立生成树本地分区表。对于每个目的地D,确定下一个跳点(h叩)(在从当前节点到目标D的最小生成树的路径内的第一个邻近节点)。
处理不一致的全局消息
本算法假设网络节点/链路的消息是全局一致的。在实践中,这一假定通常是真实的,因为消息被过分地复制,还因为它变化缓慢,仅受操作者的控制。然而由于复制等待时间而不能保证上述假定一直为真。
本系统将使用例如SMTP接收的报头,来跟踪一消息已经从节点到节点的传输次数。如果传输计数超过第一阈值,该邮件将被延迟,给于复制一个机会以便稳定。如果该传输计数超过最大计数,该系统就被推定为损坏并且将带有关于失败投递的信息(诸如,无法投递报告(NDR))的邮件返回给发件人本算法的一个益处是它需要有关更远离它的各节点的最小信息。结果,它就对全周节点/链路消息的不一致不那么敏感。单个目的地的情况
在单个目的地的情况下,邮件被路由至单独收件人的地址。因为只有一个收件人,所以无需考虑在多个节点处的收件人扇出问题。扇出问题可能会因为该邮件最初寄往单独收件人而出现,或者可能会因为该邮件最初寄往多个收件人而出现,并且该邮件已被扇出。
在路由时,消息被放入队列以等待向目的地节点的投递。
在中继时(当该系统希望将邮件从本地机器移动至远程机器时),连接管理器算法确定该邮件应该被中继至目的地T。
首先尝试将该邮件传输至收件人所在的目的地节点。如果针对目的地节点的传输失败,就随着目的地可选表内每个可选当前节点的最小传输成本的变化做出传输该邮件的额外尝试。这些额外传输尝试按照中间节点和目的地节点之间最小传输成本的优先级次序执行。这样就能达到在目的地本身无法到达的情况下将该邮件移动至离该目的地最近的节点的效果。
如果一目的地不能到达,TCP将判定在一段时间内无法做出连接。例如,如
果连接无法在20秒内做出,每个站点平均具有两个桥头,该网络的直径可达IO,则尝试所有的可选站点就需要400秒或者7分钟的延迟时间。这还能通过保持一个近来尝试并失败的连接(例如,在最近30分钟内失败)的高速缓存并且不尝试连接那些站点而得到进一步地优化。
如果没有连接能够做出,则在单个目的地的情况下,就搁置该消息队列并因预料该网络将会在随后被修复,而在稍后执行传输该队列的尝试。
多个目的地的情况
在某些情况下,邮件被寄往位于不同节点上的一个以上的收件人。在此情况下,网络通信量优化方法就沿着在系统启动时算出的最小生成树内的各链路中继该邮件。
邮件收件人根据通向各收件人节点路径第一次分叉处的最后节点而被分组。该节点是在目的地可选表上具有最高优先级(例如,分叉节点和目的地节点之间的最小成本)的分叉节点。在该分叉节点创建消息的分岔并且将该邮件放入队列以等待用于走这条路径的收件人的分叉节点。该消息在两个收件人具有仅仅在当前节点处并发的路径时才必须被分岔。尽可能地延迟分岔是有利的,所以假定在三个收件人的情况下,该邮件被传输至一个更近的"下一个跳点"来避免额外的分岔。
可以使用在初始化部分描述的生成树本地分区表来有效地计算该节点。使用该分区表,就能够根据最小生成树中对收件人目的地的下一个跳点来分组该邮件的收件人。为每个收件人组创建一消息分岔;并且排队该邮件以等待在最小生成树内从当前节点到目标节点的路径中出现的、且离当前节点最远的节点(即,具有针对目的地节点的最小成本的节点)。
一旦该邮件已被排队,就进行在上述单个目的地的情况中所描述的传输。如果针对有关一个以上目标的各可选分叉节点中的任何一个都无法做出连接,就在当前节点处执行消息分岔并且排队该邮件以等待做出该分岔结果出现的新目标。以此方式,如果一节点不可用,就在当前节点处分岔该消息以向该邮件提供更大的投递机会。这的确会降低节点不可用时的效率,但能允许对该邮件的部分或全部的成功传输。
此处所示且描述的方法的执行或实现顺序不是必要的,除非另外指定。艮卩,方法的要素可以用任何顺序来执行,除非另外指定,且方法可包括比此处所揭示的更多或更少的要素。例如,可以构想,在另一要素之前、与其同时或之后执行或实现特定要素是在本发明的范围之内。
当介绍本发明或其实施例的要素时,冠词"一"、"一个"、"该"和"所述"意指存在一个或多个要素。术语"包括"、"包含"和"具有"旨在包含性的,且意味着除所列出的要素之外还可以有其它要素。
鉴于上述内容,可以看到,实现了本发明的若干目的并获得了其它有利的结果。
由于可以在不脱离本发明的实施例的范围的情况下在上述构造和方法中做出各种改变,因此包含在以上描述且在附图中示出的所有内容都旨在说明性的解释,而非在限制的意义上的解释。
权利要求
1. 一种经由计算机网络传输消息的计算机实现的方法,所述网络具有当前节点、目标节点、以及在所述当前节点和所述目标节点之间与所述网络相连接的一个或多个中间节点,所述方法包括创建位于网络上的对所述目标节点的传输成本小于所述当前节点对所述目标节点的传输成本的中间节点的目的地可选表,其中所述中间节点根据它们的最小传输成本被排列优先级;尝试向所述目标节点传输所述消息;以及如果对所述目标节点的所述消息的传输失败,就按照在所述目的地可选表中标识的中间节点的优先级而尝试向至少一个中间节点传输所述消息。
2. 如权利要求l所述的方法,其特征在于,如果对所述目标节点的所述消息的传输失败,就尝试对具有最高优先级的中 间节点传输所述消息;以及如果所述对具有最高优先级的中间节点传输所述消息的尝试失败,就尝试向 优先级依次降低的各中间节点传输所述消息。
3. 如权利要求l所述的方法,其特征在于,所述消息经由计算机网络从所述 当前节点传输至至少两个目标节点,所述方法还包括为所述网络创建以所述当前节点为根的最小生成树;从位于不同节点上的至少两个收件人的最小生成树中确定最后分岔节点; 根据最后分岔节点分组收件人;以及 将所述消息传输至最后分岔节点。
4. 如权利要求3所述的方法,其特征在于,还包括 确定所述最后分岔节点是否能够将所述消息传输至所述目标节点;以及 当确定所述最后分岔节点无法将所述消息传输至所述目标节点时,就从所述当前节点分叉所述消息用以向所述目标节点传输。
5. 如权利要求l所述的方法,其特征在于,还包括跟踪有关所述消息在节点 之间的传输次数;其中所述传输次数超过最小阈值时,将额外的传输延迟一稳定周期;以及 其中所述传输次数超过最大阈值时,将消息作为不可投递而返回。
6. 如权利要求l所述的方法,其特征在于,对所述目标节点的所述消息传输失败,还包括确定网络节点的可用传输时间表;以及根据在所述目的地可选表中标识的中间节点的优先级及其可用时间表,尝试向所述中间节点传输所述消息d
7. 如权利要求l所述的方法,其特征在于,具有用于执行如权利要求1所述的计算机可执行方法的计算机可执行指令的一种或多种计算机可读介质。
8. —种用于在消息通信网络上传输消息的消息通信系统,所述消息通信系统具有当前服务器、目标服务器、以及在所述当前服务器和所述目标服务器之间连接到所述网络的一个或多个中间服务器,所述消息通信系统包括位于所述网络上的具有对所述目标服务器的传输成本的所述中间服务器的目的地可选表,其中所述中间服务器根据它们的最小传输成本被排列优先级;被配置用于执行计算机可执行指令的当前服务器,所述指令用于尝试向所述目标服务器传输消息;以及如果对所述目标服务器的所述消息的传输失败,就按照在所述目的地可选表中标识的中间服务器的优先级而尝试向至少一个中间服务器传输所述消息。
9. 如权利要求8所述的系统,其特征在于,所述当前服务器进一步地被配置用于执行计算机可执行指令,所述指令用于如果对所述目标节点的所述消息的传输失败,就尝试对具有最高优先级的中间节点传输所述消息;以及如果所述对具有最高优先级的中间节点的所述消息的传输的尝试失败,就尝试向优先级依次降低的各中间节点传输所述消息。
10. 如权利要求8所述的系统,其特征在于,所述消息经由计算机网络从所述当前节点传输至至少两个目标节点,所述当前服务器进一步地被配置用于执行计算机可执行指令,所述指令用于为所述服务器的网络创建以所述当前服务器为根的最小生成树;从位于不同服务器上的至少两个收件人的最小生成树中确定最后分岔服务器;根据最后分岔服务器分组收件人;以及将所述消息传输至最后分岔节点。
11. 如权利要求IO所述的系统,其特征在于,还包括确定所述最后分岔节点是否能够将所述消息传输至所述目标节点;以及当确定所述最后分岔节点无法将所述消息传输至所述目标节点时,就从所述当前节点中分叉所述消息用以向所述目标节点传输。
12. 如权利要求8所述的系统,其特征在于,还包括跟踪有关所述消息在节点之间的传输次数;其中所述传输次数超过最小阈值时,将额外的传输延迟一稳定周期;以及其中所述传输次数超过最大阈值时,将消息作为不可投递而返回。
13.如权利要求8所述的系统,其特征在于,对所述目标节点的所述消息传输失败,还包括确定网络节点的可用传输时间表;以及根据在所述目的地可选表中标识的中间节点的优先级及其可用时间表,尝试向所述中间节点传输所述消息。
14. 具有用于经由计算机网络传输消息的计算机可执行指令的一种或多种计算机可读介质,所述网络具有当前节点、目标节点、以及与在所述当前节点和所述目标节点之间的所述网络相连接的一个或多个中间节点,所述计算机可读介质包括用于确定从所述中间节点到所述目标节点的所述传输成本并且根据所述中间节点的最小传输成本排列它们的优先级的指令;以及用于尝试向所述目标节点传输所述消息的指令,并且如果对所述目标节点的所述消息传输失败,该指令就按照所述目的地可选表中标识的所述中间节点的优先级而尝试向至少一个中间节点传输所述消息。
15. 如权利要求14所述的计算机可读介质,其特征在于,还包括用于在对所述目标节点的所述消息传输失败的情况下尝试向具有最高优先级的所述中间节点传输所述消息的指令;以及用于在针对所述最高优先级的中间节点的所述消息传输失败的情况下尝试向优先级依次降低的各中间节点传输所述消息的指令。
16. 如权利要求14所述的计算机可读介质,其特征在于,还包括用于为所述网络创建以所述当前节点为根的最小生成树的指令;用于从位于不同节点上的至少两个收件人的所述最小生成树中确定最后分岔节点的指令;用于根据最后分岔节点分组收件人的指令;以及用于将所述消息传输至所述最后分岔节点的指令。
17. 如权利要求14所述的计算机可读介质,其特征在于,还包括用于确定所述最后分岔节点是否能够将所述消息传输至所述目标节点,以及在确定所述最后分岔节点无法将所述消息传输至所述目标节点的情况下从所述当前节点分叉所述消息用以向所述目标节点传输的指令。
18. 如权利要求M所述的计算机可读介质,其特征在于,还包括用于跟踪有关所述消息在各节点之间的所述传输次数的指令;用于在其中所述传输次数超过最小阈值的情况下延迟额外的传输一稳定周期的指令;以及用于在其中所述传输次数超过最大阈值的情况下将消息作为不可投递返回的指令。
19. 如权利要求14所述的计算机可读介质,其特征在于,对所述目标节点的所述消息传输失败,还包括用于确定各网络节点的所述可用传输时间表的指令;以及用于根据在所述目的地可选表中标识的中间节点的优先级及其可用时间表而尝试向所述中间节点传输所述消息的指令。
20. 如权利要求14所述的计算机可读介质,其特征在于,还包括用于维护近来失败连接的所有结点的高速缓存的指令,其中所述高速缓存用于避免尝试向近来失败的节点传输所述消息。
全文摘要
描述了系统和方法,该系统和方法提供增强的稳定性、增加的可预测性、降低的传输成本并且节省经计算机网络路由消息的带宽。本系统和方法还包括提供了改善的消息传输,其中该消息被传输至与目标投递节点最接近的节点。如果有可能投递至目标节点,该消息传输在网络中的故障点处停止,其中对该目标节点的投递在稍后完成或者将该消息返回给发件人。
文档编号H04L1/00GK101507161SQ200680014730
公开日2009年8月12日 申请日期2006年4月21日 优先权日2005年5月27日
发明者D·艾齐利欧普塔斯, E·D·特里比尔, L·沃曼, M·E·皮尔森 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1