throbber
(12) United States Patent
`Subramanian et al.
`
`(10) Patent N0.:
`(45) Date of Patent:
`
`US 7,860,999 B1
`9
`*Dec. 28 2010
`
`US007860999Bl
`
`................. .. 709/235
`5,377,327 A * 12/1994 Jain etal.
`5,495,426 A *
`2/1996 Waclawsky et al.
`709/226
`5,845,091 A * 12/1998 Dunne et al.
`709/240
`
`
`
`Ea1I13°n:Ita1'
`2 :
`709;238
`1.
`e Ou ec et
`,
`,
`370 351
`6/2000 Vaid etal.
`..... ..
`6,078,953 A *
`709/223
`6,151,633 A * 11/2000 H t
`t
`1.
`709/235
`6,226,267 B1*
`5/2001 S15ii1Sn:y:tal.
`............ .. 370/235
`6,286,052 B1*
`9/2001 McCl0ghrie t
`1.
`709/238
`6,289,389 B1*
`9/2001 Kikinis ....
`709/239
`6,421,734 B1*
`7/2002 Nessettetal. ............. .. 709/247
`6,424,621 B1 *
`7/2002 Ramaswamy et al.
`..... .. 370/230
`6,570,867 B1*
`5/2003 Robinson et al.
`.... ..
`370/351
`6,611,872 131*
`8/2003 MCC/anne ........ ..
`709/238
`6,611,874 B1 *
`8/2003 Denecheau et al.
`....... .. 709/239
`6,701,363 B1*
`3/2004 Chiu et al.
`................ .. 709/224
`6,792,461 Bl*
`9/2004 Hericourt
`6,868,061 B1*
`3/2005 Kilkkiet al.
`........... .. 370/230.1
`
`(54) DISTRIBUTED COMPUTATION IN
`NETWORK DEVICES
`
`(75)
`
`Inventors: Siva Subramanian, Cary, NC (US); Tal
`.
`I'La"“"‘= S“‘my"a1e>CA(US)
`.
`.
`.
`(733 Asslgnee Amy“ 1"“-s Baskmg Rldges NJ (US)
`.
`I
`I
`I
`I
`(*1 N0t1CeI
`SuhJeCt t0 any dlselalmeri the term Ofthls
`patent is extended or adjusted under 35
`U.S.C. 154(1)) by 1839 days.
`
`atent is sub'ect to a terminal dis-
`This
`P
`J
`clajmer.
`
`(21) APPIINOII 09/736,678
`
`(22)
`
`Filed:
`
`Dec. 13, 2000
`
`=I< Cited by examiner
`
`60
`
`)
`
`51
`
`(
`
`(
`
`Related U.S. Application Data
`0
`I
`I.
`I. N 60/239 484 fil d
`.
`.
`P
`rovlslona app lcalon 0‘
`’
`’
`e on Ct‘
`11, 2000.
`I t. Cl.
`(2006.01)
`) Gn06F 15/16
`(2006.01)
`G06F 15/173
`(52) U.S. Cl.
`..................... .. 709/238; 709/235; 370/229;
`370/230. 1; 370/23 1; 370/234
`(58) Field of Classification Search ............... .. 709/235,
`709/238; 370/229, 230.15 231, 235, 234
`See apphcatjon me for c0mp1eIe Search history.
`_
`Referenees Clted
`U.S. PATENT DOCUMENTS
`
`(56)
`
`Primal?’ Ex‘1mi”@7’”A1‘i0 Etienne
`Assistant Examiner—Avi Gold
`(74) Attorney, Agent, or Firm—Winthrow & Terranova,
`PLLC
`
`ABSTRACT
`(57)
`The present invention facilitates routing trafiic overanetwork
`and distributing application level support among multiple
`routing devices during routing. Routing nodes are configured
`to Process the Content of the traffie to provide the requisite
`application level support. The traffic is routed, in part, based
`on the resources available for providing the processing. The
`processing of the traffic may be distributed throughout the
`network based on processing capacity of the routing nodes at
`any given time and given the amount of network congestion.
`
`5,167,033 A *
`
`ll/1992 Bryant et al.
`
`............. .. 709/235
`
`50 Claims, 9 Drawing Sheets
`
`CONTROL PLANE
`12
`
`CONTROL
`
`RECEIVE PACKET
`
`212
`
`214
`
`1
`-
`-
`.EP1:18fi%SI§1§fi8E$1;s
`SE CONFIGURATIONS FOR
`COMPUTE OR
`FORWARD PLANES
`
`216
`PREPARE PACKET OR RESPONSE
`FOR SENDING TO A DESTINATION
`IF NECESSARY
`
`I
`I
`
`I
`
`I
`I
`I
`I
`I
`I
`
`I
`
`FORWARD PLANE
`16
`START
`
`2°‘)
`
`202
`
`RECEIVE PACKET
`
`FILTER PACKET BASED
`ON FORWARDING RULES
`
`204
`
`
`206
`
`TO coNTI§8iMe'bRIv'1PuTE OR
`NEXT—HOP/DESTINATION
`
`
`
`NEXIHOPI
`DESTINATION
`
`PROCESS PACKET IF NECESSARY
`
`1'-E HEADER MAN'PULAT‘0"'>
`
`FORWARD PACKET TO NEXT—HOP/
`
`I
`
`DESTINATION
`
`,:-210
`
`COMPUTE PLANE
`14
`
`COMPUTE
`
`RECEIVE PACKET
`
`E§£?§EfioP0%§EES%‘1
`COMPUTE FUNCTIONS
`(TYPICALLY DATA/PAYLOAD
`MANIPULATION)
`
`SEND PROCESSED PACKET
`TO FORWARD PLANE
`IF NECESSARY
`
`218
`
`220
`
`222
`
`1
`I
`I
`1
`
`|
`
`I
`
`1
`
`ARISTA 1110
`
`1
`
`ARISTA 1110
`
`

`
`U.S. Patent
`
`Dec. 28,2010
`
`Sheet 1 of9
`
`Us 7,860,999 B1
`
`FIG.1A
`
`2
`
`

`
`U.S. Patent
`
`Dec. 28,2010
`
`Sheet 2 of9
`
`Us 7,860,999 B1
`
`FIG.1B
`
`3
`
`

`
`U.S. Patent
`
`Dec. 28,2010
`
`Sheet 3 of9
`
`Us 7,860,999 B1
`
`FIG.1C
`
`4
`
`

`
`U.S. Patent
`
`Dec. 28,2010
`
`Sheet 4 of9
`
`Us 7,860,999 B1
`
`FIG.1D
`
`5
`
`

`
`U.S. Patent
`
`Dec. 28,2010
`
`Sheet 5 of9
`
`Us 7,860,999 B1
`
`I00
`
`102
`
`104
`
`106
`
`108
`
`110
`
`112
`
`IDENTIFY PROCESSING RESOURCES
`REQUIRED FOR TRAFFIC DELIVERY
`FROM SOURCE TO DESTINATION
`
`
`
`IDENTIFY POSSIBLE PATH(S) BETWEEN
`SOURCE AND DESTINATION WITH
`PROCESSING CAPABILITY
`
`IDENTIFY PROCESSING RESOURCES
`AVAILABLE FOR PATH(S)
`
`SELECT PATH FOR
`TRAFFIC DELIVERY
`
`DETERMINE RESOURCE ALLOCATION
`ALONG SELECTED PATH
`
`RESERVE RESOURCES
`FOR SELECTED PATH
`
`TRANSPORT TRAFFIC FROM SOURCE
`TO DESTINATION ALONG SELECTED PATH
`
`FIG. 2
`
`6
`
`

`
`U.S. Patent
`
`Dec. 28,2010
`
`Sheet 6 of9
`
`Us 7,860,999 B1
`
`/0
`
`CONTROL PLANE
`
`1.2
`
`COMPUTE SERVICES
`
`NETWORK SERVICES
`
`E
`
`2.9
`
`COMPUTE API
`
`NETWORK ARI
`
`22
`
`gg
`
`
`
`
`
`
`
`
`
`COMPUTE PLANE
`14
`
`FORWARD PLANE
`
`l§
`
`FIG. 3
`
`/10
`
`CONTROL PLANE
`
`E
`
`COMPUTE SERVICES
`
`NETWORK SERVICES
`
`E
`
`.22
`
`COMPUTE API
`
`NET ORK ARI
`
`2
`
`E
`
`COMPUTE PLANE
`14
`
`FORWARD PLANE
`16
`
`F0 RWARDED
`PACKETS
`
`FIG. 4
`
`7
`
`

`
`U.S. Patent
`
`Dec. 28,2010
`
`Sheet 7 of9
`
`Us 7,860,999 B1
`
`/-10
`
`CONTROL PLANE
`
`E
`
`S
`
`COMPUTE SERVICES
`
`NETWORK SERVICES
`
`1_s
`
`20
`
`COMPUTE API
`
`NE
`
`ORK API
`
`2
`
`E
`
`COMPUTE PLANE
`
`FORWARD PLANE
`16
`
`PACKETS
`MANIPULATED BY
`COMPUTE PLANE
`
`FIG. 5
`
`CONTROL PLANE
`
`CONFIGURATION
`INSTRUCTIONS
`
`1_2
`
`6
`
`COMPUTE SERVICES
`
`NETWORK SERVICES
`
`E
`
`E
`
`COMPUTE API
`
`'
`
`NETWORK API
`
`.23
`
`_4
`
`COMPUTE PLANE
`
`FORWARD PLANE
`
`E
`
`1
`
`PACKETS DIRECTED
`TO CONTROL PLANE
`
`FIG. 6
`
`8
`
`

`
`U.S. Patent
`
`Dec. 28,2010
`
`Sheet 8 of9
`
`Us 7,860,999 B1
`
`qr_mr_NF
`
`«om
`
`
`
`520$m_>_m_om_m
`
`._.m<._.w
`
`mom
`
`
`
`
`
`om_m<m_._.mv_0<n_mm5_u_
`
`
`
`mm_._:moz_om<>>mon_ZO
`
`ma
`
`ONN
`
`
`
`Exoim_>_momE
`
`
`
`mom_.m_xo<n_mmmooma
`
`
`
`zonm_m<mZO_._.<O_u_n_n_<
`
`
`
`mzoiozimEE_>_oo
`
`n_<o4><n_>fi<a>j<o_n:E
`AZO_._.<:_Dn__Z<_>_
`
`
`
`
`
`
`
`._.m_xO<n_ommmmoommozmm
`
`
`
`mz<._n_nE<>>mouO._.
`
`>m<mmm_om_zn__
`
`
`
`m:E_>_oo._oEzoo
`
`Qn_o:.cmz
`SE289
`
`
`
`>m<mmmom_zm.Exoimwmooma
`
`
`
`Azo:<.5n__z<_>_mm_o<m:ma
`
`NGE
`
`
`
`\n_O_.E.XmZOHEv_o<n_nE<>>mo¢
`
`ZO_._.<Z_._.wm_n_
`
`
`
`._.m_v_O<n_m_>_m_om_m
`
`
`
`Ev_o<n_mwmoomm
`
`
`momwzo:<m:o:zo.o¢m_m
`mofimozoso23¢m._
`
`mom_Sn__>_oo
`
`
`
`mmzfimom<>>mou_
`
`ma
`
`im
`
`
`
`mmzonammmom_v_o<n_mm<n_mmn_
`
`
`
`ZO_._.<z_._.wm_n_<O._.ozazmmmom
`
`>m<mmmomzn:
`
`
`
`
`
`mz<._n_.u._._.Dn__>_O0mz<._n_nE<2Eon_mz<._n_._oEzoo
`
`
`
`
`
`
`
`9
`
`
`
`
`
`
`

`
`U.S. Patent
`
`Dec. 28,2010
`
`Sheet 9 of9
`
`Us 7,860,999 B1
`
`om<>>mon_
`
`momwmoomm
`
`mm
`
`oZoms§mom
`
`mmEI\mm_.Sm
`
`
`
` HmZ<.Eom<>>m_on_
`
`—Zl—LIJD’ZLL<OUJ
`
`m<oxm4<zm*
`
`e\
`
`m<oxa4<Zm
`
`m§—POI—Z0 N
`
`—z+mmu<om¢
`m<0xm4<zm”
`
`m_o<u_mm+z_ow
`
`mz<.Exo<m_
`
`m_o<u_mm»z_
`
`am
`
`:_Om._.ZOO
`
`mommmoomu
`
`mm
`
`»GE
`
`
`
`m_z<._n_Aomkzoo
`
`fl
`
`>mo_>_m_2
`
`Q.
`
`
`
`vEo>>Ezmommmooma
`
`
`
` Smz<._n_m_._.3a_>_OO
`
`>mo_>m__>_
`
`mm
`
`
`
`m_.5oo_>_>m<mm:
`
`$azofiozigov
`
`_.wOI
`
`10
`
`10
`
`
`
`
`
`
`
`
`

`
`1
`DISTRIBUTED COMPUTATION IN
`NETWORK DEVICES
`
`US 7,860,999 B1
`
`2
`
`This application claims the benefit of provisional applica-
`tion No. 60/239,484, filed Oct. 11, 2000, entitled COMPU-
`TATION IN NETWORK DEVICES, and is related to appli-
`cation Ser. No. 09/736,692, filed Dec. 13, 2000, entitled
`HIGH-SPEED COMPUTATION IN NETWORK DEVICES
`and Ser. No. 09/736,674, filed Dec. 13, 2000 entitled SER-
`VICE BASED ROUTING,
`the disclosures of which are
`incorporated herein by reference in their entirety.
`
`FIELD OF THE INVENTION
`
`The present invention relates to processing and routing
`packets in a network, and in particular, to distributing appli-
`cation level processing among one or more routing devices
`during high-speed routing.
`
`BACKGROUND OF THE INVENTION
`
`Existing routers have limited computation capacity and
`offer little or no application layer support during routing.
`These routers are typically divided into a control plane and a
`forward plane. The control plane is used for basic setup and
`control of the router. For example, the control plane is gen-
`erally used to establish routing tables used by the forward
`plane. The forward plane receives packets, processes the
`packets based on the routing tables set up by the control plane,
`and delivers the packets to the next-hop address or the final
`destination, depending on the termination point for each
`packet.
`The forward plane in existing routers is typically limited to
`packet delivery based on basic header analysis and manipu-
`lation. Historically, application layer support, such as that
`requiring analysis or manipulation of the packet’s payload,
`has been avoided. Those specially configured devices capable
`of providing application processing, such as firewalls, are
`uniquely configured for the special application wherein the
`routing speeds for normal routing in the forward plane are
`significantly impacted or the control plane is uniquely
`adapted to handle such processing. In either case, basic rout-
`ing capability of the forward plane is inhibited. Thus, tradi-
`tional network routers typically do not provide application
`level processing, and routing devices providing such support
`are only used in limited applications.
`Nortel Networks Limited is developing routing devices
`capable of providing application level processing without
`significantly impacting forwarding performance for the pack-
`ets being processed at an application level or for those requir-
`ing only basic routing. These routing devices are capable of
`providing various types of application level support to facili-
`tate any number of functions or network services.
`Although these routing devices provide application level
`support during routing, for any given traffic flow, a single
`device may not have the computational capacity to provide all
`ofthe processing for a given traffic flow. The capacity may be
`limited based on the routing device’s capability or the pro-
`cessing required for concurrent trafiic flows. Further, con-
`gested networks incorporating routing devices capable of
`providing application level support would be more efiicient if
`processing could be distributed to less congested devices,
`which are comparably capable.
`Thus, there is a need to distribute processing for applica-
`tion level support among routing devices capable ofproviding
`such support. There is a further need to be able to detect
`congested routing devices and direct traffic to routing devices
`
`with capacity for application level support without signifi-
`cantly impacting routing efficiency and speeds.
`
`SUMMARY OF THE INVENTION
`
`The present invention facilitates routing trafiic over a net-
`work and distributing application level support among mul-
`tiple routing devices during routing. Routing nodes are con-
`figured to process the content of the traffic to provide the
`requisite application level support. The trafiic is routed, in
`part, based on the resources available for providing the pro-
`cessing. The processing of the trafiic may be distributed
`throughout the network based on processing capacity of the
`routing nodes at any given time and given the amount of
`network congestion.
`When trafiic is routed, processing resources required for
`delivery of the trafiic from a source to the destination are
`determined. Since multiple routing paths may exist, one or
`more paths between the source and destination capable of
`providing the requisite application level support during rout-
`ing are identified. Next, the available processing resources in
`the possible paths are compared with the resources required
`for routing. One or more paths are then selected to optimize
`routing and minimize congestion. Upon selection of the one
`or more paths, the trafiic may be routed and processed accord-
`ingly.
`The requisite application level processing may be distrib-
`uted among multiple routing nodes and paths to make sure
`that suflicient resources are available and delivery does not
`negatively affect other traffic. The distribution ofthe process-
`ing is preferably based on available resources and perhaps on
`other network conditions bearing on the processing and rout-
`ing performance for the particular traffic flow, the network in
`general, or a combination thereof.
`Those skilled in the art will appreciate the scope of the
`present invention and realize additional aspects thereof after
`reading the following detailed description of the preferred
`embodiments in association with the accompanying drawing
`figures.
`
`BRIEF DESCRIPTION OF THE DRAWING
`FIGURES
`
`The accompanying drawing figures incorporated in and
`forming a part ofthe specification illustrate several aspects of
`the invention, and together with the description serve to
`explain the principles of the invention.
`FIG. 1A depicts a network including routing devices
`capable of providing application level support according to a
`preferred embodiment of the present invention.
`FIG. 1B depicts a first exemplary trafiic flow in the network
`of FIG. 1A wherein the trafiic flow receives application level
`support during routing.
`FIG. 1C depicts a second exemplary trafiic flow in the
`network of FIG. 1A wherein the trafiic flow receives applica-
`tion level support during routing.
`FIG. 1D depicts multiple exemplary traffic flows in the
`network of FIG. 1A wherein the trafiic flows receive applica-
`tion level support during routing.
`FIG. 2 is a flow diagram outlining the basic flow for dis-
`tributing application level processing for trafiic flow during
`routing according to a preferred embodiment of the present
`invention.
`
`FIG. 3 depicts a preferred architecture for a routing node
`constructed according to a preferred embodiment of the
`present invention.
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`11
`
`11
`
`

`
`US 7,860,999 B1
`
`3
`FIG. 4 illustrates the forwarding path of packets processed
`within the forward plane of the architecture shown in FIG. 3.
`FIG. 5 illustrates the forwarding path of packets processed
`by the compute plane of the architecture shown in FIG. 3.
`FIG. 6 illustrates the forwarding path ofpackets directed to
`the control plane and the path of instructions for configuring
`the compute plane and forward plane from the control plane
`according to a preferred embodiment ofthe present invention.
`FIG. 7 is a flow diagram outlining the basic flow for pro-
`cessing packets in the control plane, compute plane, and/or
`the forward plane according to a preferred embodiment ofthe
`present invention.
`FIG. 8 is a block schematic of a preferred configuration of
`a routing node according to the present invention.
`
`DETAILED DESCRIPTION OF THE PREFERRED
`EMBODIMENTS
`
`The present invention provides for distributing application
`level support among multiple routing devices during routing.
`The application layer support may include any type of pro-
`cessing or network service on packet content. The embodi-
`ments set forth below represent the necessary information to
`enable those skilled in the art to practice the invention and
`illustrate the best mode of practicing the invention. Upon
`reading the following description in light of the accompany-
`ing drawing figures, those skilled in the art will understand
`the concepts of the invention and will recognize applications
`of these concepts not particularly addressed herein. It should
`be understood that these concepts and applications fall within
`the scope of this disclosure and the accompanying claims.
`With reference to FIG. 1A, a network 2 is illustrated pro-
`viding for communications between an application server 4
`and a computing device 6, such as a personal computer. A
`communication server 8 may be provided to facilitate distri-
`bution of application level support among routing nodes 10
`that are capable of providing the application level support
`while routing trafiic between the application server 4 and the
`computing device 6. As will be discussed in greater detail
`below, the routing nodes 10 are capable of providing high-
`speed routing services in conjunction with processing content
`carried in the packets between the application server 4 and the
`computing device 6 during routing.
`The routing nodes 1 0 may take on any type of configuration
`capable of providing application level support on packet con-
`tent during routing. However, the preferred embodiment of
`the invention provides for configuring the routing nodes 10 to
`include three primary processing planes: a control plane 12, a
`compute plane 14, and a forward plane 16. Preferably, all
`incoming packets are received by the forward plane 16
`through various ports interacting with a network, such as a
`packet-switched network. The forward plane 16 is configured
`to analyze each ofthe incoming packets and determine where
`to send each packet. In general, the incoming packets need to
`be forwarded on toward their final destination, to the control
`plane 12, or to the compute plane 14.
`Preferably, any packet processing provided by the forward
`plane 16 is limited to manipulating information in one or
`more headers ofthe packet as necessary in traditional routing.
`Packets entering the forward plane 16 that require application
`level processing, which may entail manipulation of the pack-
`et’s payload, are directed to the compute plane 14 by the
`forward plane 16. After processing, the packets are returned
`to the forward plane 16 for further processing. Additional
`details of the configuration of the preferred routing node are
`outlined after a discussion of the concepts of the present
`invention.
`
`4
`
`An exemplary trafiic flow between the application server 4
`and a computing device 6 is shown in FIG. 1B. The routing
`nodes 10 are illustrated to depict the control plane 12, com-
`pute plane 14, and forward plane 16. In the present example,
`assume that the media flow is routed between the application
`server 4 and the computing device 6 through routing nodes
`10A, 10B and 10C. Further assume that each of the routing
`nodes 10A, 10B and 10C will provide application level pro-
`cessing on all or select packets constituting the trafiic flow.
`The traffic flow is illustrated by the solid line extending into
`the compute planes 14 through the forward planes 16 of each
`of the routing nodes 10A, 10B and 10C.
`With the trafiic flow depicted in FIG. 1B, application level
`processing provided by the routing nodes 10A, 10B and 10C
`may be distributed in a number ofways. For example, each of
`the routing nodes 10A, 10B and 10C may provide the same
`type of processing wherein each of the routing nodes 10A,
`10B and 10C provides processing for a certain portion of the
`traffic flow. As such, each of the routing nodes 10A, 10B and
`10C may process one third of the trafiic or routing node 10A
`may provide 80 percent of the processing wherein routing
`nodes 10B and 10C each provide 10 percent of the process-
`ing. Alternatively, each of the routing nodes 10A, 10B and
`10C may provide a different type of processing on the entire
`traffic flow. For example, routing node 10A may provide a
`compression application, routing node 10B may provide an
`encryption function and routing node 10C may provide an
`e-commerce related application on the compressed and
`encrypted traffic flow. Altematively, a network device or
`server along the way will be able to do all the computation.
`Actual distribution of the application layer support for the
`traffic flow may be facilitated by the communication server 8
`or by a protocol implemented between the routing nodes 10
`and perhaps the application server 4 or personal computer 6.
`If the communication server 8 is used to distribute processing
`throughout the network 2 among the compatible routing
`nodes 10, information is collected from each of the routing
`nodes 10 continuously or on a periodic basis to determine the
`resources available or the remaining processing capacity of
`the various routing nodes.
`An alternative traffic flow is depicted in FIG. 10 wherein
`the traffic flow is routed from the application server 4 to the
`personal computer 6 via routing devices 10A, 10D, and 10C.
`Notably, routing nodes 10A and 10C simply forward traffic
`while the routing node 10D provides application level pro-
`cessing. The solid line representing the trafiic flow extends
`into the compute plane 14 of routing node 10D, whereas the
`traffic fiow is solely handled by the forward plane 16 in
`routing nodes 10A and 10C. The trafiic flow may be config-
`ured in such a manner because routing nodes 1 0A and 1 0C are
`currently processing other trafiic to an extent that they lack
`sufficient capacity to handle all or any portion of the process-
`ing required for the trafiic flow depicted. Alternatively, rout-
`ing nodes 10A and 10C may not be configured to provide the
`same type ofprocessing as that provided in routing node 10D.
`FIG. 1D depicts three different traffic flows between the
`application server 4 and the computing device 6. The flows
`are represented by a solid line, a dotted line, and a dashed line.
`The traffic flow represented by the solid line is depicted as
`extending into the compute planes 14 ofeach ofrouting nodes
`10A, 10D, and 10C. As such, processing for application level
`support is distributed for that trafiic flow between each of the
`three routing nodes 10A, 10D, and 10C. The trafiic flows
`represented by the dotted and dashed lines are routed through
`routing nodes 10A, 10B, and 10C, respectively. For the traffic
`flow represented by the dotted line, application level support
`is only provided by routing nodes 10B and 10C, wherein
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`12
`
`12
`
`

`
`US 7,860,999 B1
`
`5
`routing node 10A operates to simply forward packets
`between the application server 4 and routing node 10B. The
`trafiic flow represented by the dashed line receives applica-
`tion level processing by routing nodes 10A and 10B, wherein
`routing node 10C merely forwards the packets between 10B
`and the computing device 6.
`Preferably, the routing and distribution of application level
`support for each trafiic flow is distributed to provide efiicient
`routing and processing. For example, if the trafiic flow rep-
`resented by the solid line was the first ofthe three trafiic flows
`initiated, the application level support was distributed evenly
`between routing nodes 10A, 10D, and 10C. If the trafiic flow
`represented by the dashed line was the second flow initiated,
`the application level support for the traffic flow may have
`been evenly distributed between routing nodes 10A and 10B.
`When the trafiic flow associated with the dotted line was
`
`initiated, a decision may have been made to avoid providing
`application level support by routing node 10A, due to its
`handling of the traffic flows represented by the solid and
`dasl1ed lines. Thus, for the trafiic flow represented by the
`dotted line, routing node 10A only forwards the traffic,
`wherein routing nodes 10B and 10C were less congested and
`had sufficient capacity to handle the application level support.
`Notably, distribution of the processing associated with
`application level support may be distributed based on avail-
`able resources or in an effort to maximize routing or process-
`ing speeds by distributing the processing among multiple
`routing nodes 10. The basic process of distributing applica-
`tion level support during routing is outlined in FIG. 2. Pref-
`erably, the process will begin by identifying the necessary
`processing resources required for delivery of trafiic from a
`source to the destination (block 100). As in the network 2
`depicted in FIGS. 1A through 1D, multiple routing paths will
`likely exist. Among these multiple paths, paths capable of
`providing the requisite application level support during rout-
`ing between the source and destination are identified (block
`102). Within the identified paths, available processing
`resources are identified to assist in distributing the application
`level support (block 104).
`A routing path for delivering trafiic between the source and
`destination is selected (block 106), preferably based on avail-
`able resources and perhaps based on other network conditions
`bearing on the processing and routing performance for the
`particular trafiic flow, for the network in general, or a combi-
`nation thereof. The ultimate goal is to provide the necessary
`application level support during routing and to route the traf-
`fic to meet quality and/or speed requirements. For example,
`streaming media traffic requiring application level support
`may need the traffic delivered with minimal packet loss and at
`a given rate. Other trafiic flows may require less speed and
`more accuracy. The distribution of the application level sup-
`port will
`facilitate meeting the routing and processing
`demands of the trafiic flows.
`Preferably, once the path is selected for trafiic delivery, the
`necessary resource allocation for providing the application
`level support along the selected path is determined (block
`108). In essence, the distribution of the application level
`support is determined. The routing nodes needed to provide
`the application level support are determined, and the amount
`of application level support provided by each of the routing
`nodes 10 is defined. Based on this distribution, resources may
`be reserved in the selected routing nodes 10 to ensure each of
`the routing nodes have the capacity and the ability to provide
`the application level support for the trafiic flow (block 110).
`Once the resources are reserved, traffic for the trafiic flow
`may be transported from the source to the destination along
`the selected path (block 112).
`
`6
`During transport, the selected routing nodes 10 will pro-
`vide the allocated application level support and routing func-
`tions necessary for delivery. The routing nodes 10 may coop-
`erate with one another alone or in combination with a
`
`communication server 8 to communicate capacity informa-
`tion using an acceptable protocol. The capacity information is
`used to determine whether a given flow may be processed in
`a node or nodes within the routing path. Processing is allo-
`cated and the capacity is reserved for the allocated processing
`prior to initiating traffic flow.
`With reference to FIG. 3, a routing node 10 is illustrated
`according to a preferred embodiment ofthe present invention.
`As noted above, the routing node 1 0 may be divided into three
`primary processing planes: a control plane 12, a compute
`plane 14, and a forward plane 16. Preferably, all incoming
`packets are received by the forward plane 16 through various
`ports interacting with a network, such as a packet-switched
`network. The forward plane 16 is configured to analyze each
`of the incoming packets and determine where to send each
`packet. In general, the incoming packets need to be forwarded
`on toward their final destination, to the control plane 12, or to
`the compute plane 14.
`Depending on the extent or nature of any necessary
`manipulation of the packet, the packet may be processed by
`the forward plane 16 and forwarded to the next-hop routing
`node or final destination. Preferably, any packet processing
`provided by the forward plane 16 is limited to manipulating
`information in one or more headers ofthe packet as necessary
`in traditional routing. As depicted in FIG. 4, packets requiring
`only traditional routing are maintained in the forward plane
`16 for processing and immediately forwarded to the next-hop
`routing node or destination.
`Packets entering the forward plane 16 that require applica-
`tion level processing, which may entail manipulation of the
`packet’s payload, are directed to the compute plane 14 by the
`forward plane 16. As depicted in FIG. 5, these packets are
`passed through the forward plane 16 to the compute plane 14
`for processing and then sent back to the forward plane 16,
`which will forward the processed packet to the next-hop
`routing node or final destination.
`Although additional detail is provided below, the compute
`plane 14 provides application level processing, and any nec-
`essary payload manipulation required by such processing.
`During processing by the compute plane 14, the payload may
`be reviewed, removed, modified, and repacked as directed by
`any number of applications. The routing node 10 preferably
`supports programming and unique configuration ofthe com-
`pute plane 14 and the forward plane 16.
`Any number of applications may be supported through the
`compute plane 14. For example, Internet Protocol (IP) secu-
`rity and secure socket layer (SSL) applications may be imple-
`mented in a routing node 10 using the compute plane 14.
`Various types of multimedia applications are made possible,
`alone or in combination with other applications. Further,
`incorporating a high-speed compute plane 14 for application
`specific packet processing enables streaming applications
`and minimizes or eliminates the need for buffering. The com-
`pute plane 14 is capable of implementing virtually any type of
`application, ranging from carrying out mathematical opera-
`tions on payloads to implementing compression and encryp-
`tion algorithms. The compute plane 14 may also help facili-
`tate high-speed firewalls acting as a single point of entry or
`distributed to provide multiple points of entry. Typically, the
`compute plane 14 operates on layer four and higher protocols
`that are typically application related.
`In addition to traditional forwarding of incoming packets
`and directing packets to the compute plane 14 for processing,
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`13
`
`13
`
`

`
`US 7,860,999 B1
`
`7
`the forward plane 16 may direct selected incoming packets to
`the control plane 12 for basic communications with the rout-
`ing node 10 as shown in FIG. 6. In essence, the control plane
`12 provides overall control and configuration for the routing
`node 10, and in particular, for the compute plane 14 and the
`forward plane 16. This control may range from running diag-
`nostics to setting configurations for the compute plane 14 and
`the forward plane 16. These settings may dictate the type of
`processing to carry out on the incoming packets and which
`plane handles the processing.
`Returning now to FIG. 3, the routing node 10 may support
`various services, which are groups of code or objects that
`implement specific functionality. Preferably, these services
`use Java code and may be divided into compute services 18
`related to the compute plane 14, and network services 20
`related to the operation ofthe forward plane 16. Each ofthese
`services cooperates with the corresponding compute plane 14
`and forward plane 16 via a compute application program
`interface (API) 22 and network API 24, respectively. The
`network API can be CPIX, IEEE 1520, the IETF’s APIs, or
`other propriety APIs. Since the services are preferably Java
`compatible, the compute API 22 and network API 24 may
`specify interfaces for Java applications to control the respec-
`tive compute plane 14 and forward plane 16.
`Preferably, the network API 24 can be used to instruct the
`forward plane 1 6 to alter packet processing through the instal-
`lation ofhardware or software filters that facilitate forwarding
`rules. These filters execute actions specified by a defined filter
`policy. Typically, these filters can be based on combinations
`of fields in the machine address, IP address, and transport
`headers. The filters may also be configured to trigger on a
`payload as well. The filter policy can define where the match-
`ing packets are delivered and can also be used to alter the
`packet content as noted above.
`Typical packet delivery options include discarding match-
`ing packets and diverting matching packets to the control
`plane 12 or compute plane 14 based on the filter policy. With
`the present invention, a high-speed compute plane 14 is pro-
`vided to handle such processing. Additionally, packets may
`be “copied” to the control or compute planes 12, 14 or may be
`mirrored to a selected interface. Packets may also be identi-
`fied as being part of high-priority flow; these packets can be
`placed in a high-priority queue and delivered accordingly. For
`example, packets canbe marked differentially for DiffSery or
`MPLS marking. As noted, the filter policy can also cause
`packet and header content to be selectively altered for most of
`these operations. The particular plane handling the process-
`ing is capable of re-computing IP header check sums at high
`speeds when and if the IP header or payload is changed.
`In the present invention, all control plane computations,
`such as installing new routing tables, ARP cash tables, Filter
`tables, or parsing a new Internet Control Message Protocol
`(ICMP) message type, are easily accommodated through the
`network API 24. Through the network API 24, the forward
`plane 16 may provide a number of services. The applications
`are typically contained within the forward plane 16 and will
`not require additional processing by the compute plane 14 for
`traditional operation. The following list of services is merely
`exemplary and not intended to limit the scope of the present
`invention. The various functions provided by the forward
`plane 16 relate to analyzing incoming packets, manipulating
`packet headers, if necessary, and forwarding the packets to
`the next-hop or destination at high speeds.
`The present invention supplements these abilities with
`high-speed, preferably line rate, processing capabilities at an
`application level. As noted, the compute plane 14 is prefer-
`ably used to manipulate packet data or payloads beyond layer
`
`8
`three or four protocols that provide application l

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket