US6778524B1 - Creating a geographic database for network devices - Google Patents
Creating a geographic database for network devices Download PDFInfo
- Publication number
- US6778524B1 US6778524B1 US09/591,288 US59128800A US6778524B1 US 6778524 B1 US6778524 B1 US 6778524B1 US 59128800 A US59128800 A US 59128800A US 6778524 B1 US6778524 B1 US 6778524B1
- Authority
- US
- United States
- Prior art keywords
- network
- node
- probing
- message
- plural
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime, expires
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/1458—Denial of Service
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/26—Route discovery packet
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4505—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
- H04L61/4511—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/52—Network services specially adapted for the location of the user terminal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
Definitions
- the present invention concerns the creation of a database that identifies geographic locations of devices connected to a network, such as devices communicating over the Internet.
- the Internet is a decentralized global network of millions computers. Each computer connected to the Internet is independent and may be capable of operating as a host computer (host) that primarily provides data over the Internet or a client computer (client) that primarily receives data over the Internet.
- a host computer may receive a data request from any other computer on the Internet and respond to the request by transmitting any of various types of data, such as hypertext markup language (HTML) code, back to the client.
- a client computer may send data requests to various hosts on the Internet and then download data in response.
- host computers are used by information providers for various commercial, educational, or governmental purposes and are dedicated host computers (servers or Web servers).
- ISP Internet Service Provider
- NSP network service provider
- ISPs are companies that provide access to the Internet, typically for a fee.
- a client computer may establish a dial-in connection to an ISP over an ordinary telephone line.
- IAPs Internet Access Providers
- IP Internet Protocol
- a domain name may be assigned to a host and, therefore, associated with the numeric IP address.
- a server having an address of 24.130.64.154 may be associated with domain name server.npeponis.com.
- DNS domain name server
- FIG. 1 illustrates a client 101 communicating with a server 103 .
- the client 101 first connects to its local ISP 105 (e.g., using a modem via a dial-in connection).
- ISP 105 assigns one of its IP addresses to client 101 .
- client 101 may begin communicating over the Internet.
- the client 101 may send a request for file main.html to the server 103 having the domain name server.npeponis.com.
- Such a request might be initiated, for example, by the user typing http.//server.npeponis.com/main.html in the address field of a web browser running on client computer 101 and then pressing the “Enter” key.
- such a request might be initiated by the user simply clicking on a graphic, image or text item that serves as a hyperlink to that address.
- the browser sends out one or more data packets (or datagrams) addressed to IP address 24.130.64.154 (possibly, after having obtained that IP address from a DNS), with such data packets including a request to retrieve file main.html.
- IP Internet Protocol
- TCP Transmission Control Protocol
- IP/IP Internet Protocol/IP
- messages are divided into smaller packets. Each such packet includes, in addition to the destination address and data corresponding to at least a portion of the message, an IP address identifying the source of the packet and various other fields necessary for communication in accordance with TCP/IP and other established protocols.
- the server 103 Upon receipt of request 102 , the server 103 typically first initiates handshaking communications to establish a TCP connection and then responds to the request by sending to the client one or more data packets that together contain the contents of the file main.html. In this manner, communications can occur between two nodes on the Internet, with TCP/IP specifying the protocols for separating each message into data packets, routing the packets between the two nodes, reassembling the packets at the destination, and verifying that each message was properly received.
- HTTP HyperText Transfer Protocol
- the HTTP format is the underlying protocol used by the World Wide Web on the Internet and defines how messages are formatted and transmitted, as well as what actions Web servers and browsers take in response to various commands.
- a router is a device that connects one network to another.
- Each router includes a dynamically updated routing table that is used by the router to identify the next router to which any given packet should be forwarded. Specifically, the receiving router attempts to identify the router that is most likely to be closest (geographically and/or in terms of number of hops) to the packet's ultimate destination.
- client 101 sends a request 102 to server 103 .
- the request is delivered to the server 103 via routers 105 , 107 , 109 , 111 , 113 , and 115 .
- the request may go through other routers as well. In other words, the request may make many hops before reaching the intended server 103 .
- the precise path taken by request 102 will be determined by the individual routers along the way. In the event that a receiving router determines that it is unable to forward a packet closer to its final destination, it will send a message to that effect back to the router from which it received the packet.
- That router will attempt to route the packet through a different router, adjust its routing table accordingly, and send a message to the router from which it received the packet.
- Such a situation might be temporary (e.g., in the case where a router is temporarily inoperable) or permanent (e.g., where a router has been permanently taken off line).
- Other communications such as periodically broadcasting a router's entire routing table, also occur among the routers on the Internet, permitting them to coordinate their routing activities. Propagation of changes in the network topology through the various routers in the network can permit communications to occur fairly reliably, even in the presence of constantly changing network conditions.
- RIP Routing Information Protocol
- ICMP Internet Control Message Protocol
- the preferred end result is the receipt of the request 102 by the host 103 and the response by server 103 sending the requested data file via the Internet.
- the data file is divided among appropriately sized (e.g., using conventional algorithms to identify an appropriate size) data packets and may travel through several routers to arrive at the client 101 .
- the route taken by the response 104 will be the same as that taken by the request 102 .
- the routing may be asymmetric, such as where a client computer transmits packets to an ISP over a conventional telephone line/modem connection but receives packets via a satellite dish, e.g., via the Direct PC network.
- Asymmetric routing may also occur in certain other cases, such as where a router in the link used for transmitting the request goes down before the response to the request can be transmitted; therefore, the response needs to be re-routed.
- packets traveling in a single direction e.g., all request packets
- one or more routers in the link may be intentionally configured to route packets that are addressed to the same destination to different routers in an attempt to balance the communication load over the Internet.
- asymmetric routing and multi-path routing are considered to be unusual routing conditions.
- the response to the request may contain any of a wide variety of information. However, in many instances, it would be preferable for the response to contain information that is tailored to the specific geographic region of the client 101 . For example, it may be preferable for the file 104 sent as the response to the request 102 to include weather information for the geographic region in which the client 101 is located. In another example, it may be preferable for the file 104 sent as the response to the request 102 to include banner or other advertising for businesses located within driving distance of the location of the client 101 . In conventional systems, the response file 104 typically may contain these types of information only when the user of the client computer 101 has already supplied information regarding his or her location to the server 103 , at least once.
- U.S. Pat. No. 5,948,061 (the “061 Patent”) to Merriman et al. titled “Method of Delivery, Targeting, and Measuring Advertising Over Networks” (which is incorporated herein by reference as though set forth herein in full) notes that a trace route operation can be used in obtaining geographic information for a user.
- conventional trace route operations were originally designed to troubleshoot Internet routing problems (such as routing loops) and generally function by sending out a number of probe packets, all addressed to the same target node, to identify all of the routers that forward packets between the current node and the target node. All of the probe packets are IP packets, each having a Time-To-Live (TTL) field which indicates the maximum number of hops that the IP packet can make before an ICMP Time Exceeded packet is returned.
- TTL Time-To-Live
- each router decrements the TTL field by 1 and then forwards the packet on (if the TTL value is greater than 0) or sends an ICMP Time Exceeded packet (if the TTL value is 0).
- a probe packet is sent with a TTL value of 1
- the first router to receive the packet decrements the TTL field to 0 and sends back a Time Exceeded packet.
- the Time Exceeded packet includes the source's address
- the current node can identify the IP address of the closest router to it. If this node is not the target node, then the current node will send a probe packet with a TTL value of 2.
- the first router Upon receipt, the first router decrements the TTL field to 1 and forwards the packet to the next router.
- the second router then decrements the TTL field to 0 and sends a Time Exceeded packet to the current node.
- the current node can identify the IP address of the second router. This conventional traceroute process continues until the target node responds to a probe packet, at which point the entire route will have been traced.
- the present invention addresses the foregoing problems by dialing into multiple points of presence and transmitting a message a message to a fixed node on the network through each POP.
- the invention is directed to populating a database with geographic locations for network devices.
- a node is provided on a network and a connection is made into a network service provider (NSP) point of presence (POP) to obtain a connection to the network via the NSP.
- NSP network service provider
- POP point of presence
- a message is then transmitted to the node over the network connection obtained from the NSP.
- the message is received at the node and a source network identifier is extracted from the message.
- the source network identifier is then associated with a known geographic location for the POP in a database. The foregoing steps are then repeated for multiple different POPs.
- the present invention typically can obtain more current information regarding nodes on the network than is possible with conventional techniques.
- Such a database can then be used, for example, in connection with identifying geographic locations for clients accessing a website.
- the invention is directed to populating a database with geographic locations for network devices.
- a node is provided on a network and a connection is made into a network service provider (NSP) point of presence (POP) to obtain a connection to the network via the NSP.
- NSP network service provider
- POP point of presence
- a message is then transmitted to the node over the network connection obtained from the NSP.
- the message is received at the node and a source network identifier is extracted from the message.
- the route over the network between the node and the POP is then probed to obtain network identifiers for routers along the route. The foregoing steps are then repeated for multiple different POPs.
- the present invention often can identify important information regarding the topology of the probed network in a more efficient manner than is possible with conventional techniques.
- network identifiers for routers are identified in this manner, such network identifiers can be looked up in a database in an attempt to identify geographic locations for such routers, thereby providing a geographic map of nodes on the network.
- information concerning routing patterns on the network often can be derived. Such information may be even further enhanced by providing multiple nodes on the network, sending similar messages to each of such nodes, and then probing the route from the current POP to each of such nodes.
- FIG. 1 is a diagram illustrating a communication route between a client and a host server via the Internet.
- FIG. 2 is a flow chart illustrating steps for forecasting a geographic position of a network device according to a representative embodiment of the present invention.
- FIG. 3 is a simplified block diagram of an exemplary computer system for implementing the techniques of the present invention.
- a request packet is received; if a geographic location has already been determined for the requester, that geographic location is used as the location of the requester; otherwise, the number of hops taken by the request packet is estimated, probe packets are constructed and sent, and responses to the probe packets are received; a check is made for asymmetric routing; the source addresses of received packets are matched to a database to identify the geographic locations of the routers along the path; and the geographic location of the requesting node is identified based on that information.
- a host computer receives a request over a network, such as the Internet, requesting data from the host.
- the request might be requesting display of a Web page, such as the home page of a particular Web site hosted by the host.
- the first packet of the request typically will be a SYN packet in conformance with the TCP/IP protocols and therefore will implicitly request initiation of a TCP connection between the requesting node and the hosting node.
- the host Immediately upon receipt of such a request (preferably, immediately upon receipt of the SYN packet), the host initiates two parallel paths 143 and 160 .
- path 143 a geographic location is identified for the requesting node.
- path 160 communications continue 162 with the requesting node, typically by first establishing and then utilizing a TCP/IP connection.
- the geographic location positioning information is supplied from path 143 to step 162 so as to permit step 162 to generate and transmit to the requester geographic specific information (e.g., local advertising, weather or news).
- paths 143 and 160 occur simultaneously, it is also possible to defer initiation of path 160 (or at least the first communication of substantive response information in path 160 ) until the geographic information has been supplied by path 143 , so as to permit the very first communication from the host to the requestor to include geographic-specific information.
- step 144 it is determined whether the requestor is already known.
- the request packet preferably includes a source address in accordance with the TCP/IP protocols. By comparing this source address to a database of previously located addresses (e.g., IP addresses), the host can determine whether a geographic position already exists for the current source address (and, in certain embodiments, whether or not that location information has been recently enough updated or is otherwise sufficiently reliable to be presumed valid). If it is determined in step 144 that the requestor is known (and, in certain embodiments, known with adequate accuracy and/or precision), then in step 146 the geographic location of the requestor is retrieved from the database and supplied to the TCP/IP communication process step 162 for use in downloading geographic-specific information to the requester. However, if it is instead determined in step 144 that the requester is unknown (or insufficiently known), then processing proceeds to step 148 .
- step 144 may be as simple as referring to a database to determine whether a geographic position has already been identified. Alternatively, more complicated processing may instead be performed. As explained in more detail below, it is possible that the database may contain multiple geographic positions for the present requestor. If this is the case, a default one of those geographic locations may be selected, one of the geographic locations may be selected based upon predetermined criteria, or the host may attempt to identify the current geographic location, such as by performing the probing technique described below (i.e., commencing with step 148 ).
- step 144 might identify a geographic home address for the present requestor in the database, but the database might also indicate that the requestor frequently travels. In this case, step 144 might both initiate step 146 to supply the geographic home address of the requestor to TCP/IP communications process 160 and also initiate step 148 to begin the probe packet technique for identifying the current geographic location of the requestor. Communications process 160 may then use either or both of the home address and the current address in its communications with the requester. Finally, step 144 might be omitted entirely and a probing technique (such as the probe packet technique described below) used for each new request.
- a probing technique such as the probe packet technique described below
- the host computer evaluates the TTL field of the request to estimate how many hops the request has taken to arrive at the host. Preferably, this is accomplished by subtracting the TTL value of the received packet from an assumed initial TTL value for the packet.
- the TTL field has a maximum value of 255, and most applications set the TTL field to this maximum value so that a packet will make 255 hops before a Time Exceeded packet is returned.
- the number of hops made by the received request packet is equal to 255 minus the value of the TTL field of the received request.
- the current recommendation is to set the value to 60 for outgoing TCP/IP packets.
- certain historical implementations have used initial TTL values of 15 or 30.
- the preferred embodiment of the invention utilizes the following technique. If a packet arrives at its destination with a TTL value greater than 195, then it is assumed that the packet's initial TTL was 255. If a packet arrives at its destination with a TTL value of 60 or less, then it is assumed that the initial TTL value was 60.
- the system preferably reverts to an alternate method, such as a brute-force method similar to that of conventional traceroute.
- the above-described heuristic rule will provide the most efficient results, and generally only in relatively rare situations will this technique have to revert to the less efficient method, with the overall result being a net increase in efficiency.
- the thresholds used above i.e., 195 and 60
- those thresholds can be changed based on the user's expectations in this regard.
- the host computer constructs and then sends multiple probe packets, each addressed to the source address identified in the request packet.
- probe packets preferably are sent using the User Datagram Protocol (UDP) which is designed for connectionless messages, such as probe packets. It is noted that this is the same protocol used to send probe packets in conventional traceroute operations.
- UDP User Datagram Protocol
- the probe packets preferably are addressed to a port that is unlikely to be in use by the requester, causing a Port Unreachable message to be returned when a probe packet reaches the requester.
- the probe packets sent according to the present invention may have any of the characteristics of probe packets sent according to conventional traceroute operations.
- protocols other than UDP may also be appropriate choices to use in formatting some probe packets.
- the ICMP Echo Request packet might well work as well, or even better, since it avoids the possibility that the conventional traceroute “UDP port unlikely to be in use” might actually be in use, thereby leading to the probe packet's ultimate destination not sending any response to the probe.
- Another choice that would avoid that possibility would be sending a raw IP packet with a value for the “protocol number” that does not correspond to any of the protocols defined to have protocol numbers in that field.
- the recipient of an IP packet with an unknown “protocol number” should always respond with a Code 2 (Protocol Unreachable) ICMP Destination Unreachable response.
- the UDP probes sent by conventional traceroute and its derivatives trigger a Code 3 (Port Unreachable) ICMP Destination Unreachable response.
- probe packets having TTL values that are within a few hops (such as any integer within a range of approximately 1 to 7) of the number of hops taken by the request packet.
- the order of transmitting such probe packets preferably is relevant, and the preferred embodiment targets the first few routers on the inbound route first, with preference given to earlier routers over later routers.
- probe packets with TTL values in the following order: t ⁇ 1, t ⁇ 2, t ⁇ 3, t, t+1, t ⁇ 4, t ⁇ 5, t+2 and t ⁇ 6, where t is the number of hops identified in step 148 .
- the foregoing sequence may be truncated at any point or expanded to include additional TTL values.
- the present invention may be implemented by initially sending out probe packets with TTL values within a relatively narrow band (such as the sequence shown in the preceding paragraph), and then widening that band later in the event that the initial band fails to identify the appropriate routers.
- a brute force probing method such as a probing technique similar to conventional traceroute, may then be employed.
- the actual order of sending probe packets may change with time as the Internet develops and as prevailing TCP/IP implementations and network policies change.
- the bracketing strategy will vary if it is determined that the present requestor is likely to be connected to the network via a previously discovered asymmetric routing path or if it is expected that a link in the path commonly uses, or may in the current case be using, multi-path routing.
- the host preferably either performs a full traceroute-like operation or else merely adjusts the value of t used above to account for expected differences in the applicable asymmetric or multi-path routing.
- the present invention preferably sends out such a sequence of probe packets without waiting for replies in response to the earlier packets. It is noted that this strategy is different from that of conventional traceroute operations, and can provide for faster identification of the geographic location of the requester.
- the present invention can guard against packet loss by sending out additional probe packets for each particular or for all TTLs in the bracketing strategy.
- the number of probe packets that are sent at each TTL value will depend upon various engineering trade-offs, such as the value of the location information, the expected datagram loss rates, the cost of bandwidth, the availability of bandwidth, network congestion control policies, and/or whether the initial portion of the route from the server to the client is already known, is of interest, or is even likely to be relevant.
- Such repeat probe packets can be sent, for example, in clustered format (e.g., 3 packets with a TTL of t ⁇ 1, then 3 packets with a TTL of t ⁇ 2, etc.), in a repeating sequence format (e.g., sending one packet for each TTL value in the sequence and then repeating the entire sequence), or in any other format.
- clustered format e.g., 3 packets with a TTL of t ⁇ 1, then 3 packets with a TTL of t ⁇ 2, etc.
- a repeating sequence format e.g., sending one packet for each TTL value in the sequence and then repeating the entire sequence
- the format is designed to obtain earlier responses from the initial routers in the inbound route and to reduce the statistical likelihood that two or more packets with the same TTL values will be lost.
- step 152 responses to the probe packets are received and associated with the corresponding probe packets. For instance, this association can be facilitated by uniquely encoding each probe packet.
- step 153 the host checks to determine whether the responses from the initial set of probe packets indicates asymmetric routing, multi-path routing or any other routing anomaly. Such a situation will occur, for example, if the response corresponding to the probe packet having a TTL value of t did not originate from the requestor or if any response corresponding to a TTL value less than t did originate from the requestor. In an ordinary situation with symmetric routing, the response to a probe packet having a TTL value of t (but not the response corresponding to a TTL value of t ⁇ 1) will be an ICMP Port Unreachable packet.
- step 154 an alternative probing strategy (such as a full “shotgun” approach that runs a modified traceroute program that does not wait between packet transmissions) is performed in step 154 (e.g., using probe packets having TTL values ranging from 1 to 30 or from 1 until an ICMP Port Unreachable packet has been received).
- an alternative probing strategy such as a full “shotgun” approach that runs a modified traceroute program that does not wait between packet transmissions
- step 154 e.g., using probe packets having TTL values ranging from 1 to 30 or from 1 until an ICMP Port Unreachable packet has been received.
- the existence of such situation can be stored in a database for future reference (e.g., in step 148 and/or step 150 ). It is noted that such additional probing for anomaly detection may occur either in real time, offline or using a combination of the two.
- the source addresses of the responses to the probe packets are matched to a database in an attempt to identify geographic locations of the corresponding routers.
- the server consults a previously collected database of exchange points and finds the last known exchange point closest to the requester. If the last known exchange point can be identified as a launch point for local distribution, then the requesting host can be identified as being in the geographical location serviced by that exchange point. Alternatively, such information can be compared to other geographic information regarding the requestor (e.g., user-supplied information) for confirmation.
- the last known exchange point can be identified by: (i) identifying all responses from the original requestor (e.g., the ICMP Port Unreachable message), (ii) identifying the smallest initial TTL value (N) for a probe packet corresponding to such a response, and then (iii) identifying the response packet corresponding to the probe packet having a TTL value which is one less than N.
- the original requestor e.g., the ICMP Port Unreachable message
- N initial TTL value
- the geographic location of the source for this response packet cannot be determined by looking up the source's IP address (or other network identifier) in a database (e.g., because a database entry does not exist for the address or because the database indicates that the associated geographic location may not be sufficiently reliable)
- the response packet corresponding to the probe packet having a TTL value of two less than N is examined. This process continues, working back from the original requestor until the geographic location of a router can be reliably determined (or a combination of information for plural routers provides sufficient reliability).
- the geographic location of the requestor is identified. Generally, this will be the geographic location of the last known exchange point closest to the requestor. However, as indicated above, in certain embodiments a composite geographic location may be provided based on information for plural different routers. Depending upon how large an area is served by the identified exchange point, the geographic location of the requestor may be known with more or less precision.
- the geographic information can be treated as specific information. Otherwise, the geographic information can be treated as a regional indication of where the requestor is located.
- p can be constant, such as 1, 2 or 3.
- p can be varied based on the indicated geographic region. For example, p might be specified to be a larger number in the Silicon Valley where there are many exchange points and a smaller number in rural areas where there are fewer exchange points within the same geographic region.
- an improvement over the “Closest Known Neighbor Heuristic” is applied.
- This heuristic addresses the problem of locating a node x given that x has an unknown location and that one has a map or trace of a packet's path through several nodes including x. If one or more other nodes on the path have known locations, then the heuristic assumes that x is at the same place that the closest (or previous or following) node with a known location is located.
- the same heuristic can be applied in a similar manner further down the tree by narrowing the heuristic's geographic scope. For example, if one knows the locations of all of the routers for a cable company's network, then all nodes on the network can be located at the granularity of the individual cable trunk served by each router.
- this geographic information can be updated or identified more accurately as additional information is received from the requester. For example, in the event that the requestor submits an on-line purchase order with a delivery address, provides a billing address, or otherwise provides address information, such provided information can be used to more accurately pinpoint the requestor's location. In the event that such provided address information conflicts with the geographic information identified using the probing technique described above, the host may continue to use the geographic information identified by probing or else use the provided address information, as appropriate to the particular circumstance. For instance, if the probe packet technique described above indicates that the requestor is located in Western New York, but the requestor provides a billing address of Raleigh, N.C., the host may continue to use the Western New York information while storing the Raleigh, N.C.
- step 156 is first cached in step 158 and then provided to the communication process of step 160 for use in providing geographic-specific information to the requestor.
- the identified geographic information is cached for future use.
- data previously acquired about specific IP addresses are cached for use in the common case of repeated requests (such as return visits to a Web site) from the same IP address.
- the route corresponding to the subject IP address has already been traced and the geographic heuristic already applied.
- This information can be re-used, thus lessening the load on the network and on the server's database and computational resources.
- the exact geographic address associated with a particular address at one point in time sometimes will not correspond to a much later request from the same IP address, as that IP address probably will have been reassigned to a different user. Accordingly, in the preferred embodiment of the invention, such cached information is determined to be relevant only if it has been updated within a specified period of time. The exact time period will vary based on expected tradeoffs, with shorter time periods requiring more frequent probing, together with the attendant overhead, and longer time periods increasing the likelihood that the cached information will be in error.
- the provided geographic information is used to provide geographic-specific content to the requester, such as local weather, advertising, maps, and places of interest, as well as somewhat more generic information, such as content that is based on time zone (e.g., a “good morning” greeting) or climate in the requestor's region.
- geographic information may also be used for other purposes, such as marketing research and/or other types of surveys and research.
- steps 152 through 158 may be initiated prior to completion of step 150 and performed simultaneously with step 150 for a period of time.
- each packet received at step 152 preferably will repeatedly cause steps 153 through 158 to be executed as far as applicable, with step 156 succeeding only once the probes have yielded sufficient information with which to draw a conclusion about the geographic location of the requesting node.
- step 156 Once step 156 has been successfully completed, the concurrently executing step 150 is a synchronously terminated. Any unsent probes in the probe sequence preferably will not be sent, as they are no longer relevant and generally will only serve to unnecessarily consume resources because the process has already arrived at a conclusion in step 156 .
- step 154 “Perform Modified Probing Operation”, will similarly modify the probe sequence being performed by step 150 . Specifically, unsent packets in the rest of the original probe sequence will not be sent, and instead a new “rest of the probe sequence” will be constructed (i) from information about what packets have already been sent and (ii) from conclusions reached by step 154 about what probes need to be sent in the modified sequence.
- the information in part (i) is considered in conjunction with that in part (ii), rather than simply naively following the sequence that would be generated by considering only part (ii) information, so that the host can avoid initiating probes that merely unintendedly duplicate probe packets that are already in progress.
- the probe sequence generated by in step 154 may deliberately contain duplicates.
- the integration of information from parts (i) and (ii) referenced above is only intended to avoid sending unintended duplicates that would not otherwise be part of the probe sequence that would be suggested by the part (ii) information alone.
- step 158 Even at and after step 158 , when no new probes are initiated, there often will be probes or replies still traversing the route between the requesting node and the server. It typically will be useful to record any responses the host receives to the outstanding probes in progress, as these serve as additional data for the “slow-side”analysis mechanism. On the other hand, if recording these late responses would impair the performance of the web server or other aspects of the entire system using the geographic locating technique according to the present invention, then any late responses may be simply ignored or discarded. In any case, in the preferred embodiment, waiting for late responses is not blocked. In modern higher level programming languages, this is most conveniently implemented by having the response recording mechanism be a separate process or thread of control within the overall mechanism.
- a response recording mechanism e.g., on a separate computer, that eavesdrops on the network traffic to and from the primary host computer on which the above mentioned process is executed.
- the separate computer then passively eavesdrops on that network traffic and records probes and their results on some local storage medium for future analysis, without generating any additional network traffic that might slow down the processing being done by the primary host computer.
- one feature of the present invention is the creation and use of a database containing geographic information for known exchange points. While it is possible to use multiple databases from various sources that are available over the Internet, accessing such different databases typically will consume additional time, which may be a significant detriment where delivery of real-time geographically targeted content is desired. Accordingly, it is preferable to use a single database and to dynamically update that database as new information is learned.
- these data can be stored to more accurately identify the location of a particular requester.
- data may be compiled and analyzed for common pathways to (perhaps formerly unknown) exchange points, leading to on-the-fly addition of known exchange points.
- the database maintenance system may be able to heuristically determine a change in the network's topology.
- the two locations are sufficiently different, then it may be determined that the requestor utilizes multiple locations (e.g., a permanent home location and a temporary travel location).
- the system may notify a human operator of the discrepancy, thus permitting a human database administrator to resolve the discrepancy.
- the resolutions for those discrepancies can be incorporated into the system's heuristics.
- the system's heuristics may themselves be updated automatically, e.g., by utilizing known neural network techniques which learn based on the corrections and resolutions made by the human database administrator.
- the database preferably is seeded with available information sources, such as data extracted from the Internic host and other sources of network registrations that are available, lists of locations of exchange points for various ISPs, and reverse telephone lookup information for ISPs' access telephone numbers.
- location/address information is linked in the database, such information preferably is flagged in the database to indicate whether the location associated with each network address is the location where the router for that network address is known to be located or simply one location for an entity that utilizes a number of routers in different geographic locations.
- ISPs typically fall into the latter category, so that network registration information for an ISP often indicates a single geographic location for all IP addresses assigned to the ISP, even though in actual usage different blocks of such IP addresses may be used by the ISP in different geographic locations.
- network registration information for an ISP often indicates a single geographic location for all IP addresses assigned to the ISP, even though in actual usage different blocks of such IP addresses may be used by the ISP in different geographic locations.
- such latter type of information may not be capable of immediate direct use, it may be combined with other information (e.g., a list of exchange points for the ISP, reverse telephone lookup information for the ISP's access telephone numbers, and/or network probing information, such as obtained as described above) to yield more precise geographic location information.
- the present invention also contemplates seeding and updating the database with data generated by a computer program, referred to herein as the Dial-up POP Locator (DPL), as described below.
- DPL Dial-up POP Locator
- PPP Point-to-Point Protocol
- IP datagrams IP datagrams
- client the dial-up Internet user's computer
- the client's modem makes a physical telephone call to the telephone number of a modem at a Point of Presence (POP), where the POP is a single location of the user's ISP.
- POP Point of Presence
- the modem at the POP answers and establishes a modem connection with the client's modem.
- the client computer and the POP can then send information to each other.
- the client and POP use the modem channel to mutually establish a PPP connection.
- the POP assigns a temporary IP address to the client and informs the client of this temporary address.
- the client can now send IP packets that the POP will route to the larger Internet.
- the client and POP are just ordinary Internet nodes, with the POP behaving just like any ordinary router between the client and the larger Internet.
- Internet Service Providers commonly provide multiple POPs in different geographic locations for their customers. Their intent in doing so is to make it possible for customers to make local telephone calls to the POP, since it is much more attractive for a customer to use the Internet if the customer does not have to pay per-minute toll charges for the telephone connection, in addition to any fees to the ISP.
- Internet Service Providers commonly distribute lists to their customers of all of their POPs, the telephone access numbers to those POPs, and their geographic locations. These lists are especially useful for customers who travel, because they can often find a local telephone access number regardless of where they are.
- the user of the DPL will arrange accounts with a variety of national and local ISPs.
- the user obtains lists of the modem phone numbers of the ISPs' POPs and the geographic location for each POP.
- the DPL user may not wish to gather information about all locations; instead, the DPL user may focus on a single region, state, nation, or other area of interest. In this case, the DPL user then selects all of the modem telephone numbers whose locations are in the DPL user's region of interest.
- DPL dialer One component of the DPL, the “DPL dialer”, then dials (preferably automatically) all, or all selected, numbers on that list. Each time it establishes a PPP link to a POP, the DPL dialer will send an Internet message via that PPP link with a destination address of the DPL data-gathering server (DGS).
- DGS DPL data-gathering server
- the DGS need not be a “server” in a conventional sense, but rather any network device that can receive messages from the dialer.
- the dialer and the DGS may be housed in the same device, sharing a network connection or having separate connections.
- the DPL dialer's message preferably includes information telling the DGS: which phone number the DPL dialer called, which city and state were in the ISP's modem list associated with that phone number, which ISP the DPL dialer used, and any additional bookkeeping information that may be helpful for debugging or further development purposes.
- the message sent by the DPL dialer may merely provide the minimal information required to uniquely identify the POP that it is using (together with any debugging or other similar information).
- the DGS preferably has access to a database that contains all other necessary information (such as the listed information) regarding each POP, which database may be shared with the DPL dialer. In either case, one way for the DPL dialer to send such messages to the DGS is to simply open an HTTP/TCP connection.
- the DPL dialer message generally also will include the IP address temporarily assigned to the client. Accordingly, the DGS associates such source network address with the known geographic location for the POP in its database, preferably by creating a new entry in the database.
- the DGS Upon receipt of such a message, the DGS preferably also initiates a probing operation (e.g., a full traceroute or similar technique for determining all routers along the path, or any other dynamic probing, such as that described above) in order to obtain more information regarding the routing path between the POP and the DGS.
- a probing operation e.g., a full traceroute or similar technique for determining all routers along the path, or any other dynamic probing, such as that described above
- the real-time requirements mentioned above generally are not as significant as when communicating with a human Internet user. Therefore, some of the tradeoffs made in the above-described dynamic real-time ICMP probing will be made differently in the DGS ICMP probes. More specifically, it is believed that most users of the DGS will favor thoroughness over speed, for the sake of establishing a more reliable database.
- the DGS records the trace of nodes on the route, as well as the associated geographic location, telephone access phone number, and ISP, and any other debugging or bookkeeping information that may be appropriate to the DPL user's specific needs, to the extent such information has been transmitted to the DGS and is not already stored in a database accessible to the DGS.
- a user of the DPL dialer makes a number of calls to each POP. This is in order to ensure that a consistent pattern develops.
- some dial-up phone numbers may occasionally re-route calls during congested times to a backup less-loaded POP. By making a number of calls at times of the day with different load conditions, we can identify such nodes.
- the DGS looks for the common nodes on the path to each location. For this purpose, the DGS analyzes at several levels of coarseness (i.e., granularity or resolution). Smaller individual locations with POPs, such as Santa Monica, Malibu, and Redondo Beach, may be grouped into a single entity, such as “LAX Metro”, at a coarser granularity of location resolution. In turn, “LAX Metro”, “San Diego Metro” and “Orange County” may be grouped into yet another single entity, such as “Southern California”. The various locations in California, Oregon, and Washington, in turn, may be grouped into yet a coarser-grained entity, such as “West Coast of USA”.
- a node may be found in traces made to several entities at that granularity, or may only be found in traces made to one of the entities at that granularity. If a node is found only in traces to one entity, X, at that granularity, we can refer to that node as a “determining node” for that granularity.
- the presence of a “determining node” in a trace is strong evidence for determining that the destination of that trace is located in entity X, and we can identify each “determining node” as being located within entity X.
- the DPL's heuristic can discover determining nodes for many granularities of resolution.
- the DPL is deployed with more than one DGS, in more than one geographic area.
- the DPL dialer then sends Internet messages to all of the DGSs, and each DGS gathers its own route traces, as described above for a single DGS.
- These additional route traces provide additional corroborating evidence, permitting confirmation that nodes are in fact determining nodes, rather than nodes that only appear to be determining nodes from one particular direction.
- the DPL can also be used to confirm the validity of an existing location database. If it is determined that there exists an inconsistency between where the ISP's list says the POP is located, as determined by the DPL, and where the probing technique according to the present invention determines that the POP is located, then it is preferable to first confirm that the location information on the ISP's list is not incorrect. This often can be done with a publicly available list of the locations of telephone exchanges. Then, a variety of means can be used, either manual ones or automated ones, such as a classic Artificial Intelligence Truth Maintenance System, to determine how the inconsistency arose, repair the location database, and possibly revise the data gathering method that led to the discrepant data.
- the foregoing technique can provide a database of exchange points at the layer of network topology necessary in order to provide the desired precision for a geographic location.
- a map of NAPs ordinarily suffices to identify the user to the precision of the area served by that NAP, and similar approaches can be used to obtain finer levels of granularity.
- precision refers to the granularity at which location information is available, and “accuracy” describes the likelihood that a technique will yield the proper location at a given precision.
- Further embodiments of the present invention provide accuracy guarantees by applying known statistical methods to the input sources of location data, and measuring their completeness, accuracy and precision. From the precision estimates associated with each such piece of data that contributed to identifying a particular location, an accuracy estimate can be derived for that identification.
- Additional methods can be used for seeding of the location database. Such techniques can be used either individually or in various combinations.
- the host names of hosts along a traceroute path can be parsed according to the naming conventions used by various ISPs. For example, the following lists certain domain names and their corresponding geographic locations.
- Such parsing may require an auxiliary database of airport codes and/or a database of the city codes used by various ISPs, as well as their naming patterns.
- auxiliary database of airport codes and/or a database of the city codes used by various ISPs, as well as their naming patterns.
- databases will be produced manually.
- Another technique for seeding the location database is to essentially eavesdrop on the routing tables used by the NAPs. This can be accomplished by consulting the Routing Arbiter Database and/or by eavesdropping on the internal routing protocol (usually RIP or RIP2) traffic at each of the NAPs. For example, by installing a network host at each of the NAPs of interest (such as a small number of the major ones or all of such NAPs) a host according to the present invention can eavesdrop on such traffic. Such special network hosts will then contribute updates to the routing information for use in the host's location database.
- any traffic whose next hop out of the NAP is not to a backbone router must be to a local network. Therefore, that network's routing prefix (appropriately masked block of network numbers) typically hangs entirely off of that NAP, and is therefore in the metropolitan area served by that NAP. Based on this information, it generally will be a relatively straightforward matter to determine when an IP address is located within an area served by an identified NAP. This technique also may be used to identify a geographic location for a source network address included in an incoming request, i.e., by utilizing the location of a NAP that corresponds to such network address.
- the present invention implements a “hasty listening” technique that allows a TCP application according to the present invention to receive notification of an incoming request sooner than conventional techniques ordinarily would permit.
- the TCP application is not notified regarding an incoming communication until after completion of a process known as the “Three-Way Handshake”, which is used in establishing a TCP connection.
- the hasty listening technique of the present invention the TCP application is notified as soon as the SYN packet is received, which is the first step in initiating a TCP connection. Hasty listening thus reduces the time during which an application must wait for geographic information about the request's originator to be gathered.
- a TCP application Using hasty listening, a TCP application will identify the IP address of the originator of an inbound TCP connection without having to wait for completion of the Three-Way Handshake. As a result, the process of obtaining a geographic location for such requestor (e.g., steps 143 , et seq. in FIG. 2) can often be initiated much sooner than conventional techniques would permit, thereby resulting in faster geographic positioning.
- DoS Denial of Service
- the TCP three-way handshake ordinarily will not be completed in the case of such an attack, because the host at the forged source address will know that it did not initiate the handshake to which the TCP listener is responding.
- this type of DoS attack will cause a host using Hasty Listening according to the present invention to waste resources determining the geographic location of a nonexistent peer. Therefore, hosts using Hasty Listening may be more vulnerable to this type of DoS attack.
- a host using Hasty Listening preferably uses this security feature to aggressively attempt to detect possible SYN Flooding and to stop using Hasty Listening for a time when such a detection has been made.
- location information caching may reduce the amount of network traffic that a system according to the present invention generates when it receives a DoS attack. This, in turn, often will tend to reduce the severity of the cascade effect which otherwise would result from repeatedly probing some target that is an innocent additional victim of the DoS attack.
- new extensions are provided in order to effect implementation of hasty listening and to retrieve the TTL value for an incoming request packet.
- Sockets API a typical sequence of Sockets API function calls that a TCP server might make.
- the thread that initiates the function call is indicated in italics and parentheses and is positioned between the function call and the description of the function call.
- the server has a single thread of control, the Master Thread.
- l socket ( . . . ) (Master Thread) Creates a socket, l.
- ioctl (l, . . . ) (Master Thread) Sets options for l's behavior and query information about l's status.
- ioctl (l, . . . ) (Master Thread) Possibly set additional options for l's behavior. Possibly request additional information about l's status.
- c accept (l, . . . ) (Master Thread) if there is no established connection on l's connection backlog, wait until a new connection, e, is established to p; e will now be the only connection in l's backlog. If l already has a backlog, then let e be the first connection in l's backlog.
- accept ( ) removes e from l's backlog, creates a new socket, c, and associates c with e, accept ( ) then returns c.
- the newly-minted socket c refers only to e.
- Process data (Worker t) Read the pending data and send any replies needed. The exact calls used to send and receive data are not important for this discussion.
- Terminate thread (Worker t) t has no more work to perform and terminates itself.
- ioctl( ) One of the function calls described above, ioctl( ), can be used to query transient information about the connection and set aspects of its state that do not fit neatly into any other standard system operations.
- the function calling signature for ioctl ( ) is:
- the operation parameter can indicate any operation or status query that the API user may wish to perform on the socket.
- a status query one provides an optional-parameter in order to store the results of the query.
- the interpretation of optional-parameter depends upon the particular operation being performed.
- the use of the optional-parameter depends upon the particular operation, and there are some setting operations that do not require an optional-parameter.
- the setsockopt ( ) and getsockopt ( ) API calls are intended to modify more persistent aspects of sockets. Their function calling signatures are similar to that of ioctl ( ) and are not discussed here in detail. There are well-known socket options that are common to all implementations of the Sockets API. In addition, each implementation of the TCP/IP Sockets API may have its own implementation-specific named/defined operations.
- the function calling signature for select ( ) is:
- select ( ) checks whether one or more sockets can have certain API calls made on them without that call “blocking”. If an API call “blocks”, that means that the TCP implementation must wait for something to happen before that API call can be completed.
- select( ) in the Sockets API is to check whether data is available to be read on one or more connected TCP sockets. If, when select( ) returns, it has indicated that some connected TCP socket, c, is among the readable-sockets, then a program calling the standard Sockets API read( ) function call on c will get back data immediately. The socket c will have data if the TCP implementation has received data over c's TCP connection, e, and has not yet returned that data in a previous use of read( ).
- select ( ) is often called with the listen( )ing socket, l, as one of the maybe-readable-sockets.
- a new connection, e is established to l's TCP port, then e is added to l's “established connection backlog”. If there is an established connection in l's “established connection backlog”, such that an accept( ) operation will immediately return a usable connected socket, c, then l is considered “readable” for the purposes of select ( ).
- l is not actually “readable” in the normal sense of the word; a read( ) API call on l will fail.
- select( ) uses the readable-sockets parameter to represent information about l's connection backlog. This is an arbitrary convention; the writable-sockets or exceptional-conditions-sockets parameters would (ideally) have been equally appropriate choices.
- the extensions to the API according to the present invention allow two new capabilities: hasty listening and TTL value retrieval.
- accept (l, . . . ) is called; or
- SIOC_GET_SYN_PKT_INFO is a new ioctl( ) operation defined below.
- select ( ) will continue to mark l as being in the set of exceptional-conditions-sockets and will immediately return to its caller.
- select( )'s standard behavior is not affected by the new feature described in the previous paragraph.
- setsockopt l, . . . , SO_SET_HASTY_LISTEN, . . . .
- ENOPROTOOPT error will return an ENOPROTOOPT error.
- ioctl( ) If the ioctl( ) operation SIOC_GET_SYN_PKT_INFO is performed on a socket l in the listen( )ing state, and l's backlog contains any established connection or pending connection which is in the “exception” state, then ioctl( ) will:
- ENOMSG is returned; ENOMSG is a standard error defined to indicate “No message of desired type”.
- Sockets API functions such as ioctl( ) or setsockopt( ), return the constant integer value ( ⁇ 1); ⁇ 1, by convention, indicates that some error occurred, but does not specify the error.
- ioctl( ) and setsockopt( ) specify the particular error by setting a standard data storage area, errno, to a small integer indicating one of the predefined system error codes.
- errno In the case of the ENOMSG error, we set the errno area to the constant ENOMSG, which is defined in a system file (include/errno.h).
- ioctl( ) If the socket argument to ioctl( ) is not in fact a socket, ioctl( ) returns the standard error code ENOTSOCK, which indicates “socket operation on non-socket”. If the socket argument to ioctl( ) is not any sort of input/output descriptor, then ioctl( ) returns the standard error code EBADF, which is standardly defined to indicate “Bad File Number”. If the socket argument is a socket that is not in the listen( )ing state, then ioctl( ) returns the standard error code EINVAL, which is defined to indicate “invalid argument”.
- SIOC_GET_SYN_PKT_INFO's value argument is a pointer to a newly defined structure, struct syn_pkg_info.
- the data fields we have defined for struct syn_pkt_info are:
- ttl The TTL value of the received SYN packet.
- peer The IP Address of the peer or potential peer that is the recorded sender of that received SYN packet.
- the above data members provide information used in the current embodiment of the invention to optimize the initial probing time. There is additional information in the SYN packet that may be useful for other computer applications that use Hasty Listening; in order to obtain this additional information, additional data fields can be added to struct syn_pkt_info as needed.
- which-packet may count fragmented and reassembled IP packets as:
- 0 Gets the TTL value of the first SYN packet received by the connection c. 0 and ⁇ 1 will be the most commonly specified values for which-packet. This is used in the present embodiment to begin the probing. A TCP stack implementing SIOC_GET_TTL should maintain this information for the entire lifetime of the connection, since it consumes only one extra byte of data in the connection's transmission control block, and mechanisms to recycle that byte are likely to cost more than the space it would save.
- ⁇ 1 Gets the TTL value of the most recent packet received by the connection. It is expected that ⁇ 1 and 0 will be the most commonly specified values for which-packet. This is used in the present embodiment to detect asymmetric routing, multipath routing, and other routing anomalies.
- i ⁇ ⁇ 1 The TTL value of the ( ⁇ i) th most recent packet received by the connection. i is not related to the TCP sequence number; instead, i is based on the order of the actual IP packets received. In most embodiments, this will not be available for all (or even most) values of i, due to the necessity of imposing internal storage limits.
- the first most recent packet to be the most recent packet ( ⁇ 1)
- i ⁇ 0 The TTL value of the ( ⁇ i) th packet received by the connection.
- i is not related to the TCP sequence number. Implementations should set a limit on the number of packets for which TTL information is retained, in order to avoid excessive internal storage requirements.
- the specific values used above are not critical, and any other values may be used instead.
- both the i ⁇ 1 and the i ⁇ 0 cases can be used in the technique of the present invention to detect asymmetric routing, multi-path routing and other routing anomalies.
- the TTL of the most recently received IP packet generally will be sufficient: (a) to perform strategic optimized probing based upon that TTL; and (b) to detect routing anomalies.
- FIG. 3 is a block diagram of a general purpose computer system, representing one of many suitable computer platforms for implementing the methods described above.
- FIG. 3 shows a general purpose computer system 250 in accordance with the present invention.
- computer system 250 includes a central processing unit (CPU) 252 , read-only memory (ROM) 254 , random access memory (RAM) 256 , expansion RAM 258 , input/output (I/O) circuitry 260 , display assembly 262 , input device 264 , network interface 265 , and expansion bus 266 .
- Computer system 250 may also optionally include a mass storage unit 268 such as a disk drive unit or nonvolatile memory such as flash memory and a real-time clock 270 .
- CPU 252 is coupled to ROM 254 by a data bus 272 , control bus 274 , and address bus 276 .
- ROM 254 contains the basic operating system for the computer system 250 .
- CPU 252 is also connected to RAM 256 by busses 272 , 274 , and 276 .
- Expansion RAM 258 is optionally coupled to RAM 256 for use by CPU 252 .
- CPU 252 is also coupled to the I/O circuitry 260 by data bus 272 , control bus 274 , and address bus 276 to permit data transfers with peripheral devices.
- I/O circuitry 260 typically includes a number of latches, registers and direct memory access (DMA) controllers. The purpose of I/O circuitry 260 is to provide an interface between CPU 252 and a network via network interface 265 and such peripheral devices as display assembly 262 , input device 264 , and mass storage 268 .
- DMA direct memory access
- Display assembly 262 of computer system 250 is an output device coupled to I/O circuitry 260 by a data bus 278 .
- Display assembly 262 receives data from I/O circuitry 260 via bus 278 and displays that data on a suitable screen.
- the screen for display assembly 262 can be a device that uses a cathode-ray tube (CRT), liquid crystal display (LCD), or the like, of the types commercially available from a variety of manufacturers.
- Input device 264 can be a keyboard, a mouse, a stylus working in cooperation with a position-sensing display, or the like.
- the aforementioned input devices are available from a variety of vendors and are well known in the art.
- mass storage 268 is generally considered desirable. However, mass storage 268 can be eliminated by providing a sufficient amount of RAM 256 and expansion RAM 258 to store user application programs and data. In that case, RAMs 256 and 258 can optionally be provided with a backup battery to prevent the loss of data even when computer system 250 is turned off. However, it is generally desirable to have some type of long term mass storage 268 such as a commercially available hard disk drive, nonvolatile memory such as flash memory, battery backed RAM, PC-data cards, or the like.
- a removable storage read/write device 269 may be coupled to I/O circuitry 260 to read from and to write to a removable storage medium 271 .
- Removable storage medium 271 may represent, for example, a magnetic disk, a magnetic tape, an opto-magnetic disk, an optical disk, or the like. Instructions for implementing the inventive method may be provided, in one embodiment, to a network via such a removable storage media.
- CPU 252 In operation, information is input into the computer system 250 by typing on a keyboard, manipulating a mouse or trackball, or “writing” on a tablet or on position-sensing screen of display assembly 262 .
- CPU 252 then processes the data under control of an operating system and an application program, such as a program to perform the steps of the inventive method described above, stored in ROM 254 and/or RAM 256 . It is noted that such process steps may initially be stored in mass storage 268 , downloaded into RAM 256 and then executed out of RAM 256 .
- CPU 252 then typically produces data which is output to the display assembly 262 to produce appropriate images on its screen.
- Expansion bus 266 is coupled to data bus 272 , control bus 274 , and address bus 276 . Expansion bus 266 provides extra ports to couple devices such as network interface circuits, modems, display switches, microphones, speakers, etc. to CPU 252 . Network communication is accomplished through the network interface circuit 265 and an appropriate network.
- Suitable computers for use in implementing the present invention may be obtained from various vendors. Various computers, however, may be used depending upon the size and complexity of the tasks. Suitable computers include mainframe computers, multiprocessor computers, workstations or personal computers. In addition, although a general purpose computer system has been described above, a special-purpose computer may also be used.
- the present invention also relates to machine readable media on which are stored program instructions for performing the methods of this invention.
- Such media include, by way of example, magnetic disks, magnetic tape, optically readable media such as CD ROMs, semiconductor memory such as PCMCIA cards, etc.
- the medium may take the form of a portable item such as a small disk, diskette, cassette, etc., or it may take the form of a relatively larger or immobile item such as a hard disk drive or RAM provided in a computer.
- references above to the Internet should be understood to apply equally to other networks, such as other packet switched networks.
- references to IP addresses above can be replaced with references to network addresses or network identifiers, and other similar generalizations can be made, as will be understood by those skilled in the art.
Abstract
Description
ttl | The TTL value of the received SYN packet. |
peer | The IP Address of the peer or potential peer that is the recorded |
sender of that received SYN packet. | |
0 | Gets the TTL value of the first SYN packet received by the connection c. 0 |
and −1 will be the most commonly specified values for which-packet. This is | |
used in the present embodiment to begin the probing. | |
A TCP stack implementing SIOC_GET_TTL should maintain this information | |
for the entire lifetime of the connection, since it consumes only one extra byte | |
of data in the connection's transmission control block, and mechanisms to | |
recycle that byte are likely to cost more than the space it would save. | |
−1 | Gets the TTL value of the most recent packet received by the connection. It |
is expected that −1 and 0 will be the most commonly specified values for | |
which-packet. | |
This is used in the present embodiment to detect asymmetric routing, | |
multipath routing, and other routing anomalies. | |
This information should always be available. | |
i ≦ −1 | The TTL value of the (−i)th most recent packet received by the connection. i |
is not related to the TCP sequence number; instead, i is based on the order | |
of the actual IP packets received. In most embodiments, this will not be | |
available for all (or even most) values of i, due to the necessity of imposing | |
internal storage limits. We define the first most recent packet to be the most | |
recent packet (−1), the second most recent packet to be the penultimate (−2), | |
and so on. Note that the case defined above for which-packet = −1 is a special | |
case of this more general case. | |
i ≧ 0 | The TTL value of the (−i)th packet received by the connection. i is not related |
to the TCP sequence number. Implementations should set a limit on the | |
number of packets for which TTL information is retained, in order to avoid | |
excessive internal storage requirements. We define “packet number zero (0)” | |
to be the first packet received by the connection c. Therefore, the case | |
defined above for which-packet = 0 is a special case of this more general | |
case. | |
Claims (33)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/591,288 US6778524B1 (en) | 2000-06-09 | 2000-06-09 | Creating a geographic database for network devices |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/591,288 US6778524B1 (en) | 2000-06-09 | 2000-06-09 | Creating a geographic database for network devices |
Publications (1)
Publication Number | Publication Date |
---|---|
US6778524B1 true US6778524B1 (en) | 2004-08-17 |
Family
ID=32851190
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/591,288 Expired - Lifetime US6778524B1 (en) | 2000-06-09 | 2000-06-09 | Creating a geographic database for network devices |
Country Status (1)
Country | Link |
---|---|
US (1) | US6778524B1 (en) |
Cited By (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020103974A1 (en) * | 2000-11-29 | 2002-08-01 | Giacomini Peter Joseph | Method and apparatus for economical cache population |
US20020120773A1 (en) * | 2001-02-23 | 2002-08-29 | Caveney Jack E. | Network documentation system with electronic modules |
US20020143946A1 (en) * | 2001-03-28 | 2002-10-03 | Daniel Crosson | Software based internet protocol address selection method and system |
US20020143991A1 (en) * | 2001-03-16 | 2002-10-03 | Kingsum Chow | Geographic location determination including inspection of network address |
US20030009594A1 (en) * | 2000-02-04 | 2003-01-09 | Mcelligott Adrian | Method and apparatus for identifying locale of internet users |
US20030110293A1 (en) * | 1999-05-03 | 2003-06-12 | Friedman Robert B. | Geo-intelligent traffic reporter |
US20030115258A1 (en) * | 2001-12-13 | 2003-06-19 | International Business Machines Corporation | Time zone difference based locality estimation between web clients and E-business servers |
US20050043036A1 (en) * | 2001-07-05 | 2005-02-24 | Ioppe Igor V | Apparatus and method for obtaining location information of mobile stations in a wireless communications network |
US20050099948A1 (en) * | 2003-11-12 | 2005-05-12 | Wakumoto Shaun K. | Automated path tracing through switching mesh |
US20050103294A1 (en) * | 2003-07-24 | 2005-05-19 | Matthias Heinze | Camshaft adjustment control device |
US20050234922A1 (en) * | 1999-05-03 | 2005-10-20 | Parekh Sanjay M | Systems and methods for determining, collecting, and using geographic locations of internet users |
US20060010389A1 (en) * | 2004-07-09 | 2006-01-12 | International Business Machines Corporation | Identifying a distributed denial of service (DDoS) attack within a network and defending against such an attack |
US20060041380A1 (en) * | 2000-07-12 | 2006-02-23 | Tetsuro Motoyama | Method and system of remote position reporting device |
US7073198B1 (en) | 1999-08-26 | 2006-07-04 | Ncircle Network Security, Inc. | Method and system for detecting a vulnerability in a network |
US20060148446A1 (en) * | 2002-02-28 | 2006-07-06 | Stefan Karlsson | Method and distributed rating system for determining rating data in a charging system |
US20060146820A1 (en) * | 2002-11-26 | 2006-07-06 | Robert Friedman | Geo-intelligent traffic manager |
US20060224752A1 (en) * | 1999-05-03 | 2006-10-05 | Parekh Sanjay M | Determining geographic locations of private network Internet users |
US7127488B1 (en) * | 2002-07-23 | 2006-10-24 | Bellsouth Intellectual Property Corp. | System and method for gathering information related to a geographical location of a caller in an internet-based communication system |
US7162742B1 (en) | 2000-01-10 | 2007-01-09 | Ncircle Network Security, Inc. | Interoperability of vulnerability and intrusion detection systems |
US7181769B1 (en) * | 2000-08-25 | 2007-02-20 | Ncircle Network Security, Inc. | Network security system having a device profiler communicatively coupled to a traffic monitor |
US7194354B1 (en) * | 2001-06-19 | 2007-03-20 | Cisco Technology, Inc. | System for discovering and maintaining geographic location information in a computer network to enable emergency services |
US20070233368A1 (en) * | 2006-03-29 | 2007-10-04 | Research In Motion Limited | Shared image database with geographic navigation |
US7296088B1 (en) * | 2000-11-17 | 2007-11-13 | Microsoft Corporation | System and method for determining the geographic location of internet hosts |
US7356609B1 (en) * | 2003-03-14 | 2008-04-08 | Network Equipment Technologies, Inc. | Method and system for optimizing interfaces for non-routed PPP sessions using PPP global interface |
US20080205388A1 (en) * | 2007-02-22 | 2008-08-28 | Microsoft Corporation | Discovery of network devices logically located between a client and a service |
US7444428B1 (en) * | 2002-08-26 | 2008-10-28 | Netapp, Inc. | Method and apparatus for estimating relative network proximity in the presence of a network filter |
US20090041039A1 (en) * | 2007-08-07 | 2009-02-12 | Motorola, Inc. | Method and device for routing mesh network traffic |
US7672444B2 (en) | 2003-12-24 | 2010-03-02 | At&T Intellectual Property, I, L.P. | Client survey systems and methods using caller identification information |
US7844729B1 (en) | 1999-05-03 | 2010-11-30 | Digital Envoy, Inc. | Geo-intelligent traffic manager |
US7929675B2 (en) | 2001-06-25 | 2011-04-19 | At&T Intellectual Property I, L.P. | Visual caller identification |
US20110113116A1 (en) * | 2009-11-11 | 2011-05-12 | Jeff Burdette | Method, computer program product and electronic device for hyper-local geo-targeting |
US7945253B2 (en) | 2003-11-13 | 2011-05-17 | At&T Intellectual Property I, L.P. | Method, system, and storage medium for providing comprehensive originator identification services |
US7978833B2 (en) | 2003-04-18 | 2011-07-12 | At&T Intellectual Property I, L.P. | Private caller ID messaging |
US7978841B2 (en) | 2002-07-23 | 2011-07-12 | At&T Intellectual Property I, L.P. | System and method for gathering information related to a geographical location of a caller in a public switched telephone network |
US8019064B2 (en) | 2001-08-14 | 2011-09-13 | At&T Intellectual Property I, L.P. | Remote notification of communications |
US8073121B2 (en) | 2003-04-18 | 2011-12-06 | At&T Intellectual Property I, L.P. | Caller ID messaging |
US8139758B2 (en) | 2001-12-27 | 2012-03-20 | At&T Intellectual Property I, L.P. | Voice caller ID |
US8155287B2 (en) | 2001-09-28 | 2012-04-10 | At&T Intellectual Property I, L.P. | Systems and methods for providing user profile information in conjunction with an enhanced caller information system |
US8160226B2 (en) | 2007-08-22 | 2012-04-17 | At&T Intellectual Property I, L.P. | Key word programmable caller ID |
US8195136B2 (en) | 2004-07-15 | 2012-06-05 | At&T Intellectual Property I, L.P. | Methods of providing caller identification information and related registries and radiotelephone networks |
US8243909B2 (en) | 2007-08-22 | 2012-08-14 | At&T Intellectual Property I, L.P. | Programmable caller ID |
US20130111042A1 (en) * | 2011-10-31 | 2013-05-02 | Avaya Inc. | Route lookup resolution |
US8452268B2 (en) | 2002-07-23 | 2013-05-28 | At&T Intellectual Property I, L.P. | System and method for gathering information related to a geographical location of a callee in a public switched telephone network |
US20140372487A1 (en) * | 2013-06-14 | 2014-12-18 | Here Global B.V. | Navigation database customization |
US9031581B1 (en) | 2005-04-04 | 2015-05-12 | X One, Inc. | Apparatus and method for obtaining content on a cellular wireless device based on proximity to other wireless devices |
US9455908B2 (en) * | 2014-07-07 | 2016-09-27 | Cisco Technology, Inc. | Bi-directional flow stickiness in a network environment |
US9503363B2 (en) | 2015-03-16 | 2016-11-22 | Cisco Technology, Inc. | Segment routing label switch paths in network functions virtualization communications networks |
US20170171323A1 (en) * | 2015-12-14 | 2017-06-15 | ZenPhone LLC | Dynamic Assignment of Phone Numbers for Call Forwarding |
US9979629B2 (en) | 2015-08-21 | 2018-05-22 | Cisco Technology, Inc. | Distribution of segment identifiers in network functions virtualization and software defined network environments |
US20180270300A1 (en) * | 2014-10-07 | 2018-09-20 | Interdigital Patent Holdings, Inc. | Supporting internet protocol (ip) clients in an information centric network (icn) |
US10382882B2 (en) * | 2014-09-02 | 2019-08-13 | Mastercard International Incorporated | Systems and methods for identifying merchant locations based on transaction records |
CN113098704A (en) * | 2019-12-23 | 2021-07-09 | 中国移动通信集团湖南有限公司 | Network topology structure determination method and device and electronic equipment |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5675741A (en) | 1994-10-25 | 1997-10-07 | Cabletron Systems, Inc. | Method and apparatus for determining a communications path between two nodes in an Internet Protocol (IP) network |
US5781534A (en) * | 1995-10-31 | 1998-07-14 | Novell, Inc. | Method and apparatus for determining characteristics of a path |
US5884038A (en) | 1997-05-02 | 1999-03-16 | Whowhere? Inc. | Method for providing an Internet protocol address with a domain name server |
US5892753A (en) | 1996-12-02 | 1999-04-06 | International Business Machines Corporation | System and method for dynamically refining PMTU estimates in a multimedia datastream internet system |
US5948061A (en) | 1996-10-29 | 1999-09-07 | Double Click, Inc. | Method of delivery, targeting, and measuring advertising over networks |
US5983109A (en) * | 1997-02-03 | 1999-11-09 | Northern Telecom Limited | Method and apparatus for using advanced positioning systems in cellular communications networks |
US20020023123A1 (en) * | 1999-07-26 | 2002-02-21 | Justin P. Madison | Geographic data locator |
US6522889B1 (en) * | 1999-12-23 | 2003-02-18 | Nokia Corporation | Method and apparatus for providing precise location information through a communications network |
US6580914B1 (en) * | 1998-08-17 | 2003-06-17 | At&T Wireless Services, Inc. | Method and apparatus for automatically providing location-based information content on a wireless device |
-
2000
- 2000-06-09 US US09/591,288 patent/US6778524B1/en not_active Expired - Lifetime
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5675741A (en) | 1994-10-25 | 1997-10-07 | Cabletron Systems, Inc. | Method and apparatus for determining a communications path between two nodes in an Internet Protocol (IP) network |
US5781534A (en) * | 1995-10-31 | 1998-07-14 | Novell, Inc. | Method and apparatus for determining characteristics of a path |
US5948061A (en) | 1996-10-29 | 1999-09-07 | Double Click, Inc. | Method of delivery, targeting, and measuring advertising over networks |
US5892753A (en) | 1996-12-02 | 1999-04-06 | International Business Machines Corporation | System and method for dynamically refining PMTU estimates in a multimedia datastream internet system |
US5983109A (en) * | 1997-02-03 | 1999-11-09 | Northern Telecom Limited | Method and apparatus for using advanced positioning systems in cellular communications networks |
US5884038A (en) | 1997-05-02 | 1999-03-16 | Whowhere? Inc. | Method for providing an Internet protocol address with a domain name server |
US6580914B1 (en) * | 1998-08-17 | 2003-06-17 | At&T Wireless Services, Inc. | Method and apparatus for automatically providing location-based information content on a wireless device |
US20020023123A1 (en) * | 1999-07-26 | 2002-02-21 | Justin P. Madison | Geographic data locator |
US6522889B1 (en) * | 1999-12-23 | 2003-02-18 | Nokia Corporation | Method and apparatus for providing precise location information through a communications network |
Cited By (112)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7698377B2 (en) | 1999-05-03 | 2010-04-13 | Digital Envoy, Inc. | Systems and methods for determining, collecting, and using geographic locations of internet users |
US7685311B2 (en) | 1999-05-03 | 2010-03-23 | Digital Envoy, Inc. | Geo-intelligent traffic reporter |
US7844729B1 (en) | 1999-05-03 | 2010-11-30 | Digital Envoy, Inc. | Geo-intelligent traffic manager |
US8463942B2 (en) | 1999-05-03 | 2013-06-11 | Digital Envoy, Inc. | Method and system for geo-targeted content delivery |
US20060224752A1 (en) * | 1999-05-03 | 2006-10-05 | Parekh Sanjay M | Determining geographic locations of private network Internet users |
US20030110293A1 (en) * | 1999-05-03 | 2003-06-12 | Friedman Robert B. | Geo-intelligent traffic reporter |
US8060606B2 (en) | 1999-05-03 | 2011-11-15 | Digital Envoy, Inc. | Geo-intelligent traffic reporter |
US20050234922A1 (en) * | 1999-05-03 | 2005-10-20 | Parekh Sanjay M | Systems and methods for determining, collecting, and using geographic locations of internet users |
US9900284B2 (en) | 1999-05-03 | 2018-02-20 | Digital Envoy, Inc. | Method and system for generating IP address profiles |
US7073198B1 (en) | 1999-08-26 | 2006-07-04 | Ncircle Network Security, Inc. | Method and system for detecting a vulnerability in a network |
US7509681B2 (en) | 2000-01-10 | 2009-03-24 | Ncircle Network Security, Inc. | Interoperability of vulnerability and intrusion detection systems |
US20070113285A1 (en) * | 2000-01-10 | 2007-05-17 | Flowers John S | Interoperability of Vulnerability and Intrusion Detection Systems |
US7162742B1 (en) | 2000-01-10 | 2007-01-09 | Ncircle Network Security, Inc. | Interoperability of vulnerability and intrusion detection systems |
US20030009594A1 (en) * | 2000-02-04 | 2003-01-09 | Mcelligott Adrian | Method and apparatus for identifying locale of internet users |
US20060041380A1 (en) * | 2000-07-12 | 2006-02-23 | Tetsuro Motoyama | Method and system of remote position reporting device |
US7650233B2 (en) * | 2000-07-12 | 2010-01-19 | Ricoh Company Limited | Method and system of remote position reporting device |
US7594273B2 (en) | 2000-08-25 | 2009-09-22 | Ncircle Network Security, Inc. | Network security system having a device profiler communicatively coupled to a traffic monitor |
US20070143852A1 (en) * | 2000-08-25 | 2007-06-21 | Keanini Timothy D | Network Security System Having a Device Profiler Communicatively Coupled to a Traffic Monitor |
US7181769B1 (en) * | 2000-08-25 | 2007-02-20 | Ncircle Network Security, Inc. | Network security system having a device profiler communicatively coupled to a traffic monitor |
US20080037536A1 (en) * | 2000-11-17 | 2008-02-14 | Microsoft Corporation | System and method for determining the geographic location of internet hosts |
US7296088B1 (en) * | 2000-11-17 | 2007-11-13 | Microsoft Corporation | System and method for determining the geographic location of internet hosts |
US7711846B2 (en) | 2000-11-17 | 2010-05-04 | Microsoft Corporation | System and method for determining the geographic location of internet hosts |
US20020103974A1 (en) * | 2000-11-29 | 2002-08-01 | Giacomini Peter Joseph | Method and apparatus for economical cache population |
US20090222624A1 (en) * | 2000-11-29 | 2009-09-03 | Broadspider Networks, Inc. | Method and Apparatus For Economical Cache Population |
US7028087B2 (en) * | 2001-02-23 | 2006-04-11 | Panduit Corp. | Network documentation system with electronic modules |
US20020120773A1 (en) * | 2001-02-23 | 2002-08-29 | Caveney Jack E. | Network documentation system with electronic modules |
US20020143991A1 (en) * | 2001-03-16 | 2002-10-03 | Kingsum Chow | Geographic location determination including inspection of network address |
US7454523B2 (en) * | 2001-03-16 | 2008-11-18 | Intel Corporation | Geographic location determination including inspection of network address |
US20020143946A1 (en) * | 2001-03-28 | 2002-10-03 | Daniel Crosson | Software based internet protocol address selection method and system |
US7194354B1 (en) * | 2001-06-19 | 2007-03-20 | Cisco Technology, Inc. | System for discovering and maintaining geographic location information in a computer network to enable emergency services |
US7929675B2 (en) | 2001-06-25 | 2011-04-19 | At&T Intellectual Property I, L.P. | Visual caller identification |
US20050043036A1 (en) * | 2001-07-05 | 2005-02-24 | Ioppe Igor V | Apparatus and method for obtaining location information of mobile stations in a wireless communications network |
US8019064B2 (en) | 2001-08-14 | 2011-09-13 | At&T Intellectual Property I, L.P. | Remote notification of communications |
US8155287B2 (en) | 2001-09-28 | 2012-04-10 | At&T Intellectual Property I, L.P. | Systems and methods for providing user profile information in conjunction with an enhanced caller information system |
US20030115258A1 (en) * | 2001-12-13 | 2003-06-19 | International Business Machines Corporation | Time zone difference based locality estimation between web clients and E-business servers |
US8139758B2 (en) | 2001-12-27 | 2012-03-20 | At&T Intellectual Property I, L.P. | Voice caller ID |
US20060148446A1 (en) * | 2002-02-28 | 2006-07-06 | Stefan Karlsson | Method and distributed rating system for determining rating data in a charging system |
US7978841B2 (en) | 2002-07-23 | 2011-07-12 | At&T Intellectual Property I, L.P. | System and method for gathering information related to a geographical location of a caller in a public switched telephone network |
US8452268B2 (en) | 2002-07-23 | 2013-05-28 | At&T Intellectual Property I, L.P. | System and method for gathering information related to a geographical location of a callee in a public switched telephone network |
US7127488B1 (en) * | 2002-07-23 | 2006-10-24 | Bellsouth Intellectual Property Corp. | System and method for gathering information related to a geographical location of a caller in an internet-based communication system |
US9532175B2 (en) | 2002-07-23 | 2016-12-27 | At&T Intellectual Property I, L.P. | System and method for gathering information related to a geographical location of a callee in a public switched telephone network |
US7444428B1 (en) * | 2002-08-26 | 2008-10-28 | Netapp, Inc. | Method and apparatus for estimating relative network proximity in the presence of a network filter |
US20060146820A1 (en) * | 2002-11-26 | 2006-07-06 | Robert Friedman | Geo-intelligent traffic manager |
US7356609B1 (en) * | 2003-03-14 | 2008-04-08 | Network Equipment Technologies, Inc. | Method and system for optimizing interfaces for non-routed PPP sessions using PPP global interface |
US8073121B2 (en) | 2003-04-18 | 2011-12-06 | At&T Intellectual Property I, L.P. | Caller ID messaging |
US7978833B2 (en) | 2003-04-18 | 2011-07-12 | At&T Intellectual Property I, L.P. | Private caller ID messaging |
US20050103294A1 (en) * | 2003-07-24 | 2005-05-19 | Matthias Heinze | Camshaft adjustment control device |
US20050099948A1 (en) * | 2003-11-12 | 2005-05-12 | Wakumoto Shaun K. | Automated path tracing through switching mesh |
US7447222B2 (en) * | 2003-11-12 | 2008-11-04 | Hewlett-Packard Development Company, L.P. | Automated path tracing through switching mesh |
US7945253B2 (en) | 2003-11-13 | 2011-05-17 | At&T Intellectual Property I, L.P. | Method, system, and storage medium for providing comprehensive originator identification services |
US7672444B2 (en) | 2003-12-24 | 2010-03-02 | At&T Intellectual Property, I, L.P. | Client survey systems and methods using caller identification information |
US8102994B2 (en) | 2003-12-24 | 2012-01-24 | At&T Intellectual Property I, L.P. | Client survey systems and methods using caller identification information |
US20060010389A1 (en) * | 2004-07-09 | 2006-01-12 | International Business Machines Corporation | Identifying a distributed denial of service (DDoS) attack within a network and defending against such an attack |
US8195136B2 (en) | 2004-07-15 | 2012-06-05 | At&T Intellectual Property I, L.P. | Methods of providing caller identification information and related registries and radiotelephone networks |
US9942705B1 (en) | 2005-04-04 | 2018-04-10 | X One, Inc. | Location sharing group for services provision |
US10313826B2 (en) | 2005-04-04 | 2019-06-04 | X One, Inc. | Location sharing and map support in connection with services request |
US11778415B2 (en) | 2005-04-04 | 2023-10-03 | Xone, Inc. | Location sharing application in association with services provision |
US11356799B2 (en) | 2005-04-04 | 2022-06-07 | X One, Inc. | Fleet location sharing application in association with services provision |
US10856099B2 (en) | 2005-04-04 | 2020-12-01 | X One, Inc. | Application-based two-way tracking and mapping function with selected individuals |
US10791414B2 (en) | 2005-04-04 | 2020-09-29 | X One, Inc. | Location sharing for commercial and proprietary content applications |
US10750311B2 (en) | 2005-04-04 | 2020-08-18 | X One, Inc. | Application-based tracking and mapping function in connection with vehicle-based services provision |
US10750309B2 (en) | 2005-04-04 | 2020-08-18 | X One, Inc. | Ad hoc location sharing group establishment for wireless devices with designated meeting point |
US10750310B2 (en) | 2005-04-04 | 2020-08-18 | X One, Inc. | Temporary location sharing group with event based termination |
US10341809B2 (en) | 2005-04-04 | 2019-07-02 | X One, Inc. | Location sharing with facilitated meeting point definition |
US10341808B2 (en) | 2005-04-04 | 2019-07-02 | X One, Inc. | Location sharing for commercial and proprietary content applications |
US9031581B1 (en) | 2005-04-04 | 2015-05-12 | X One, Inc. | Apparatus and method for obtaining content on a cellular wireless device based on proximity to other wireless devices |
US9167558B2 (en) | 2005-04-04 | 2015-10-20 | X One, Inc. | Methods and systems for sharing position data between subscribers involving multiple wireless providers |
US9185522B1 (en) | 2005-04-04 | 2015-11-10 | X One, Inc. | Apparatus and method to transmit content to a cellular wireless device based on proximity to other wireless devices |
US9253616B1 (en) | 2005-04-04 | 2016-02-02 | X One, Inc. | Apparatus and method for obtaining content on a cellular wireless device based on proximity |
US10299071B2 (en) | 2005-04-04 | 2019-05-21 | X One, Inc. | Server-implemented methods and systems for sharing location amongst web-enabled cell phones |
US9467832B2 (en) | 2005-04-04 | 2016-10-11 | X One, Inc. | Methods and systems for temporarily sharing position data between mobile-device users |
US10200811B1 (en) | 2005-04-04 | 2019-02-05 | X One, Inc. | Map presentation on cellular device showing positions of multiple other wireless device users |
US10165059B2 (en) | 2005-04-04 | 2018-12-25 | X One, Inc. | Methods, systems and apparatuses for the formation and tracking of location sharing groups |
US10149092B1 (en) | 2005-04-04 | 2018-12-04 | X One, Inc. | Location sharing service between GPS-enabled wireless devices, with shared target location exchange |
US9584960B1 (en) | 2005-04-04 | 2017-02-28 | X One, Inc. | Rendez vous management using mobile phones or other mobile devices |
US9615204B1 (en) | 2005-04-04 | 2017-04-04 | X One, Inc. | Techniques for communication within closed groups of mobile devices |
US9654921B1 (en) | 2005-04-04 | 2017-05-16 | X One, Inc. | Techniques for sharing position data between first and second devices |
US9967704B1 (en) | 2005-04-04 | 2018-05-08 | X One, Inc. | Location sharing group map management |
US9736618B1 (en) | 2005-04-04 | 2017-08-15 | X One, Inc. | Techniques for sharing relative position between mobile devices |
US9749790B1 (en) | 2005-04-04 | 2017-08-29 | X One, Inc. | Rendez vous management using mobile phones or other mobile devices |
US9854394B1 (en) | 2005-04-04 | 2017-12-26 | X One, Inc. | Ad hoc location sharing group between first and second cellular wireless devices |
US9854402B1 (en) | 2005-04-04 | 2017-12-26 | X One, Inc. | Formation of wireless device location sharing group |
US9883360B1 (en) | 2005-04-04 | 2018-01-30 | X One, Inc. | Rendez vous management using mobile phones or other mobile devices |
US9955298B1 (en) | 2005-04-04 | 2018-04-24 | X One, Inc. | Methods, systems and apparatuses for the formation and tracking of location sharing groups |
US10599712B2 (en) | 2006-03-29 | 2020-03-24 | Blackberry Limited | Shared image database with geographic navigation |
US9552426B2 (en) | 2006-03-29 | 2017-01-24 | Blackberry Limited | Shared image database with geographic navigation |
US20070233368A1 (en) * | 2006-03-29 | 2007-10-04 | Research In Motion Limited | Shared image database with geographic navigation |
US10235390B2 (en) | 2006-03-29 | 2019-03-19 | Blackberry Limited | Shared image database with geographic navigation |
US7797019B2 (en) * | 2006-03-29 | 2010-09-14 | Research In Motion Limited | Shared image database with geographic navigation |
US20080205388A1 (en) * | 2007-02-22 | 2008-08-28 | Microsoft Corporation | Discovery of network devices logically located between a client and a service |
US8130656B2 (en) * | 2007-08-07 | 2012-03-06 | Motorola Solutions, Inc. | Method and device for routing mesh network traffic |
US20090041039A1 (en) * | 2007-08-07 | 2009-02-12 | Motorola, Inc. | Method and device for routing mesh network traffic |
US8243909B2 (en) | 2007-08-22 | 2012-08-14 | At&T Intellectual Property I, L.P. | Programmable caller ID |
US8416938B2 (en) | 2007-08-22 | 2013-04-09 | At&T Intellectual Property I, L.P. | Programmable caller ID |
US8787549B2 (en) | 2007-08-22 | 2014-07-22 | At&T Intellectual Property I, L.P. | Programmable caller ID |
US8160226B2 (en) | 2007-08-22 | 2012-04-17 | At&T Intellectual Property I, L.P. | Key word programmable caller ID |
US20110113116A1 (en) * | 2009-11-11 | 2011-05-12 | Jeff Burdette | Method, computer program product and electronic device for hyper-local geo-targeting |
US8443107B2 (en) | 2009-11-11 | 2013-05-14 | Digital Envoy, Inc. | Method, computer program product and electronic device for hyper-local geo-targeting |
US10691730B2 (en) | 2009-11-11 | 2020-06-23 | Digital Envoy, Inc. | Method, computer program product and electronic device for hyper-local geo-targeting |
US10277421B2 (en) * | 2011-10-31 | 2019-04-30 | Extreme Networks, Inc. | Route lookup resolution |
US20130111042A1 (en) * | 2011-10-31 | 2013-05-02 | Avaya Inc. | Route lookup resolution |
US10169370B2 (en) * | 2013-06-14 | 2019-01-01 | Here Global B.V. | Navigation database customization |
US20140372487A1 (en) * | 2013-06-14 | 2014-12-18 | Here Global B.V. | Navigation database customization |
US9455908B2 (en) * | 2014-07-07 | 2016-09-27 | Cisco Technology, Inc. | Bi-directional flow stickiness in a network environment |
US10637939B2 (en) * | 2014-09-02 | 2020-04-28 | Mastercard International Incorporated | Systems and methods for identifying merchant locations based on transaction records |
US10382882B2 (en) * | 2014-09-02 | 2019-08-13 | Mastercard International Incorporated | Systems and methods for identifying merchant locations based on transaction records |
US20180270300A1 (en) * | 2014-10-07 | 2018-09-20 | Interdigital Patent Holdings, Inc. | Supporting internet protocol (ip) clients in an information centric network (icn) |
US10250494B2 (en) | 2015-03-16 | 2019-04-02 | Cisco Technology, Inc. | Segment routing label switch paths in network functions virtualization communications networks |
US9503363B2 (en) | 2015-03-16 | 2016-11-22 | Cisco Technology, Inc. | Segment routing label switch paths in network functions virtualization communications networks |
US9979629B2 (en) | 2015-08-21 | 2018-05-22 | Cisco Technology, Inc. | Distribution of segment identifiers in network functions virtualization and software defined network environments |
US20170171323A1 (en) * | 2015-12-14 | 2017-06-15 | ZenPhone LLC | Dynamic Assignment of Phone Numbers for Call Forwarding |
CN113098704A (en) * | 2019-12-23 | 2021-07-09 | 中国移动通信集团湖南有限公司 | Network topology structure determination method and device and electronic equipment |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6778524B1 (en) | Creating a geographic database for network devices | |
US7200673B1 (en) | Determining the geographic location of a network device | |
US6826172B1 (en) | Network probing using overlapping probe packets | |
US9413712B2 (en) | Method and system to associate a geographic location information with a network address using a combination of automated and manual processes | |
JP4354532B2 (en) | Distributed computer system and method for distributing user requests to replica network servers | |
US6496866B2 (en) | System and method for providing dynamically alterable computer clusters for message routing | |
US6785735B2 (en) | Determining a path through a managed network | |
KR100527794B1 (en) | system for interceptting an acces of a network and method thereof | |
Cisco | Novell IPX Commands | |
Cisco | Novell IPX Commands | |
Cisco | Novell IPX Commands | |
Cisco | Novell IPX Commands | |
Cisco | Novell IPX Commands | |
Cisco | Novell IPX Commands | |
Cisco | Novell IPX Commands | |
Cisco | Novell IPX Commands | |
Cisco | Novell IPX Commands | |
Cisco | Novell IPX Commands | |
Cisco | Novell IPX Commands | |
Cisco | Novell IPX Commands | |
Cisco | Novell IPX Commands | |
Cisco | Novell IPX Commands | |
Cisco | Novell IPX Commands | |
Cisco | Novell IPX Commands | |
Cisco | Novell IPX Commands |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
CC | Certificate of correction | ||
FEPP | Fee payment procedure |
Free format text: PAT HOLDER NO LONGER CLAIMS SMALL ENTITY STATUS, ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: STOL); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
AS | Assignment |
Owner name: RESOURCE CONSORTIUM LIMITED, VIRGIN ISLANDS, BRITI Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:AUGART, STEVEN;REEL/FRAME:020593/0471 Effective date: 20080208 Owner name: RESOURCE CONSORTIUM LIMITED,VIRGIN ISLANDS, BRITIS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:AUGART, STEVEN;REEL/FRAME:020593/0471 Effective date: 20080208 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
FPAY | Fee payment |
Year of fee payment: 12 |
|
AS | Assignment |
Owner name: RESOURCE CONSORTIUM LIMITED, LLC, DELAWARE Free format text: RE-DOMESTICATION AND ENTITY CONVERSION;ASSIGNOR:RESOURCE CONSORTIUM LIMITED;REEL/FRAME:050091/0297 Effective date: 20190621 |