throbber
(12) United States Patent (cid:9)
`Dietz et al. (cid:9)
`
`(to) Patent No.: (cid:9)
`(45) Date of Patent: (cid:9)
`
`US 6,665,725 B1
`Dec. 16, 2003
`
`11111111111101111111111!!!!11111211111111111111111110111111
`
`(54)
`
`(75)
`
`PROCESSING PROTOCOL SPECIFIC
`INFORMATION IN PACKETS SPECIFIED BY
`A PROTOCOL DESCRIPTION LANGUAGE
`
`Inventors: Russell S. Dietz, San Jose, CA (US);
`Andrew A. Koppenhaver, Littleton,
`CO (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 537 days.
`
`(21)
`
`Appl. No.: 09/609,179
`
`(22)
`
`Filed: (cid:9)
`
`Jun. 30, 2000
`
`(60)
`
`(51)
`(52)
`
`(58)
`
`(56)
`
`Related U.S. Application Data
`Provisional application No. 60/141,903, filed on Jun. 30,
`1999.
`
`Int. C1.7 (cid:9)
`U.S. Cl. (cid:9)
`
` GO6F 13/00
` 709/230; 709/246; 709/228;
`370/389
` 709/203, 206,
`Field of Search (cid:9)
`709/216, 217, 222, 246, 225, 228, 230,
`232; 703/26; 370/489, 13, 17
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`4,736,320 A
`4,891,639 A
`5,101,402 A
`5,247,517 A
`5,247,693 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
`
`4/1988 Bristol
`1/1990 Nakamura (cid:9)
`3/1992 Chui et al. (cid:9)
`9/1993 Ross et al. (cid:9)
`9/1993 Bristol
`5/1994 Phaal (cid:9)
`8/1994 Machida (cid:9)
`9/1994 Kalkunte et al. (cid:9)
`11/1994 Hershey et al. (cid:9)
`12/1994 Hershey et al. (cid:9)
`2/1995 Crowther et al. (cid:9)
`5/1995 Hekhuis (cid:9)
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`364/300
`340/825.5
`370/17
`370/85.5
`709/203
`370/13
`365/49
`370/92
`370/17
`364/550
`370/60
`364/715.02
`
`5,414,704 A (cid:9)
`
`5/1995 Spinney (cid:9)
`
` 370/60
`
`(List continued on next page.)
`
`OTHER PUBLICATIONS
`
`"Technical Note: the Narus System," Downloaded Apr. 29,
`1999 from www.narus.com, Narus Corporation, Redwood
`City California.
`
`Primary Examiner—Hosain T. Alam
`Assistant Examiner (cid:9) Khanh Quang Dinh
`(74) Attorney, Agent, or Firm—Dov Rosenfeld; Inventek
`
`(57) (cid:9)
`
`ABSTRACT
`
`A method of performing protocol specific operations on a
`packet passing through a connection point on a computer
`network. The packet contents conform to protocols of a
`layered model wherein the protocol at a at a particular layer
`level may include one or a set of child protocols defined for
`that level. The method includes receiving the packet and
`receiving a set of protocol descriptions for protocols may be
`used in the packet. A protocol description for a particular
`protocol at a particular layer level includes any child pro-
`tocols of the particular protocol, and for any child protocol,
`where in the packet information related to the particular
`child protocol may be found. A protocol description also
`includes any protocol specific operations to be performed on
`the packet for the particular protocol at the particular layer
`level. The method includes performing the protocol specific
`operations on the packet specified by the set of protocol
`descriptions based on the base protocol of the packet and the
`children of the protocols used in the packet. A particular
`embodiment includes providing the protocol descriptions in
`a high-level protocol description language, and compiling to
`the descriptions into a data structure. The compiling may
`further include compressing the data structure into a com-
`pressed data structure. The protocol specific operations may
`include parsing and extraction operations to extract identi-
`fying information. The protocol specific operations may also
`include state processing operations defined for a particular
`state of a conversational flow of the packet.
`
`17 Claims, 20 Drawing Sheets
`
`PARSER
`301
`
`ANALYZER
`303
`
`,.- 1502
`(
`
`PACKET
`ACQUISITION (cid:9)
`DEVICE
`
`
`
`MONITOR
`300 (cid:9)
`
`324
`
`DATABASE
`OF
`FLOWS
`(MFMORY)
`
`(1504 r 1506
`
`(cid:9)0. HOST
`PROCESSOR
`
`HOST
`MEMORY
`
`11
`
`(- 1510 (cid:9)
`
`NETWORK
`INTERFACE
`CARD
`
`DISK
`
`DB
`
`1508
`
`NOAC Ex. 1002 Page 1
`
`(cid:9)
`(cid:9)
`

`

`US 6,665,725 B1
`Page 2
`
`U.S. PATENT DOCUMENTS
`
`7/1995 Galloway (cid:9)
`5,430,709 A (cid:9)
`7/1995 Harper (cid:9)
`5,432,776 A (cid:9)
`2/1996 Waclawsky et al. (cid:9)
`5,493,689 A (cid:9)
`3/1996 (cid:9) Hershey et al. (cid:9)
`5,500,855 A (cid:9)
`4/1996 (cid:9) Terasaka et al. (cid:9)
`5,511,215 A (cid:9)
`10/1996 (cid:9) Hershey et al. (cid:9)
`5,568,471 A (cid:9)
`11/1996 (cid:9) Stansfield et al. (cid:9)
`5,574,875 A (cid:9)
`12/1996 (cid:9) Hershey et al. (cid:9)
`5,586,266 A (cid:9)
`2/1997 Shwed (cid:9)
`5,606,668 A (cid:9)
`3/1997 (cid:9) Large et al. (cid:9)
`5,608,662 A (cid:9)
`5/1997 (cid:9)
`Iddon et al. (cid:9)
`5,634,009 A (cid:9)
`7/1997 (cid:9) Van Seters et al. (cid:9)
`5,651,002 A (cid:9)
`5,680,585 A (cid:9) * 10/1997 (cid:9) Bruell (cid:9)
`5,684,954 A (cid:9)
`11/1997 (cid:9) Kaiserswerth et al.
`5,703,877 A (cid:9)
`12/1997 (cid:9) Nuber et al. (cid:9)
`5,721,827 A (cid:9)
`2/1998 (cid:9) Logan et al. (cid:9)
`5,732,213 A (cid:9)
`3/1998 (cid:9) Gessel et al. (cid:9)
`5,740,355 A (cid:9)
`4/1998 Watanabe et al. (cid:9)
`5,761,424 A (cid:9)
`6/1998 Adams et al. (cid:9)
`5,764,638 A (cid:9)
`6/1998 Ketchum (cid:9)
`5,781,735 A (cid:9)
`7/1998 Southard (cid:9)
`5,784,298 A (cid:9)
`7/1998 (cid:9) Hershey et al. (cid:9)
`
`* (cid:9)
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`370/13
`370/17
`709/206
`370/17
`709/246
`370/17
`395/403
`709/216
`709/216
`364/724.01
`709/206
`370/392
`703/26
`709/203
`370/395
`709/217
`709/216
`395/183.21
`709/232
`370/401
`709/238
`364/557
`
`5,787,253 A
`5,805,808 A
`5,812,529 A
`5,819,028 A
`5,825,774 A
`5,826,017 A
`5,835,726 A
`5,838,919 A
`5,841,895 A
`5,850,386 A
`5,850,388 A
`5,862,335 A
`5,878,420 A
`5,893,155 A
`5,903,754 A
`5,917,821 A
`6,014,380 A
`6,272,151 B1 *
`6,430,409 B1 *
`6,516,337 B1 *
`6,519,568 B1 *
`
`7/1998
`9/1998
`9/1998
`10/1998
`10/1998
`10/1998
`11/1998
`11/1998
`11/1998
`12/1998
`12/1998
`1/1999
`3/1999
`4/1999
`5/1999
`6/1999
`1/2000
`8/2001
`8/2002
`2/2003
`2/2003
`
`McCreery et al. (cid:9)
`Hansani et al. (cid:9)
`Czarnik et al. (cid:9)
`Manghirmalani et al.
`Ready et al. (cid:9)
`Holzmann (cid:9)
`Shwed et al. (cid:9)
`Schwaller et al. (cid:9)
`Huffman (cid:9)
`Anderson et al. (cid:9)
`Anderson et al. (cid:9)
`Welch, Jr. et al. (cid:9)
`de la Salle (cid:9)
`Cheriton (cid:9)
`Pearson (cid:9)
`Gobuyan et al. (cid:9)
`Hendel et al. (cid:9)
`Gupta et al. (cid:9)
`Rossmann (cid:9)
`Tripp et al. (cid:9)
`Harvey et al. (cid:9)
`
`709/227
`
`709/203
`
`370/245
`
`... 709/203
`
`370/401
`
`709/206
`
`709/228
`
`709/208
`
`382/155
`
`370/241
`
`370/252
`
`709/232
`
`707/10
`
`711/144
`
`709/238
`
`370/392
`
`370/392
`
`370/489
`
`455/422.1
`
`709/202
`
`705/1
`
`* cited by examiner
`
`NOAC Ex. 1002 Page 2
`
`(cid:9)
`(cid:9)
`(cid:9)
`(cid:9)
`(cid:9)
`(cid:9)
`(cid:9)
`(cid:9)
`(cid:9)
`(cid:9)
`(cid:9)
`(cid:9)
`(cid:9)
`(cid:9)
`(cid:9)
`(cid:9)
`(cid:9)
`(cid:9)
`(cid:9)
`(cid:9)
`(cid:9)
`(cid:9)
`

`

`U.S. Patent (cid:9)
`
`Dec. 16, 2003
`
`Sheet 1 of 20 (cid:9)
`
`US 6,665,725 B1
`
`100
`
`CLIENT 4
`
`-4 (cid:9)
`
`M
`107
`
`CLIENT 3
`
`----
`106
`
`___J108
`
`116
`
`Th110
`
`121
`
`DATA COMMUNICATIONS
`NETWORK
`
`SERVER 2
`
`102
`
`125
`
`118
`
`123 1
`
`105
`
`CLIENT 1
`M
`104
`
`FIG. 1
`
`NOAC Ex. 1002 Page 3
`
`(cid:9)
`

`

`U.S. Patent (cid:9)
`
`Dec. 16, 2003
`
`Sheet 2 of 20 (cid:9)
`
`US 6,665,725 B1
`
`C\J
`0
`U-
`
`. .=
`1 [II 0 ? 1
`
`
`0.
`
`0
`0
`Of=
`00
`
`m
`
`NOAC Ex. 1002 Page 4
`
`

`

`U.S. Patent (cid:9)
`
`Dec. 16, 2003
`
`Sheet 3 of 20 (cid:9)
`
`US 6,665,725 B1
`
`ANALYZER
`
`\ z
`
`co
`
`I (cid:9)
`
`co
`
`LL
`
`H z° 0
`Qua=
`cC — 2 =
`F_ I— cc LLI
`411 (cid:9)
`X 0
`LL— z
`a
`
`co
`
`Z W 0
`< rLI Z r,- <
`'NNO LLI M CC
`›- 0 r CC
`<° <
`0- U_
`Z
`z
`O
`co
`
`cc cc Z
`< OW
`0 13
`Z < <
`< H
`W r
`<
`< w
`
`CC (cid:9)
`
`co
`0
`co
`
`CC
`cc
`LU LU
`_J N
`6: 2 2
`< 0 a_
`0 0
`
`(1\\ (cid:9)
`
`_j Z uj\
`0 0 0
`<
`0 0-
`I— 5 0
`0 (i) Z
`Irf CC W <
`CL 0
`
`co
`
`co
`co
`
`NOAC Ex. 1002 Page 5
`
`(cid:9)
`(cid:9)
`

`

`U.S. Patent (cid:9)
`
`Dec. 16, 2003
`
`Sheet 4 of 20 (cid:9)
`
`US 6,665,725 B1
`
`CX-\-- 401
`
`
`
`kir (cid:9)
`
`HIGH LEVEL
`PACKET
`DECODING
`DESCRIPTIONS
`
`402
`
`COMPILE
`DESCRIPTIONS
`
`C 403
`
`405
`
`GENERATE
`PACKET
`STATE
`INSTRUCTIONS
`AND
`OPERATIONS
`
`404
`
`GENERATE
`PACKET
`PARSE AND
`EXTRACT
`OPERATIONS
`
`406 —27ATTEFAIbPARSE
`
`EXTRACTION
`DATABASE
`
`408 (cid:9)
`
`409 D
`
`407
`
`STATE
`PROCESSOR \,
`INSTRUCTION
`DATABASE
`
`LOAD
`PARSING
`SUBSYSTEM
`MEMORY
`
`LOAD STATE
`INSTRUCTION, (cid:9)
`DATABASE
`MEMORY
`
`400
`
`410
`
`FIG. 4
`
`NOAC Ex. 1002 Page 6
`
`

`

`U.S. Patent (cid:9)
`
`Dec. 16, 2003
`
`Sheet 5 of 20 (cid:9)
`
`US 6,665,725 B1
`
`503
`
`504
`
`501
`
`/INPUT PACKET
`
`502
`
`LOAD PACKET 14 (cid:9)
`COMPONENT
`
`NO
`
`512
`
`BUILD
`PACKET
`KEY
`
`YES
`
`V
`FETCH NODE ANC
`--1- 505
`PROCESS FROM
`PATTERNS
`
`506
`
`NO
`
`YES
`
`513
`
`510
`
`500
`
`508
`
`YES
`ir
`EXTRACT
`ELEMENTS
`
`509
`
`FIG. 5
`
`NOAC Ex. 1002 Page 7
`
`

`

`U.S. Patent (cid:9)
`
`Dec. 16, 2003
`
`Sheet 6 of 20 (cid:9)
`
`US 6,665,725 B1
`
`601
`
`602
`
`/ PACKET
`
`COMPONENT AND
`PATTERN NODE
`
`603 --...
`
`•
`LOAD PACKET
`COMPONENT
`
`604
`
`MORE PACKE
`COMPONENT
`
`610
`
`LOAD KEY
`BUFFER
`
`EYES
`FETCH EXTRACTION
`AND PROCESS FROM'?
`' 605
`PATTERNS (cid:9)
`
`NO
`606
`
`ORE EXTRACTIO
`ELEMENTS?
`
`NOI.
`
`NEXT
`PACKET
`COMPONENT
`•
`
`E
`
`• YS
`607 1
`APPLY EXTRACTION
`PROCESS TO
`COMPONENT
`
`611
`
`609
`
`600
`
`608
`
`YES (cid:9)
`
`FIG. 6
`
`NOAC Ex. 1002 Page 8
`
`

`

`U.S. Patent (cid:9)
`
`Dec. 16, 2003
`
`Sheet 7 of 20 (cid:9)
`
`US 6,665,725 B1
`
`701
`
`V
`EY BUFFER AND (cid:9)
`PATTERN NODE
`
`702
`
`•
`
`LOAD PATTERN
`703 -- --\_77 N
`ELEMENT
`
`708 (cid:9) )
`
`704
`
`NO
`
`OUTPUT TO
`ANALYZER
`
`YES
`V
`HASH KEY BUFFER
`,s- 705
`ELEMENT FROM
`PATTERN NODE
`
`V
`
`PACK KEY & HASI-
`
`v
`NEXT PACKET
`COMPONENT
`
`706
`
`707
`
`FIG. 7
`
`709
`
`700
`
`NOAC Ex. 1002 Page 9
`
`

`

`U.S. Patent (cid:9)
`
`Dec. 16, 2003
`
`Sheet 8 of 20 (cid:9)
`
`US 6,665,725 B1
`
`800
`
`801
`
`•
`/UFKB ENTRY FOR
`PACKET
`
`V
`COMPUTE CONVERSATION
`RECORD BIN FROM HASH
`
`802
`
`803
`
`•
`REQUEST RECORD BIN/
`BUCKET FROM CACHE
`
`/— 804
`
`806
`
`805
`
`ORE BUCKET
`IN THE BIN?
`
`NO
`
`SET UFKB FOR
`PACKET AS 'NEW'
`
`
`V
`COMPARE CURRENT BIN
`AND BUCKET RECORD KEY
`TO PACKET
`
`NEXT BUCKET
`
`i-N
`
`KEY MATCH?
`
`807
`
`808
`
`r- 810
`
`809
`
`YES
`•
`MARK RECORD BIN AND
`BUCKET 'IN PROCESS' IN
`CACHE AND TIMESTAMP
`•
`SET UFKB FOR PACKET
`AS 'FOUND'
`
`•
`UPDATE STATISTICS FOR
`RECORD IN CACHE
`
`811 --\_...
`
`812
`
`813-x,o FIG. 8
`
`NOAC Ex. 1002 Page 10
`
`

`

`U.S. Patent (cid:9)
`
`Dec. 16, 2003
`
`Sheet 9 of 20
`
`US 6,665,725 B1
`
`901 (cid:9)
`
`
`
`902
`
`Q,....._ 910
`
`RPC
`REPLY
`,,.
`)1 =7MAPP
`
`RPC
`NNOUNCME
`PORTMAPP
`
`RPC
`BIND LOOKU
`REQUEST
`
`909
`
`903
`
`904
`
`EXTRACT PROGRAM
`
`GET 'PROGRAM',
`VERSION', 'PORT' AND
`'PROTOCOL (TCP OR
`UDP)
`
`7
`CREATE SERVER STAT
`E
`
`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.
`
`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
`
`-IRPCV
`BIND
`LOOKUP
`REPLY l
`
`r------ 905
`
`906 --
`
`900
`
`LOOKUP REQUE
`
`FIND 'PROGRAM'
`AND VERSION'
`WITH LOOKUP OF
`SOURCE NETWORK
`ADDRESS.
`
`EXTRACT
`PROGRAM
`
`GET 'PORT' AND
`'PROTOCOL (TCP
`OR UDP)'.
`
`(cid:9)2
`
`FIG. 9
`
`NOAC Ex. 1002 Page 11
`
`

`

`U.S. Patent (cid:9)
`
`Dec. 16, 2003
`
`Sheet 10 of 20 (cid:9)
`
`US 6,665,725 B1
`
`1000 ----A
`
`PATTERN
`RECOGNITION
`DATABASE
`MEMORY
`
`100
`
`1001
`
`EXTRACTION
`OPERATIONS
`DATABASE
`MEMORY
`
`100
`
`100
`
`•• (cid:9)
`
`1031
`1004
`
`(cid:9) INR)OUT,,
`HOST INTERFACE MULTIPLEXR & CONTROL REGISTERS !CONTRL IN
`
`1006—\ PATTERN I
`RECOGNITN (cid:9)
`ENGINE I (cid:9)
`(PRE)
`
`100
`
`EXTRACTION ENGINE
`(SLICER)
`
`1031
`
`1007
`
`1013—
`
`PACKET\
`INPUT /
`
`PARSER INPUT BUFFER
`MEMORY
`
`PARSER
`
`OUTPUT PACKET KEY
`BUFFER AND PAYLOA
`Li
`MEMORY I (cid:9)
`
`1012
`
`ter, (cid:9)
`
`1021Th
`
`PACKET\
`START/
`
`INPUT BUFFER
`INTERFACE
` CONTROL
`NEXT
`PACKET
`
`101
`
`1011
`
`1025
`
`
`ANALYZER DATA READY
`INTERFACE
`
`CONTROL
`ANALYZER
`READY
`
`1023
`
`FIG. 10
`
`1027
`
`NOAC Ex. 1002 Page 12
`
`(cid:9)
`(cid:9)
`

`

`U.S. Patent (cid:9)
`
`Dec. 16, 2003
`
`Sheet 11 of 20 (cid:9)
`
`US 6,665,725 B1
`
`1103
`
`7
`LOOKUP/
`UPDATE
`ENGINE
`(LUE)
`
`o
`
`
`
`1115 (cid:9)
`
`1122 --
`
`1118
`
`1107
`
`/
`
`HOST
`BUS
`INTER-
`FACE
`(HIB)
`
`ANALYZEF
`HOST
`0 INTERFAC
`AND
`CONTROL
`(ACIC)
`
`STATE
`PROCESSR
`INSTRUCN
`DATABASE
`(SPID)
`
`u r-1108
`
`CACHE
`
`1109
`
`UNIFIED
`FLOW
`/t_k_ KEY
`PARSER
`r--t/BUFFER
`INTER-
`(UFKB)
`FACE
`
`4*
`STATE 14
`PROCESSR
`(SP)
`
`—1119 1123
`
`UNIFIED MEMORY
`MEMORY INTER-
`CONTROL 0 FACE
`(UMC)
`
`FLOW
`INSERTION/ (cid:9)
`DELETION
`ENGINE
`(FIDE)
`
`N
`
`10111•111•111111111M.
`
`1110
`
`FIG. 11
`
`NOAC Ex. 1002 Page 13
`
`(cid:9)
`(cid:9)
`

`

`U.S. Patent (cid:9)
`
`Dec. 16, 2003
`
`Sheet 12 of 20 (cid:9)
`
`US 6,665,725 B1
`
`C -X-1201
`/ UFKB ENTRY FOR
`
`V
`
`PACKET WITH
`STATUS 'NEW'
`
`1202
`
`1200------.A
`
`117
`ACCESS
`CONVERSATION
`RECORD BIN
`
`1
`
`y-1203
`
`REQUEST RECORD BIN/
`BUCKET FROM CACHE
`
`1204
`
`REQUEST NEXT
`BUCKET FROM
`CACHE
`
`1206-1
`
`1208
`
`1210
`
`SET UFKB FOR
`PACKET AS
`'DROP'
`
`1205
`
`1207
`
`1209
`
`INSERT KEY AND HASH
`N BUCKET, MARK 'USED
`WITH TIMESTAMP
`
`+
`COMPARE CURRENT BII
`AND BUCKET RECORD
`KEY TO PACKET
`
`yi,
`
`MARK RECORD BIN AND
`BUCKET 'IN PROCESS'
`AND 'NEW' IN CACHE
`
`1212— SET INITIAL STATISTICS
`FOR RECORD IN CACHE
`
`1213
`
`FIG. 12
`
`NOAC Ex. 1002 Page 14
`
`(cid:9)
`(cid:9)
`

`

`U.S. Patent (cid:9)
`
`Dec. 16, 2003
`
`Sheet 13 of 20 (cid:9)
`
`US 6,665,725 B1
`
`1301
`
`1300 ------..a / UFKB ENTRY FOR
`
`PACKET WITH STATUS
`'NEW' OR 'FOUND'
`
`1302
`
`SET STATE
`PROCESSOR
`INSTRUCTION
`POINTER TO
`VALUE FOUND IN
`CURRENT STATE
`
`,--"----
`SAVE STATE
`PROCESSOR
`INSTRUCTION
`POINTER IN
`CURRENT FLOW
`RECORD
`
`NO
`
`SET STATE PROCESSOR
`INSTRUCTION POINTER TO
`VALUE FOUND IN UFKB ENTRY
`1
`FETCH INSTRUCTION FROM r 1304
`STATE PROCESSOR
`INSTRUCTION MEMORY
`
`1303
`
`PERFORM OPERATION BASED (cid:9)
`ON THE STATE INSTRUCTION
`
`1305
`
`NO
`
`DONE PROCESSING
`STATES FOR THIS
`PACKET?
`
`1307
`
`1308
`1310
`
`YES
`
`DONE PROCESSING
`TATES FOR THIS FLO
`
`1309
`
`YES
`
`SET AND SAVE FLOW REMOVAL
`STATE PROCESSOR
`INSTRUCTION IN CURRENT
`FLOW RECORD
`
`1311
`
`1313
`
`FIG. 13
`
`NOAC Ex. 1002 Page 15
`
`(cid:9)
`

`

`U.S. Patent (cid:9)
`
`Dec. 16, 2003
`
`Sheet 14 of 20 (cid:9)
`
`US 6,665,725 B1
`
`Q Z OZ
`
`Z "- — 0
`mD
`
`1-0Z
`<,'•
`D<M"
`I-
`HW
`
`M WO
`
`co O
`
`w ww
`O m w
`<c°1
`tip
`COI
`
`r—
`
`LL
`
`Z WO
`LIJZI:C‹
`NOLLI
`>-1 01
`CC
`-° 0
`<1-14-LL
`<
`
`A
`
`NOAC Ex. 1002 Page 16
`
`(cid:9)
`

`

`U.S. Patent (cid:9)
`
`Dec. 16, 2003
`
`Sheet 15 of 20 (cid:9)
`
`US 6,665,725 B1
`
`op o
`Lc)
`
`,___
`
`>-
`I-- CE
`cf) 0
`
`Ow
`2
`
`w (cid:9)
`
`-____
`
`-5-'; (cid:9)
`
`c\J
`co
`
`mw (cid:9)
`0 (cid:9)
`< 0
`(cid:9) 2 (cid:9)
`—1 uu (cid:9)
`< LI-
`0 (cid:9)
`
`A (cid:9)
`
`w N
`>- co
`_J
`< CO
`
`cc
`w
`u-)51
`cc col
`a.
`
`0
`cn (1)
`I-LI
`i C)
`0
`CC I-0'
`0_
`0
`
`---A
`
`U-I
`OL D
`CC <
`LLJ 0
`
`W
`Z Z
`
`I
`
`I
`O
`z01 o
`
`LL
`
`NOAC Ex. 1002 Page 17
`
`(cid:9)
`

`

`U.S. Patent (cid:9)
`
`Dec. 16, 2003
`
`Sheet 16 of 20 (cid:9)
`
`US 6,665,725 B1
`
`1602
`
`0 - 3 Bytes
`
`offset 0 - 11
`
`Dst MAC
`Src MAC
`Dst MAC
`Src MAC
`
`Ac- 1600
`
`1604
`
`1608 (cid:9)
`
`
`
`Dst Hash (2)
`
`
`Src Hash (21
`
`1612
`
`1614
`
`Dst MAC (6)
`
`Src MAC (6)
`
`2 Offset = 12
`
`FIG. 16
`
`NOAC Ex. 1002 Page 18
`
`(cid:9)
`(cid:9)
`

`

`U.S. Patent (cid:9)
`
`Dec. 16, 2003
`
`Sheet 17 of 20 (cid:9)
`
`US 6,665,725 B1
`
`1702
`
`1704
`
`offset ! (cid:9)
`12 to 13I
`
`Type
`
`//////////
`
`1708
`
`Type (2)
`Hash '1)
`1710 (cid:9)
`
`\L3 Offset = 14
`
`1700
`
`FIG. 17A
`
`1712
`
`L3 to
`[L3 +
`OHL / 4
`- 1]
`
`Mr (cid:9)
`WEIr, t 1 A
`WIECE1MAI AI
`INA Protocol v mix -
`
`Src Address
`Dst Address
`
`IDP = 0x0600*
`IP = 0x0800*
`CHAOSNET = 0x0804
`ARP = 0x0806
`VIP = OxOBAD*
`VLOOP = OxOBAE
`VECHO = OxOBAF
`NETBIOS-3COM = Ox3C00 -
`0x3COD#
`DEC-MOP = 0x6001
`DEC-RC = 0x6002
`DEC-DRP = 0)(6003*
`DEC-LAT = 0x6004
`DEC-DIAG = 0x6005
`DEC-LAVC = 0x6007
`RARP = 0x8035
`ATALK = 0x809B*
`VLOOP = 0x80C4
`VECHO = 0x8005
`SNA-TH = 0x80D5*
`ATALKARP = 0x80F3
`IPX = 0)(8137*
`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
`
`1750
`
`Dst Address
`Dst Hash (2)
`Src Address
`Src Hash (2)
`
`Protoc ol (1)
`
`L4 Off et = L3 + (IHU4)
`
`FIG. 17B
`
`* L4 Decoding
`# L3 Re-Decoding
`
`NOAC Ex. 1002 Page 19
`
`(cid:9)
`

`

`U.S. Patent
`
`Dec. 16, 2003
`
`Sheet 18 of 20
`
`US 6,665,725 B1
`
`PROTOCOL
`TYPE (I[:) ,
`
`A---1800
`
`FIELD LENGTH
`
`C oci
`(Opps ON
`
`16423
`
`FIG. 18A
`
`• II
`
`1802-2
`1802-1
`
`1802-M
`
`21870
`
`LUT NUM
`
`FIG. 18B
`
`LI
`
`PROTOCOL
`
`NOAC Ex. 1002 Page 20
`
`

`

`U.S. Patent (cid:9)
`
`Dec. 16, 2003
`
`Sheet 19 of 20 (cid:9)
`
`US 6,665,725 B1
`
`1901
`
`CO MMON.PDL
`
`1903
`
`FL OWS.PDL
`
`1905
`
`VIRTUAL.PDL
`
`1907
`
`ETHERNET.PDL
`
`ETHERTYPE
`
`IP.PDL
`
`TCP.PDL
`
`1913
`
`1915
`
`1917
`
`RPC.PDL
`
`Ni (cid:9) 1919
`
`1921---\y
`
`NFS.PDL
`
`1923-1\a FIG. 19
`
`NOAC Ex. 1002 Page 21
`
`

`

`U.S. Patent (cid:9)
`
`Dec. 16, 2003 (cid:9)
`
`Sheet 20 of 20
`
`US 6,665,725 B1
`
`IC— f--- 2001
`
`READ IN PDL SOURCE \- 2003
`MODULES
`
`•
`PARSE MODULES FOR
`SYNTAX
`
`_r---- 2005
`
`•
`FIRST PASS, CREATE
`ALL PARSE ELEMENTS
`
`\ j---- 2007
`
`2009
`
`•
`2ND PASS, BUILD FLOW
`SIGNATURE ELEMENTS
`
`•
`THIRD PASS, CREATE
`PAYLOAD ELEMENTS
`
`2011
`
`•
`Is FORTH PASS, BUILD
`TATES FOR EACH LINK)
`
`2013
`
`•
`READ IN LAYERING
`SOURCE MODULES
`
`\ —2015
`
`•
`WALK LAYERING LINKS
`FOR EACH PDL
`
`2017
`
`2019 --\_i
`
`•
`OUTPUT CPL
`INTERMEDIATE FILE
`
`2021
`
`FIG. 20
`
`NOAC Ex. 1002 Page 22
`
`(cid:9)
`

`

`US 6,665,725 B1
`
`1
`PROCESSING PROTOCOL SPECIFIC
`INFORMATION IN PACKETS SPECIFIED BY
`A PROTOCOL DESCRIPTION LANGUAGE
`
`CROSS-REFERENCE TO RELATED
`APPLICATION
`
`5
`
`10
`
`This application claims the benefit of U.S. Provisional
`Patent Application Serial No.: 60/141,903 for METHOD
`AND APPARATUS FOR MONITORING TRAFFIC IN A
`NETWORK 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 Apptitude, Inc., the 15
`assignee of the present invention:
`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, and incorporated herein by refer- 20
`ence.
`U.S. patent application Ser. No. 09/608,126 for
`RE-USING INFORMATION FROM DATA TRANS-
`ACTIONS FOR MAINTAINING STATISTICS IN
`NETWORK MONITORING, to inventors Dietz, et al., 25
`filed Jun. 30, 2000, and incorporated herein by refer-
`ence.
`U.S. patent application Ser. No. 09/608,266 for ASSO-
`CIATIVE CACHE STRUCTURE FOR LOOKUPS
` 30
`AND UPDATES OF FLOW RECORDS IN A NET-
`WORK MONITOR, to inventors Sarkissian, et al., filed
`Jun. 30, 2000, and incorporated herein by reference.
`U.S. patent application Ser. No. 09/608,267 for STATE
`PROCESSOR FOR PATTERN MATCHING IN A 35
`NETWORK MONITOR DEVICE, to inventors
`Sarkissian, et al., filed Jun. 30, 2000, and incorporated
`herein by reference.
`
`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.
`
`COPYRIGHT NOTICE
`
`A portion of the disclosure of this patent document
`contains material that is subject to copyright protection. The
`copyright owner has no objection to the facsimile reproduc-
`tion by anyone of the patent document or the patent
`disclosure, as it appears in the Patent and Trademark Office
`patent file or records, but otherwise reserves all copyright
`rights whatsoever.
`
`BACKGROUND
`
`40
`
`45
`
`50
`
`55
`
`There has long been a need for network activity monitors.
`This need has become especially acute, however, given the
`recent popularity of the Internet and other interconnected
`networks. In particular, there is a need for a real-time 60
`network monitor that can provide details as to the applica-
`tion programs being used. 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 65
`through any location in the network). Not only should all the
`packets be detected and analyzed, but for each of these
`
`2
`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.
`The recognizing and classifying in such a network moni-
`tor should be at all protocol layer levels in conversational
`flows that pass in either direction at a point in a network.
`Furthermore, the monitor should provide for properly ana-
`lyzing each of the packets exchanged between a client and
`a server, maintaining information relevant to the current
`state of each of these conversational flows.
`Related and incorporated by reference U.S. patent appli-
`cation Ser. No. 09/608,237 for METHOD AND APPARA-
`TUS FOR MONITORING TRAFFIC IN A NETWORK, to
`inventors Dietz, et al, describes a network monitor that
`includes carrying out protocol specific operations on indi-
`vidual packets including extracting information from header
`fields in the packet to use for building a signature for
`identifying the conversational flow of the packet and for
`recognizing future packets as belonging to a previously
`encountered flow. A parser subsystem includes a parser for
`recognizing different patterns in the packet that identify the
`protocols used. For each protocol recognized, a slicer
`extracts important packet elements from the packet. These
`form a signature (i.e., key) for the packet. The slicer also
`preferably generates a hash for rapidly identifying a flow
`that may have this signature from a database of known
`flows.
`The flow signature of the packet, the hash and at least
`some of the payload are passed to an analyzer subsystem. In
`a hardware embodiment, the analyzer subsystem includes a
`unified flow key buffer (UFKB) for receiving parts of
`packets from the parser subsystem and for storing signatures
`in process, a lookup/update engine (LUE) to lookup a
`database of flow records for previously encountered con-
`versational flows to determine whether a signature is from
`an existing flow, a state processor (SP) for performing state
`processing, a flow insertion and deletion engine (FIDE) for
`inserting new flows into the database of flows, a memory for
`storing the database of flows, and a cache for speeding up
`access to the memory containing the flow database. The
`LUE, SP, and FIDE are all coupled to the UFKB, and to the
`cache.
`Each flow-entry includes one or more statistical measures,
`e.g., the packet count related to the flow, the time of arrival
`of a packet, the time differential.
`In the preferred hardware embodiment, each of the LUE,
`state processor, and FIDE operate independently from the
`other two engines. The state processor performs one or more
`operations specific to the state of the flow.
`A network analyzer should be able to analyze many
`different protocols. At a base level, there are a number of
`standards used in digital telecommunications, including
`Ethernet, HDLC, ISDN, Lap B, ATM, X.25, Frame Relay,
`Digital Data Service, FDDI (Fiber Distributed Data
`Interface), T1, and others. Many of these standards employ
`different packet and/or frame formats. For example, data is
`
`NOAC Ex. 1002 Page 23
`
`

`

`US 6,665,725 B1
`
`10
`
`15
`
`3
`transmitted in ATM and frame-relay systems in the form of
`fixed length packets (called "cells") that are 53 octets (i.e.,
`bytes) long. Several such cells may be needed to make up the
`information that might be included in the packet employed
`by some other protocol for the same payload information— 5
`for example in a conversational flow that uses the frame-
`relay standard or the Ethernet protocol.
`In order for a network monitor to be able to analyze
`different packet or frame formats, the monitor needs to be
`able to perform protocol specific operations on each packet
`with each packet carrying information conforming to dif-
`ferent protocols and related to different applications. For
`example, the monitor needs to be able to parse packets of
`different formats into fields to understand the data encapsu-
`lated in the different fields. As the number of possible packet
`formats or types increases, the amount of logic required to
`parse these different packet formats also increases.
`Prior art network monitors exist that parse individual
`packets and look for information at different fields to use for
`building a signature for identifying packets. 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." In this patent, there are fixed
`locations specified for particular types of packets. For
`example, if a DECnet packet appears, the Chiu system 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
`IP packet appears, a different set of six locations are exam-
`ined. The system looks only at the lowest levels up to the
`protocol layer. There are fixed locations for each of the fields
`that specified the next level. 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.
`It is desirable to be able to adaptively determine the
`locations and the information extracted from any packet for
`the particular type of packet. In this way, an optimal signa-
`ture may be defined using a protocol-dependent and packet-
`content-dependent definition of what to look for and where
`to look for it in order to form a signature.
`There thus is also a need for a network monitor that can
`be tailored or adapted for different protocols and for different
`application programs. There thus is also a need for a network
`monitor that can accommodate new protocols and for new
`application programs. There also is a need for means for
`specifying new protocols and new levels, including new
`applications. There also is a need for a mechanism to
`describe protocol specific operations, including, for
`example, what information is relevant to packets and pack-
`ets that need to be decoded, and to include specifying
`parsing operations and extraction operations. There also is a
`need for a mechanism to describe state operations to perform
`on packets that are at a particular state of recognition of a
`flow in order to further recognize the flow.
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`SUMMARY
`
`60
`
`One embodiment of the invention is a method of per-
`forming protocol specific operations on a packet passing
`through a connection point on a computer network. The
`packet contents conform to protocols of a layered model
`wherein the protocol at a particular layer level may include 65
`one or a set of child protocols defined for that level. The
`method includes receiving the packet and receiving a set of
`
`4
`protocol descriptions for protocols may be used in the
`packet. A protocol description for a particular protocol at a
`particular layer level includes any child protocols of the
`particular protocol, and for any child protocol, where in the
`packet information related to the particular child protocol
`may be found. A protocol description also includes any
`protocol specific operations to be performed on the packet
`for the particular protocol at the particular layer level. The
`method includes performing the protocol specific operations
`on the packet specified by the set of protocol descriptions
`based on the base protocol of the packet and the children of
`the protocols used in the packet. A particular embodiment
`includes providing the protocol descriptions in a high-level
`protocol description language, and compiling to the descrip-
`tions into a data structure. The compiling may further
`include compressing the data structure into a compressed
`data structure. The protocol specific operations may include
`parsing and extraction operations to extract identifying
`information. The protocol specific operations may also
`include state processing operations defined for a particular
`state of a conversational flow of the packet.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`Although the present invention is better understood by
`referring to the detailed preferred embodiments, these
`should not be taken to limit the present invention to any
`specific embodiment because such embodiments are pro-
`vided only for the purposes of explanation. The
`embodiments, in turn, are explained with the aid of the
`following figures.
`FIG. 1 is a functional block diagram of a network embodi-
`ment of the present invention in which a monitor is con-
`nected to analyze packets passing at a connection point.
`FIG. 2 is a diagram representing an example of some of
`the packets and their formats that might be exchanged in
`starting, as an illustrative example, a conversational flow
`between a client and server on a network being monitored
`and analyzed. A pair of flow signatures particular to this
`example and to embodiments of the present invention is also
`illustrated. This represents some of the possible flow signa-
`tures that can be generated and used in the process of
`analyzing packets and of recognizing the particular server
`applications that produce the discrete application packet
`exchanges.
`FIG. 3 is a functional block diagram of a process embodi-
`ment of the present invention that can operate as the packet
`monitor shown in FIG. 1. This process may be implemented
`in software or hardware.
`FIG. 4 is a flowchart of a high-level protocol language
`compiling and optimization process, which in one embodi-
`ment may be used to generate data for monitoring packets
`according to versions of the present invention.
`FIG. 5 is a flowchart of a packet parsing process used as
`part of the parser in an embodiment of the inventive packet
`monitor.
`FIG. 6 is a flowchart of a packet element extraction
`process that is used as part of the parser in an embodiment
`of the inventive packet monitor.
`FIG. 7 is a flowchart of a flow-signature building process
`that is used as part of the parser in the inventive packet
`monitor.
`FIG. 8 is a flowchart of a monitor lookup and update
`process that is used as part of the analyzer in an embodiment
`of the inventive packet monitor.
`FIG. 9 is a flowchart of an exemplary Sun Microsystems
`Remote Procedure Call application than may be recognized
`by the inventive packet monitor.
`
`NOAC Ex. 1002 Page 24
`
`

`

`US 6,665,725 B1
`
`ISO MODEL
`
`Layer Functionality Example
`
`5
`6
`FIG. 10 is a functional block diagram of a hardware parser
`in the interior of the cloud. A monitor 108 examines the
`subsystem including the pattern recognizer and extractor
`packets passing in either direction past its connection point
`that can form part of the parser module in an embodiment of
`121 and, according to one aspect of the invention, can
`the inventive packet monitor.
`elucidate what application programs are associated with
`5 each packet. The monitor 108 is shown examining packets
`FIG. 11 is a functional block diagram of a hardware
`(i.e., datagrams) between the network interface 116 of the
`analyzer including a state processor that can form part of an
`server 110 and the network. The monitor can also be placed
`embodiment of the inventive packet monitor.
`at other points in the network, such as connection point 123
`FIG. 12 is a functional block diagram of a flow insertion
`between the network 102 and the interface 118 of the client
`and deletion engine process that can form part of the
`10 104, or some other

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