throbber
(12) United States Patent
`Graham-Cumming, Jr.
`
`(10) Patent N0.:
`(45) Date of Patent:
`
`US 6,182,146 B1
`*Jan. 30, 2001
`
`US006182146B1
`
`(54) AUTOMATIC IDENTIFICATION OF
`APPLICATION PROTOCOLS THROUGH
`DYNAMIC MAPPING OF
`AppLICATION_p()RT ASSOCIATIONS
`
`5,719,942 *
`5,734,865 *
`5,734,887 *
`5,787,253 *
`
`...................... .. 709/228
`2/1998 Aldred etal.
`3/1998 Yu ...................................... .. 709/250
`3/1998 Kingberg et al.
`...................... .. 707/4
`7/1998 McCreery et al.
`............ .. 395/200.61
`
`(List continued on next page.)
`
`Primary Examiner—Mehmet B. Geckil
`Assistant Examiner—William C. Vaughn, Jr.
`(74) Attorney, Agent, or Firm—Blakely, Sokoloff, Taylor &
`Zafman
`
`(57)
`
`ABSTRACT
`
`A system, method, and software product dynamically deter-
`mine network applications associated with any ports being
`used by packets on a network, allowing the packets to be
`properly routed, counted, and reported according to their
`applications. In one embodiment, an application-port map-
`ping table stores static associations or mappings between
`applications and ports, as defined by a standards body or
`other source. The application-port mapping table is dynami-
`cally updated during runtime to reflect dynamic associations
`between applications and ports as extracted from packet
`data. The associations are
`a packet analysis
`module which performs a two step verification of an appli-
`cation for a packet. In a first step, the packet analysis module
`applies the ports from a packet
`to the application-port
`mapping table to obtain a first application identifier. In a
`second, separate step, the packet analysis module applies
`identification logic to the packet to identify an application
`based on packet data. The second step may be used for each
`packet or only where the packet is not identified by the
`application-port mapping table. If a second application is
`successfully identified, the packet analysis module updates
`the application-port mapping table by adding a new asso-
`ciation between the second identified application, and a port
`of the packet. To keep the application-port mapping table
`current, the table is periodically scanned to remove associa-
`tions which have expired; alternatively, an association is
`-
`-
`-
`i‘:I(Ii1f(:)t\:(::(tle\(7iVhCI1 an end of sequence packet for its application
`'
`
`11 Claims, 6 Drawing Sheets
`
`(75)
`
`Inventor:
`
`John Graham-Cumming, Jr., Menlo
`Park, CA (US)
`
`(73) Assignee: Compuware Corporation, Farmington
`H1115, MI (US)
`
`(*) Notice:
`
`This patent issued on a continued pros-
`ecution application filed under 37 CFR
`1.53(d), and is subject to the twenty year
`patent
`term provisions of 35 U.S.C.
`154(a)(2).
`
`Under 35 U.S.C. 154(b), the term of this
`patent shall be extended for 0 days.
`
`(21) Appl. No.: 08/884,396
`
`(22)
`
`Ffled;
`
`Jun_ 27, 1997
`
`7
`
`(51)
`
`......................... .. G06F 15/173; G06F 15/16
`Int. Cl.
`........................ ..
`UISI C].
`709/235, 709/238; 709/239, 709/245, 709/246;
`709/248; 709/250, 370/389; 370/392, 370/400,
`370/401, 370/402, 370/469
`(58) Field of Search ....................... .. 395/200.68, 200.61,
`395/200.78, 200.65; 370/401, 392, 402,
`400, 389, 469; 709/238, 231, 248, 235,
`250, 224, 226, 239, 245, 246
`
`(56)
`
`References Cited
`U.S. PATENT DOCUMENTS
`
`.................... .. 709/107
`5/1996 Moeller et al.
`5,519,867 *
`..
`.. 709/228
`7/1996 Sharma et al.
`5,537,417 *
`55669336 * 10/1996 Futatsugi Ct a1~
`~~ 395/701
`3536371 *
`6/1997 Yuh -----------
`709/250
`,640,394 *
`6/1997 Sc rier eta.
`.. 370/389
`..
`5,640,399 *
`6/1997 Rostoker et alt
`N 370/392
`5,649,105 *
`7/1997 Aldred et al.
`.. 709/220
`5,684,800 * 11/1997 Dobbins et al.
`.. 370/401
`5,708,659 *
`1/1998 Rostoker et al.
`.................. .. 370/392
`
`
`
`am
`TRAVERSE
`
`CA9 lu:atmnMnps son
`nmmoN
`
`VOENTWWER
`0175
`MATCHWG Form
`
`an:
`sn FVRST APP. ID TO
`
`nsrurwso mus vEs
`
`
`
`
`
`
`
`an
`TRAVERSE
`CAapplH:a mnlaennlers
`ID APP VD
`ma SE
`am
`swam: APP VD :
`UNKNOWN”
`
`5-5
`CREATE NEW
`V55
`1:23
`
`cm
`CApptwat\mvMa
`mscmu PACKS!
`SEGONDA .10,
`on PASS To
`Pom ASSOC/ATVON
`nmuu
`Avptncmou
` mcams NEW
`
`CAppkcatvnnPaz:ket
`smPASS
`CADphcauanPa:kst T0
`
`Awvtlcmon
`
`
`
`N0
`
`SET F/RSTBEPF 10 m
`UNKNOWN
`
`
`
`521
`=1RST APP ID :
`UNKNOWN"
`
`Petitioners‘ EX1010 Page 1
`
`
`
`
`
`Petitioners' EX1010 Page 1
`
`

`
`US 6,182,146 B1
`Page 2
`
`US. PATENT DOCUMENTS
`
`8/1998 Yasue eta1~ ~~~~~~~~~~~~~~~~~~~~~~~~~ ~~ 710/52
`5a797a041 *
`
`5,835,710 * 11/1998 Nagami et al.
`.
`. 395/200.8
`5,838,920 * 11/1998 Rosborough ....................... .. 709/224
`
`3/1999 Richardson, Jr. et al.
`.
`.. 379/189
`5,883,945 *
`
`.. 379/205
`5,995,608 * 11/1999 Detampel, Jr. et al.
`........................ .. 370/389
`6,061,349 *
`5/2000 Coile etal.
`
`* cited by examiner
`
`Petitioners‘ EX1010 Page 2
`
`Petitioners' EX1010 Page 2
`
`

`
`U.S. Patent
`
`Jan. 30, 2001
`
`Sheet 1 of 6
`
`US 6,182,146 B1
`
`TCP Header for HTTP Protocol
`
`
`
`
`
`“ass
`
`Urgent Pointer
`Checksum
`
`
`
`FIG. 1
`
`TCP Header for H1TP Protocol for Port 8080
`
`Flags
`
`32 Sequence Number
`
`32 bit Acknowiedgment Number
`
`Destination Port
`
`Urgent Pointer
`
`FIG. 2
`
`Petitioners‘ EX1010 Page 3
`
`Petitioners' EX1010 Page 3
`
`

`
`U.S. Patent
`
`Jan. 30, 2001
`
`Sheet 2 of 6
`
`US 6,182,146 B1
`
`
`
`102
`
`APPLICATION
`
`IDENTIFIEFI
`MODULE
`
`
`
`APPLICATION
`IDENTIFIER
`
`
`
`RAW
`
`PACKET
`/
`207
`
`
`
`
`
`
`DYNAMIC /
`POFIT
`
`DATA
`APPLICATION
`APPLICATION-PORT
`'DENT'F'ER 203/
`ASSOCIATIONS
`
`
`204
`
`
`STATIC
`APPLICATION-
`APPLICATION-POFIT
`PORT
`MAPPING DATA
`
`MAPPING TABLE
`
`205
`
`108
`
`
`
`
`
`
`
`FIG. 3
`
`Petitioners‘ EX1010 Page 4
`
`106
`
`DATA
`NETWORK
`
`PACKET SOURCE
`
`
`
`
`
`110
`100
`PACKET wITI-I
`Am‘|3_I\<(I§|TS
`APPLICATION
`
`MODULE IDENTIFER
`
`112
`
`
`
`
`
`Petitioners' EX1010 Page 4
`
`

`
`U.S. Patent
`
`Jan. 30, 2001
`
`Sheet 3 of 6
`
`US 6,182,146 B1
`
`300
`
`ADDRESSABLE MEMORY
`
`303
`
`3.0.4
`
`100
`PACKET
`ANALYSIS MODULE
`
`IDENTIFIER MODULE
`
`102
`APPLICATION
`
`104
`
`106
`
`MAPPING TABLE
`
`APPLICATION-PORT
`
`PACKET SOURCE
`
`308
`NETWORK
`
`306
`NETWORK INTERFACE
`302
`
`OPERATING SYSTEM
`
`301
`CPU
`
`FIG. 4
`
`Petitioners‘ EX1010 Page 5
`
`Petitioners' EX1010 Page 5
`
`

`
`U.S. Patent
`
`Jan. 30, 2001
`
`Sheet 4 of 6
`
`US 6,182,146 B1
`
`CApplicationSource and associated objects
`
`CPacketSource
`
`
`—:,,()
`
`R
`iv ()
`7o§,°§,,f
`
`
`
`Kfl
`
`T3 PRIVATE
`.9 DATA MEMBER
`
`it METHOD
`
`
`
`CApp|icationSource
`
`o : CApp|icationMap
`0 : CApp|icationldentifier
`‘Receive () : CAppiicationPackei
`
`
` CPacket
`¢Protoooi : WORD
`oSouroePon : WORD
`¢DestinationPon 2 WORD
`¢PayIoad : BYTE '
`
`
`
`
`CApp|icationPacket
`
`CApp|ication|dentifier
`
`‘identify( CPacket ' )
`
`CAppiicationMap
`
`
`
`
`
`
`
`oAppiication 2 EApp|ication
`
`?oAppIication : EApplication
`
`Won : wono
`iabnme : owono
`
`
`
`FIG. 5
`
`Petitioners‘ EX1010 Page 6
`
`Petitioners' EX1010 Page 6
`
`

`
`U.S. Patent
`
`Jan. 30, 2001
`
`Sheet 5 of 6
`
`US 6,182,146 B1
`
`FIG. 6
`
`601
`INVOKE
`CPacketSource
`Receive() TO OBTAIN
`PACKET
`
`soa
`TRAVERSE
`
`CAppIicationMaps FOR
`APPLICATION
`IDENTIFIER
`
`605
`
`
`
`607
`
`609
`
`
`
`SET FIRST APP. ID TO
`UNKNOWN
`
`SET FIRST APP. ID TO
`RETURNED VALUE
`
`
`
`MATCHING PORT?
`
`
`
`
`
`
`611
`
`TRAVERSE
`
`CAappIicationIdentifers
`FOR SECOND APP. ID
`
`YES
`
`
`
`613
`UNKNOWN?
`SECOND APP. ID =
`
`
`
`
`FIRST APP. ID =
`UNKNOWN?
`
`621
`
`615
`
`
`
`CREATE NEW
`
` 623
`APPLICATION
` DEFAULT
`
`CApp|icationMap for
`SECOND APP. ID,
`PORT ASSOCIATION
`
`DISCARD PACKET
`OR PASS TO
`
`617
`
`CREATE NEW
`
`
`CAppIicationPacket
`
`
`
`
`
`PASS
`
`
`CApp|icationPacket TO
`
`APPLICATION
`
`
`619
`
`Petitioners‘ EX1010 Page 7
`
`Petitioners' EX1010 Page 7
`
`

`
`U.S. Patent
`
`Jan. 30, 2001
`
`Sheet 6 of 6
`
`US 6,182,146 B1
`
`FIG. 7
`
`YES
`
`701
`INVOKE
`CPacketSource
`
`
`
`Receive() TO OBTAIN
`PACKET
`
`703
`
`
`
`NO
`
`
`
`
`
`
`
`
`TIMESTAMP
`
`DIFFERENCE
`
`BETWEEN
`PACKETS >
`GLOBAL TIMEOUT?
`
`
`
`
`711
`TRAVERSE
`
`CApp|icationMaps FOR
`APPLICATION
`IDENTIFIER
`
`705
`TRAVERSE
`
`APPLICATION
`IDENTIFIER
`
`CAppIicationMaps FOR
`
`707
`
`REMOVE EXPIRED
`
`CApp|icationMaps
`
`709
`
`MATCHING PORT?
`
`
`
`YES
`
`713
`SET FIRST APP. ID TO
`
`RETURNED VALUE
`
`719
`
`SET FIRST APP. ID TO
`UNKNOWN
`
`715
`
`UPDATE
`
`_ CAppIicationMap WITH
`I NEW EXPIRATION
`TIME
`
`727
`
`CREATE NEW
`
`CAppIicationPacket
`
`729
`PASS
`
`APPLICATION
`
`CAppIicatIonPacket TO
`
`721
`TRAVERSE
`
`FOR SECOND APP. ID
`
`CAappIicationIdentiIers
`
`723
`
`
`SECOND APP. ID:
`
`WKNOWN?
`
`YES
`
`717
`DI,SACS"SR$OPég,I§EEflR
`APPLICATION
`
`725
`CREATE NEW
`
`PORT ASSOCIATION
`
`CAppIicationMap for
`SECOND APP. ID,
`
`Petitioners‘ EX1010 Page 8
`
`Petitioners' EX1010 Page 8
`
`

`
`US 6,182,146 B1
`
`1
`AUTOMATIC IDENTIFICATION OF
`APPLICATION PROTOCOLS THROUGH
`DYNAMIC MAPPING OF APPLICATION-
`PORT ASSOCIATIONS
`
`BACKGROUND
`
`1. Field of Invention
`
`The present invention relates generally to the field of
`computer network management, and more particularly, to
`systems, methods, and software ax products for identifying
`network applications for processing packet data.
`2. Background of the Invention
`Conventional network applications in computer networks
`running over common layer 3 (network layer) protocols use
`static port mappings. A port mapping defines the specific
`port or socket number that network traffic for a specific
`network application is routed to, or sent from. These port
`mappings are available from the Internet Assigned Numbers
`Authority (IANA) in order to differentiate between applica-
`tions. These application-port mappings are published and
`are well defined, and typically used to deliver network traffic
`to the appropriate applications.
`When ports are defined statically in relationship to
`applications, it is possible for a network monitor, or similar
`product,
`to reliably identify traffic by looking at a single
`packet and checking its port number against the IANA (or
`similar) list. These static mappings are thus relied upon by
`network management software products to determine the
`protocols and applications being used for network traffic,
`and therefore compile information about
`traffic patterns,
`demand, latency, and other performance characteristics.
`However, a number of network protocols allow for the use
`of dynamic application-port mappings. These protocols
`allow a packet to be sent from or directed to any available
`port, not only the statically defined ports. As a result,
`reliance on the static application-port mappings cannot
`guarantee accurate decoding and use of packets, or accurate
`analysis of network traffic.
`For example, FIG. 1 illustrates the TCP header for a
`packet carrying HTTP traffic. The HTTP protocol (defined in
`RFC 1945) generally uses the port 80 when running over
`TCP (defined in RFC 793). Traffic for the HTTP protocol is
`thus identified by examining the source or destination ports
`in the TCP header for the value “80”. This value identifies
`
`the packet as being a TCP packet for the HTTP protocol.
`However,
`the URL specification for HTTP (defined in
`RFC 1738) allows a dynamic port to be added to the end of
`a URL request. For example, a URL for HTTP may have the
`form “http://www.company.com:8080”, where the value
`“8080” identifies the port number to be used. FIG. 2 illus-
`trates the TCP header in this case. With a port of 8080 it is
`not possible using conventional network management tools
`to identify this as HTTP traffic, since the standard port is not
`being used.
`This problem has existed at least since the introduction of
`the HTTP protocol in 1991. This problem also occurs with
`other protocols, such as FTP, and NNTP, and for any of the
`many IP protocols. Indeed, dynamic ports are frequently
`used, for example to provide for security or for improved
`resource sharing. Accordingly, there is a need to be able to
`handle dynamic mappings for network traffic.
`Several approaches have been attempted to solve this
`problem. Some existing solutions require that network man-
`agement software be manually configured to add the map-
`ping of the new port (e.g. 8080 or whatever other port
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`
`number is used) to the application protocol HTTP (or other
`protocol). This requires the user of network management
`software to know in advance the ports being used, in order
`to configure the mapping. This is not a satisfactory solution
`since it is generally not possible to know the mappings ahead
`of time. In addition, the mappings can change at any time.
`Thus, preconfiguring the network management software
`with a fixed set of mapping means that software does not
`have great flexibility to deal with new mappings. In addition,
`the software will not be able to identify many packets which
`do not comply with its preconfigured mappings.
`Other schemes require instrumentation of the application
`using the protocol to determine the port mappings it is using,
`or the interception of common protocol interfaces, such as in
`Microsoft Corp.’s WinSock,
`to attempt to determine the
`mapping required. Neither of these methods provide a
`non-intrusive or configuration-free method of identifying
`application traffic from a raw stream of data on a computer
`network.
`
`Accordingly, it is desirable to provide a system, method
`and software product that can dynamically map application
`and port relationships and thereby correctly identify
`applications, protocols and other network data from packet
`data.
`
`SUMMARY OF THE INVENTION
`
`The present invention overcomes the limitations of con-
`ventional systems and methods by dynamically identifying
`the relationships between applications and ports in received
`packet data, and by storing and updating these relationships.
`In this manner, the present invention is able to identify the
`correct applications for packets that use either standard,
`default port numbers, or non-standard, dynamically defined
`port numbers.
`invention provides a
`the present
`In one embodiment,
`computer-implemented method for dynamically determin-
`ing a network application for a stream of network packets.
`Aplurality of associations between network applications and
`ports are stored, for example, in a high speed cache. Apacket
`is received from a network packet source. If there is a stored
`association between a network application and a port of the
`packet (as contained in the packet header), then the packet
`is provided to the network application so identified.
`If there is no stored association between a network
`
`application and a port of the packet, the packet data, for
`example the payload and/or header, is analyzed to identify a
`network application for handling the packet, and a new
`association is stored between this identified network appli-
`cation and a port of the packet. This analysis may be made
`even if there was a previously stored association between a
`port of the packet and a network application.
`Additionally, stored associations may have expiration
`times, based on a timestamp of the last packet that matched
`the port
`in a stored association, and a timeout value.
`Periodically, the stored associations are processed to remove
`associations that have expired, according their expiration
`times.
`
`the present invention operates in
`In one embodiment,
`software products such as network monitors or protocol
`decoders. Such products are configured as follows. An
`application-port mapping table is used to store the associa-
`tions between network applications and ports. Each network
`application is uniquely associated with, and identified by,
`one application identifier. A special identifier is used to
`represent an “unknown” application. The application-port
`mapping table is initialized with a set of static application-
`
`Petitioners' EX1010 Page 9
`
`Petitioners' EX1010 Page 9
`
`

`
`US 6,182,146 B1
`
`3
`port mappings, such as defined by a standards authority. The
`application-port mapping table will be subsequently updated
`with new application-port associations as these are extracted
`from actual packet data that is received and processed. The
`application-port mapping table is preferably stored in high
`speed memory during runtime.
`During runtime, packet data is received by a packet
`analysis module. The packet analysis module extracts from
`the packet its destination port and source port values. The
`packet analysis module applies these port values to the
`application-port mapping table. If the application-port map-
`ping table contains an association with a port matching one
`of the ports for the packet, then the packet is positively
`identified, and the application-port mapping table returns the
`application identifier associated with the matching port. This
`first application identifier initially identifies the application
`for handling the packet.
`In a conventional system, as explained above, if a packet
`includes a port value which that is not static value for the
`appropriate application, i.e. a dynamic port, the packet will
`not be properly identified as being appropriate for
`the
`application (the packet may still be received by the appli-
`cation since other mechanisms may be preserving this state
`information).
`the application-port mapping
`In the present invention,
`table will initially not contain an association between the
`dynamic port and an application identifier, and thus the
`application for the packet will be unknown. However, unlike
`conventional approaches, the packet analysis module then
`analyzes the packet to determine the appropriate application
`for handling the packet. The analysis is preferably of the
`payload, but may also include the packet header. The analy-
`sis is generally based on predefined data patterns that are
`uniquely associated with each application. This analysis
`may include, for example, determining whether the payload
`includes a valid URL to an HTTP address, thereby indicating
`an HTIP application. Other payload specific data or patterns
`may also be recognized.
`Once the packet analysis module successfully identifies
`the packet as belonging to a specific application, it creates a
`new entry in the application-port mapping table, associating
`a port number from the packet with the application identifier
`appropriate to the identified application. The packet analysis
`module also checks to make sure that no duplicate mappings
`for the port exist in the application-port mapping table. The
`next time a packet is received with the newly mapped port
`number, the application-port mapping table will correctly
`identify it.
`In this manner,
`the packet analysis module
`dynamically updates the application-port mapping table to
`include associations between application identifiers and
`ports extracted from packet data.
`In some instances, even if the application-port mapping
`table does contain an association between an application
`identifier and a port, this association may no longer be valid.
`This is particularly true for associations that were dynami-
`cally created, as described above, since these tend to be
`specific to individual transactions. In one embodiment then,
`after the application-port mapping table has provided the
`application identifier, the packet analysis module separately
`analyzes the packet, as above. If this analysis is successful
`and an application is identified, this application will be given
`the packet, regardless of the application identified by the
`application-port mapping table.
`In one embodiment, outdated associations defined in the
`application-port mapping table are periodically removed
`through a garbage collection process, so that the current
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`4
`dynamic associations will always be present in table. In one
`embodiment, the newly created entries in the application-
`port mapping table have an expiration time. The packet
`analysis module periodically checks the application-port
`mapping table, and removes associations that have expired.
`In one embodiment, the expiration time of an application-
`port association is based on the timestamp of the last packet
`that matched the port of the association, plus a local timeout
`value (a fixed number of seconds). The expiration time may
`be compared to either a current time, or the timestamp of the
`last received packet to determine whether it has expired. In
`this manner, the table is maintained with the most current
`associations between applications and ports, as determined
`by the packet data itself.
`The use of expiration times further allows for another
`optimization of the packet analysis module’s performance.
`Since the expiration time of each application-port associa-
`tion ensures that
`the application-port mapping table is
`always current,
`in one embodiment,
`the packet analysis
`module processes the packet a second time only when the
`application-port mapping table is unable to identify the
`packet. In this manner, the packet analysis module updates
`the application-port mapping table only as needed, which is
`when the packet cannot be matched to an application-port
`mapping that has been previously detected.
`The present invention may be implemented in a number
`of different manners. One implementation uses an object
`oriented collection of objects to provide the described func-
`tionality and features. The application-port mapping table is
`implemented as a collection of application map objects, each
`storing an application identifier and port association, and an
`optional expiration time where garbage collection is used.
`The packet analysis module is implemented as an applica-
`tion source object and a collection of application identifier
`objects. Each of the application identifier objects imple-
`ments a method that encodes the logic used to identify a
`specific application from the packet data.
`The application map objects are initialized with a set of
`standard, static application identifier-port associations. The
`application source object receives a packet from a packet
`source object, and traverses the collection of application
`map objects to obtain a first application identifier from the
`application map object having a matching port. If none of
`the application map objects match the packet,
`then the
`application is deemed “unknown.”
`The application source object also traverses the applica-
`tion identifier objects, having each one process the packet to
`separately identify the application. Each application identi-
`fier object returns either an application identifier of the
`specific application it recognizes or an “unknown” if the
`application identifier object does not recognize the packet.
`If the packet is recognized by one of the application
`identifier objects, then the application source object instan-
`tiates a new application map object with the application
`identifier returned by the application identifier object which
`recognized the packet, and a port number from the packet.
`The application source object then passes the packet to the
`second, identified application. Summary data, may now be
`accurately accumulated for all packets, to accurately moni-
`tor network performance.
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIG. 1 is the header of an HTTP packet over TCP/IP using
`a standard port mapping.
`FIG. 2 is the header of an HTTP packet over TCP/IP using
`a non-standard port mapping.
`
`Petitioners‘ EX1010 Page 10
`
`Petitioners' EX1010 Page 10
`
`

`
`US 6,182,146 B1
`
`5
`FIG. 3 is a functional model of a system in accordance
`with the present invention.
`FIG. 4 is an illustration of a hardware architecture for
`implementing the present invention.
`FIG. 5 is an object model of a software product
`accordance with the present invention.
`FIG. 6 is a flowchart of a method for managing the
`identification of an application for a packet.
`FIG. 7 is a flowchart of an optimized method for man-
`aging the identification of application for a packet.
`DETAILED DESCRIPTION OF THE
`INVENTION
`
`in
`
`Referring now to FIG. 3 there is shown a functional model
`of the present invention for identifying applications and
`network protocols from raw packet data.
`In this
`embodiment, the present invention includes a packet analy-
`sis module 100, an application identifier module 102, and an
`application-port mapping table 104. These elements may be
`included in various different products, such as network
`monitors, protocol decoders, protocol analyzers, routers,
`brouters, bridges, or the like.
`The application-port mapping table 104 stores associa-
`tions between application identifiers and port numbers. Each
`application identifier identifies a different application avail-
`able on the computer (or network of computers for distrib-
`uted applications) capable of receiving or processing the
`packet. Each application has a unique identifier. A special
`‘unknown’ application identifier
`(e.g. “APP_
`UNKNOWN”) is used to represent an unknown application,
`though a mapping for the unknown application need not be
`stored in the table. The application-port mapping table 104
`is cached in memory for high speed access.
`Upon startup, the application-port mapping table 104 is
`initialized 213 with some number of static application-port
`associations 108. These static associations (or ‘mappings’)
`are based on the published specifications for the various
`applications and protocols, and their standard port numbers.
`Table 1 includes a preferred list of network applications,
`application identifiers, and their standard ports used to
`define the static application-port associations 108.
`
`Application
`HTTP
`FTP
`FTP
`SMTP
`NNTP
`POP3
`
`TABLE 1
`
`Port
`80
`20
`21
`25
`119
`110
`
`Application Identifier
`APP_HTT'P
`APP_FTP
`APP_FTP
`APP_SMTP
`APP_NNTP
`APP_POP3
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`The application-port mapping table 104 will be later
`updated 205 by the packet analysis module 100 with
`dynamic associations 112 between application identifiers
`and ports based on the actual packet data that is received
`from the packet source 106. The packet source 106 is any
`useful source of packet (layer 3) data.
`The packet analysis module 100 receives 201 raw packet
`data from the network packet source 106, typically through
`some network interface, such as a network interface card.
`The packet analysis module 100 decomposes this packet,
`extracting various field data from the packet. The extracted
`data includes the source port, the destination port from the
`packet header, and the payload.
`The packet analysis module 100 applies 203 the port
`numbers from the packet to application-port mapping table
`
`55
`
`60
`
`65
`
`HTTP
`NNTP
`
`SMTP
`
`POP3
`
`50
`
`FTP
`
`6
`104 to obtain an application identifier. If there is an asso-
`ciation that matches the port data,
`then application-port
`mapping table 104 returns 204 the application identifier for
`the network application. The application-port mapping table
`104 will be able to return an application identifier if either
`the port number is a standard port number for the application
`and included in the original set of static application-port
`mappings, or is a new application identifier-port mapping
`extracted from the received packets, and stored in the
`application-port mapping table. If there is no matching port,
`then the packet analysis module 100 assigns the result as
`being the unknown application identifier.
`In one embodiment, even if the application-port mapping
`table 104 returns 204 an application identifier for a specific
`application,
`the present invention provides an additional
`sequence of processing steps to verify this application,
`which in some instances may be incorrect. This is done as
`follows. The packet analysis module 100 passes 207 the
`packet to the application identifier module 102. This module
`102 analyzes the packet to determine 209 an application
`appropriate for handling the packet.
`The application identifier module 102 attempts to match
`portions of the packet data, including the payload or header,
`with defined patterns or attributes for each of a plurality of
`different applications. Generally, for each application there
`are one or more bit patterns which uniquely identify the
`application. These patterns may be in the payload data, in the
`header, or in combinations of both. The bit patterns are
`defined as sequences of <offset, bit patterns> tuples. Each
`application may have one or more such sequences which
`uniquely identifies it. Table 2 includes preferred bit patterns
`used to identify selected network applications, along with
`the port used to map the application into the application-port
`mapping table 104. Alternate patterns are shown numbered.
`
`TABLE 2
`
`Application Data Patterns <bit offset, data pattern>
`
`Port Used
`in Mapping
`
`Source
`
`Destination
`
`Destination
`<0, “GET”><4,URL><n, “HTTP/1.”>
`<0, “GROUP”><6, newsgroup><n, CRLF> Destination
`<n + 2, EndofFrame>
`1) <0, “220_”><4, server_name>
`<n, “Simple Mail Transfer Service Ready”>
`2) <0, “MAIL FROM: <”><11, email_addr> Destination
`<n, CRLF>
`3) <0, “RCPT TO: <”><9, email_addr>
`<n, CRLF>
`1) <0, “+OK POP3 server ready”><22,
`CRLF>
`2) <0, “+OK”><4, number><n, “messages
`(“><n+10, number><m, “octets)”>
`1) <0, “230 User logged in”>
`2) <0, “Z27 Entering Passive Mode (“><26,
`n1, n2, n3, n4, n5, n6><n,”)”>
`[where n;<256]
`3) <0, “PORT”<5, n1, n2, n3, n4, n5, n6>
`[where n;<25 6]
`
`Source
`
`Source
`Source
`Source
`
`Destination
`
`Here URL, newgroup, server_name, email_addr, and
`number are valid forms as defined by their respective
`protocols. The identification of these patterns may done
`through various types of pattern matching algorithms, or
`simple conditional testing.
`In one embodiment, the application identifier module 102
`processes the packet data until it positively identifies one
`application, and returns 209 the application identifier for this
`application.
`In another embodiment, the application identifier module
`102 identifies all applications that may be appropriate and
`
`Petitioners‘ EX1010 Page 11
`
`Petitioners' EX1010 Page 11
`
`

`
`US 6,182,146 B1
`
`7
`applies a selection logic to select one of these as the most
`appropriate application, returning 209 the application iden-
`tifier for this application. One implementation of the selec-
`tion logic is to assign a confidence factor to each pattern or
`logic used to identify an application. When multiple appli-
`cations are identified, the application identifier module 102
`selects the application having the highest confidence factor.
`If the application identifier module 102 is unable to match
`the packet data with any applications, then it returns 209 the
`unknown application identifier to the packet analysis module
`100. Alternatively,
`the application identifier module 102
`returns a null result to the packet analysis module 100,
`which assigns an unknown application identifier to the
`outcome.
`
`If the application identifier returned by the application
`identifier module 102 identifies an application (i.e.
`the
`application is not unknown) then the packet analysis module
`100 creates 205 a new entry in the application-port mapping
`table 104 using the returned application identifier from the
`application identifier module 102 and a port number from
`the packet. The port used is determined by the specific
`method used to identify the application, as shown in the
`examples of Table 2. The packet analysis module 100 checks
`to make sure that duplicate entries for a port are not present,
`replacing any previous association with the new association.
`Where garbage collection is used, the packet analysis mod-
`ule 100 also sets an expiration time for this new association.
`Preferably the expiration time is equal to the timestamp of
`the packet plus a local timeout value. The new association
`will enable the application-port mapping table 104 to return
`203 the correct application identifier for packets which use
`the same port number, which will be other than the standard
`default ports for that particular application. In this manner,
`the application-port mapping table 104 is continually
`updated to refiect the dynamic application-port associations
`present in the packet data, and not merely the static asso-
`ciations set by the standards authorities, such as the IANA.
`When a subsequent packet, typically in the same transaction,
`is received, the packet analysis module 100 will be able to
`obtain the correct application identifier from the application-
`port mapping table 104 immediately, and then verify it in the
`application identifier module 102.
`After the packet is identified, it is provided 211 to the
`specified application for processing. This processing may
`include any type of analysis or use of the packet.
`If the application identifier module 102 was not able to
`identify the packet, then the application identified 203 by the
`application-port mapping table 104 is used to invoke 211 an
`application for processing the packet.
`If neither the application-port mapping table 104 or the
`application identifier module 102 is able to identify a packet,
`then the packet is discarded, or alternatively, passed to a
`default application for handling unknown packets.
`Where garbage collection is used,
`the packet analysis
`module 100 periodically scans the application-port mapping
`table 104 to check the expiration time of each association. If
`an association has expired, then the packet analysis module
`100 removes it from the application-port mapping table 104.
`In one embodiment, the packet analysis module 100 stores
`a global timeout value, which defines a fixed number of
`

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