CN111064763B - 一种用于转发分组的方法及网络设备 - Google Patents

一种用于转发分组的方法及网络设备 Download PDF

Info

Publication number
CN111064763B
CN111064763B CN201910569204.XA CN201910569204A CN111064763B CN 111064763 B CN111064763 B CN 111064763B CN 201910569204 A CN201910569204 A CN 201910569204A CN 111064763 B CN111064763 B CN 111064763B
Authority
CN
China
Prior art keywords
multicast
packet
egress
cache
network devices
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910569204.XA
Other languages
English (en)
Other versions
CN111064763A (zh
Inventor
S·K·古德·加德拉
S·科普拉
B·辛加拉延
S·L·科穆拉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Juniper Networks Inc
Original Assignee
Juniper Networks Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Juniper Networks Inc filed Critical Juniper Networks Inc
Publication of CN111064763A publication Critical patent/CN111064763A/zh
Application granted granted Critical
Publication of CN111064763B publication Critical patent/CN111064763B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/16Multipoint routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/80Actions related to the user profile or the type of traffic
    • H04L47/806Broadcast or multicast traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/201Multicast operation; Broadcast operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/611Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for multicast or broadcast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/34Source routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本公开的实施例涉及利用高速缓存的优化的多播转发。这些技术描述了使用网络设备转发平面中的多级高速缓存来转发多播业务,其中该转发平面用于确定用于在其上转发多播业务的网络设备的一组输出接口。例如,多级高速缓存被配置为存储多播分组的多播标识符和与多播标识符相关联的多播转发信息,诸如多播分组要被发送到其以转发到一组、一个或多个出口网络设备的网络设备的一个或多个出口分组处理器的标识、和/或朝向该组一个或多个出口网络设备中的每个出口网络设备的网络设备的输出接口。多级高速缓存还被配置为存储将要用转发到该组一个或多个出口网络设备的输出多播分组进行封装的相应多播标识符。

Description

一种用于转发分组的方法及网络设备
相关申请的交叉引用
本申请要求于2018年10月16日提交的美国申请No.16/162,323 的权益,其全部内容通过引用并入本文。
技术领域
本公开涉及计算机网络,并且更具体地涉及在计算机网络内转发分组。
背景技术
计算机网络是可以交换数据和共享资源的互连计算设备的集合。在诸如以太网等基于分组的网络中,计算设备通过将数据划分为被称为分组的可变长度块来传送数据,这些可变长度块被分别通过网络从源设备路由到目的地设备。目的地设备从分组中提取数据并且将数据组合成其原始形式。
某些设备(称为路由器)保持表示网络的拓扑的路由信息。路由器交换路由信息,以便保持通过网络可用的路由的准确表示。“路由”通常可以定义为网络上两个位置之间的路径。在接收到输入数据分组时,路由器检查分组内的信息(通常称为“密钥”)以根据路由信息选择适当的下一跳,分组要向该下一跳转发。
路由器可以包括通过内部交换结构互连的一个或多个分组处理器。分组处理器经由接口卡与其他外部设备接收和发送数据。交换结构提供用于在分组处理器之间在路由器内转发数据以便通过网络进行最终传输的内部互连机制。
发明内容
通常,本公开描述了用于使用网络设备转发平面中的多级高速缓存来转发多播业务的技术,其中该转发平面用于确定用于在其上转发多播业务的网络设备的一组输出接口。在一些示例中,网络设备包括多个分组处理器,其中网络设备的每个分组处理器包括被配置为存储多播转发信息以改进多播转发的多级高速缓存。在一些示例中,网络的多个网络设备(例如,路由器)可以实现多播转发技术,例如,位索引显式复制(BIER),其中接收器的多播组成员资格状态被保持在分组中而不是在每个多播网络设备的控制平面中。在该示例网络中,多播域(例如,BIER域)的每个出口网络设备与位转发索引相关联,该位转发索引被表示为利用多播分组封装的多播标识符(例如,BIER 报头)的位串中的位。
当多播域的入口网络设备接收到多播分组时,入口网络设备用多播标识符封装多播分组,该多播标识符指定将要接收多播分组的一组、一个或多个出口网络设备。在多播域的每个中间网络设备处,中间网络设备检查多播标识符的位串,确定多播转发信息,并且将多播分组输出到由多播标识符指定的相应出口网络设备。
在一些示例中,中间网络设备(和网络的其他网络设备)可以包括入口分组处理器(本文中另外称为“源分组处理器”),入口分组处理器通过内部交换结构将输入数据转发到一个或多个出口分组处理器(例如,也称为“目的地分组处理器”)以用于通过网络进行最终传输。
根据本文中描述的技术,网络设备的每个分组处理器可以包括被配置为存储多播转发信息以优化多播转发的多级高速缓存。作为一个示例实现,多级高速缓存从输入多播分组中导出,并且被配置为存储多播分组的多播标识符以及与多播标识符相关联的多播转发信息,诸如多播分组将要被发送到其以便转发到一组、一个或多个出口网络设备的网络设备的一个或多个出口分组处理器的标识(本文中称为“出口分组处理器标识符”)、和/或朝向该组一个或多个出口网络设备中的每个出口网络设备的网络设备的出口接口。多级高速缓存还被配置为存储将要用转发到该组一个或多个出口网络设备的输出多播分组进行封装的相应多播标识符。
以这种方式,当网络设备接收到用与多级高速缓存中的多播标识符匹配的多播标识符封装的多播分组时,网络设备可以从多级高速缓存中确定多播转发信息,而不执行查找其转发平面数据结构。
结果,本文中描述的技术可以提供一个或多个技术优点。例如,通过配置多级高速缓存以存储多播转发信息,减少了实现多播转发所需要的硬件指令的数目,从而提高了网络设备的性能。另外,本文中描述的技术消除了需要在转发单元之间发送控制消息以跨越转发单元来同步高速缓存,因为分组处理器自动从输入分组导出高速缓存索引。因此,这些技术可能需要较少的处理资源并且改善了网络设备的操作(例如,分组转发吞吐量)。
在一个示例中,一种方法包括通过多播域中的网络设备的多个分组处理器中的分组处理器接收多播分组,多播分组包括指定多播域的一组、一个或多个出口网络设备的多播标识符。该方法还包括由分组处理器响应于确定高速缓存不包括多播标识符而将高速缓存的第一级配置为存储多播标识符作为高速缓存的索引,并且存储以下中的至少一项(1)网络设备的一个或多个出口分组处理器中的对应出口分组处理器标识符,多播标识符指示多播分组将被发送到一个或多个出口分组处理器以用于转发到该组一个或多个出口网络设备,以及(2) 用于向由多播标识符指定的该组一个或多个出口网络设备中的对应出口网络设备输出多播分组的所述网络设备的相应输出接口。该方法还包括由分组处理器将第二级高速缓存配置为存储该组一个或多个出口网络设备中的相应出口网络设备的相应多播标识符。
在另一示例中,一种网络设备包括存储器;以及与存储器通信的多个分组处理器的入口分组处理器,其中入口分组处理器被配置为:接收多播分组,多播分组包括指定多播域的一组、一个或多个出口网络设备的多播标识符;响应于确定入口分组处理器的高速缓存不包括多播标识符而将入口分组处理器的高速缓存的第一级配置为存储多播标识符作为入口分组处理器的高速缓存的索引,并且存储网络设备的一个或多个出口分组处理器中的对应出口分组处理器标识符,多播标识符指示多播分组将被发送到一个或多个出口分组处理器以用于转发给该组一个或多个出口网络设备;以及将入口分组处理器的第二级缓存配置为存储该组一个或多个出口网络设备中的相应出口网络设备的相应多播标识符。
在另一示例中,一种包括多个分组处理器的网络设备的非暂态计算机可读存储介质存储指令,这些指令在被执行时引起网络设备的一个或多个可编程处理器:接收多播分组,多播分组包括指定多播域的一个或多个出口网络设备的多播标识符;响应于确定高速缓存不包括多播标识符而将高速缓存的第一级配置为存储多播标识符作为高速缓存的索引,并且存储以下中的至少一项(1)网络设备的一个或多个出口分组处理器中的对应出口分组处理器标识符,多播分组将被发送到一个或多个出口分组处理器以转发到该组一个或多个出口网络设备,以及(2)用于向由多播标识符指定的该组一个或多个出口网络设备中的对应出口网络设备输出多播分组的网络设备的相应输出接口;以及
将第二级高速缓存配置为存储该组一个或多个出口网络设备中的相应出口网络设备的相应多播标识符。
在附图和以下描述中阐述了本文中描述的技术的一个或多个示例的细节。根据说明书和附图以及权利要求,本文所述技术的其他特征、目的和优点将很清楚。
附图说明
图1是示出根据本公开中描述的技术的一个或多个方面配置的示例网络环境的框图;
图2是进一步详细示出根据本公开中描述的技术的一个或多个方面配置的示例网络环境的框图;
图3是示出根据本公开中描述的技术的一个或多个方面的示例网络设备的框图;
图4是进一步详细示出根据本公开中描述的技术的一个或多个方面的图3的网络设备的单元的框图;
图5是进一步详细示出根据本公开中描述的技术的一个或多个方面的图4的分组处理器的框图;以及
图6是示出根据本公开中描述的技术的一个或多个方面的网络设备的示例操作的流程图。
具体实施方式
图1是示出根据本公开中描述的技术的一个或多个方面配置的示例网络环境2的框图。在图1的示例中,网络环境2可以包括网络设备,例如路由器102A-路由器102F(统称为“路由器102”),网络设备被配置为在计算机网络100内传输用于一个或多个客户网络106A-1客户网络06C(统称为“客户网络(CN)106”)的接收器(图 1中未示出)的多播业务。也就是说,路由器102可以向客户网络106 提供对来自公共网络108(诸如因特网或其他提供商网络)的多播业务的访问。虽然图1虽然关于路由器来描述,但是本文中描述的技术也可以应用于能够路由分组的交换机或其他网络设备。
计算机网络100的示例包括企业网络、分支网络、服务提供商网络、家庭网络、虚拟专用网络(VPN)、多播虚拟专用网络(MVPN)、局域网(LAN)、虚拟LAN(VLAN)等。在一些情况下,计算机网络可以被配置为支持多播业务,诸如因特网协议电视(IPTV)、桌面会议、公司广播、音乐和视频网络广播以及其他形式的多媒体内容。在这些示例中的任何一个中,远程定位的源设备(未示出)和接收器 (也未示出)可以经由计算机网络100共享数据。源设备和接收器可以包括位于单个办公室位置的不同区域中的一个或多个服务器或雇员计算机终端,或者可以包括公司的远程办公室位置。源设备和接收器中的每个可以被包括在远程站点(例如,客户网络106)中,远程站点可以包括专用网络并且可以包括包括多个订户设备(未示出)的局域网(LAN)或广域网(WAN)。订户设备可以包括个人计算机、膝上型计算机、工作站、个人数字助理(PDA)、物联网(IOT)设备、无线设备、网络就绪设备、文件服务器、打印服务器或其他设备。如上所述,客户网络106每个可以被配置为支持多播业务。接收器每个可以请求或订阅来自一个或多个多播组的业务。网络100内的路由器102可以连接到一个或多个源设备和/或一个或多个接收器以提供多播业务的路由。
网络100内的路由器102可以实现多播技术,例如,位索引显式复制(BIER)。在诸如BIER网络等多播网络中,多播域(例如,BIER 域)的出口网络设备的多播组成员资格状态被包括在多播分组中,而不是被保存在BIER网络中的每个多播路由器的控制平面中。例如,特定多播流的出口路由器102D-出口路由器102F(统称为“出口路由器102”)的多播组成员资格状态被保持在多播分组的多播标识符(例如,BIER报头)的位串中。例如,位串包括标识一个或多个出口路由器的一组子串。作为一个示例实现,位串0111可以标识出口路由器102D(0001)、出口路由器102F(0010)和出口路由器102E(0100)。在BIER网络中,只有入口路由器(例如,路由器102A)知道多播域的一个或多个出口路由器(例如,路由器102D-102F)。
如图1的示例中所示并且如下面在图2中进一步描述的,入口路由器102A可以从源设备(未示出)接收多播分组,并且可以利用多播标识符(例如,0111)来封装多播分组,多播标识符指定将要接收多播分组的多播域的一组、一个或多个出口路由器(例如,路由器102D-102F)。用多播标识符封装的多播分组在本文中称为“封装的多播分组”。
中间路由器102B-102C可以接收封装的多播分组,基于多播标识符处理多播分组,并且可以向由多播标识符指定的该组一个或多个出口路由器输出多播分组。例如,中间路由器可以移除用输入的多播分组封装的多播标识符,并且用输出的多播分组来封装相应多播标识符,该输出的多播分组指定多播域的该组一个或多个出口网络设备中的相应出口网络设备。
出口路由器102D-出口路由器102F每个可以接收用指定其自身的相应多播标识符封装的多播分组,并且将多播分组转发到相应的多播接收器。BIER的其他示例在Wijnands,IJ的2017年11月的互联网工程任务组的征求意见(RFC)8279的“Multicast Using BitIndex Explicit Replication(BIER)”中有描述,其全部内容通过引用并入本文。
在一些示例中,一个或多个路由器102可以实现分布式转发引擎架构,其中路由器包括由内部交换结构互连的分组处理器。如关于图 3进一步描述的,分组处理器经由接口卡与其他外部设备接收和发送数据。交换结构提供内部互连机制以用于在分组处理器之间在路由器内转发数据以便通过网络(例如,网络100)进行最终传输。例如,由路由器或交换设备接收的网络业务从入口分组处理器经由交换结构行进到出口分组处理器,并且由出口分组处理器通过网络传输。
通常,每个中间路由器通过检查多播标识符的每个位来处理输入的封装的多播分组,并且对于每个位,执行指令链,指令链包括将多播分组递送到控制平面或者添加封装和用于等价多路径(ECMP)链路选举的散列计算。作为一个示例,中间路由器执行其转发平面数据结构(例如,位索引转发表(BIFT))的查找以确定用于通过网络 100输出多播分组的相应多播转发信息。例如,中间路由器执行转发平面数据结构的查找以确定相应相邻路由器和相应封装信息(例如,输出位掩码),这些封装信息将要用相应相邻路由器的输出多播分组进行封装。
中间路由器通常针对由中间路由器接收的每个多播分组处理上述分组。例如,中间路由器通常执行逻辑AND操作以确定多播转发信息,并且执行另一逻辑AND操作以清除已经处理的每个位。然而,随着位串长度增加,执行如上所述的分组处理的硬件指令的数目增加,从而导致过多的开销。在网络设备实现具有入口分组处理器和一个或多个出口分组处理器的分布式转发架构的示例中,硬件上的开销进一步增加。
根据本文中描述的技术,网络设备包括多级高速缓存,多级高速缓存被配置为存储多播转发信息以优化多播转发。在图1的示例中,路由器102可以分别包括多级高速缓存104A-104F(统称为“高速缓存104”),每个多级高速缓存存储由转发平面数据结构(例如,BIFT) 的先前查找产生的多播转发信息。
例如,当路由器(例如,路由器102B)接收到用指定一组、一个或多个出口路由器(例如,路由器102D-102F)的多播标识符封装的多播分组时,路由器102B可以执行多级高速缓存104B的查找以确定多级高速缓存104B是否包括多播标识符。如果多级高速缓存 104B包括输入的多播分组的多播标识符(例如,用多播分组封装的多播标识符与存储在多级高速缓存104B中的多播标识符相匹配),则路由器102B可以确定与多级高速缓存104B中包括的多播标识符相关联的多播转发信息而不执行其转发平面数据结构(例如,BIFT) 的查找以确定多播转发信息。如果高速缓存104B不包括输入的多播分组的多播标识符,则路由器102B可以配置多级高速缓存104B以存储多播标识符作为多级高速缓存104B的索引并且存储由当前多播分组的转发平面数据结构的查找产生的多播转发信息,使得当路由器 102B接收到具有与多级高速缓存104B中包括的多播标识符相匹配的多播标识符的后续多播分组时,路由器102B可以从多级高速缓存 104B确定多播转发信息而不执行转发平面数据结构的查找。
结果,本文中描述的技术可以提供一个或多个技术优点。例如,通过将高速缓存配置为存储多播转发信息,减少了实现多播转发所需要的硬件指令的数目,从而提高了网络设备的性能。另外,本文中描述的技术消除了需要在转发单元之间发送控制消息以跨越转发单元来同步高速缓存,因为分组处理器自动从输入分组导出高速缓存索引。因此,这些技术可能需要较少的处理资源并且改善了网络设备的操作(例如,分组转发吞吐量)。
图2是进一步详细示出根据本公开中描述的技术的一个或多个方面配置的图1的示例网络环境2的框图。在图2的示例中,每个路由器102可以被分配位串的唯一比特位置。例如,入口路由器102A可以被分配比特位置4(例如,1000),出口路由器102E被分配比特位置3(例如,0100),出口路由器102F被分配比特位置2(例如, 0010),并且出口路由器102D可以被分配比特位置1(例如,0001)。
每个比特位置被映射到相应的位转发路由器前缀(BFR前缀),即本地可到达地址。每个路由器102可以在BIER域内向彼此泛洪比特位置到BFR前缀映射。例如,每个路由器102可以使用边界网关协议或内部网关协议(IGP)(诸如中间系统到中间系统(IS-IS)协议或开放最短路径优先(OSPF)协议)来通告比特位置到BFR前缀映射和位串长度。
每个路由器102可以在成对的路由器102之间建立邻接,并且为给定的一组路由器102确定一个或多个最佳路径。例如,每个路由器 102可以基于IGP(例如,OSPF)用于单播路由的拓扑来配置邻接和最佳路径。
基于所通告的比特位置到BFR前缀映射,每个路由器102可以生成包括用于到达出口路由器102D-102F的多播转发信息的转发平面数据结构/表(例如,BIFT)。作为一个示例,转发平面数据结构包括出口路由器102的标识符(例如,BFR-ID)、将要用输出的多播分组进行封装的输出位掩码(例如,基于相应的相邻路由器可到达的出口路由器的比特位置而生成的位掩码,这些位掩码被在逻辑上“或”在一起)和相邻路由器信息。在图2的示例中,路由器102B可以包括转发平面数据结构,该转发平面数据结构的用于路由器102D的 BFR-ID的第一条目(例如,1)可以由相邻路由器102C使用输出位掩码0011来到达。路由器102B的转发平面数据结构还可以包括可以由相邻路由器102C使用输出位掩码0011来到达的路由器102F的 BFR-ID的第二条目(例如,2)。路由器102B的转发平面数据结构还可以包括可以由相邻路由器102E使用输出位掩码0100来到达的路由器102E的BFR-ID的第三条目(例如,3)。路由器102B的转发平面数据结构还可以包括可以由路由器102A使用输出位掩码1000 来到达的路由器102A的BFR-ID的第四条目(例如,4)。
根据本文中描述的技术,每个路由器102可以包括被配置为存储多播转发信息以优化多播转发的高速缓存。在图2的示例中,每个路由器102可以分别包括高速缓存104A-104F(统称为“高速缓存104”),每个高速缓存存储由转发平面数据结构(例如,BIFT)的先前查找产生的多播转发信息。作为一个示例实现,每个高速缓存104可以被配置为存储多播分组的多播标识符作为高速缓存的索引,存储多播分组将要被发送到其以转发到一个或多个出口路由器102D-102F的相应出口分组处理器的标识信息(“出口分组处理器标识符”),和/或存储用于向由多播标识符指定的该组一个或多个出口路由器中的每个出口路由器输出多播分组的路由器的相应输出接口。每个高速缓存 104还可以包括要用输出的多播分组进行封装的相应多播标识符(例如,输出位掩码)。如下面进一步描述的,多播网络中的每个流可以用<BIER位串,熵>元组来唯一地标识/索引。
在操作中,入口路由器102A可以从源网络设备(未示出)接收目的地为经由出口路由器102D-102F可到达的多播接收器的多播分组。入口路由器102A可以利用多播标识符(例如,BIER报头的位串) 来封装多播分组,该多播标识符包括指定要接收多播分组的多播域的一组、一个或多个出口路由器102的位串。如图2的示例中所示,入口路由器102A可以利用多播标识符0111封装多播分组以到达出口路由器102D-102F,并且将封装的多播分组转发到相邻路由器102B。
响应于从入口路由器102A接收到封装的多播分组,路由器102B 可以执行高速缓存104B的查找以确定高速缓存104B是否包括多播标识符0111。例如,路由器102B可以执行高速缓存104B的查找并且确定输入的多播分组的多播标识符0111与缓存104B中包括的多播标识符相匹配。如果高速缓存104B包括多播标识符0111,则路由器 102B可以从高速缓存104B确定与多播标识符0111相关联的多播转发信息,而不执行转发平面数据结构(例如,BIFT)的查找。也就是说,路由器102B可以从高速缓存104B确定出口分组处理器标识符,输入的多播分组将要被发送到该出口分组处理器以转发到出口路由器102D-102F、和/或朝向由多播标识符指定的每个出口路由器 102D-102F的路由器102B的相应输出接口。路由器102B还可以从高速缓存104B确定将要用输出到出口路由器102D-102F的输出多播分组进行封装的相应多播标识符(例如,输出位掩码)。
如果输入的多播分组的多播标识符0111与高速缓存104B的多播标识符不匹配(或者不存在于高速缓存104B中),则路由器102B 可以将高速缓存104B配置为存储多播标识符0111作为高速缓存 104B的索引,并且存储当前多播分组的从转发平面数据结构的查找确定的多播转发信息。例如,路由器102B可以执行其转发平面数据结构的查找以确定当前多播分组将要被发送到其以转发到出口路由器102D-102F的出口分组处理器标识符、和/或朝向由多播标识符指定的每个出口路由器102D-102F的路由器102B的相应输出接口。作为一个示例,路由器102B可以在输入多播分组的多播标识符0111与转发平面数据结构的每个输出位掩码之间执行逻辑AND操作。响应于执行逻辑AND操作,路由器102B可以确定要将分别具有多播标识符0011和0100的相应多播分组发送到相邻路由器102C和102E。
路由器102B还可以执行下一跳数据库的查找以确定多播分组将要被发送到其以转发到出口路由器102D-102F的路由器102B的相应出口分组处理器以及用于将多播分组输出到出口路由器102D-102F 的路由器102B的相应输出接口。作为响应,路由器102B可以将出口分组处理器标识符、路由器102B的相应输出接口、以及将要用输出多播分组进行封装的相应的多播标识符(例如,输出位掩码)存储在高速缓存104B中。以这种方式,当路由器102B接收到包括多播标识符0111的后续多播分组时,路由器102B可以执行高速缓存104B的查找以确定多播转发信息,而不执行转发平面数据结构的查找。
响应于确定多播转发信息,路由器102B可以将多播分组输出到相应的出口路由器。例如,路由器102B可以封装相邻路由器102C 的输出多播分组的多播标识符0011,并且封装相邻路由器102E的输出多播分组的多播标识符0100。当出口路由器102E接收到具有多播标识符0100的多播分组时,出口路由器102E将其自身标识为多播分组的出口路由器,并且将多播分组转发到连接的多播接收器。中间路由器102C可以从路由器102B接收具有多播标识符0011的多播分组,以与路由器102B类似的方式处理输入的多播分组,并且将具有多播标识符0001和0010的输出多播分组输出到相邻路由器102D和102F。
当出口路由器102F接收到具有多播标识符0010的多播分组时,出口路由器102F将其自身标识为多播分组的出口路由器,并且将多播分组转发到连接的多播接收器。类似地,当出口路由器102D接收到具有多播标识符0001的多播分组时,出口路由器102D将其自身标识为多播分组的出口路由器,并且将多播分组转发到连接的多播接收器。
图3是示出根据本公开中描述的技术的一个或多个方面配置的示例网络设备300的框图。例如,网络设备300可以表示图1-2中的任何路由器102。
在该示例中,网络设备300包括控制单元302,控制单元302为网络设备300提供控制平面功能。控制单元302可以分布在多个实体之间,诸如一个或多个路由单元和可插入网络设备300的一个或多个服务卡。在这种情况下,网络设备300因此可以具有多个控制平面。
控制单元302可以包括路由单元304,路由单元304提供控制平面功能,以路由表的形式存储网络拓扑,执行路由协议以与对等路由设备通信,以及保持和更新路由表。路由单元304还提供用于实现网络设备300的用户访问和配置的接口。
网络设备300还包括多个转发单元(例如,转发单元340)和交换结构328,转发单元和交换结构一起提供转发平面以转发和以其他方式处理订户业务。
控制单元302通过内部通信链路330连接到每个转发单元340。例如,内部通信链路330可以包括100Mbps或1Gbps以太网连接。路由单元304可以执行守护进程(未示出)(例如,可以运行网络管理软件的用户级进程)以执行路由协议以与对等路由设备通信,执行从管理员接收的配置命令,保持和更新一个或多个路由表,管理订户流程处理,和/或创建一个或多个转发平面数据结构342(例如,转发表)用于安装到转发单元340,以及其他功能。
控制单元302可以包括一个或多个处理器(图3中未示出),这些处理器执行软件指令,诸如用于定义软件或计算机程序的软件指令,软件指令存储到计算机可读存储介质(同样,在图3中未示出),诸如非暂态计算机可读介质,包括存储设备(例如,磁盘驱动器或光盘驱动器)和/或存储器,诸如随机存取存储器(RAM)(包括各种形式的动态RAM(DRAM)(例如,DDR2SDRAM)或静态RAM (SRAM))、闪存、可以用于以指令或数据结构的形式携带或存储期望程序代码和程序数据并且可以由处理器访问的另一种形式的固定或可移动存储介质、或者存储用于引起一个或多个处理器执行本文中描述的技术的指令的任何其他类型的易失性或非易失性存储器。替代地或另外地,控制单元302可以包括用于执行本文中描述的技术的专用硬件,诸如一个或多个集成电路、一个或多个专用集成电路 (ASIC)、一个或多个专用特殊处理器(ASSP)、一个或多个现场可编程门阵列(FPGA)、或专用硬件的前述示例中的一个或多个的任何组合。
转发单元340经由接口卡322(“IFC 322”)的接口来接收和发送数据分组,每个接口卡322与相应转发单元340相关联。每个转发单元340及其相关联的IFC 322可以驻留在用于网络设备300的单独线卡(未示出)上。示例线卡包括柔性可编程集成电路(PIC)集中器(FPC)、密集端口集中器(DPC)和模块化端口集中器(MPC)。每个IFC 322可以包括用于第二层(L2)技术的各种组合的接口,包括以太网、千兆以太网(GigE)和同步光网络(SONET)接口。在各个方面,每个转发单元340可以包括更多或更少的IFC。交换结构 328提供高速互连以将输入数据分组转发到所选择的转发单元340以通过网络输出。交换结构328可以包括多个结构链路(未示出)。
在一些示例中,交换结构328可以是分布式多级交换结构架构,其中网络分组遍历位于路由器的分布式转发单元中的交换结构的多个级以从交换结构的入口点行进到交换结构的出口点。作为一个示例,交换结构328可以实现为单个多级克洛斯(Clos)交换结构,其跨交换结构的各级中继通信。典型的多级Clos交换结构具有互连以形成多个级的多个开关。在典型的布置中,交换结构包括入口(或“第一”)级、一个或多个中间级和出口(或“最终”)级,每个级具有一个或多个开关(例如,交叉开关——通常更简单地称为“横杆”)。此外,交换结构可以被实现为使得开关被布置为多个并行结构平面,每个并行结构平面通过多个级提供从入口端口到出口端口的独立转发,其中一个或多个级可以被视为备用结构平面。换言之,每个并行结构平面可以被视为多级Clos交换结构的独立部分,其中每个平面提供交换冗余。
当分组遍历网络设备300的内部架构时,转发单元340通过在各个内部分组处理路径上对每个分组执行一系列操作来处理分组。例如,可以通过相应入口接口、入口转发单元(例如,转发单元340A)、出口转发单元(例如,转发单元340N)、出口接口或分组所指向的网络设备300的其他单元(诸如一个或更多服务卡)中的任何一个对每个分组执行操作。分组处理的结果确定分组由转发单元340从其 IFC 322之一上的其输入接口到IFC 322之一上的其输出接口进行转发或以其他方式处理的方式。
为了举例说明,假定转发单元340A和转发单元340N可以分别包括PP 324A-324N。在图3的示例中,转发单元340A可以表示入口转发单元(“源转发单元”),并且转发单元340N可以表示出口转发单元(“目的地转发单元”)。转发单元340A最初可以将输入业务转发到转发单元340N,转发单元340N又将分组转发到网络。
PP 324可以分别包括转发平面数据结构342A-342N(统称为“转发平面数据结构342”),转发平面数据结构可以表示位索引转发表 (BIFT),位索引转发表(BIFT)包括出口路由器102的标识符(例如,BFR-ID)、输出位掩码(例如,基于可以在逻辑“或”在一起的由相应的相邻路由器可到达的出口路由器的比特位置而生成的位掩码)和相邻路由器信息。
PP 324还可以包括下一跳数据库344A-344N(统称为“下一跳数据库344”),下一跳数据库包括关于映射到入口分组处理器将要经由交换结构328转发其多播分组的转发平面数据结构342中标识的相邻路由器的出口分组处理器的信息、以及网络设备300可以通过网络输出多播分组的接口(例如,IFC 322)。
根据本文中描述的技术,分组处理器324可以分别包括高速缓存 346A-346N(统称为“高速缓存346”),每个高速缓存包括由转发平面数据结构的先前查找产生的多播转发信息。假定例如网络设备 300是中间路由器(例如,图2的路由器102B),PP 324A是入口分组处理器,并且PP 324N是出口分组处理器。在该示例中,入口PP 324A可以从其输入接口(例如,转发单元340A的IFC 322之一)接收包括多播标识符(例如,BIER报头的位串)的多播分组。入口PP 324A可以执行高速缓存346A的查找以确定高速缓存346A是否包括来自输入的多播分组的多播标识符。如果高速缓存346A包括输入的多播分组的多播标识符,则入口PP 324A可以确定与高速缓存346A 中包括的多播标识符相关联的多播转发信息(例如,出口分组处理器标识符),而不执行转发平面数据结构342A的查找,并且可以经由交换结构328将多播分组的副本发送到出口PP 324N。
如果高速缓存346A不包括用输入的多播分组封装的多播标识符,则入口PP 324A基于输入的多播分组来配置高速缓存346A,并且存储由转发平面数据结构342A和下一跳数据库344A的查找产生的多播转发信息。例如,入口PP 324A可以配置高速缓存346A以存储来自输入的多播分组的多播标识符作为高速缓存346A的索引。入口PP 324A还执行转发平面数据结构342A的查找以确定相邻路由器和将要用相邻路由器的输出多播分组进行封装的相应的多播标识符 (例如,输出位掩码),并且执行下一跳数据库344A的查找以确定多播分组将要被发送到其以转发到一个或多个出口路由器的出口分组处理器。由转发平面数据结构342A和下一跳数据库344A的查找产生的信息存储在高速缓存346A中。
响应于确定多播转发信息,入口PP 324A可以将多播分组的副本转发到相应出口分组处理器,例如出口PP 324N。当出口PP 324N从入口PP 324A接收到多播分组的副本时,出口PP 324N可以执行高速缓存346N的查找以确定高速缓存346N是否包括来自从入口PP324A 接收的多播分组的多播标识符。如果高速缓存346N包括输入多播分组的多播标识符,则出口PP 324N可以确定与高速缓存346N中包括的多播标识符相关联的多播转发信息(例如,输出接口和输出位掩码),而不执行转发平面数据结构342N的查找,并且通过相应的输出接口(例如,IFC 322)朝向在多播标识符中指定的一组、一个或多个出口路由器中的出口路由器发送用相应输出位掩码封装的输出多播分组。
如果高速缓存346N不包括多播标识符,则出口PP 324N配置高速缓存346N以存储由转发平面数据结构342N和下一跳数据库344N 的查找产生的多播转发信息。例如,出口PP324N可以将高速缓存 346N配置为存储来自输入多播分组的多播标识符作为高速缓存346N的索引。出口PP 324N还执行转发平面数据结构342N的查找以确定相邻路由器和输出位掩码以封装相邻路由器的输出多播分组,并且执行下一跳数据库344N的查找以确定网络设备300的输出接口(例如, IFC 322)以将多播分组输出到由多播标识符指定的一个或多个出口路由器。由转发平面数据结构342N和下一跳数据库344N的查找产生的信息存储在高速缓存346N中。
以这种方式,当入口PP 324A接收到包括高速缓存346A中包括的多播标识符的后续多播分组时,入口PP 324A可以从高速缓存346A 确定出口分组处理器标识符以将多播分组的副本转发到出口PP 324B 而不执行转发平面数据结构342A的查找。类似地,当出口PP324N 接收到包括高速缓存346N中包括的多播标识符的后续多播分组时,出口PP 324N可以从高速缓存346N确定输出位掩码和用于输出用相邻路由器的输出位掩码封装的多播分组的网络设备300的输出接口。
图4是更详细地示出图3的网络设备300的单元的框图。转发单元430A-430N(统称为“转发单元430”)中的任何一个可以用作源转发单元和/或目的地转发单元。虽然图4仅详细示出了转发单元 430A,但是网络设备300的每个转发单元430包括执行基本相似功能的类似模块。
在该示例中,路由单元404提供控制平面402操作环境以用于执行在用户空间406中执行的各种用户级守护进程412。守护进程412 是用户级进程,其可以运行网络管理软件,执行路由协议到与对等路由设备通信,执行从管理员接收的配置命令,保持和更新一个或多个路由表,管理订户流程处理,和/或创建一个或多个转发表以便安装到转发单元430,以及其他功能。在该示例中,守护进程412包括命令行接口守护进程414(“CLI 414”)、路由协议守护进程416(“RPD 416”)和简单网络管理协议守护进程418(“SNMP 418”)。在这方面,控制平面402可以为网络设备提供路由平面、服务平面和管理平面功能。路由单元404的各种实例可以包括图4中未示出的附加守护进程412,该附加守护进程412执行其他控制、管理或服务平面功能和/或驱动和以其他方式管理网络设备的转发平面功能。
守护进程412在内核420上操作并且与内核420交互,内核420 为用户级进程提供运行时操作环境。内核420可以包括例如UNIX操作系统衍生物,诸如Linux或伯克利软件分销(BSD)。内核420提供守护程序412可以用来与底层系统交互的库和驱动程序。内核420 的转发单元接口422(“FU接口422”)包括内核级库,守护进程412 和其他用户级进程或用户级库可以通过该内核级库与转发单元430A 的编程接口432交互。FU接口422可以包括例如用于通过专用网络链路与转发单元430通信的套接字库。
路由单元404的硬件环境424包括微处理器426,微处理器426 执行从存储器(在图4中未示出)加载到主存储器(图4中也未示出) 中的程序指令以便执行路由单元404的软件栈,包括内核420和用户空间406二者。微处理器426可以包括一个或多个通用或专用处理器,诸如数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或任何其他等效逻辑器件。因此,如本文中使用的术语“处理器”或“控制器”可以指代前述结构中的任何一个或多个或者可操作以执行本文中描述的技术的任何其他结构。
RPD 416执行一个或多个内部和/或外部路由协议以与其他网络设备交换路由信息并且将接收的路由信息存储在路由信息库407 (“RIB 407”)中。例如,RPD 416可以执行协议,诸如一个或多个边界网关协议(BGP),包括内部BGP(iBGP)、外部BGP(eBGP)、多协议BGP(MP-BGP)、标签分发协议(LDP)、以及具有流量工程扩展的资源预留协议(RSVP-TE)。另外地或替代地,RPD 416可以执行用户数据报协议(UDP)以发送和接收各种系统资源(诸如物理接口)的数据。虽然关于UDP进行描述,但是RPD 416可以执行任何协议来交换系统资源的数据。在图4的示例中,根据本文中描述的技术,RPD 416还可以执行协议409,包括位索引显式复制(BIER) 410和开放最短路径优先(OSPF)协议411。
RIB 407可以包括定义网络的拓扑的信息,包括一个或多个路由表和/或链路状态数据库。RPD 416解析由RIB 407中的路由信息定义的拓扑以选择或确定通过网络的一个或多个活动路线并且然后将这些路线安装到转发信息库(FIB)408。通常,RPD 416以基数或其他查找树形式生成FIB 408以将分组信息(例如,具有目的地信息和/ 或标签栈的报头信息)映射到下一跳并且最终映射到与相应转发单元 430相关联的接口卡的接口端口。内核420可以使路由单元404的FIB 408与转发单元430A的转发信息同步。
命令行界面守护进程414(“CLI 414”)提供外壳,管理员或其他管理实体可以通过该外壳使用基于文本的命令来修改网络设备的配置。SNMP 418包括SNMP代理,SNMP代理从管理实体接收SNMP 命令以设置和检索网络设备300的配置和管理信息。例如,使用CLI 414和SNMP 418,管理实体可以启用/禁用和配置服务,管理分组流的分类和服务类别,安装路线,启用/禁用和配置速率限制器,为移动网络配置业务承载,以及配置接口。在该示例中,CLI 414、RPD 416 和SNMP 418经由FU接口422将转发平面403配置为实现所配置的服务,和/或添加/修改/删除路线。FU接口422允许守护进程412驱动转发单元430的安装和配置。具体地,FU接口422包括应用程序编程接口(API),守护进程412可以通过该应用程序编程接口将分组流映射到结构接口以进行转发。
每个转发单元430实现转发平面403(也称为“数据平面”)功能以处理从其上接收分组的入口接口到向其发送分组的出口接口的分组处理。转发平面403确定通过网络设备300的数据分组转发,应用服务,速率限制分组流,过滤分组,以及使用由控制平面402安装到转发平面403的服务对象和查找数据来处理分组。
转发单元430A可以包括分组处理器435A。分组处理器435A可以包括例如基于专用集成电路的分组处理器(“ASIC”)或根据本文中描述的技术执行优化的多播分组转发的任何分组转发引擎。分组处理器435A包括具有密钥引擎442A的可编程专用集成电路,密钥引擎442A执行微代码(或“微指令”)以控制和应用分组处理器435A 的固定硬件单元以处理分组“密钥”。分组密钥包括分组字段和确定分组流的其他参数。
分组处理器435A的转发路径448A包括可编程的可执行微代码和固定硬件单元,确定分组处理动作和由密钥引擎442A执行的其他操作。转发单元430A可以将转发路径448A的可执行指令存储在计算机可读存储介质中,诸如静态随机存取存储器(SRAM)。虽然被示出为在分组处理器435A内,但是在一些示例中,转发路径448A 的可执行指令可以存储在转发单元430A中的分组处理器435A外部的存储器中。
如下面参考图5进一步描述的,转发路径448A可以包括转发平面数据结构454A,转发平面数据结构454A包括表或其他数据结构,诸如位索引转发表,包括出口路由器的标识符(例如,基于可以在逻辑“或”在一起的由相应的相邻路由器可到达的出口路由器的比特位置而生成的位掩码)和相邻路由器信息。转发路径448A还可以包括下一跳数据库456A,下一跳数据库456A包括表或其他数据结构,包括多播分组将要被发送到其以转发到一个或多个出口路由器的出口分组处理器标识符(例如,转发单元430N的标识符)、和/或用于将多播分组输出到由多播标识符指定的一个或多个出口网络设备的输出接口。
转发单元微处理器434(“FU微处理器434”)管理分组处理器 435A并且执行编程接口432以提供用于/到路由单元404的接口。例如,编程接口432可以包括一个或多个用户或内核级库、程序、工具箱、应用程序编程接口(API),并且可以使用套接字经由内部通信链路(例如,图3中的通信链路330)将控制和数据消息传送到转发单元435。FU微处理器434可以执行微内核436以为接口提供操作环境。编程接口432从路由单元404接收指示分组转发单元430A配置转发路径448A的消息。
根据本公开的技术,分组处理器435A可以包括存储多播转发信息以优化多播转发的高速缓存446A。例如,假定图4的网络设备300 表示图1-2的路由器102B,并且分组处理器435A用作入口分组处理器并且分组处理器435N用作出口分组处理器。在该示例中,入口分组处理器435A可以接收入站多播分组。入口分组处理器435A的密钥引擎442A可以确定利用入站多播分组封装多播标识符。例如,密钥引擎442A可以被配置为实现BIER协议410并且识别例如用输入的多播分组封装的BIER报头。密钥引擎442A可以确定多播标识符包括BIER报头的位串,该位串标识多播分组所针对的一组、一个或多个出口路由器。例如,多播标识符可以是将图1的路由器102D-102F 标识为多播分组的出口路由器的位串0111。
入口分组处理器435A可以执行高速缓存446A的查找以确定多播标识符是否被包括在高速缓存446A中。如果高速缓存446A包括用输入多播分组封装的多播标识符,则入口分组处理器435A可以确定与高速缓存446A中包括的多播标识符相关联的多播转发信息(例如,转发单元430N的出口分组处理器435N的标识符),而不执行转发平面数据结构454A的查找,并且将多播分组的副本转发到出口分组处理器435A。
如果高速缓存446A不包括输入多播分组的多播标识符,则入口分组处理器435A可以配置高速缓存104B以存储当前多播分组的由转发平面数据结构454A的查找产生的多播转发信息。例如,入口分组处理器435A可以将高速缓存446A配置为存储来自输入多播分组的多播标识符(例如,0111)作为高速缓存446A的索引。入口分组处理器435A还执行转发平面数据结构454A的查找以确定相邻路由器和将要用相邻路由器的输出多播分组封装的输出位掩码,并且执行下一跳数据库456A的查找以确定多播分组将压被发送到其以转发到一个或多个出口路由器的一个或多个出口分组处理器(例如,出口分组处理器435N)。由转发平面数据结构454A和下一跳数据库456A 的查找产生的信息存储在高速缓存446A中。
这样,当入口分组处理器435A接收到具有高速缓存446A中包括的多播标识符(例如,0111)的后续多播分组时,入口分组处理器 435A可以从高速缓存446A确定入口分组处理器435A将要向出口分组处理器435N发送多播分组而不执行转发平面数据结构454A的查找,并且将多播分组的副本转发到转发单元430N的出口分组处理器 435N。
出口分组处理器435N可以包括执行基本类似功能的入口分组处理器435A的类似模块(下面用“N”描述)。响应于从入口分组处理器435A接收到多播分组的副本,出口分组处理器435N的密钥引擎442N可以执行高速缓存446N的查找以确定多播标识符是否被包括在高速缓存446N中。
如果高速缓存446N包括输入多播分组的多播标识符,则出口分组处理器435N可以确定与高速缓存446N中包括的多播标识符相关联的多播转发信息(例如,输出位掩码和输出接口),而不执行转发平面数据结构454N的查找,并且经由网络设备300的输出接口输出多播分组。例如,出口数据分组处理器435N可以从高速缓存446N 确定网络设备300的输出接口以将多播分组输出到由多播标识符指定的出口路由器(例如,路由器102C或102E)。
如果高速缓存446A不包括输入多播分组的多播标识符,则出口分组处理器435N可以将高速缓存446N配置为存储当前多播分组的由转发平面数据结构454N的查找产生的多播转发信息。例如,出口分组处理器435N可以将高速缓存446N配置为存储来自输入多播分组的多播标识符作为高速缓存446N的索引。出口分组处理器435N 还执行转发平面数据结构454N的查找以确定相邻路由器和位掩码以封装相邻路由器的输出多播分组,并且执行下一跳数据库456N的查找以确定用于将多播分组输出到由多播标识符指定的一个或多个出口路由器的网络设备300的输出接口。由上述分组处理产生的信息存储在高速缓存446N中。
以这种方式,当出口分组处理器435N接收到包括与高速缓存 446N中存储的多播标识符相匹配的多播标识符的后续多播分组时,出口分组处理器435N可以从高速缓存446N确定多播转发信息(例如,输出位掩码和输出接口)而不执行转发平面数据结构454N和下一跳数据库456N的查找,并且将多播分组输出到由多播标识符指定的出口网络设备(例如,路由器102C或路由器102E)。
图5是更详细地示出根据本公开中描述的技术的一个或多个方面的图4的分组处理器的框图。为了便于说明,图5关于图1-图2的路由器102B和图4的网络设备300来描述,但是,可以表示图1-图2 的任何路由器102。在图5的示例中,路由器102B可以是将来自入口路由器102A的多播业务转发到相邻路由器102C和102E的中间路由器。
路由器102B可以包括分组处理器435A-435N(统称为“分组处理器435”)。在图5的示例中,分组处理器435A可以被配置为用作入口分组处理器,并且分组处理器435N可以被配置为用作出口分组处理器。入口分组处理器435A可以经由交换结构328将多播分组转发到出口分组处理器435N以通过网络将多播业务转发到出口路由器102C和102E。尽管被示出为仅具有单个出口分组处理器,但路由器可以包括两个或更多个出口分组处理器。
在图5的示例中,分组处理器435可以分别包括转发平面数据结构454A-454N,每个转发平面数据结构454A-454N包括例如多播域的出口路由器的标识符(在图5中示为“BFR-ID”)、将要用输出多播分组进行封装的输出位掩码(例如,逻辑“或”在一起的出口路由器的比特位置)和相邻路由器(在图5中示为“NBR”)。分组处理器 435还可以包括下一跳数据库456A-456N(统称为“下一跳数据库 456”),下一跳数据库包括例如入口分组处理器435A将要转发输入多播分组的副本的出口分组处理器的标识和/或出口分组处理器435N 将要朝向由多播标识符指定的一组出口路由器(例如,出口路由器 102D-102F)向相邻路由器(例如,路由器102C和102E)输出多播分组的出口接口的标识。
根据本文中描述的技术,分组处理器435可以分别包括高速缓存 446A-446N(统称为“高速缓存446”),高速缓存包括多播转发信息。作为一个示例,每个高速缓存446包括第一级,例如,第一级 502A-502N,第一级包括输入多播分组的位串、出口分组处理器标识符(例如,出口分组处理器的位掩码)、以及与位串相关联的一个或多个动作。每个高速缓存446还包括第二级,例如,第二级504A-504N,第二级包括一个或多个最终动作,诸如下一跳路由器的标识和要封装到转发到下一跳路由器的输出多播分组的输出位掩码。
作为一个示例实现,入口分组处理器435A可以接收包括多播标识符0111的第一多播分组。入口分组处理器435A可以执行高速缓存 446A的查找以确定高速缓存446A是否包括与输入的多播分组的多播标识符相匹配的多播标识符。例如,假定高速缓存446A不包括多播标识符0111。在这种情况下,入口分组处理器435A可以存储多播标识符作为高速缓存446A的索引。高速缓存索引是从分组的属性中导出的,从而避免了任何高速缓存索引分配逻辑。入口分组处理器 435A还可以将高速缓存446A配置为存储由转发平面数据结构454A和下一跳数据库456A的查找产生的多播转发信息。例如,入口分组处理器435A可以执行转发平面数据结构454A的查找,并且利用多播标识符(例如,0111)和每个输出位掩码条目执行逻辑AND运算。在该示例中,入口分组处理器435A可以从逻辑AND运算确定要将多播分组输出到相邻路由器102C和102E以到达出口路由器 102D-102F(例如,BFR-ID 1-3)。入口分组处理器435A可以将高速缓存446A配置为将下一跳信息和输出位掩码存储在高速缓存446A 的第二级504A中。在图5的示例中,高速缓存446A的第二级504A 的索引是从预先填充的下一跳数据库(例如,下一跳数据库456A) 导出的。以这种方式,高速缓存446A的第二级504A的索引不依赖于输入的多播分组。
入口分组处理器435A可以执行下一跳数据库456A的查找以确定要将多播分组发送到出口分组处理器435N用于将多播分组转发到分别由相邻路由器102C和102E可到达的出口路由器102D-102F。入口分组处理器435A可以配置高速缓存446A以将出口分组处理器信息存储在高速缓存446A的第二级504A中。在一些示例中,入口分组处理器435A可以将高速缓存446A配置为存储出口分组处理器 435N的位掩码(例如,0010)。
入口分组处理器435A可以复制第一多播分组并且将复制的多播分组转发到出口分组处理器435N。出口分组处理器435N可以接收包括多播标识符0111的第一多播分组。出口分组处理器435N可以执行高速缓存446N的查找,并且确定高速缓存446N不包括与输入的多播分组的多播标识符相匹配的多播标识符。出口分组处理器435N可以存储多播标识符作为高速缓存446N的索引。出口分组处理器435N 还可以将高速缓存446N配置为存储从转发平面数据结构454N和下一跳数据库456N的查找确定的多播转发信息。例如,出口分组处理器435N可以执行转发平面数据结构454N的查找,并且利用多播标识符(例如,0111)和每个输出位掩码条目执行逻辑AND运算。在该示例中,出口分组处理器435N可以从逻辑AND运算确定要将多播分组输出到相邻路由器102C和102E以到达出口路由器102D-102F (例如,BFR-ID 1-3)。出口分组处理器435N可以将高速缓存446N 配置为将下一跳信息和相应输出位掩码存储在高速缓存446N的第二级504N中。在图5的示例中,高速缓存446N的第二级504N的索引是从预先填充的下一跳数据库(例如,下一跳数据库456N)导出的。以这种方式,高速缓存446N的第二级504N的索引不依赖于输入的多播分组。
出口分组处理器435N可以执行下一跳数据库456N的查找以确定将要经由输出接口ge1和ge2输出多播分组以分别到达相邻路由器 102C和102E。出口分组处理器435N可以将高速缓存446N配置为存储关于出口分组处理器324N可以用于将输出多播分组输出到相邻路由器102C和/或102E的出口接口的信息。
假定例如路由器102B接收到包括多播标识符0111的第二多播分组。入口分组处理器435A可以执行高速缓存446A的查找并且确定高速缓存446A包括与用第二多播分组封装的多播标识符相匹配的多播标识符。入口分组处理器435A可以从高速缓存446A的第一级504A 确定入口分组处理器435A要将多播分组的副本发送到出口分组处理器435N(例如,PP掩码0010)以将多播分组转发到路由器102C和 102E。入口分组处理器435A可以复制第二多播分组,并且经由交换结构328将第二多播分组的副本转发到出口分组处理器435N。
响应于从入口分组处理器435A接收到第二多播分组的副本,出口分组处理器435N可以执行高速缓存446N的查找并且确定高速缓存446N包括与第二多播分组的多播标识符相匹配的多播标识符。出口分组处理器435N可以从高速缓存446N的第一级502N确定出口分组处理器435N的动作是将相应的多播分组输出到下一跳路由器102C 和下一跳路由器102E。出口分组处理器435N还可以从高速缓存446N 的第二级504N确定要用输出多播分组封装的输出位掩码。例如,出口分组处理器435N可以确定在将多播分组输出到下一跳路由器102C 时要用0011封装输出多播分组。类似地,出口分组处理器435N可以确定在将多播分组输出到下一跳路由器102E时要用0100封装输出多播分组。
以这种方式,在某些情况下,多播转发可以仅执行高速缓存446 的查找而不执行转发平面数据结构454和下一跳数据库456的查找。结果,实现多播转发所需要的硬件指令的数目减少了,从而提高了网络设备的性能。另外,本文中描述的技术消除了需要在转发单元之间发送控制消息以跨越转发单元来同步高速缓存,因为分组处理器自动从输入分组导出高速缓存索引。
此外,多级高速缓存可以提供一个或多个技术优势。如上所述,存储在高速缓存的第二级中的多播标识符不是从输入分组导出的,而是从下一跳数据库导出的。因此,在多播接收器加入或离开多播组时,仅需要更新第二高速缓存。因此,该技术可能需要较少的处理资源并且改善了网络设备的操作(例如,分组转发吞吐量)。
图6是示出根据本公开中描述的技术的一个或多个方面的网络设备的示例操作的流程图。为了示例的目的,图6的处理将关于图4-5 的分组处理器435来描述。
在图6的示例中,入口分组处理器435A接收多播分组(602),多播分组包括多播标识符。例如,入口分组处理器435A可以从接口卡(例如,图3的IFC 322)的接口接收多播分组,每个接口卡与相应转发单元430A相关联。入口分组处理器435A的密钥引擎442A可以检查输入的多播分组并且确定多播分组包括指定一组、一个或多个出口路由器(例如,路由器102D-102F)的多播标识符(例如,0111)。密钥引擎442A可以将封装的多播分组转发到高速缓存446A以进行分组处理。
入口分组处理器435A可以确定高速缓存446A是否包括多播标识符(604)。例如,入口分组处理器435A可以执行高速缓存446A 的查找以确定多播分组的0111的多播标识符是否与高速缓存446A中包括的多播标识符相匹配。
如果高速缓存446A包括多播标识符(步骤604的“是”分支),则入口分组处理器435A可以从高速缓存446A确定要向其发送多播分组的网络设备的一个或多个出口分组处理器(606)。例如,入口分组处理器435A可以执行高速缓存446A(即,高速缓存446A的第一级502A)的查找以确定标识出口分组处理器435N的出口分组处理器标识符(例如,PP掩码0010),多播分组将要被发送到这些出口分组处理器435N以转发到分别经由下一跳路由器102C和102E可到达的由多播标识符指定的出口路由器102D-102F。
如果高速缓存446A不包括多播标识符(步骤604的“否”分支),则入口分组处理器435A可以配置高速缓存446A以存储由转发平面数据结构的查找产生的多播转发信息(608)。例如,入口分组处理器435A可以将高速缓存446A配置为存储用输入的多播分组封装的多播标识符0111作为高速缓存446A中的索引。入口分组处理器435A 还可以执行转发平面数据结构454A(例如,BIFT)的查找以确定要用输出多播分组封装的下一跳信息和输出位掩码。例如,入口分组处理器435A可以在0111的多播标识符与转发平面数据结构454A的每个输出位掩码条目之间执行逻辑AND运算。作为响应,入口分组处理器435A可以确定多播分组要将多播分组转发到相邻路由器102C 和102E以到达出口路由器102D-102F。入口分组处理器435A可以将上述分组处理的结果存储在高速缓存446A的第二级504A中。
入口分组处理器435A还可以执行下一跳数据库456A的查找以确定多播分组将要被发送到其以转发到由多播标识符指定的一组、一个或多个出口路由器的出口分组处理器。入口分组处理器435A可以将上述分组处理的结果存储在高速缓存446A的第一级502A中。
入口分组处理器435A可以向一个或多个出口分组处理器中的每个转发多播分组的副本,多播分组将要被发送到这些出口分组处理器以转发到由多播标识符指示的一个或多个出口路由器(610)。例如,入口分组处理器435A可以复制输入的多播分组并且经由交换结构 328将多播分组的副本转发到出口分组处理器435N,使得出口分组处理器435N可以分别向相邻路由器102C和102E输出多播分组。
出口分组处理器435N可以接收多播分组的副本(612),并且确定高速缓存446N是否包括多播标识符(614)。例如,出口分组处理器435N可以执行高速缓存446N的查找以确定多播分组的0111的多播标识符是否与高速缓存446N中包括的多播标识符相匹配。
如果高速缓存446N包括多播标识符(步骤614的“是”分支),则出口分组处理器435N可以从高速缓存446N确定用于向由多播标识符指定的每个出口路由器输出多播分组的网络设备的相应输出接口、以及该组一个或多个出口网络设备中的相应出口网络设备的相应多播标识符(616)。例如,出口分组处理器435N可以执行高速缓存 446N(即,高速缓存446N的第一级502N)的查找以确定用于将多播分组分别输出到经由相邻路由器102C和102E可到达的出口路由器 102D-102F的输出接口(例如,ge1或ge2)。出口分组处理器435N 还可以从高速缓存446N的查找中确定将要分别用路由器102C和 102E的输出多播分组封装的输出位掩码0011和0100。
如果高速缓存446N不包括多播标识符(步骤614的“否”分支),则出口分组处理器435N可以配置高速缓存446N以存储由转发平面数据结构的查找产生的多播转发信息(618)。例如,出口分组处理器435N可以将高速缓存446N配置为将用输入的多播分组封装的多播标识符0111存储在高速缓存446N中。出口分组处理器435N还可以执行转发平面数据结构454N(例如,BIFT)的查找以确定要用输出多播分组封装的下一跳信息和输出位掩码。例如,出口分组处理器 435N可以在多播标识符0111与转发平面数据结构454N的每个输出位掩码条目之间执行逻辑AND运算。作为响应,出口分组处理器435N 可以确定要将多播分组转发到相邻路由器102C和102E以到达出口路由器102D-102F。出口分组处理器435N可以将上述分组处理的结果存储在高速缓存446A的第二级504N中。
出口分组处理器435N还可以执行下一跳数据库456N的查找以确定用于将多播分组输出到由多播标识符指定的一组、一个或多个出口路由器的输出接口。出口分组处理器435N可以将上述分组处理的结果存储在高速缓存446N的第一级502N中。
出口分组处理器435N可以将多播分组输出到一个或多个出口分组处理器中的每个(620)。例如,出口分组处理器435N可以输出具有多播标识符0011的多播分组,并且经由接口ge1将封装的多播分组输出到路由器102C。类似地,出口分组处理器435N可以输出具有多播标识符0100的多播分组,并且经由接口ge2将封装的多播分组输出到路由器102E。
本文中描述的技术可以用硬件、软件、固件或其任何组合来实现。被描述为模块、单元或单元的各种特征可以在集成逻辑器件中一起实现,或者作为离散但可互操作的逻辑器件或其他硬件设备单独实现。在一些情况下,电子电路的各种特征可以实现为一个或多个集成电路器件,诸如集成电路芯片或芯片组。
如果用硬件实现,则本公开可以针对诸如处理器或集成电路设备等装置,诸如集成电路芯片或芯片组。替代地或另外地,如果用软件或固件实现,则这些技术可以至少部分由包括指令的计算机可读数据存储介质来实现,这些指令在被执行时引起处理器执行上述方法中的一个或多个。例如,计算机可读数据存储介质可以存储这样的指令以供处理器执行。
计算机可读介质可以形成计算机程序产品的一部分,该计算机程序产品可以包括包装材料。计算机可读介质可以包括计算机数据存储介质,诸如随机存取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、闪存、磁或光数据存储介质等。在一些示例中,制品可以包括一个或多个计算机可读存储介质。
在一些示例中,计算机可读存储介质可以包括非暂态介质。术语“非暂态”可以指示存储介质没有在载波或传播信号中实现。在某些示例中,非暂态存储介质可以存储随时间变化的数据(例如,在RAM 或高速缓存中)。
代码或指令可以是由处理电路执行的软件和/或固件,处理电路包括一个或多个处理器,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、或其他等效的集成或分立逻辑电路。因此,本文中使用的术语“处理器”可以是指任何前述结构或适合于实现本文中描述的技术的任何其他结构。另外,在一些方面,本公开中描述的功能可以在软件模块或硬件模块内提供。
已经描述了各种实施例。这些和其他实施例在以下示例的范围内。

Claims (15)

1.一种用于转发分组的方法,包括:
由多播域中的网络设备的多个分组处理器中的分组处理器处接收多播分组,所述多播分组包括指定所述多播域的一组出口网络设备的多播标识符,所述一组出口网络设备包括一个或多个出口网络设备;
由所述分组处理器并且响应于确定高速缓存不包括所述多播标识符来配置所述高速缓存的第一级,以包括所述多播标识符作为所述高速缓存的索引,和用于向由所述多播标识符指定的所述一组出口网络设备中的一个或多个对应出口网络设备转发所述多播分组的、所述网络设备的一个或多个出口分组处理器的标识符,其中配置所述高速缓存的第一级包括:由所述分组处理器并且基于位索引显式复制BIER转发表BIFT的查找来确定与相应多播标识符相关联的一个或多个对应出口网络设备,以及由所述分组处理器并且基于下一跳数据库的查找来确定与所述一个或多个对应出口网络设备相对应的一个或多个出口分组处理器;
由所述分组处理器将所述高速缓存的第二级配置为存储由所述BIFT和所述下一跳数据库的查找产生的、针对所述对应出口网络设备的下一跳信息和针对所述一个或多个对应出口网络设备的所述相应多播标识符,其中配置所述高速缓存的所述第二级包括从所述网络设备的所述下一跳数据库而不是从所述多播分组得出所述高速缓存的所述第二级的所述相应多播标识符;和
响应于接收到包括指定所述一组出口网络设备的所述多播标识符的后续多播分组,由所述分组处理器执行所述高速缓存的查找而不执行所述BIER转发表和所述下一跳数据库的查找,其中执行所述高速缓存的查找包括以下至少一项:
由作为入口分组处理器操作的所述分组处理器执行所述高速缓存的所述第一级的查找以确定所述后续多播分组的副本将被转发到的所述一个或多个出口分组处理器;和
由作为出口分组处理器操作的所述分组处理器执行所述高速缓存的所述第二级的查找以确定通过其所述后续多播分组的所述副本将被封装的所述相应多播标识符,以便将所述后续多播分组的所述副本转发到所述一个或多个对应出口网络设备。
2.根据权利要求1所述的方法,其中所述分组处理器包括入口分组处理器,并且其中执行对所述高速缓存的所述第一级的所述查找以确定所述后续多播分组的所述副本将被转发到的所述一个或多个出口分组处理器包括:
由所述入口分组处理器并且基于所述高速缓存的所述第一级的所述查找来确定所述一个或多个出口分组处理器的所述标识符,所述后续多播分组的所述副本将被发送到所述一个或多个出口分组处理器以用于转发到所述一个或多个对应出口网络设备;以及
由所述入口分组处理器并且基于所述一个或多个出口分组处理器的所述标识符,将所述后续多播分组的所述副本转发到所述一个或多个出口分组处理器中的每个出口分组处理器。
3.根据权利要求1所述的方法,其中所述分组处理器包括所述多播分组的所述一个或多个出口分组处理器中的出口分组处理器,其中所述方法包括:
由所述出口分组处理器并且从所述网络设备的入口分组处理器接收所述后续多播分组的所述副本,其中所述后续多播分组的所述副本包括用于所述一组出口网络设备的所述多播标识符;
由所述出口分组处理器并且基于所述高速缓存的所述第一级的所述查找来确定所述网络设备的相应输出接口,以向所述一个或多个对应出口网络设备输出所述后续多播分组;
由所述出口分组处理器并且基于所述高速缓存的所述第二级的所述查找来确定所述一个或多个对应出口网络设备的所述相应多播标识符;以及
由所述出口分组处理器并且向所述一个或多个对应出口网络设备中的每个对应出口网络设备转发利用所述一个或多个对应出口网络设备的所述相应多播标识符中的对应多播标识符封装的所述后续多播分组的所述副本。
4.根据权利要求1所述的方法,其中配置所述高速缓存的所述第一级还包括:
由所述分组处理器并且基于所述BIFT的查找来确定与所述多播标识符的位掩码相关联的所述一个或多个出口网络设备,其中所述位掩码的每个位对应于网络中的多个出口网络设备中的不同出口网络设备,其中所述一组出口网络设备是所述多个出口网络设备的子集;
由所述分组处理器并且基于所述下一跳数据库的查找来确定与关联于所述多播标识符的位掩码的所述一组出口网络设备相对应的一个或多个出口分组处理器;以及
由所述分组处理器基于所述BIFT和所述下一跳数据库的所述查找将所述一个或多个出口分组处理器的所述标识符存储到所述高速缓存的所述第一级。
5.根据权利要求1所述的方法,其中配置所述高速缓存的所述第二级还包括:
由所述分组处理器并且基于所述BIFT的查找来确定与所述多播标识符的位掩码相关联的一个或多个输出位掩码;以及
由所述分组处理器将所述一个或多个输出位掩码存储到所述高速缓存的所述第二级。
6.根据权利要求1、4至5中任一项所述的方法,其中所述多播标识符包括位串,所述位串包括一组位,所述一组位包括一个或多个位,每个位表示所述多播域的所述一组出口网络设备中的对应出口网络设备。
7.根据权利要求1、4至5中任一项所述的方法,
其中所述多播标识符包括位索引显式复制BIER报头。
8.一种网络设备,包括:
存储器;以及
多个分组处理器的分组处理器,与所述存储器通信,其中所述分组处理器被配置为:
接收多播分组,所述多播分组包括指定多播域的一组出口网络设备的多播标识符、所述一组出口网络设备包括一个或多个出口网络设备;
响应于确定所述分组处理器的高速缓存不包括所述多播标识符来配置所述高速缓存的第一级,以包括所述多播标识符作为所述高速缓存的索引,和用于向由所述多播标识符指定的所述一组出口网络设备中的一个或多个对应出口网络设备转发所述多播分组的、所述网络设备的一个或多个出口分组处理器的标识符,其中配置所述高速缓存的第一级包括:由所述分组处理器并且基于位索引显式复制BIER转发表BIFT的查找来确定与相应多播标识符相关联的一个或多个对应出口网络设备,以及由所述分组处理器并且基于下一跳数据库的查找来确定与所述一个或多个对应出口网络设备相对应的一个或多个出口分组处理器,
由所述分组处理器将所述高速缓存的第二级配置为存储由所述BIFT和所述下一跳数据库的查找产生的、针对所述一个或多个对应出口网络设备的下一跳信息和针对所述一个或多个对应出口网络设备的所述相应多播标识符,其中配置所述高速缓存的所述第二级包括从所述网络设备的所述下一跳数据库而不是从所述多播分组得出所述高速缓存的所述第二级的所述相应多播标识符;和
响应于接收到包括指定所述一组出口网络设备的所述多播标识符的后续多播分组,执行所述高速缓存的查找而不执行所述BIER转发表和所述下一跳数据库的查找,其中执行所述高速缓存的所述查找包括以下至少一项:
由作为入口分组处理器操作的所述分组处理器执行所述高速缓存的所述第一级的查找以确定所述后续多播分组的副本将被转发到的所述一个或多个出口分组处理器;和
由作为出口分组处理器操作的所述分组处理器执行所述高速缓存的所述第二级的查找以确定通过其所述后续多播分组的所述副本将被封装的所述相应多播标识符,以便将所述后续多播分组的所述副本转发到所述一个或多个对应出口网络设备。
9.根据权利要求8所述的网络设备,其中为了配置所述高速缓存的所述第一级,所述分组处理器还被配置为:
基于所述BIFT的查找来确定与所述多播标识符的位掩码相关联的所述一个或多个出口网络设备,其中所述位掩码的每个位对应于网络中的多个出口网络设备中的不同出口网络设备,其中所述一组出口网络设备是所述多个出口网络设备的子集;
基于所述下一跳数据库的查找来确定与与所述多播标识符的位掩码相关联的所述一组出口网络设备相对应的一个或多个出口分组处理器;以及
将所述一个或多个出口分组处理器的所述标识符存储到所述高速缓存的所述第一级。
10.根据权利要求8所述的网络设备,其中所述分组处理器包括入口分组处理器,其中为了执行所述高速缓存的所述第一级的查找以确定所述后续多播分组的所述副本将被转发到的所述一个或多个出口分组处理器,所述入口分组处理器还被配置为:
基于所述入口分组处理器的高速缓存的所述第一级的所述查找来确定所述一个或多个出口分组处理器的所述标识符,所述后续多播分组的所述副本将被发送到所述一个或多个出口分组处理器以用于转发到所述一个或多个对应出口网络设备;以及
向所述一个或多个出口分组处理器中的每个出口分组处理器转发所述后续多播分组的所述副本。
11.根据权利要求8所述的网络设备,其中为了配置所述出口分组处理器的所述高速缓存的所述第一级,所述出口分组处理器还被配置为:
基于所述BIFT的查找来确定与所述多播标识符的位掩码相关联的所述一个或多个输出位掩码,其中所述位掩码的每个位对应于网络中的多个出口网络设备中的不同出口网络设备,其中所述一组出口网络设备是所述多个网络设备的子集;
将所述一个或多个输出位掩码存储到所述出口分组处理器的所述高速缓存的所述第二级。
12.根据权利要求8所述的网络设备,其中所述分组处理器包括所述一个或多个出口分组处理器中的出口分组处理器,其中为了执行所述高速缓存的所述第二级的所述查找以确定通过其所述后续多播分组的所述副本将被封装的所述相应多播标识符,以便将所述后续多播分组的所述副本转发到所述一个或多个对应出口网络设备,所述出口分组处理器被配置为:
从所述网络设备的入口分组处理器接收所述后续多播分组的副本,其中所述后续多播分组的所述副本包括用于所述一组出口网络设备的所述多播标识符;
基于所述高速缓存的所述第一级的所述查找来确定所述网络设备的相应输出接口,以向所述一个或多个对应出口网络设备输出所述后续多播分组;
基于所述高速缓存的所述第二级的所述查找来确定所述一个或多个对应出口网络设备的所述相应多播标识符;以及
向所述一个或多个对应出口网络设备中的每个对应出口网络设备转发利用所述一个或多个出口网络设备的所述相应多播标识符中的对应多播标识符封装的所述后续多播分组的所述副本。
13.根据权利要求8至12中任一项所述的网络设备,其中所述多播标识符包括位串,所述位串包括一组位、所述一组位包括一个或多个位,每个位表示所述多播域的一组出口网络设备中的对应出口网络设备。
14.根据权利要求8至12中任一项所述的网络设备,其中所述多播标识符包括位索引显式复制BIER报头。
15.一种网络设备的非暂态计算机可读存储介质,所述网络设备包括多个分组处理器,所述非暂态计算机可读存储介质存储指令,所述指令在被执行时使得所述网络设备的分组处理器:
接收多播分组,所述多播分组包括指定多播域的一组出口网络设备的多播标识符,所述一组位包括一个或多个出口网络设备;
响应于确定高速缓存不包括所述多播标识符来配置所述高速缓存的第一级以包括所述多播标识符作为所述高速缓存的索引,并且包括用于向所述一组出口网络设备转发所述多播分组的、所述网络设备的一个或多个出口分组处理器的标识符,其中配置所述高速缓存的第一级包括:由所述分组处理器并且基于位索引显式复制BIER转发表BIFT的查找来确定与相应多播标识符相关联的一个或多个对应出口网络设备,以及由所述分组处理器并且基于下一跳数据库的查找来确定与所述一个或多个对应出口网络设备相对应的一个或多个出口分组处理器;
由所述分组处理器将所述高速缓存的第二级配置为存储由所述BIFT和所述下一跳数据库的查找产生的、针对所述一个或多个对应出口网络设备的下一跳信息和针对所述一个或多个对应出口网络设备的所述相应多播标识符,其中配置所述高速缓存的所述第二级包括从所述网络设备的所述下一跳数据库而不是从所述多播分组得出所述高速缓存的所述第二级的所述相应多播标识符;和
响应于接收到包括指定所述一组出口网络设备的所述多播标识符的后续多播分组,执行所述高速缓存的查找而不执行所述BIER转发表和所述下一跳数据库的查找,其中执行所述高速缓存的所述查找包括以下至少一项:
由作为入口分组处理器操作的所述分组处理器执行所述高速缓存的所述第一级的查找以确定所述后续多播分组的副本将被转发到的所述一个或多个出口分组处理器;和
由作为出口分组处理器操作的所述分组处理器执行所述高速缓存的所述第二级的查找以确定通过其所述后续多播分组的所述副本将被封装的所述相应多播标识符,以便将所述后续多播分组的所述副本转发到所述一个或多个对应出口网络设备。
CN201910569204.XA 2018-10-16 2019-06-27 一种用于转发分组的方法及网络设备 Active CN111064763B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/162,323 US11070464B2 (en) 2018-10-16 2018-10-16 Optimized multicast forwarding with a cache
US16/162,323 2018-10-16

Publications (2)

Publication Number Publication Date
CN111064763A CN111064763A (zh) 2020-04-24
CN111064763B true CN111064763B (zh) 2023-01-13

Family

ID=67001543

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910569204.XA Active CN111064763B (zh) 2018-10-16 2019-06-27 一种用于转发分组的方法及网络设备

Country Status (3)

Country Link
US (1) US11070464B2 (zh)
EP (1) EP3641247B1 (zh)
CN (1) CN111064763B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020109916A (ja) * 2019-01-07 2020-07-16 日本電信電話株式会社 通信装置、マルチキャスト転送システム、および、マルチキャスト転送方法
US10924395B2 (en) * 2019-03-19 2021-02-16 Cisco Technology, Inc. Seamless multipoint label distribution protocol (mLDP) transport over a bit index explicit replication (BIER) core
CN112311668B (zh) * 2019-07-26 2022-03-29 华为技术有限公司 一种处理bier报文的方法、网络设备及系统
US11038793B2 (en) * 2019-10-15 2021-06-15 Cisco Technology, Inc. Service assurance of ECMP using virtual network function hashing algorithm
US11343174B2 (en) * 2020-05-26 2022-05-24 Dell Products L.P. Networking aggregation synchronization system
US11658837B2 (en) * 2020-07-10 2023-05-23 Realtek Semiconductor Corp. Multicast packet replication method
CN114598635A (zh) * 2020-12-02 2022-06-07 华为技术有限公司 报文传输的方法和装置
CN113986976B (zh) * 2021-10-29 2023-02-10 重庆大学 一种基于智能多缓存链式处理机的类处理方法与装置
US11533381B1 (en) * 2022-03-25 2022-12-20 Microsoft Technology Licensing, Llc Method and system for transparent tcp proxy to containerized applications

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101291546A (zh) * 2008-06-11 2008-10-22 清华大学 核心路由器交换结构协处理器
CN103222230A (zh) * 2011-06-24 2013-07-24 华为技术有限公司 组播复制方法、装置及系统
CN105933228A (zh) * 2015-02-26 2016-09-07 思科技术公司 用于位索引显式复制的流量工程

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6078963A (en) * 1998-01-16 2000-06-20 At&T Corp. Router with de-centralized processing using intelligent ports
US8483096B2 (en) * 2008-07-22 2013-07-09 The Regents Of The University Of California Scalable commodity data center network architecture
US8854973B2 (en) * 2012-08-29 2014-10-07 International Business Machines Corporation Sliced routing table management with replication
EP3047604B1 (en) * 2013-09-17 2021-03-24 Cisco Technology, Inc. Bit indexed explicit replication
US9832031B2 (en) * 2014-10-24 2017-11-28 Futurewei Technologies, Inc. Bit index explicit replication forwarding using replication cache
US9705784B2 (en) * 2014-12-31 2017-07-11 Juniper Networks, Inc. Bit index explicit replication (BIER)forwarding for network device components
US10212248B2 (en) * 2016-10-03 2019-02-19 Cisco Technology, Inc. Cache management on high availability routers in a content centric network

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101291546A (zh) * 2008-06-11 2008-10-22 清华大学 核心路由器交换结构协处理器
CN103222230A (zh) * 2011-06-24 2013-07-24 华为技术有限公司 组播复制方法、装置及系统
CN105933228A (zh) * 2015-02-26 2016-09-07 思科技术公司 用于位索引显式复制的流量工程

Also Published As

Publication number Publication date
CN111064763A (zh) 2020-04-24
US11070464B2 (en) 2021-07-20
US20200120013A1 (en) 2020-04-16
EP3641247A1 (en) 2020-04-22
EP3641247B1 (en) 2022-07-27

Similar Documents

Publication Publication Date Title
CN111064763B (zh) 一种用于转发分组的方法及网络设备
US10986024B1 (en) Dynamic prefix list for route filtering
US10536324B2 (en) Per-prefix LFA FRR with bit indexed explicit replication
US11303470B2 (en) Bridging of non-capable subnetworks in bit indexed explicit replication
CN107204867B (zh) 一种信息传输方法、装置和系统
US7746790B1 (en) Scalable route resolution
US9485141B1 (en) Constrained route distribution for multiple virtual private network services
US9832031B2 (en) Bit index explicit replication forwarding using replication cache
US20180102965A1 (en) Unicast branching based multicast
US9379982B1 (en) Adaptive stateless load balancing
CN112688888B (zh) Evpn vxlan上改进的端口镜像
US9832121B1 (en) Next hop instruction associations for forwarding unit programming within a network device
US9954694B2 (en) Traffic black holing avoidance and fast convergence for active-active PBB-EVPN redundancy
US10541912B2 (en) Detecting egresses of a point-to-multipoint label switched path in a ring network
US9350654B1 (en) Microloop protection for multi-protocol label switching paths
US11233741B1 (en) Replication mode selection for EVPN multicast
US11405320B2 (en) Systems and methods for scalable validation of multiple paths in a network using segment routing
US8811158B1 (en) Fast reroute for common network routes
US20230081052A1 (en) Method and apparatus for sending multicast packet
CN113992564B (zh) 报文处理方法及装置
CN110650088B (zh) 环形网络上点到多点隧道的资源预留技术
US10587517B2 (en) Optimizing fabric path forwarding for virtual nodes within an electronic device

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant