throbber
(12) United States Patent (cid:9)
`Dietz et al. (cid:9)
`
`1111111111111110111111111111I19111,111111111111111111111110111111
`
`(to) Patent No.: (cid:9)
`(45) Date of Patent: (cid:9)
`
`US 6,954,789 B2
`Oct. 11, 2005
`
`(54) METHOD AND APPARATUS FOR
`MONITORING TRAFFIC IN A NETWORK
`
`FOREIGN PATENT DOCUMENTS
`
`JP (cid:9)
`
`2003-44510 A (cid:9)
`
`2/2003
`
`(75) Inventors: Russell S. Dietz, San Jose, CA (US);
`Joseph R. Maixner, Aptos, CA (US);
`Andrew A. Koppenhaver, Littleton,
`CO (US); William H. Bares,
`Germantown, TN (US); Haig A.
`Sarkissian, San Antonio, TX (US);
`James F. Torgerson, Andover, MN
`(US)
`
`(73)
`
`Assignee: Hi/fn, Inc., Los Gatos, CA (US)
`
`Notice: (cid:9)
`* )
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 0 days.
`
`(21)
`
`Appl. No.: 10/684,776
`
`(22)
`
`Filed: (cid:9)
`
`Oct. 14, 2003
`
`(65)
`
`Prior Publication Data
`
`US 2004/0083299 Al Apr. 29, 2004
`
`(63)
`
`(60)
`
`(51)
`(52)
`(58)
`
`(56)
`
`Related U.S. Application Data
`
`Continuation of application No. 09/608,237, filed on Jun.
`30, 2000, now Pat. No. 6,651,099.
`Provisional application No. 60/141,903, filed on Jun. 30,
`1999.
` GO6F 15/173
`Int. C1.7 (cid:9)
` 709/224; 370/392
`U.S. Cl. (cid:9)
` 709/200, 201,
`Field of Search (cid:9)
`709/220, 223, 224, 231, 232, 236, 238-240,
`246; 370/389, 392
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`3,949,369 A (cid:9)
`4,458,310 A (cid:9)
`4,559,618 A (cid:9)
`
`4/1976 Churchill, Jr. (cid:9)
`7/1984 Chang (cid:9)
`12/1985 Houseman et al. (cid:9)
`
` 711/128
` 711/119
` 365/49
`
`OTHER PUBLICATIONS
`
`Advanced Methods for Storage and Retrieval in Image;
`http://www.cs.tulane.edu/ww/Prototype/proposal.html;
`1998.
`
`(Continued)
`
`Primary Examiner—Moustafa M. Meky
`(74) Attorney, Agent, or Firm—Dov Rosenfeld; Inventek
`
`(57) (cid:9)
`
`ABSTRACT
`
`A monitor for and a method of examining packets passing
`through a connection point on a computer network. Each
`packets conforms to one or more protocols. The method
`includes receiving a packet from a packet acquisition device
`and performing one or more parsing/extraction operations
`on the packet to create a parser record comprising a function
`of selected portions of the packet. The parsing/extraction
`operations depend on one or more of the protocols to which
`the packet conforms. The method further includes looking
`up a flow-entry database containing flow-entries for previ-
`ously encountered conversational flows. The lookup uses the
`selected packet portions and determining if the packet is of
`an existing flow. If the packet is of an existing flow, the
`method classifies the packet as belonging to the found
`existing flow, and if the packet is of a new flow, the method
`stores a new flow-entry for the new flow in the flow-entry
`database, including identifying information for future pack-
`ets to be identified with the new flow-entry. For the packet
`of an existing flow, the method updates the flow-entry of the
`existing flow. Such updating may include storing one or
`more statistical measures. Any stage of a flow, state is
`maintained, and the method performs any state processing
`for an identified state to further the process of identifying the
`flow. The method thus examines each and every packet
`passing through the connection point in real time until the
`application program associated with the conversational flow
`is determined.
`
`(Continued)
`
`49 Claims, 18 Drawing Sheets
`
`302—,
`
`PACKET
`
`04
`
`ANALYZE ANI
`RECOGNIZE
`PATTERN
`INFORMATIO
`(PAR)
`
`308 -7
`
`I DEEXNTT7F19I TN G (cid:9)
`INFORMATIO
`(Ell)
`
`PARSER 301
`
`BUILD UNIQUE
`ONVERSATIOI
`'FLOW KEY
`
`312-/ (cid:9)
`
` -I
`
`ri 314,
`LOOKUP
`
`KFNROZ
`I RECORDS
`(DS 324
`I
`VIA CACHE
`
`6-)
`
`Der
`
`PATTERN, PARS
`AND
`EXTRACTION
`DATABASE
`
`PROTOCOL
`& STATE
`IDENTIFICATION
`
`310
`
`COMPILER
`AND
`1 OPTIMIZER
`
`
`
`_OM
`
`STATE
`PROCESSOR
`INSTRUCTION
`DATABASE
`
`PROTOCOL --A- DATAGRAM
`DESCIPTION (cid:9)
`LAYER
`LANGUAGE (cid:9)
`SELECTION;
`
`324
`
`DATABASE
`OF FLOWS
`
`- (cid:9)
`UPDATE
`
` 3221
`
`KNOWN ...-
`RECORD
`
`NO—t 34
`
`ANALYZER
`
`303
`
`NOAC Ex. 1005 Page 1
`
`(cid:9)
`(cid:9)
`(cid:9)
`(cid:9)
`(cid:9)
`

`

`US 6,954,789 B2
`Page 2
`
`U.S. PATENT DOCUMENTS
`
`364/300
`
`4/1988 (cid:9) Bristol
`340/825.5
`
`1/1990 Nakamura (cid:9)
`711/207
`
`3/1990 (cid:9) Okamoto et al. (cid:9)
`379/10
`
`11/1990 (cid:9) Daniel, III et al. (cid:9)
`370/17
`
`3/1992 (cid:9) Chiu et al. (cid:9)
`370/85.5
`
`9/1993 (cid:9) Ross et al. (cid:9)
`395/800
`
`9/1993 (cid:9) Bristol
`395/650
`
`9/1993 Chiappa (cid:9)
`370/13
`
`5/1994 (cid:9) Phaal (cid:9)
`365/49
`
`8/1994 Machida (cid:9)
`370/92
`
`9/1994 (cid:9) Kalkunte et al. (cid:9)
`370/17
`
`11/1994 (cid:9) Hershey et al. (cid:9)
`364/550
`
`12/1994 (cid:9) Hershey et al. (cid:9)
`370/60
`
`2/1995 (cid:9) Crowther et al. (cid:9)
` 364/715.02
`5/1995 Hekhuis (cid:9)
`
`370/60
`5/1995 (cid:9) Spinney (cid:9)
`
`370/13
`7/1995 Galloway (cid:9)
`
`370/17
`7/1995 (cid:9) Harper (cid:9)
`
`395/821
`2/1996 Waclawsky et al. (cid:9)
`
`370/17
`3/1996 (cid:9) Hershey et al. (cid:9)
`
`395/800
`4/1996 (cid:9) Correa
`
`395/800
`4/1996 (cid:9) Terasaka et al. (cid:9)
`
`711/136
`6/1996 (cid:9) Colloff et al. (cid:9)
`
`711/3
`6/1996 (cid:9) Agarwal et al. (cid:9)
`
`395/200.2
`7/1996 (cid:9) Krause et al. (cid:9)
`
`370/17
`10/1996 (cid:9) Hershey et al. (cid:9)
`
`395/403
`11/1996 (cid:9) Stansfield et al. (cid:9)
` 395/200.11
`12/1996 (cid:9) Hershey et al. (cid:9)
` 395/200.11
`2/1997 Shwed (cid:9)
` 364/724.01
`3/1997 (cid:9) Large et al. (cid:9)
` 395/200.11
`5/1997 (cid:9)
`Iddon et al. (cid:9)
`
`370/392
`7/1997 (cid:9) Van Seters et al. (cid:9)
`
`703/26
`10/1997 (cid:9) Bruell (cid:9)
`11/1997 (cid:9) Kaiserswerth et al. ... 395/200.2
`12/1997 (cid:9) Nuber et al. (cid:9)
`
`370/395
`2/1998 (cid:9) Picazo, Jr. et al. (cid:9)
`
`395/200.2
`2/1998 (cid:9) Logan et al. (cid:9)
`
`709/217
`3/1998 (cid:9) Gessel et al. (cid:9)
` 395/200.11
`Measurement and Analysis of the Digital DECT propagation
`4/1998 Watanabe et al. (cid:9)
` 395/183.21
`Channel; IEEE; 1998.
`5/1998 (cid:9) Hoover et al. (cid:9)
`
`711/108
`6/1998 Adams et al. (cid:9)
` 395/200.47
`R, Periakaruppam and E. Nemeth. "GTrace—A Graphical
`6/1998 Thompson (cid:9)
`
`709/224
`Traceroute (cid:9) Tool." (cid:9) 1999 (cid:9) Usenix (cid:9) LISA. (cid:9) Available (cid:9) on
`6/1998 Ketchum (cid:9)
`
`370/401
`www.caida.org, (cid:9) URL: (cid:9) http://www.caida.org/outreach/pa-
`7/1998 Southard (cid:9)
` 395/200.54
`pers/1999/GTrace/GTrace.pdf.
`7/1998 (cid:9) Hershey et al. (cid:9)
`
`364/557
` 395/200.61 W. Stallings. "Packet Filtering in the SNMP Remote Moni-
`7/1998 McCreery et al. (cid:9)
`tor." Nov. 1994. Available on www.ddj.com, URL: http://
`8/1998 Kuriyan (cid:9)
`
`709/223
`www.ddj .com/documents/s=1013/ddj 9411 h/9411 h. htm.
`9/1998 (cid:9) Bellenger (cid:9)
`
`370/401
`"Technical Note: the Narus System," Downloaded Apr. 29,
`9/1998 (cid:9) Hasani et al. (cid:9)
`
`395/200.2
`9/1998 (cid:9) Czarnik et al. (cid:9)
`
`370/245
`1999 from www.narus.com, Narus Corporation, Redwood
`10/1998 Manghirmalani
`City California.
`et al. (cid:9)
`10/1998 (cid:9) Ready et al. (cid:9)
`
`4,736,320 A
`4,891,639 A
`4,910,668 A
`4,972,453 A
`5,101,402 A
`5,247,517 A
`5,247,693 A
`5,249,292 A
`5,315,580 A
`5,339,268 A
`5,351,243 A
`5,365,514 A
`5,375,070 A
`5,394,394 A
`5,414,650 A
`5,414,704 A
`5,430,709 A
`5,432,776 A
`5,493,689 A
`5,500,855 A
`5,511,213 A
`5,511,215 A
`5,530,834 A
`5,530,958 A
`5,535,338 A
`5,568,471 A
`5,574,875 A
`5,586,266 A
`5,606,668 A
`5,608,662 A
`5,634,009 A
`5,651,002 A
`5,680,585 A
`5,684,954 A
`5,703,877 A
`5,720,032 A
`5,721,827 A
`5,732,213 A
`5,740,355 A
`5,749,087 A
`5,761,424 A
`5,761,429 A
`5,764,638 A
`5,781,735 A
`5,784,298 A
`5,787,253 A
`5,799,154 A
`5,802,054 A
`5,805,808 A
`5,812,529 A
`5,819,028 A
`
`5,825,774 A
`
`11/1998 (cid:9) Shwed et al. (cid:9)
`5,835,726 A (cid:9)
`11/1998 (cid:9) Schwaller et al. (cid:9)
`5,838,919 A (cid:9)
`11/1998 Huffman (cid:9)
`5,841,895 A (cid:9)
`12/1998 Anderson et al. (cid:9)
`5,850,386 A (cid:9)
`12/1998 Anderson et al. (cid:9)
`5,850,388 A (cid:9)
`1/1999 (cid:9) Welch, Jr. et al. (cid:9)
`5,862,335 A (cid:9)
`3/1999 (cid:9) de la Salle (cid:9)
`5,878,420 A (cid:9)
`4/1999 (cid:9) Cheriton (cid:9)
`5,893,155 A (cid:9)
`5/1999 (cid:9) Pearson (cid:9)
`5,903,754 A (cid:9)
`6/1999 (cid:9) Gobuyan et al. (cid:9)
`5,917,821 A (cid:9)
`12/1999 (cid:9) Carter et al. (cid:9)
`6,003,123 A (cid:9)
`1/2000 (cid:9) Hendel et al. (cid:9)
`6,014,380 A (cid:9)
`8/2000 (cid:9) Chen et al. (cid:9)
`6,097,699 A (cid:9)
`9/2000 (cid:9) Engel et al. (cid:9)
`6,115,393 A (cid:9)
`* (cid:9) 9/2000 Zaumen et al. (cid:9)
`6,118,760 A (cid:9)
`6,243,667 B1 * (cid:9)
`6/2001 (cid:9) Kerr et al. (cid:9)
`6,269,330 B1 (cid:9)
`7/2001 (cid:9) Cidon et al. (cid:9)
`6,272,151 B1 (cid:9)
`8/2001 (cid:9) Gupta et al. (cid:9)
`6,279,113 B1 (cid:9)
`8/2001 (cid:9) Vaidya (cid:9)
`6,282,570 B1 (cid:9)
`8/2001 (cid:9) Leung et al. (cid:9)
`6,330,226 B1 (cid:9)
`12/2001 (cid:9) Chapman et al. (cid:9)
`6,363,056 B1 (cid:9)
`3/2002 (cid:9) Beigi et al. (cid:9)
`6,381,306 B1 (cid:9)
`4/2002 (cid:9) Lawson et al. (cid:9)
`6,424,624 B1 (cid:9)
`7/2002 (cid:9) Galand et al. (cid:9)
`6,430,409 B1 (cid:9)
`8/2002 Rossmann (cid:9)
`6,452,915 B1 * (cid:9) 9/2002 Jorgensen (cid:9)
`6,453,345 B2 (cid:9)
`9/2002 (cid:9) Trcka et al. (cid:9)
`6,453,360 B1 * (cid:9)
`9/2002 (cid:9) Muller et al. (cid:9)
`6,466,985 B1 * 10/2002 (cid:9) Goyal et al. (cid:9)
`6,483,804 B1 * 11/2002 (cid:9) Muller et al. (cid:9)
`6,510,509 B1 * (cid:9)
`1/2003 (cid:9) Chopra et al. (cid:9)
`6,516,337 B1 (cid:9)
`2/2003 (cid:9) Tripp et al. (cid:9)
`6,519,568 B1 (cid:9)
`2/2003 (cid:9) Harvey et al. (cid:9)
`6,570,875 B1 * (cid:9) 5/2003 Hegde (cid:9)
`6,625,657 B1 (cid:9)
`9/2003 (cid:9) Bullard (cid:9)
`6,651,099 B1 (cid:9)
`11/2003 (cid:9) Dietz et al. (cid:9)
`6,791,947 B2 * (cid:9)
`9/2004 (cid:9) Oskouy et al. (cid:9)
`
`OTHER PUBLICATIONS
`
` 395/200.59
` 395/200.54
`382/155
` 370/241
` 370/252
` 395/200.54
` 707/10
` 711/144
` 395/680
` 370/392
` 711/207
` 370/392
` 370/231
` 370/469
` 370/229
` 703/27
` 704/43
` 370/489
` 713/201
` 709/224
` 370/232
` 370/252
` 379/32
` 370/231
` 455/422.1
` 370/238
` 709/224
` 709/250
` 709/238
` 370/230
` 712/13
` 709/202
` 705/1
` 370/389
` 709/237
` 709/224
` 370/238
`
`
`
`
`395/185.1
`370/401
`
`* cited by examiner
`
`NOAC Ex. 1005 Page 2
`
`(cid:9)
`(cid:9)
`(cid:9)
`

`

`U.S. Patent (cid:9)
`
`Oct. 11, 2005
`
`Sheet 1 of 18 (cid:9)
`
`US 6,954,789 B2
`
`100
`
`CLIENT 4
`
`107
`
`CLIENT3
`
`----
`106 (cid:9)
`
`),'
`
`-'-—.
`
`121
`
`DATA COMMUNICATIONS
`NETWORK
`
`108
`
`116
`
`--\110
`
`102
`
`125
`
`SERVER 2
`M
`112
`
`123
`
`105
`
`118
`J
`CLIENT 1 M
`104
`
`FIG. 1
`
`NOAC Ex. 1005 Page 3
`
`(cid:9)
`

`

`U.S. Patent (cid:9)
`
`Oct. 11, 2005
`
`Sheet 2 of 18 (cid:9)
`
`US 6,954,789 B2
`
`C\1
`0
`LL
`
`in N. c.i ,..., ›,
`
`in.
`2
`E
`D
`115
`D
`
`(.7
`
`a) O
`N
`
`datum request
`
`N
`CL
`
`6
`
`cir
`
`1:1 11 110
`
`.. ,==,.., _.=, .. .. I=
`.==.
`
`(NI
`cc
`w
`cc
`w
`z
`0
`i=
`ciT <
`U_
`1
`a_
`a_
`a
`
`..r-
``,.....
`
`NOAC Ex. 1005 Page 4
`
`(cid:9)
`

`

`U.S. Patent (cid:9)
`
`Oct. 11, 2005
`
`Sheet 3 of 18 (cid:9)
`
`US 6,954,789 B2
`
`---1-11j4:9
`Z
`
`1
`
`c% —\
`
`I
`
`co
`W
`>-
`
`I
`
`M cv
`CO
`
`t (cid:9)
`
`I
`
`1
`i
`1
`1
`I
`
`el
`CO
`CD
`CO
`
`,c—' (cid:9)
`co (cid:9)
`
`1-'
`c0
`0
`CO
`
`r .:r
`
`CO
`
`CV
`0
`CO
`
`0
`CO CO
`
`2 1 >- I
`1
`1
`....— 1
`1
`1
`1
`1
`1
`1
`1
`
`(cid:9)i
`
`CO
`CO CO
`
`7 (cid:9) 2 N
`i cc g
`0 w 1—
`< ›- 0
`i_ < LLI
`< --i —I
`0 LY)
`
`Al (cid:9)
`
`
`
`r \ \V - 5, 6 !Eiji
`0 I= <
`0 CL D
`
`0c I— 5
`u) z
`cn
`cn / (cid:9)
`Er W <
`V vil ct_ o -1 1
`
`co
`
`d U-
`
`NOAC Ex. 1005 Page 5
`
`(cid:9)
`(cid:9)
`

`

`U.S. Patent (cid:9)
`
`Oct. 11, 2005
`
`Sheet 4 of 18 (cid:9)
`
`US 6,954,789 B2
`
`0-----\-- 401
`
`j- 402
`
`"."-........
`
`.---
`.---.
`HIGH LEVEL
`PACKET
`DECODING
`DESCRIPTIONS
`,... (cid:9)
`--,
`
`COMPILE
`DESCRIPTIONS
`
`C 403
`
`c 408
`
`409 --)
`
`405
`
`GENERATE
`PACKET
`STATE
`INSTRUCTIONS
`AND
`OPERATIONS
`
`►
`
`407
`
`41.---immer (cid:9)
`
`1:04
`,--
`STATE
`PROCESSOR \..
`INSTRUCTION
`DATABASE
`...... (cid:9)
`--,
`
`404
`
`GENERATE
`PACKET
`PARSE AND
`EXTRACT
`OPERATIONS
`
`4
`
`--.
`
`..--- (cid:9)
`...._,
`-----
`,---
`406 77PATTERN, PARSE
`AND
`EXTRACTION
`... DATABASE
`...,
`
`LOAD
`PARSING
`SUBSYSTEM
`MEMORY
`
`LOAD STATE
`NSTRUCTIONA4 (cid:9)
`DATABASE
`MEMORY
`
`\ 400
`
`-----°.C----4-TO
`FIG. 4
`
`NOAC Ex. 1005 Page 6
`
`(cid:9)
`(cid:9)
`

`

`U.S. Patent
`
`Oct. 11, 2005
`
`Sheet 5 of 18 (cid:9)
`
`US 6,954,789 B2
`
`501
`
`/INPUT PACKET (cid:9)
`
`502
`
`503 *._7
`
`LOAD PACKET
`COMPONENT 4 (cid:9)
`
`504
`
`ORE IN PACK
`
`NO
`
`512
`
`BUILD
`PACKET
`KEY
`
`YES
`
`o.
`
`MORE
`PATTERN
`NODES?
`
`506
`
`YES
`ir
`APPLY NODE AND
`PROCESS TO
`COMPONENT
`
`507 —C----
`
`513
`
`NO
`
`NEXT
`PACKET ---)
`COMPONENITC_ 511
`4.
`
`510
`
`N EXT
`PATTERN
`NODE
`
`N
`
`ATTERN MAT
`
`508
`
`500
`
`YES
`
`•
`EXTRACT
`ELEMENTS
`
`509
`
`FIG. 5
`
`NOAC Ex. 1005 Page 7
`
`(cid:9)
`(cid:9)
`(cid:9)
`(cid:9)
`

`

`U.S. Patent (cid:9)
`
`Oct. 11, 2005
`
`Sheet 6 of 18 (cid:9)
`
`US 6,954,789 B2
`
`601
`
`602
`
`PACKET
`
`/COMPONENT AND
`
`PATTERN NODE
`
`LOAD PACKET
`COMPONENT
`
`604
`
`"YES
`It1/4 FETCH EXTRACTION
`ND PROCESS FROM-_
`PATTERNS
`
`605
`
`NO
`
`NEXT
`PACKET (cid:9)
`COMPONENT
`
`NO* , (cid:9)
`
`611
`
`609
`
`607 7.____
`
`YES
`APPLY EXTRACTION
`PROCESS TO
`COMPONENT
`
`\600
`
`FIG. 6
`
`NOAC Ex. 1005 Page 8
`
`(cid:9)
`(cid:9)
`

`

`U.S. Patent (cid:9)
`
`Oct. 11, 2005
`
`Sheet 7 of 18 (cid:9)
`
`US 6,954,789 B2
`
`701
`
`•
`
`EY BUFFER AND (cid:9)
`ERN NODE
`/PATT
`
`702
`
`LOAD PATTERN
`(cid:9)
`703 —\.____-- N
`ELEMENT 14
`
`708
`
`704
`
`NO
`
`YES
`V
`HASH KEY BUFFER
`ELEMENT FROM
`PATTERN NODE
`
`705
`
`PACK KEY & HASH
`
`•
`
`NEXT PACKET
`COMPONENT
`
`706
`
`707
`
`FIG. 7
`
`709
`
`700
`
`NOAC Ex. 1005 Page 9
`
`

`

`U.S. Patent (cid:9)
`
`Oct. 11, 2005
`
`Sheet 8 of 18 (cid:9)
`
`US 6,954,789 B2
`
`(1).
`
`— 801
`
`800 \
`
`/UFKB ENTRY FOR
`PACKET
`
`802
`
`COMPUTE CONVERSATION
`RECORD BIN FROM HASH
`
`803
`
`REQUEST RECORD BIN/
`BUCKET FROM CACHE 7-- 804
`
`806
`
`805
`
`ORE BUCKET
`IN THE BIN?
`
`NO
`
`SET UFKB FOR
`PACKET AS 'NEW'
`
`YES
`COMPARE CURRENT BIN
`AND BUCKET RECORD KEY
`TO PACKET
`
`807
`
`NEXT BUCKET
`
`KEY MATCH?
`
`808
`
`809
`
`811
`
`812
`
`YES
`
`MARK RECORD BIN AND (cid:9)
`BUCKET 'IN PROCESS' IN / (cid:9)
`CACHE AND TIMESTAMP
`•
`SET UFKB FOR PACKET
`AS 'FOUND'
`
`n
`—
`
`UPDATE STATISTICS FOR
`RECORD IN CACHE
`
`813 —(:) (cid:9)
`
`FIG. 8
`
`NOAC Ex. 1005 Page 10
`
`(cid:9)
`

`

`U.S. Patent (cid:9)
`
`Oct. 11, 2005
`
`Sheet 9 of 18 (cid:9)
`
`US 6,954,789 B2
`
`c 902
`
`Qs, (cid:9) 910
`
`BIND LOOKU
`REQUEST
`
`ERPC
`
`909
`
`EXTRACT PORT
`
`GET 'PROGRAM',
`'VERSION' AND
`'PROTOCOL (TCP OR
`UDP)'
`
`908
`SAVE REQUEST
`
`SAVE 'PROGRAM',
`'VERSION' AND
`'PROTOCOL (TCP OR
`UDP)' WITH
`DESTINATION
`NETWORK ADDRESS.
`BOTH MAKE A KEY.
`
`)
`
`907
`
`(cid:9) 1RPC'-‘‘\)
`
`BIND
`LOOKUP
`REPLY
`
`901
`
`RPC
`REPLY
`ORTMAPP
`
`RPC
`NNOUNCME
`ORTMAPP
`
`903
`
`904
`
`EXTRACT PROGRAM
`
`GET 'PROGRAM',
`'VERSION', 'PORT AND
`'PROTOCOL (TCP OR
`UDP)
`
`7
`CREATE SERVER STATE
`
`SAVE 'PROGRAM',
`VERSION', 'PORT AND
`'PROTOCOL (TCP OR
`UDP)' WITH NETWORK
`ADDRESS IN SERVER
`STATE DATABASE. KEY
`ON SERVER ADDRESS
`AND TCP OR UDP PORT.
`
`(--- 905
`
`906 —\
`
`9001
`
`LOOKUP REQUE
`
`FIND 'PROGRAM'
`AND 'VERSION'
`WITH LOOKUP OF
`SOURCE NETWORK
`ADDRESS.
`
`EXTRACT
`PROGRAM
`
`GET 'PORT AND
`'PROTOCOL (TCP
`OR UDP)'.
`
`2
`
`FIG. 9
`
`NOAC Ex. 1005 Page 11
`
`

`

`U.S. Patent (cid:9)
`
`Oct. 11, 2005
`
`Sheet 10 of 18 (cid:9)
`
`US 6,954,789 B2
`
`1000 --,k
`
`PATTERN
`RECOGNITION
`DATABASE
`MEMORY
`
`100 (cid:9)
`
`1 001
`
`EXTRACTION
`OPERATIONS
`DATABASE
`MEMORY
`
`wilav
`
`100
`
`7
`
`1005---v_
`
`HOST INTERFACE MULTIPLEXR & CONTROL REGISTERS
`
`1031
`\-1004
`"K.7
`
`k INFO OUT
`!
`
`CONTRL (N
`
`"4... 7
`
`EXTRACTION ENGINE
`(SLICER)
`
`1•111IP•milTIMINIIIIIIIII.
`
`1031-1
`
`1007
`
`1013—
`
`11
`
`
`
`100 (cid:9)6—\
`PATTERN
`\ RECOGNITN (cid:9)
`ENGINE
`(cid:9)
`(PRE)
`
`1008Th
`
`PACKE
`INPUT
`
`(-1012
`
`10211
`
`V
`
`PARSER INPUT BUFFER
`MEMORY
`
`PARSER I (cid:9)
`OUTPUT PACKET KEY
`BUFFER AND PAYLOA
`MEMORY I
`
`/
`
`PACKET\
`START/ INPUT BUFFER
`INTERFACE
`CONTROL
`
`NEXT
`PACKET
`
`101
`
`1011
`
`1025
`
`ANALYZER
`INTERFACE
`CONTROL
`
`DATA REA Y
`
`ANALYZER
`READY
`
`1022
`1023
`
`HG. 10
`
`1027 i
`
`NOAC Ex. 1005 Page 12
`
`(cid:9)
`

`

`U.S. Patent (cid:9)
`
`Oct. 11, 2005 (cid:9)
`
`Sheet 11 of 18 (cid:9)
`
`US 6,954,789 B2
`
`1100
`
`1103
`
`LOOKUP/
`UPDATE
`ENGINE
`(LUE)
`
`
`
`STATE
`PROCESSR
`, I NSTRUCN
`} DATABASE
`1109 (cid:9)
`(S PI D)
`
`1115
`
`2—)
`1118 112
`
`
`1107
`
`A NALYZE F
`HOST
`INTER FAC
`AND
`CONTROL
`(AC IC)
`
`HOST
`BUS
`INTER-
`FACE
`(HIB)
`
`-77
`L.
`
`UNIFIED
`FLOW
`/LA (cid:9) K EY
`PARSER
`INTER-
`sc—i1BUFFER
`(UFKB)
`FACE
`
`1108
`
`CACHE
`
`STATE
`PROCESSR
`(SP)
`
`1111111
`
`.
`
`FLOW
`INSERTION/
`DELETION
`ENGINE
`(FIDE)
`
`—1110
`
`FIG. 11
`
`1123?
`
`UNIFIED
`MEMORY
`CONTROL
`(U MC)
`
`MEMORY
`INTER-
`FAC E
`
`11.111111111111k
`
`NOAC Ex. 1005 Page 13
`
`(cid:9)
`(cid:9)
`

`

`U.S. Patent (cid:9)
`
`Oct. 11, 2005
`
`Sheet 12 of 18 (cid:9)
`
`US 6,954,789 B2
`
`1201
`
`UFKB ENTRY FOR
`PACKET WITH
`STATUS 'NEW'
`
`1202
`
`1200 ----A
`
`j-1203
`
`v
`ACCESS
`CONVERSATION
`RECORD BIN
`
`i.
`
`REQUEST RECORD BIN/
`_7-1204
`BUCKET FROM CACHE
`
`1206-1
`
`REQUEST NEXT
`BUCKET FROM
`CACHE
`
`1205
`
`1208
`
`1210----\
`
`SET UFKB FOR
`PACKET AS
`'DROP'
`
`INSERT KEY AND HASH
`N BUCKET, MARK 'USED
`WITH TIM ESTAMP
`
`COMPARE CURRENT BI
`AND BUCKET RECORD
`KEY TO PACKET
`
`1209
`
`MARK RECORD BIN AND
`BUCKET 'IN PROCESS'
`AND 'NEW IN CACHE
`
`1211
`
`1212---\___
`
`SET INITIAL STATISTICS
`FOR RECORD IN CACHE
`
`1213
`
`FIG. 12
`
`NOAC Ex. 1005 Page 14
`
`(cid:9)
`

`

`U.S. Patent (cid:9)
`
`Oct. 11, 2005
`
`Sheet 13 of 18 (cid:9)
`
`US 6,954,789 B2
`
`1300
`
`1301
`
`UFKB ENTRY FOR
`PACKET WITH STATUS
`'NEW' OR 'FOUND' (cid:9)
`71,
`SET STATE PROCESSOR
`INSTRUCTION POINTER TO
`VALUE FOUND IN UFKB ENTRY
`
`FETCH INSTRUCTION FROM
`STATE PROCESSOR
`INSTRUCTION MEMORY
`
`1302
`
`1303
`
`1304
`
`PERFORM OPERATION BASED
`ON THE STATE INSTRUCTION
`
`1305
`
`SET STATE
`PROCESSOR
`INSTRUCTION
`POINTER TO
`VALUE FOUND IN
`CURRENT STATE
`
`NO
`
`DONE PROCESSING
`STATES FOR THIS
`PACKET?
`
`1307
`
`1308
`1310
`
`- (cid:9)
`SAVE STATE
`PROCESSOR
`INSTRUCTION
`1 NO
`POINTER IN
`CURRENT FLOW
`RECORD
`
`YES
`
`DONE PROCESSING
`TATES FOR THIS FLO
`
`1309
`
`YES
`
`SET AND SAVE FLOW REMOVAL
`j-1311
`STATE PROCESSOR (cid:9)
`INSTRUCTION IN CURRENT
`FLOW RECORD
`
`1313
`
`FIG. 13
`
`NOAC Ex. 1005 Page 15
`
`

`

`U.S. Patent (cid:9)
`
`Oct. 11, 2005
`
`Sheet 14 of 18 (cid:9)
`
`US 6,954,789 B2
`
`r"-
`
`4 (cid:9)
`
`4 (cid:9)
`
`r
`CO
`0
`•••••
`
`0_ Z
`zkli 0
`..z17.:
`-NwNOPm<
`>-Opm
`0<0
`,9?- Nr z< L
`"k-
`- <
`z
`...
`
`-
`
`w z u)
`w soz
`z m — 0
`MD 1--
`
`W1-00 1—
`<<
`1— D<CM
`
`<11i 1—
`cc
`MI—
`Xm
`cp w0
`
`21
`CCuj i
`w
`1 CC, >-
`M'
`<COI
`MD
`w 1
`
`NOAC Ex. 1005 Page 16
`
`(cid:9)
`

`

`U.S. Patent (cid:9)
`
`Oct. 11, 2005
`
`Sheet 15 of 18 (cid:9)
`
`US 6,954,789 B2
`
`CD
`0
`LC) ,-.
`
`>-
`cc
`u) 0
`Om
`i w
`2
`
`co 0u, •,--
`
`4111----11.
`0
`LU
`
`2
`
`LU
`1-
`
`0
`
`Tr
`0
`LO
`•-•
`
`__.
`
`w
`P
`(i) (cid:9)
`c
`co_
`a
`m
`u_5
`< 0 2
`_.1
`I-- (cid:9)
`Li- 2
`4:C (cid:9)
`....
`
`0c
`
`W
`N
`
`< (i)1 z
`<
`
`cc
`w
`cc (V,
`Q a_
`
`NOAC Ex. 1005 Page 17
`
`(cid:9)
`

`

`U.S. Patent (cid:9)
`
`Oct. 11, 2005
`
`Sheet 16 of 18 (cid:9)
`
`US 6,954,789 B2
`
`1602
`
`0 - 3 Bytes
`
`Dst MAC
`offset 0 - 11 Dst MAC I Src MAC —
`Src MAC
`
`k 1600
`
`(cid:9)_i 1604
`
`1608
`
`1612
`
`__Dst Hash (21 (cid:9)
`
`/N (cid:9)
`
`Dst MAC (6)
`
`Src MAC (6)
`
` 1606
`
`1610
`..------2
`
`1614 Src Hash (2;
`
`.,1_2 Offs
`et = 12
`
`FIG. 16
`
`NOAC Ex. 1005 Page 18
`
`(cid:9)
`

`

`U.S. Patent (cid:9)
`
`Oct. 11, 2005
`
`Sheet 17 of 18 (cid:9)
`
`US 6,954,789 B2
`
`1702
`
`offset
`12 to 13
`
`Type
`
`1704
`
`1706
`
`lr-- 1700
`
`1708 (cid:9)
`
`1710
`
`Type (2)
`Hash ,1)
`
`1_.L.3 Off
`
`et = 14
`
`FIG. 17A
`
`1712
`
`L3 to
`[L3 +
`OHL /
`- 1]
`
`irLIF (cid:9)
`
`Protocol
`Src Address
`Dst Address
`I 2717 at71111117
`
`A
`fA
`
`IDP = 0x0600*
`IP = 0x0800*
`CHAOSNET = 0x0804
`ARP = 0x0806
`VIP = Ox0BAD*
`VLOOP = OxOBAE
`VECHO = OxOBAF
`NETBIOS-3COM = Ox3C00 -
`0x3COD
`DEC-MOP = 0x6001
`DEC-RC = 0x6002
`DEC-DRP = 0x6003*
`DEC-LAT = 0x6004
`DEC-DIAG = 0)(6005
`DEC-LAVC = 0x6007
`RARP = 0x8035
`ATALK= Ox809B*
`VLOOP = 0x80C4
`VECHO = 0x8005
`SNA-TH = 0x80D5*
`ATALKARP= 0x80F3
`IPX = 0x8137*
`SNMP = 0x814C#
`IPv6 = Ox86DD'
`LOOPBACK = 0x9000
`Apple = 0x080007
`* L3 Decoding
`# L5 Decoding
`
`1752
`
`ICMP = 1
`IGMP = 2
`GGP = 3
`TCP = 6*
`EGP =8
`IGRP = 9
`PUP = 12
`CHAOS = 16
`UDP = 17*
`IDP = 22#
`ISO-TP4 = 29
`DDP = 37#
`ISO-IP = 80
`VIP = 83#
`EIGRP = 88
`OSPF = 89
`
`IF— 1750
`
`Dst Address
`Dst Hash (2)
`Src Address
`Src Hash (2)
`
`
`
`of (1) Protoc
`
`L4 Off' et = L3 + (IHU4)
`
`FIG. 17B
`
`* L4 Decoding
`# L3 Re-Decoding
`
`NOAC Ex. 1005 Page 19
`
`(cid:9)
`

`

`U.S. Patent
`
`Oct. 11,2005
`
`Sheet 18 of 18
`
`US 6,954,789 B2
`
`PROTOCOL
`TYPE (Ili
`
`AL---1800
`
`FIELD LENGTH
`
`I- OCA,
`(Opps N
`
`1642
`
`1802-2
`1802-1
`
`1802-M
`
`FIG. 18A
`
`1870
`
`LUT NUM 4.
`
`__Ji
`0
`0
`0
`O cc
`
`[ (cid:9) I
`
`FIG. 18B
`
`NOAC Ex. 1005 Page 20
`
`

`

`1
`METHOD AND APPARATUS FOR
`MONITORING TRAFFIC IN A NETWORK
`
`US 6,954,789 B2
`
`CROSS-REFERENCE TO RELATED
`APPLICATION (cid:9)
`
`5
`
`10
`
`15
`
`20
`
`This invention is a continuation of U.S. patent application
`Ser. No. 09/608,237 for METHOD AND APPARATUS FOR
`MONITORING TRAFFIC IN A NETWORK to inventors
`Dietz, et al., filed Jun. 30, 2000, now U.S. Pat. No. 6,651,
`099, the contents of which are incorporated herein by
`reference.
`This invention claims the benefit of U.S. Provisional
`Patent Application Ser. No.: 60/141,903 for METHOD AND
`APPARATUS FOR MONITORING TRAFFIC IN A NET-
`WORK to inventors Dietz, et al., filed Jun. 30, 1999, the
`contents of which are incorporated herein by reference.
`This application is related to the following U.S. patent
`applications, each filed concurrently with the present
`application, and each assigned to the assignee of the present
`invention:
`U.S. patent application Ser. No. 09/609,179 for PRO-
`CESSING PROTOCOL SPECIFIC INFORMATION IN
`PACKETS SPECIFIED BYA PROTOCOL DESCRIPTION
`LANGUAGE, to inventors Koppenhaver, et al., filed Jun. 25
`30, 2000, now U.S. Pat. No. 6,665,725, and incorporated
`herein by reference.
`U.S. patent application Ser. No. 09/608,126 for
`RE-USING INFORMATION FROM DATA TRANSAC-
`TIONS FOR MAINTAINING STATISTICS IN NET-
`WORK MONITORING, to inventors Dietz, et al., filed Jun.
`30, 2000, now U.S. Pat. No. 6,839,751, and incorporated
`herein by reference.
`U.S. patent application Ser. No. 09/608,266 for ASSO-
`CIATIVE CACHE STRUCTURE FOR LOOKUPS AND
`UPDATES OF FLOW RECORDS IN A NETWORK
`MONITOR, to inventors Sarkissian, et al., filed Jun. 30,
`2000, now U.S. Pat. No. 6,771,646, and incorporated herein
`by reference.
`U.S. patent application Ser. No. 09/608,267 for STATE
`PROCESSOR FOR PATTERN MATCHING IN A NET-
`WORK MONITOR DEVICE, to inventors Sarkissian, et al.,
`filed Jun. 30, 2000, now U.S. Pat. No. 6,789,116, and
`incorporated herein by reference.
`
`2
`especially important that selected users be able to access a
`network remotely in order to generate reports on network
`use in real time. Similarly, a need exists for a real-time
`network monitor that can provide alarms notifying selected
`users of problems that may occur with the network or site.
`One prior art monitoring method uses log files. In this
`method, selected network activities may be analyzed retro-
`spectively by reviewing log files, which are maintained by
`network servers and gateways. Log file monitors must
`access this data and analyze ("mine") its contents to deter-
`mine statistics about the server or gateway. Several problems
`exist with this method, however. First, log file information
`does not provide a map of real-time usage; and secondly, log
`file mining does not supply complete information. This
`method relies on logs maintained by numerous network
`devices and servers, which requires that the information be
`subjected to refining and correlation. Also, sometimes infor-
`mation is simply not available to any gateway or server in
`order to make a log file entry.
`One such case, for example, would be information con-
`cerning NetMeeting® (Microsoft Corporation, Redmond,
`Wash.) sessions in which two computers connect directly on
`the network and the data is never seen by a server or a
`gateway.
`Another disadvantage of creating log files is that the
`process requires data logging features of network elements
`to be enabled, placing a substantial load on the device, which
`results in a subsequent decline in network performance.
`Additionally, log files can grow rapidly, there is no standard
`means of storage for them, and they require a significant
`amount of maintenance.
`Though Netflow@ (Cisco Systems, Inc., San Jose, Calif.),
`RMON2, and other network monitors are available for the
`35 real-time monitoring of networks, they lack visibility into
`application content and are typically limited to providing
`network layer level information.
`Pattern-matching parser techniques wherein a packet is
`parsed and pattern filters are applied are also known, but
`these too are limited in how deep into the protocol stack they
`can examine packets.
`Some prior art packet monitors classify packets into
`connection flows. The term "connection flow" is commonly
`used to describe all the packets involved with a single
`connection. A conversational flow, on the other hand, is the
`sequence of packets that are exchanged in any direction as
`a result of an activity—for instance, the running of an
`application on a server as requested by a client. It is desirable
`to be able to identify and classify conversational flows rather
`than only connection flows. The reason for this is that some
`conversational flows involve more than one connection, and
`some even involve more than one exchange of packets
`between a client and server. This is particularly true when
`using client/server protocols such as RPC, DCOMP, and
`SAP, which enable a service to be set up or defined prior to
`any use of that service.
`An example of such a case is the SAP (Service Adver-
`tising Protocol), a NetWare (Novell Systems, Provo, Utah)
`protocol used to identify the services and addresses of
`servers attached to a network. In the initial exchange, a client
`might send a SAP request to a server for print service. The
`server would then send a SAP reply that identifies a par-
`ticular address—for example, SAP#5—as the print service
`on that server. Such responses might be used to update a
`table in a router, for instance, known as a Server Information
`Table. A client who has inadvertently seen this reply or who
`has access to the table (via the router that has the Service
`
`30
`
`40
`
`45
`
`FIELD OF INVENTION
`
`The present invention relates to computer networks, spe-
`cifically to the real-time elucidation of packets communi-
`cated within a data network, including classification accord-
`ing to protocol and application program.
`
`50
`
`BACKGROUND TO THE PRESENT
`INVENTION
`There has long been a need for network activity monitors. 55
`This need has become especially acute, however, given the
`recent popularity of the Internet and other internets—an
`"internet" being any plurality of interconnected networks
`which forms a larger, single network. With the growth of
`networks used as a collection of clients obtaining services 60
`from one or more servers on the network, it is increasingly
`important to be able to monitor the use of those services and
`to rate them accordingly. Such objective information, for
`example, as which services (i.e., application programs) are
`being used, who is using them, how often they have been 65
`accessed, and for how long, is very useful in the mainte-
`nance and continued operation of these networks. It is
`
`NOAC Ex. 1005 Page 21
`
`

`

`US 6,954,789 B2
`
`3
`Information Table) would know that SAP#5 for this particu-
`lar server is a print service. Therefore, in order to print data
`on the server, such a client would not need to make a request
`for a print service, but would simply send data to be printed
`specifying SAP#5. Like the previous exchange, the trans-
`mission of data to be printed also involves an exchange
`between a client and a server, but requires a second con-
`nection and is therefore independent of the initial exchange.
`In order to eliminate the possibility of disjointed conversa-
`tional exchanges, it is desirable for a network packet monitor
`to be able to "virtually concatenate"—that is, to link—the
`first exchange with the second. If the clients were the same,
`the two packet exchanges would then be correctly identified
`as being part of the same conversational flow.
`Other protocols that may lead to disjointed flows, include
`RPC (Remote Procedure Call); DCOM (Distributed Com-
`ponent Object Model), formerly called Network OLE
`(Microsoft Corporation, Redmond, Wash.); and CORBA
`(Common Object Request Broker Architecture). RPC is a
`programming interface from Sun Microsystems (Palo Alto,
`Calif.) that allows one program to use the services of another
`program in a remote machine. DCOM, Microsoft's coun-
`terpart to CORBA, defines the remote procedure call that
`allows those objects—objects are self-contained software
`modules—to be run remotely over the network. And
`CORBA, a standard from the Object Management Group
`(OMG) for communicating between distributed objects,
`provides a way to execute programs (objects) written in
`different programming languages running on different plat-
`forms regardless of where they reside in a network.
`What is needed, therefore, is a network monitor that
`makes it possible to continuously analyze all user sessions
`on a heavily trafficked network. Such a monitor should
`enable non-intrusive, remote detection, characterization,
`analysis, and capture of all information passing through any
`point on the network (i.e., of all packets and packet streams
`passing through any location in the network). Not only
`should all the packets be detected and analyzed, but for each
`of these packets the network monitor should determine the
`protocol (e.g., http, ftp, H.323, VPN, etc.), the application/
`use within the protocol (e.g., voice, video, data, real-time
`data, etc.), and an end user's pattern of use within each
`application or the application context (e.g., options selected,
`service delivered, duration, time of day, data requested, etc.).
`Also, the network monitor should not be reliant upon server
`resident information such as log files. Rather, it should allow
`a user such as a network administrator or an Internet service
`provider (ISP) the means to measure and analyze network
`activity objectively; to customize the type of data that is
`collected and analyzed; to undertake real time analysis; and
`to receive timely notification of network problems.
`Considering the previous SAP example again, because
`one features of the invention is to correctly identify the
`second exchange as being associated with a print service on
`that server, such exchange would even be recognized if the
`clients were not the same. What distinguishes this invention
`from prior art network monitors is that it has the ability to
`recognize disjointed flows as belonging to the same conver-
`sational flow.
`The data value in monitoring network communications
`has been recognized by many inventors. Chiu, et al.,
`describe a method for collecting information at the session
`level in a computer network in U.S. Pat. No. 5,101,402,
`titled "APPARATUS AND METHOD FOR REAL-TIME
`MONITORING OF NETWORK SESSIONS AND A
`LOCAL AREA NETWORK" (the "402 patent"). The 402
`patent specifies fixed locations for particular types of pack-
`
`1 0
`
`4
`ets to extract information to identify session of a packet. For
`example, if a DECnet packet appears, the 402 patent looks
`at six specific fields (at 6 locations) in the packet in order to
`identify the session of the packet. If, on the other hand, an
`5 IP packet appears, a different set of six different locations is
`specified for an IP packet. With the proliferation of
`protocols, clearly the specifying of all the possible places to
`look to determine the session becomes more and more
`difficult. Likewise, adding a new protocol or application is
`difficult. In the present invention, the locations examined
`and the information extracted from any packet are adap-
`tively determined from information in the packet for the
`particular type of packet. There is no fixed definition of what
`to look for and where to look in order to form an identifying
`signature. A monitor implementation of the present
`is invention, for example, adapts to handle differently IEEE
`802.3 packet from the older Ethernet Type 2 (or Version 2)
`DIX (Digital-Intel-Xerox) packet.
`The 402 patent system is able to recognize up to the
`session layer. In the present invention, the number of levels
`20 examined varies for any particular protocol. Furthermore,
`the present invention is capable of examining up to whatever
`level is sufficient to uniquely identify to

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