专利名称:使用虚拟接口在转发上下文之间传送分组的制作方法
技术领域:
本发明的一个实施例涉及通信和计算机系统,尤其是路由器、分组交
换系统和其他设备;更具体地, 一个实施例涉及使用虚拟接口在转发上下 文(forwarding context)之间传送分组。
背景技术:
通信业正在迅速改变以适应新型技术和不断增加的客户需求。对新应 用和现有应用的性能提高的该客户需求驱使通信网络和系统供应商采用具 有更高速度和容量(例如,更大带宽)的网络和系统。在完成这些目标的 尝试中,很多通信供应商采取的通用方法是使用分组交换技术。渐渐地, 公共和私有通信网络通过诸如因特网协议(IP)之类的各种分组技术被构 建和扩展。注意,除非明确指出,否则本文描述或引用的任何事物都不作 为本申请的现有技术。
分组交换设备己从每个设备表示单个路由器或桥的设备演化成支持多 "转发上下文"的设备。如这里所使用的,转发上下文包括但不限于虚拟 路由器、逻辑路由器和/或虚拟私有网络。每个转发上下文维护或关联与其 自身相关的分组转发信息。例如,两个逻辑路由器可以设在相同的物理设 备中,但这些不同的转发上下文将维护不同的路由表和转发信息库,以在 处理和转发分组时使用。
当然,分组在一个转发上下文中的该处理可以确定某些分组应被传送 到一个不同的转发上下文中。过去,这意味着分组应被发送到一个不同的 分组交换设备。然而如今,这些不同的转发上下文设在相同的物理分组交 换机中是可能的,例如位于单个物理路由器的不同逻辑或虚拟路由器中。
用于在两个转发上下文之间特别是逻辑路由器之间(例如,其中每个 线路卡只属于单个转发上下文)传送分组的一个现有方法例示于图1A。示出分组交换机100,其包括三个转发上下文101、 102和103,这些设备 具有物理接口 111-116。该方法使用物理线缆121-123来连接不同的转发上 下文101-103,这要求技术员正确地连接用于每对转发上下文的物理线 缆。
用于在两个转发上下文之间特别是虚拟路由器之间传送分组的另一个 现有技术例示于图1B。示出分组交换机140,其包括三个转发上下文 141、 142和143。这些转发上下文使用进程间通信151-156 (例如,标准 IPC或专用硬件或软件)来在这些转发上下文141-143之间传送分组。为 了传送分组并提供将特征应用于这些分组的机制,该方法需要专用硬件和 软件研发。这些特征的示例包括但不限于访问控制列表(ACL)、服务 质量(QoS)(例如,承诺的访问速度,限速,成形,标记等)、累积的/ 采样的网络流量计费、单播逆向路径转发(uRPF)、基于策略的路由、边 界网关协议(BGP)策略计费、经由BGP的QoS策略传播、计费、统 计、网络缓存重定向、合法侦听、IPSec加密/解密,入侵检测和避免、满 状态防火墙(state-foil firewall)、网络地址转换以及基于网络的应用辨
认o
发明内容
公开了在通信和计算系统特别是路由器、分组交换系统和其他设备 中,使用虚拟接口在转发上下文之间传送分组的方法、设备、数据结构、 计算机可读介质、机制和装置及其他。如这里使用的,虚拟接口指接口基 础架构(例如,缓冲器、存储位置、其他数据结构),但不连接到如物理 接口之类的外部线缆或其他通信机制。
一个实施例包括第一转发上下文,其被配置成基于第一转发信息库
来识别用于分组的转发信息;第二转发上下文,其被配置成基于第二转发 信息库来识别用于分组的转发信息;第一虚拟接口,其被配置成接收分 组,所述第一虚拟接口与所述第一转发上下文相关联;第二虚拟接口,其 被配置成发送分组,所述第二虚拟接口与所述第二转发上下文相关联;以 及上下文转发器,其耦合到所述第一和第二虚拟接口,被配置成将由第一虚拟接口接收到但在第一虚拟接口处未被丢弃的所有分组自动移动到第二 虚拟接口 。第一转发上下文被配置成基于第一转发信息库针对特定分组确 定该特定分组将转发到第二转发上下文,并且响应于所述确定,第一转发 上下文被配置成将该特定分组移动到第一虚拟接口 ;其中所述装置被配置 使得该特定分组在第一虚拟接口处不会被丢弃。 一个实施例包括上下文转 发器以提供多个转发上下文之间的互连,以便相同的虚拟接口可用于将分 组传送到不同的转发上下文。在一个实施例中,第一和第二虚拟接口中的 每一个是双向的,以便分组可以自动从第一虚拟接口移动到第二虚拟接 口,并且从第二虚拟接口移动到第一虚拟接口。
所附权利要求具体提出本发明的特征。本发明及其优点通过以下详细 说明结合附图将得到最好的理解。 图1A-B现有网络配置;
图2A是例示分组交换机的框图,所述分组交换机使用虚拟接口在其
多个转发上下文之间传送分组;
图2B是例示在一个实施例中使用的处理的流程图,所述处理使用虚 拟接口在多个转发上下文之间传送分组;
图2C是例示在一个实施例中使用的处理的流程图,所述处理使用虚 拟接口在多个转发上下文之间传送分组;
图3A是例示分组交换机的框图,所述分组交换机使用虚拟接口在其 多个转发上下文之间传送分组;
图3B是例示分组交换机的框图,所述分组交换机使用虚拟接口在其 多个转发上下文之间传送分组;
图3C例示可以在一个实施例中使用的示例性数据结构;
图3D是例示在一个实施例中使用的处理的流程图,所述处理使用虚 拟接口在多个转发上下文之间传送分组;
图4是例示多个耦合的转发上下文的框图;以及
图5是在一个实施例中使用的系统或组件的框图。
具体实施例方式
公开了在通信和计算系统特别是路由器、分组交换系统和其他设备 中,使用虚拟接口在转发上下文之间传送分组的方法、设备、数据结构、 计算机可读介质、机制和装置及其他。
注意,这里描述的实施例包括各种元素和限制,没有一个元素或限制 被认为是关键元素或限制。每个权利要求各自完整地记述了发明的一个方 面。另外,描述的某些实施例可包括但不限于系统、网络、集成电路芯 片、嵌入式处理器、ASCI、方法和包含指令的计算机可读介质等。 一个或 多个系统、设备、组件等可包含一个或多个实施例,这些实施例可包括由 相同或不同系统、设备、组件等执行的权利要求的某些元素或限制。之后 描述的实施例体现了本发明的范围和精神内的各个方面和配置,附图例示 示例性和非限制性配置。注意,用于执行方法和处理块操作的计算机可读 介质和装置被公开并遵守本发明的可扩充范围和精神。
如这里所使用的,术语"分组"指代所有类型的分组或任何其他数据 或信息单元,包括但不限于固定程度信元和可变长度分组,它们中的每一 个可以或不可以被划分成更小的分组或信元。这里使用的术语"分组"还 指代分组本身或分组指示符,例如但不限于分组或分组首部、数据结构 值、指针或索引或任何其他部分或者分组或与之相关的信息的直接或间接 指示符的全部或部分。例如,路由器常常在分组特别是首部的一个或多个 字段或数据上操作,因此分组主体常常存储在单独的存储器中同时分组首 部被操纵,并且基于分组(即,本例中的分组首部)的处理结果,整个分 组被转发或丢弃等。此外,这些分组可包含一种或多种类型的信息,包括 但不限于语音、数据、视频和音频信息。术语"项"在这里一般用于指代 分组或任何其他信息或数据单元或段,或者设备、组件、元素或任何其他 实体。短语"处理分组"和"分组处理"通常指基于分组内容(例如,分 组首部或其他字段)执行某些步骤或动作,并且这种步骤或动作可以或可 以不包括修改、存储、丢弃和/或转发分组和/或相关数据。术语或引用 "丢弃"分组或其等同物(例如,丢弃分组,分组被丢弃等)在这里用于识别分组的物理丢弃、导致分组被丢弃和/或标记或区分分组以便以后丢弃 或者与"被承认"分组的处理可能不同的处理(例如,更有可能被后续处
理丢弃、早期拥塞指示标记等)。术语联网设备的"接口"指物理接口、 逻辑接口 (例如,物理接口的一部分或者有时在业界被称为子接口一例如
但不限于与网络接口相关的特定VLAN),以及/或者虚拟接口 (例如,基 于例如不限于隧道接口之类的某些特性组合在一起的流量)。
术语"系统"在这里一般用于描述任何数目的地组件、元素、子系 统、设备、分组交换元素、分组交换机、路由器、网络、计算机和/或通信 设备或机制或其组件的合并。术语"计算机"在这里一般用于描述任何数 目的地计算机,包括但不限于个人计算机、嵌入式处理元素和系统、控制 逻辑、ASIC、芯片、工作站、主机等。术语"处理元素"在这里一般用于 描述任何类型的处理机制或设备,如处理器、ASCI、现场可编程门阵列、 计算机等。术语"设备"在这里一般用于描述任何类型的机制,包括计算 机或系统或其组件。术语"任务"和"处理"在这里一般用于描述任何类 型的运行程序,包括但不限于计算机进程、任务、线程、执行应用、操作 系统、用户进程、设备驱动器、本机代码、机器或其他语言等,并且可以 是交互的或非交互的、逻辑地和/或远程地运行的、在前台和/或后台运行 的、在用户和/或存在系统地址空间中运行的、库和/或独立应用程序的例 程,并且不限于任何特定的存储器分割技术。附图中例示的步骤、连接和 信号及信息的处理包括但不限于任何框图、流程图和消息序列图,通常可 按相同或不同的串行或并行次序、并且/或者由不同组件和/或处理、线程 等、并且/或者通过不同连接并与其他实施例中的其他功能相结合地执行, 除非这使实施例失效或者明确或不明确地要求一个顺序(例如,对于读取 值、处理值的顺序一在处理该值之前必须先获得该值,虽然相关的某些处 理可以在读取操作之前、同时和/或之后执行)。另外,术语"识别"在这 里一般用于描述任何直接或间接确认某事物的方式或机制,可包括但不限 于接收、从存储器中取得、确定、定义、计算、生成等。
另外,术语"网络"和"通信机制"在这里一般用于描述一个或多个 网络、通信介质或通信系统,包括但不限于因特网、公共或私有电话、蜂窝、无线、卫星、有线、局域、城域和/或广域网络、线缆、电连接、总线 等,以及诸如消息传递、进程间通信、共享存储器等的内部通信机制。术 语"消息"在这里一般用于描述可以是也可以不是但通常经由任何类型的 一种或多种通信机制来传送的一条消息。
术语"存储机制"包括任何类型的用于维护任何格式的指令或数据的 存储器、存储设备或其他机制。"计算机可读介质"是包含任何存储器、 存储设备和/或其他存储机制的可扩充术语。术语"存储器"包括但不限于
任何随机存取存储器(RAM)、只读存储器(ROM)、闪存、集成电路
和/或其他存储组件或元素。术语"存储设备"包括任何固态存储介质、磁 盘驱动器、磁碟、联网服务、磁带驱动器和任何其他类型的存储设备。存 储器和存储设备可存储将由处理元素和/或控制逻辑执行的计算机可执行指 令,以及被处理元素和/或控制逻辑操纵的数据。术语"数据结构"是可扩 充术语,指代任何数据元素、变量、数据结构、数据库和/或一种或多种可 以应用于数据以方便解译数据或对其执行操作的组织方案,包括但不限于 存储位置或器件、集、队列、数、堆、列表、链表、数组、表、指针等。 数据结构通常以一种存储机制来维护。术语"指针"和"链接"在这里一 般用来标识用于引用或标识另一元素、组件或其他实体的某些机制,它们 可包括但不限于对存储器或其他存储机制或其位置的引用、数据结构中的 索引、值等。
术语"一个实施例"在这里用于引用特定实施例,其中对"一个实施 例"的每个引用可指代不同的实施例,并且描述相关特征、元素和/或限制 时,该术语在此的重复使用不建立每一个实施例必须包含的相关特征、元 素和/或限制的累积集合,虽然实施例通常可能包括所有这些特征、元素和 /或限制。另外,短语"用于...的装置"通常包括包含用于执行...的计算机 可执行指令的计算机可读介质。
另外,术语"第一"、"第二"等在这里通常用于表示不同单元(例 如,第一元素、第二元素)。这些术语在这里的使用不一定暗含诸如一个 单元或事件在另 一个之前出现或到来之类的次序,而是提供在特定单元之 间进行区分的机制。此外,名词的单数时态的使用是非限制性的,该使用通常包括一个或多个该特定事物而非仅一个(例如,单词"存储器"的使 用通常指代一个或多个存储器,不必指明"存储器或多个存储器"或"一 个或多个存储器"或"至少一个存储器"等)。此外,短语"基于X"和 "响应于X"用于指示从中获取或导致某事物的项"X"的最小集合,其中 "X"是可扩充的并且不一定必须描述对其执行了操作等的项的完整列 表。另外,短语"耦合到"用于指示两个元素或设备之间的某种级别的直 接或间接连接,耦合的设备或多个设备修改或不修改耦合的信号或传送的 信息。术语"子集"用于指示一个集合的所有元素的全部或不到全部的组 合。术语"子树"用于指示全部树的所有或不到全部。另外,术语"或" 在这里用于标识连接项的一个或多个(包括全部)的选择。另外,与"包 括"、"含有"或"特征是"是同义词的过渡术语"包含"是包含性的或 开放式的,不排除附加的、未记载的元素或方法步骤。
公开了在通信和计算系统特别是路由器、分组交换系统和其他设备 中,使用虚拟接口在转发上下文之间传送分组的方法、设备、数据结构、 计算机可读介质、机制和装置及其他。
一个实施例包括第一转发上下 文,被配置成基于第一转发信息库来识别用于分组的转发信息;第二转发 上下文,被配置成基于第二转发信息库来识别用于分组的转发信息;第一
虚拟接口,被配置成接收分组,所述第一虚拟接口与所述第一转发上下文
相关联;第二虚拟接口,被配置成发送分组,所述第二虚拟接口与所述第 二转发上下文相关联;以及上下文转发器,耦合到所述第一和第二虚拟接 口 ,被配置成 自动将由第一虚拟接口接收但在第一虚拟接口处未丢弃的所 有分组移动到第二虚拟接口 。第一转发上下文被配置成基于第一转发信息 库针对特定分组进行确定以将该特定分组转发到第二转发上下文,并且响 应于所述确定,第一转发上下文被配置成将该特定分组移动到第一虚拟接 口 ;其中装置被配置使得该特定分组在第一虚拟接口不会被丢弃。
一个实施例包括:第一转发上下文应用处理器,被配置成将一个或多 个特征应用到所述由第一虚拟接口接收的分组;并且其中所述上下文转发 器被配置成自动将未被所述特征的应用丢弃的所有分组移动到第二虚拟接 口。在一个实施例中,所述装置被配置成将一个或多个特征应用到第一虚拟接口和第二虚拟接口中的分组。 一个实施例包括耦合到第二虚拟接口的 统计信息收集器,该统计信息收集器被配置成收集用于处理所述移动到第 二虚拟接口的分组的统计信息。在一个实施例中,所述装置被配置成对接 收到第一虚拟接口中的分组收集用于处理第一虚拟接口中的所述分组的统 计信息,并被配置成对接收到第二虚拟接口中的分组收集用于处理第二虚 拟接口中的所述分组的统计信息。
一个用于处理分组的实施例包括在分组交换设备中的转发上下文之间 移动分组的能力。 一个实施例包括多个不同的转发上下文,被配置成基 于它们各自的转发信息库来识别用于分组的转发信息;上下文转发器,被 配置成在所述多个不同的转发上下文之中转发分组;以及多个背靠背
(back-to-back)虚拟接口对,每个所述背靠背虚拟接口对包括第一虚拟接 口和第二虚拟接口,其中所述每个背靠背虚拟接口对的第一虚拟接口与所 述多个不同的转发上下文中的一个不同转发上下文相关联,并且其中所述 每个背靠背虚拟接口对的第二虚拟接口与所述上下文转发器相关联。在一 个实施例中,上下文转发器被配置成在所述背靠背虚拟接口对的第二虚拟 接口上接收分组,并且对于所述在第二虚拟接口上接收的多个分组的每个 特定分组,识别向所述多个不同的转发上下文中的哪个特定转发上下文来 转发所述特定分组并将所述特定分组移动到与所述特定转发上下文相对应 的多个背靠背虚拟接口对的第二虚拟接口;并且其中所述装置被配置成自 动将在所述第一接口上接收的分组移动到每个所述多个背靠背虚拟接口对 的第二接口 ,并自动将在所述第二接口上接收的分组移动到每个所述多个 背靠背虚拟接口对的第一接口。
在一个实施例中,多个转发上下文的每一个被配置成当分组基于其转 发信息库被确定为转发到所述多个转发上下文的一个不同的目的地转发上 下文时,将与所述不同的目的地转发上下文相对应的标签附加到该分组 上;并且其中上下文转发器被配置成响应于在多个第二虚拟接口之一上接 收分组、基于附加到该分组的标签来识别向所述多个第二虚拟接口的哪一 个来移动该分组。
在一个实施例中,多个转发上下文的每一个被配置成当分组基于其转
14发信息库被确定为转发到所述多个转发上下文的一个不同的目的地转发上 下文时,将与所述多个转发上下文的当前转发上下文相对应的源标签和与 所述不同目的地转发上下文相对应的目的地标签附加到该分组上;并且其 中上下文转发器被配置成响应于在多个第二虚拟接口之一上接收分组、基 于附加到该分组的源标签和目的地标签来识别向所述多个第二虚拟接口的 哪一个来移动该分组。
一个实施例包括第一转发上下文应用处理器,与多个不同的转发上 下文的至少一个相关联,被配置成将一个或多个特征应用到由所述多个不 同的转发上下文的至少一个转发上下文的第一虚拟接口接收的分组上。
一个实施例在分组交换系统中的转发上下文之间移动分组,所述分组 交换系统包括多个虚拟接口,所述多个虚拟接口包括第一虚拟接口和第二 虚拟接口,所述转发上下文包括与第一虚拟接口相关联的第一转发上下文 和与第二虚拟接口相关联的第二转发上下文。对于被第一转发上下文确定 为转发到第二转发上下文的多个分组的每个特定分组,所述特定分组被移 动到第一虚拟接口。对于置于第一虚拟接口中的每个独特分组,所述独特 分组被移动到第二虚拟接口,所述独特分组被第二转发上下文处理。在一 个实施例中,特征被应用到这些虚拟接口的一个或多个虚拟接口上。
一个实施例包括第一转发上下文,被配置成基于第一转发信息库来 识别用于分组的转发信息;第二转发上下文,被配置成基于第二转发信息
库来识别用于分组的转发信息;第一虚拟接口,被配置成接收分组,所述 第一虚拟接口与第一转发上下文相关联;第二虚拟接口,被配置成发送分 组,所述第二虚拟接口与第二转发上下文相关联;以及自动将由第一虚拟 接口接收但在第一虚拟接口处未丢弃的所有分组移动到第二虚拟接口中的 装置。 一个实施例包括将特征应用到由第一虚拟接口接收的分组上的装 置。 一个实施例包括将特征应用到由第二虚拟接口接收的分组上的装置。 在一个实施例中,第一和第二转发上下文与不同的私有网络相关联。 在一个实施例中,第一和第二转发上下文与不同的逻辑路由器相关联。在 一个实施例中,第一转发上下文、第二转发上下文、第一虚拟接口、第二 虚拟接口以及上下文转发器设于分组交换设备的单个线路卡上。在第一实施例中,第一转发上下文、第二转发上下文、第一虚拟接口、第二虚拟接 口以及上下文转发器设于分组交换设备的单个线路卡上。
在一个实施例中,上下文转发器仅是自动将分组从虚拟接口对中的一 个虚拟接口移动到虚拟接口对中的另一个虚拟接口的机制或处理。在一个 实施例中,上下文转发器可以(例如,基于数据结构查找操作或通过另一 途径)确定自动将置于其虚拟接口之一中的分组移动到多个虚拟接口中的 哪一个。在一个实施例中,上下文转发器可提供其他功能,例如但不限于 将特征应用到(例如,存储在其多个虚拟接口之一中的或从其多个虚拟接 口之一移开的)分组。
转向附图,图2A例示分组交换机200,通过两个转发上下文210和 230示出。为了便于解释,转发上下文210和230被例示为包含相同的组 件;当然,在一个实施例中,转发上下文210和230以不同的方式来实 现。另外,虽然一个实施例具有多于两个转发上下文,互连结构通常以满 足特定应用需要的方式来实现,但是图2A例示两个转发上下文。
如所示,转发上下文210 (例如,虚拟路由器,逻辑路由器、虚拟私 有网络等)包括路由处理器212,路由处理器212使用转发信息库数据结 构211来确定向哪儿转发分组(例如,向不同的转发上下文转发分组一这 在一个实施例中是通过虚拟接口来执行的)。在一个实施例中,分组交换 机制213以通信的方式耦合虚拟接口 215-216和物理接口 217-218。分组可 以通过接口 215-218被转发到不同的转发上下文。物理接口 217-218例如 使用共享端口适配卡226连接到外部通信机制。与转发上下文210类似, 转发上下文230 (例如,虚拟路由器、逻辑路由器、虚拟私有网络等)包 括路由处理器232,路由处理器232使用转发信息库数据结构231来确定 向哪儿转发分组。在一个实施例中,分组交换机制233以通信的方式耦合 虚拟接口 235-236和物理接口 237-238。分组可以通过接口 235-238被转发 到不同的转发上下文。物理接口 237-238例如使用共享端口适配卡236连 接到外部通信机制。
转发上下文210和230使用虚拟接口 215和235来传送分组。在一个 实施例中,当分组置于这些虚拟接口之一中时,它被上下文转发器220自动移动到其他转发上下文中它的成对的虚拟接口中。 一个实施例允许特征 被应用到接口处的分组上;并且在这种情况下,若分组未被特征的应用
(214, 234)丢弃,则上下文转发器220自动将置于接口 215或235中的 所有分组移动到其他接口。因此, 一个实施例充分利用标准的接口机制 (允许特征被应用到分组),但虚拟化该接口并添加上下文转发器220以 自动将在虚拟接口处未丢弃的所有分组移动到其相应的成对虚拟接口 。换 言之,虚拟接口 215和235在到达一个接口 (但在该接口处未被丢弃)的 所有分组将被移动到另一接口方面是"背靠背"接口。这提供了用于在转 发上下文之间传送分组的有效机制,同时提供了将特征应用到每个虚拟接 口处的这些分组的能力。转发上下文210被示为包括(一个或多个)其他 虚拟接口 (216),并且转发上下文230被示为包括(一个或多个)其他 虚拟接口 (236),所述虚拟接口允许分组在其他转发上下文(未示出) 之间的成对方式的转发。
图2B是例示使用虚拟接口在多个转发上下文之间传送分组的一个实 施例中所使用的处理的流程图。处理开始于处理块250。当处理块253中 确定虚拟接口中存在分组时,处理块256-258例示的处理被执行。在处理 块256中,虚拟接口对的相应目的地虚拟接口按需要被确定(例如,在一 个实施例中,上下文转发器被用来在多个转发上下文之间移动分组,所以 源虚拟接口可能需要确定虚拟接口对中它的相应目的地虚拟接口)。在处 理块258中,特征被可选地应用到分组,任何该分组从第一 (源)虚拟接 口被移动到第二 (目的地)虚拟接口。在一个实施例中,与第一虚拟接口/ 第一转发上下文相关联的第一组特征被应用到分组,然后/或者与第二虚拟 接口/第二转发上下文相关联的特征被应用到分组。特征的应用可以由特征 应用处理器、由上下文转发器、或由另一机制对虚拟接口中的或从虚拟接 口移开的分组执行。处理返回处理块253。
图2C是例示使用虚拟接口在多个转发上下文之间传送分组的一个实 施例中所使用的处理的流程图。处理开始于处理块270。当处理块273确 定虚拟接口中存在分组时,处理块275-286例示的处理被执行。
如处理块275所确定,若一个或多个特征将被应用到分组上,则在处理块276中应用这些特征;若分组被处理块279确定的分组处理丢弃,则 处理返回处理块273。否则,在处理块280中,虚拟接口对的相应目的地 虚拟接口按需要被确定(例如,在一个实施例中,上下文转发器被用来在 多个转发上下文之间移动分组,所以源虚拟接口可能需要确定虚拟接口对 中它的相应目的地虚拟接口)。在处理块282中,分组从第一 (源)虚拟 接口被移动到第二 (目的地)虚拟接口。如处理块285-286所例示,特征 还可在虚拟接口对的第二 (目的地)虚拟接口处应用。处理返回处理块 273。
图3A是例示使用虚拟接口来在其多个转发上下文之间传送分组的分 组交换机的框图。图3A例示包括多个(即,至少两个)转发上下文301 和305的分组交换机300。上下文转发器309用来在这些转发上下文301 和305之中移动分组。在一个实施例中,每个转发上下文301、 305包括 单个虚拟接口 302、 306。在基于第一虚拟接口本身、由路由处理器或由另 一机制关联到分组上的目的地标签和/或源标签来确定目的地接口后,上下 文转发器309将非丢弃的分组从虚拟接口 302、 306的第一 (源)虚拟接 口移动到第二 (目的地)虚拟接口 302、 306。
图3B例示与图3A所示类似、但其上下文转发器实现方式不同的分组 交换机310。如所示,分组交换机310包括多个(即,至少两个)转发上 下文311和321,具有用于在这些转发上下文311、 321之中移动分组的上 下文转发器330。在一个实施例中,每个转发上下文311、 321包括单个虚 拟接口 312、 322。上下文转发器330包括多个虚拟接口 332-333,使得通 过转发上下文311、 321的每一个中的虚拟接口 312、 322建立虚拟接口 对。因此,置于虚拟接口 312、 322中的(非丢弃)分组被自动移动到上 下文转发器330中它的相应虚拟接口 332-333中。基于某种识别机制(例 如,由路由处理器或由另一机制关联到分组上的目的地标签和/或源标 签),分组从(上下文转发器330内的) 一个虚拟接口 332-333被移动到 与该分组将被移动到的转发上下文311、 321相对应的(上下文转发器330 内的)虚拟接口 332-333。从另一虚拟接口 332-333移动到虚拟接口 332-333的分组被自动移动到转发上下文311、 321内它们相应的虚拟接口312、 322。当然,特征可以被应用到这些虚拟接口 312、 322、 332和333 中的任何一个,并且除了在虚拟接口处丢弃的分组之外的所有分组被转发 到其相应的目的地转发上下文。在一个实施例中,上下文转发器与第三转 发上下文相关联。虚拟接口对和分组在这些虚拟接口之间的自动移动是灵 活的工具,并可以通过无限数目的地配置来互连。
图3C例示可在一个实施例中使用的示例性数据结构。在一个实施例 中,虚拟接口配对数据结构340用于识别预定的虚拟接口对(例如,供上 下文转发器使用)。该数据结构定义若分组被放在特定的源虚拟接口中
(并且不被丢弃),则它将自动移动到其在数据结构340中定义的成对虚 拟接口。在一个实施例中,标签到虚拟接口映射数据结构350用于识别
(例如,以供上下文转发器使用)对应于标签的虚拟接口,所述标签通常 由路由处理器或其他机制附加到分组上或与分组相关联。该数据结构可定 义例如若分组与特定标签相关联,则它将被自动移动到数据结构350中定 义的虚拟接口。
图3D是例示使用虚拟接口来在多个转发上下文之间传送分组的一个 实施例中所使用的处理的流程图。处理开始于处理块360。如处理块363 中所确定,若虚拟接口中存在非丢弃分组,则在处理块364中,配对的另 一虚拟接口被识别。在处理块366中,分组从第一虚拟接口被移动到已识 别的第二虚拟接口。处理返回处理块363。
虚拟接口对提供用于耦合多个转发上下文(及其他应用)的灵活、适 应性强的机制,这里例示并讨论这些不同架构中的若干架构。图4进一步 例示用于耦合转发上下文401-404的可扩展数目的地通信架构之一,所述 转发上下文被示为使用背靠背虚拟接口对421、 423、 424来耦合。 一个或 多个上下文转发器自动在每个虚拟接口对的虚拟接口之间移动分组,并且 可以按需要在分组交换机400中的虚拟接口或其他地方应用特征。
例如,若分组将从转发上下文-1401转发到转发上下文-4 404,则在一 个实施例中,转发上下文-1401将进行识别以将分组转发到转发上下文-2 402 (例如,"下一跳"转发上下文)并将分组放在虚拟接口对421中它 的虚拟接口中。分组将被自动移动到转发上下文-2 422中的相应虚拟接口。转发上下文-2通常基于转发信息库中的查找操作或可能基于与分组相 关的标签或其他信息来进行识别,或者进行识别以将分组转发到转发上下
文_4 404,并且分组将被置于其在虚拟接口对424中的虚拟接口中。分组 将被自动移动到转发上下文-4 424内的相应虚拟接口,并可用于由转发上 下文-4 424进行的处理。
图5是使用虚拟接口在转发上下文之间移动分组的分组交换系统的一 个实施例中所使用的系统或组件500的框图。在一个实施例中,系统或组 件500执行与此处例示或以其他方式描述的流程图之一相对应的一个或多 个处理。在一个实施例中,系统或组件500对应于上下文转发器或上下文 转发器的一部分。在一个实施例中,系统或组件500对应于转发上下文或 转发上下文的一部分。
在一个实施例中,系统或组件500包括处理元件501、存储器502、 存储设备503、专用组件505 (例如,分类或事件检测机制)和用于发送 和接收分组并且/或者在转发上下文之间传送分组并/或与外部设备或组件 传送分组的虛拟(以及可能的物理)接口 507 ,它们通常经由一个或多个 通信机制以通信的方式509来耦合,通信路径通常适合于满足应用的需 要。
组件500的各种实施例可包括或多或少的元件。组件500的操作通常 由处理元件501控制,处理元件501使用存储器502和存储设备503来执 行一个或多个任务或处理。存储器502是一类计算机可读介质,并且通常 包含随机存取存储器(RAM)、只读存储器(ROM)、闪存、集成电路 以及/或者其他存储组件。存储器502通常存储将由处理元件501运行的计 算机可执行指令和/或由处理元件501操纵以根据实施例实现功能的数据。 存储设备503是另一类计算机可读介质,并且通常包含固态存储介质、磁 盘驱动器、磁碟、联网业务、磁带驱动器和其他存储设备。存储设备503 通常存储将由处理元件501运行的计算机可执行指令和/或由处理元件501 操纵以根据实施例实现功能的数据。
鉴于可以应用本发明的原理的很多可能的实施例,将理解这里参考图 示/附图来描述的实施例和实施例的方面只是示意性的,不应视为限制本发明的范围。例如,并且对本领域技术人员明显的是,处理块操作的很多操 作可以被重排序以在其他操作之前、之后或基本同时执行。另外,数据结 构的很多不同形式可以在各种实施例中使用。这里描述的发明考虑了所有 可能落入所附权利要求及其等同物的范围内的实施例。
2权利要求
1. 用于处理分组的装置,包括在分组交换设备中的转发上下文之间移动分组的能力,所述装置包括第一转发上下文,其被配置成基于第一转发信息库来识别用于分组的转发信息;第二转发上下文,其被配置成基于第二转发信息库来识别用于分组的转发信息;第一虚拟接口,其被配置成接收分组,所述第一虚拟接口与所述第一转发上下文相关联;第二虚拟接口,其被配置成发送分组,所述第二虚拟接口与所述第二转发上下文相关联;以及上下文转发器,其耦合到所述第一和第二虚拟接口,被配置成将由所述第一虚拟接口接收到但在所述第一虚拟接口处未被丢弃的所有分组自动移动到所述第二虚拟接口,其中,所述第一转发上下文被配置成基于所述第一转发信息库针对特定分组确定该特定分组将被转发到所述第二转发上下文,并且响应于所述确定,所示第一转发上下文被配置成将该特定分组移动到所述第一虚拟接口;其中所述装置被配置使得该特定分组在所述第一虚拟接口处不会被丢弃。
2. 如权利要求1所述的装置,其中所述第一和第二转发上下文与不同 的私有网络相关联。
3. 如权利要求1所述的装置,其中所述第一和第二转发上下文与不同 虚拟路由器相关联。
4. 如权利要求1所述的装置,其中所述第一和第二转发上下文与不同 逻辑路由器相关联。
5. 如权利要求4所述的装置,其中所述第一转发上下文、所述第二转 发上下文、所述第一虚拟接口、所述第二虚拟接口和所述上下文转发器位 于分组交换设备的单个线路卡上。
6. 如权利要求1所述的装置,其中所述第一转发上下文、所述第二转 发上下文、所述第一虚拟接口、所述第二虚拟接口和所述上下文转发器位 于分组交换设备的单个线路卡上。
7. 如权利要求1所述的装置,包括第一转发上下文应用处理器,其被 配置成将一个或多个特征应用到由所述第一虚拟接口接收的所述分组上; 并且其中所述转发上下文被配置成将未被所述特征的应用丢弃的所有分组 自动移动到所述第二虚拟接口。
8. 如权利要求1所述的装置,其中所述装置被配置成将一个或多个特 征应用到所述第一虚拟接口和第二虚拟接口中的所述分组上。
9. 如权利要求1所述的装置,包括耦合到所述第二虚拟接口的统计信 息收集器,其被配置成收集在处理移动到所述第二虚拟接口的所述分组时使用的统计信息。
10. 如权利要求1所述的装置,其中所述装置被配置成收集关于接收 到所述第一虚拟接口中的分组的统计信息,以用于处理所述第一虚拟接口 中的所述分组,并被配置成收集关于接收到所述第二虚拟接口中的分组的 统计信息,以用于处理所述第二虚拟接口中的所述分组。
11. 一种用于处理分组的装置,包括在分组交换设备中的转发上下文 之间移动分组的能力,所述装置包括多个不同的转发上下文,被配置成基于它们各自的转发信息库来识别 用于分组的转发信息;上下文转发器,其被配置成在所述多个不同的转发上下文之间转发分 组;以及多个背靠背虚拟接口对,每个所述背靠背虚拟接口对包括第一虚拟接 口和第二虚拟接口 ,其中每个所述背靠背虚拟接口对中的第一虚拟接口与 所述多个不同的转发上下文中的一个不同的转发上下文相关联,并且其中 每个所述背靠背虚拟接口对中的第二虚拟接口与所述上下文转发器相关 联;其中所述上下文转发器被配置成在所述背靠背虚拟接口对的第二虚拟 接口上接收分组,并且对于在所述第二虚拟接口上接收的所述分组中的每个特定分组,识别将向所述多个不同的转发上下文中的哪个特定的转发上 下文转发所述特定分组并将所述特定分组移动到所述多个背靠背虚拟接口对中与所述特定转发上下文相对应的第二虚拟接口;并且其中所述装置被配置成将在所述第一接口上接收的分组自动移动到所述多个背靠背虚拟接 口对中的每一个的第二接口 ,并将在所述第二接口上接收的分组自动移动 到所述多个背靠背虚拟接口对中的每一个的第一接口。
12. 如权利要求11所述的装置,其中所述多个转发上下文中的每一个 被配置成当分组基于其转发信息库被确定为将被转发到所述多个转发上下 文中的一个不同的目的地转发上下文时,将与所述不同的目的地转发上下 文相对应的标签附加到该分组上;并且其中所述上下文转发器被配置成响 应于在多个第二虚拟接口之一上接收到分组,基于附加到该分组的标签来 识别将向所述多个第二虚拟接口中的哪一个移动该分组。
13. 如权利要求11所述的装置,其中所述多个转发上下文中的每一个 被配置成当分组基于其转发信息库被确定为将被转发到所述多个转发上下 文中的一个不同的目的地转发上下文时,将与所述多个转发上下文中的当 前转发上下文相对应的源标签和与所述不同的目的地转发上下文相对应的 目的地标签附加到该分组上;并且其中所述上下文转发器被配置成响应于 在多个第二虚拟接口之一上接收到分组,基于附加到该分组的源标签和目 的地标签来识别将向所述多个第二虚拟接口中的哪一个移动该分组。
14. 如权利要求11所述的装置,其中所述多个不同的转发上下文与不 同的私有网络相关联。
15. 如权利要求11所述的装置,其中所述多个不同的转发上下文的每 一个与不同的虚拟路由器相关联。
16. 如权利要求11所述的装置,其中所述多个不同的转发上下文的每 一个与不同的逻辑路由器相关联。
17. 如权利要求11所述的装置,其中所述多个不同的转发上下文中的 每一个和所述上下文转发器位于分组交换设备的单个线路卡上。
18. 如权利要求11所述的装置,包括与所述多个不同的转发上下文中 的至少一个相关联的第一转发上下文应用处理器,所述第一转发上下文应用处理器被配置成将一个或多个特征应用到由所述多个不同的转发上下文 中的所述至少一个转发上下文的第一虚拟接口接收的分组上。
19. 一种用于在分组交换系统中的转发上下文之间移动分组的方法, 所述分组交换系统包括多个虚拟接口,所述多个虚拟接口包括第一虚拟接 口和第二虚拟接口,所述转发上下文包括与所述第一虚拟接口相关联的第 一转发上下文和与所述第二虚拟接口相关联的第二转发上下文,所述方法 包括对于被所述第一转发上下文确定为将被转发到所述第二转发上下文的 多个分组中的每个特定分组,将该特定分组移动到所述第一虚拟接口;以 及对于被置于所述第一虚拟接口中的每个独特分组,将该独特分组移动 到所述第二虚拟接口 ,所述独特分组被所述第二转发上下文所处理。
20. 如权利要求19所述的方法,其中所述第一和第二转发上下文与不 同的私有网络相关联。
21. 如权利要求19所述的方法,其中所述第一和第二转发上下文与不 同的虚拟路由器相关联。
22. 如权利要求19所述的方法,其中所述第一和第二转发上下文与不 同的逻辑路由器相关联。
23. 如权利要求19所述的方法,包括对于被接收到所述第二虚拟接 口中的每个所述被移动的分组,在所述第二转发上下文内确定将向哪里转 发所述分组并转发所述分组。
24. —种用于在分组交换系统中的转发上下文之间移动分组的方法, 所述分组交换系统包括多个虚拟接口 ,所述多个虚拟接口包括第一虚拟接 口和第二虚拟接口,所述转发上下文包括与所述第一虚拟接口相关联的第 一转发上下文和与所述第二虚拟接口相关联的第二转发上下文,所述方法 包括对于被所述第一转发上下文确定为将被转发到所述第二转发上下文的 多个分组中的每个特定分组,将该特定分组移动到所述第一虚拟接口,其 中一个或多个第一接口特征在所述第一虚拟接口处被应用到所述特定分组;以及对于被置于所述第一虚拟接口中且未被所述第一接口特征的应用丢弃 的每个独特分组,将该独特分组移动到所述第二虚拟接口,其中所述独特 分组被所述第二转发上下文所处理。
25. 如权利要求24所述的方法,包括对于被接收到所述第二虚拟接口中的每个被移动的分组,将一个或多个第二特征应用到该被移动的分 组。
26. 如权利要求25所述的方法,包括对于被接收到所述第二虚拟接 口中的、未被所述第二特征的应用丢弃的每个所述被移动的分组,在所述 第二转发上下文内确定将向哪里转发所述分组并转发所述分组。
27. 如权利要求24所述的方法,包括对于被接收到所述第二虚拟接 口中的每个所述被移动的分组,在所述第二转发上下文内确定将向哪里转 发所述分组并转发所述分组。
28. —种设备,包括第一转发上下文,其被配置成基于第一转发信息库来识别用于分组的转发信息;第二转发上下文,其被配置成基于第二转发信息库来识别用于分组的 转发信息;第一虚拟接口,其被配置成接收分组,所述第一虚拟接口与所述第一 转发上下文相关联;第二虚拟接口,其被配置成发送分组,所述第二虚拟接口与所述第二 转发上下文相关联;以及用于将由所述第一虚拟接口接收到但在所述第一虚拟接口处未被丢弃 的所有分组自动移动到所述第二虚拟接口中的装置。
29. 如权利要求28所述的设备,包括用于将特征应用到由所述第一虚 拟接口接收的所述分组上的装置。
30. 如权利要求29所述的设备,包括用于将特征应用到由所述第二虚 拟接口接收的所述分组上的装置。
全文摘要
在通信和计算系统特别是路由器、分组交换系统和其他设备中,分组是通过虚拟接口(215,216,235,236)在转发上下文(210,230)(例如,虚拟路由器、逻辑路由器和/或私有网络)之间传送的。虚拟接口(215,216,235,236)指接口基础架构(例如,缓冲器、存储位置、其他数据结构),但不连接到诸如物理接口(217,218,237,238)之类的外部线缆或其他通信机制。通过将置于与第一转发上下文(210)相关联的第一虚拟接口(215)中的分组自动移动到与第二转发上下文(230)相关联的第二虚拟接口(236),分组在转发上下文(210,230)之间移动(假设由于应用到分组上的特征,分组在第一虚拟接口处未被丢弃)。
文档编号H04L12/28GK101473598SQ200780022504
公开日2009年7月1日 申请日期2007年6月4日 优先权日2006年6月16日
发明者华伦·斯考特·温纳儿, 多伦·奥兹, 尼尔·本-德瓦拉, 萨伦尔·奥舒勒尔 申请人:思科技术公司