In the current domain name system (DNS), a query identifying a geospatial region for returning a network identifier of a node associated with the region is not supported. In the current DNS, performing such a query is impractical. Geospatial region information is associated with a node in the DNS currently by a LOC record as defined in RFC 1876 entitled “A Means for Expressing Location Information in the Domain Name System”, C. Davis, P. Vixie, T. Goodwin, et al. January 1996. LOC records are managed by a DNS server responsible for a DNS naming domain, such as example.com. A LOC record allows an IP address to be resolved to a location/region. A DNS server responsible for a specified domain can include LOC records identifying locations in any number of distinct geospatial regions. LOC records for any given specified region are typically distributed across the DNS, and thus can be stored on any number of DNS servers. There is no DNS server that is authoritative or responsible for a specified geospatial region.
Further, applications, such as browsers, often need to know more than a host network address. For example, a browser requires a Uniform Resource Locator (URL) for identifying a service accessed via a network address of a node hosting the service. Currently DNS provides service records for locating services of various types for an identified non-geospatial domain. A DNS naming domain can span more than one subnet and can span multiple, disjoint geospatial regions. There is no standard way of locating a service associated with a specified geospatial region.
Accordingly, there exists a need for methods, systems, and computer program products for determining a network identifier of a node providing a type of service for a geospatial region.
Methods and systems are described for determining a network identifier of a node providing a type of service for a geospatial region. In one aspect, input indicating a geospatial query region and a type of service is received. A query message is generated, including information identifying the type of service and the query region, and sent for delivery to a network directory service representing a domain having a domain region at least partially including the query region. A response message from the network directory service is received including a network identifier of a node, in the domain, providing the identified type of service.
In another aspect, the network directory service receives the query message and a determination is made whether the network directory service represents a domain having a domain region at least partially including the geospatial query region. Responsive to determining that the network directory service represents the domain, a network identifier of a node, in the domain, providing the identified type of service is determined. A response message including the network identifier is generated and sent in response to the query message.
Advantages of the claimed invention will become apparent to those skilled in the art upon reading this description in conjunction with the accompanying drawings, in which like reference numerals have been used to designate like or analogous elements, and in which:
An execution environment can be hosted by a node and/or can be hosted by multiple nodes as in a distributed execution environment. In
A network directory system (NDS) representing a domain space of network identifiers can be configured to resolve a first network identifier in a first domain space, such as a network name in a network name identifier domain space, to a second network identifier in a second domain space, such as a network address in a network address identifier domain space or vice versa, in response to a request from a client, such as an application operating in an execution environment provided by a node. The domain name system (DNS) provides multiple DNS servers hosted by multiple nodes each representing one or more domains in a naming domain space and/or a network address domain space. The DNS is a NDS for resolving names from a name domain space to corresponding network addresses in an address domain space and vice versa. The term NDS service, as used herein, can refer to at least one NDS server, at least one NDS node hosting the referred to NDS server(s), and a NDS including the referred to NDS server(s).
A domain in a domain space can have a geospatial region associated with the domain, referred to herein as a domain region. The association between a domain and a domain region can be based on a relationship between the domain region and the domain. The relationship can be of any type, can be unidirectional or bidirectional, and can have cardinality. For example, the relationship associating a domain with a domain region can be of a type based on at least one of an owner, a user, an administrator, a purchase of, a legal right associated with, a node in, an authentication service for, an authorization service for, a signer of a digital certificate for, and an identifier of one or more of the domain, a node in the domain, and the domain region.
Analogously, a node can have a geospatial region associated with the node, referred to herein as a node region. The association between a node and a node region can be based on a relationship between the node region and the node. The relationship can be of any type, can be unidirectional or bidirectional, and can have cardinality. For example, the relationship associating a node with a node region can be of a type based on at least one of an owner, a user, an administrator, a domain and/or domain region including, a purchase of, a legal right associated with, an authentication service for, an authorization service for, a signer of a digital certificate for, and an identifier of one or more of the node and the node region.
A network identifier is an identifier for a communication endpoint on a network. An Internet Protocol (IP) address is a network identifier for communicating over an IP network such as the Internet. A network identifier in the role of an address in a network protocol is referred to as a network address. The DNS includes a set of names that include network identifiers. The DNS is configured to map a DNS name to a network address. A network identifier that references or resolves to a network address with respect to a network protocol is referred to as a symbolic identifier and/or a network name in this document. A network identifier can be at least one of a network address and a symbolic identifier of a network address, such as a DNS name. A network address is a network layer address identifying a network interface (e.g. unicast) or a set of interfaces (e.g. multicast or broadcast).
A network identifier includes a node portion identifying a network interface of a node in an identifiable portion of a network. A network identifier includes a domain portion identifying the portion of the network including the network interface identified by the node portion. A node portion and/or a domain portion can be included in a network identifier explicitly or implicitly. A scoped network identifier, for example, includes an implicit domain and/or node portion determined based on a portion of a network including a node processing the scoped network identifier. A network address, such as an Internet Protocol (IP) address, includes, explicitly and/or implicitly, a domain portion referred to as a subnet ID. For example, the IP address, 162.195.20.0, identifies a subnet including nodes with network addresses that begin with the IP address prefix 162.195.20. To more precisely identify a subnet an IP address or a portion of an IP address can be associated with a mask, such as 255.255.255.0, the mask can identify the subnet portion of an IP address via a logical “or” operation performed between each pair of bits identified by bit position in an IP address and the mask.
Analogously, a network name identifying a node, such as a DNS name, can includes, explicitly and/or implicitly, a portion identifying a domain and optionally subdomains each identifying a portion of a network, such as the Internet. For example, “nc.sceneralabs.com”, can identify a naming domain where a network interface of a node in the naming domain is associated with a name such as, “placid”. The name “placid” serves as a node portion identifying a network interface of the node within the naming domain, “nc.sceneralabs.com”. The complete network name, “placid.nc.sceneralabs.com”, identifies the node when used anywhere within any domain in the naming domain space.
As discussed above, a network identifier includes a node portion that identifies a network interface of a node in a portion of a network identified by a domain portion of the network identifier. For example, in an IP address, a portion of the address can be associated with a particular network interface in an identified subnet, thus identifying the network interface of the node. In the IP address 162.195.20.143 in the subnet 162.195.20.0/255.255.255.0, 143 is a node portion identifying a network interface of a node in the subnet identified by the domain portion 162.195.20. A subnet is a domain in a network address domain space. In a DNS name the first portion of the name identifies a network interface of a node in an identifiable domain. As identified, “placid” is a node portion identifying a network interface of a node in a naming domain identified by “nc.sceneralabs.com”, and “placid.nc” is a node portion in a parent naming domain identified by a domain portion, “sceneralabs.com”.
With reference to
The resolver interface component 202 can provide an API (application program interface) to receive input indicating a geospatial query region and a type of service from one or more other components, and/or can provide a GUI (graphical user interface) component for receiving input indicating a geospatial query region and a type of service from a user according to a configuration of a resolver interface component.
The indicated query region can be specified as one or more geospatial addresses, for example formatted as coordinates, from any number of geospatial address spaces including various coordinate systems (e.g., Cartesian, GPS (global positioning system), postal addresses, and the like). For example, the query region can be specified using global positioning system (GPS) coordinates identifying a geographic location/region. The terms “location” and “region” are used interchangeably in this document. The GPS coordinates can include at least one of a latitude coordinate, a longitude coordinate, and an altitude coordinate. Alternatively or additionally, the query region can specify a portion of a street address, thereby identifying a geographic location/region.
The query region can be specified with a geospatial identifier. A geospatial identifier includes any identifier that includes a portion usable for identifying a location in a geospatial region. A domain space of geospatial identifiers is referred to herein as a geospatial domain space. Examples of geospatial identifiers include:
postal://usa.nc.cary.corning-road:111.suite:220.placid
postal://placid.suite:220.corning_road:111.cary.nc.usa
postal://placid.suite:220:corning_road:111.27518.
Each of the above examples is from a geospatial domain space based on the US Post Office domain space including postal addresses.
The table below provides examples of three geospatial identifiers each from a different geospatial domain space specifying the same region, region A, on the Earth. The first geospatial identifier is from the World Geographic System (WGS) geospatial domain space. The second geospatial identifier is from the commonly known latitude/longitude geospatial domain space for identifying Earth regions. Each of the latitude and longitude coordinates can be expressed in degrees, minutes, and/or seconds. The third geospatial identifier is from the Global Positioning System (GPS) geospatial domain space.
Geospatial identifiers can be defined for specifying regions/locations having a variety of shapes including a rectangle, a circle, an oval, or any shape including a closed region. A geospatial identifier can identify a region with disjoint sub-regions; for example, by including a geospatial attribute that identifies the sub-regions. The identifier, “40+”, from an address space identifying average annual rainfall totals over a specified period identifies a geospatial region including all sub-regions that have an average annual rainfall over 40 inches.
A reference or alias for a geospatial coordinate system can be used that can be translated to a coordinate based indicator (e.g. region A). A geospatial region can be specified using meteorological data, population data, topographical data, political data, or any data that identifies a region. As described above, a region can be disjoint including multiple non-contiguous regions. For example, the region where births per 1000 women per year exceed 20 can identify a query region made up of more than one disjoint sub-region.
A service type can be indicated in any number of ways. For example, a service type can be specified via a protocol identifier (SMTP, HTTP, FTP, etc), or a port number (port 80 for HTTP, port 443 for HTTPS, port 21 for FTP, etc.). A service can be specified by resource type. “text/html”, for example, is a MIME type specification for identifying a web service (HTTP and/or HTTPS). More broadly a service type can be identified by a category of service performed or available. Examples include print, photo-sharing, retail, hardware, government, school, etc.
The components of
A node providing the execution environment 302 can be client node of a user, a server node, a proxy node, and the like. Proxy nodes include border nodes, multicast server nodes, and NDS servers that don't represent a domain that includes at least a portion of the query region.
Multiple applications and components can take advantage of the method performed by the components of
A border node is a node having an outside network interface for receiving, via a network path outside the scope of an identified domain, a packet addressed with an outside-scope unicast address. The border node can be configured to provide for processing a message, such as a packet, sent from a node with a network interface outside the domain identified by the outside-scope address. An outside network interface has a network link to a network interface of a node outside the identified domain. The border node has an inside network interface. The inside network interface of the border node can be included in the specified domain. The inside network interface is included in a network path including a network interface in the specified domain. Further details about border node operation may be found in U.S. patent application Ser. No. 12/170,821.
The browser component 324 includes the components of
The execution environment 322 can include an input subsystem component 338 configured to interoperate with one or more input devices such as a pointing device (mouse) and/or a keyboard for receiving input from a user. Input can be received for example, via an input associated with a mouse pointer 516 for selecting an identified service type, such as “retail”. A query region can be identified by selecting a region of the map 504 via the mouse pointer 516 and/or by entering geospatial information via, for example, the location bar 512. The query region can be in a visible portion of a map and/or a non-visible portion of the map. A query region can be identified automatically based on the presentation of a map. For example, a tab widget can be activated based on a URL entered via the location bar 514, selected as a link in another tab, selected as a bookmark, or in any number of other ways. The presenting of a resource of a service provider in a tab widget 504 can result in a map in the map tab 502 being changed, resized, or otherwise modified so that a location associated with the service provider resource presented in the tab can be represented on the map. Alternatively, the resource presented in the map can affect the query region based on an input from the user after the resource is presented, such as an input for adding a mark on a map corresponding to the service provider of the resource.
In
A navigation space handler component 340 can be configured to translate map region information via a map handler component 342 to geospatial region information recognizable by a network directory service. The navigation space handler component 340 can be configured to provide information identifying a query region and a service type to the resolver interface component 202B.
A service type and/or a query region can be received via user input, an audio input device, identified by a task being performed, identified by a resource being presented, associated with a map and/or the identified region. For example, the query region and/or service type can be included in a bookmark, browsing history, etc. of, for example, a browser, that is received as input. The query region and/or the service type can be determined based upon a specific time period in which the query region and/or the service type were previously identified. For example, the query region and/or the service type can be based upon a current time of day, a day of the week, and/or can be based on information associated with a past time period. The examples provided intended to be instructive and not exhaustive.
To identify one or more nodes associated with a region and a service type, a request handler component 360 can be configured to provide the region information as a query region and information identifying the service type to a resolver interface component 202C operating in the map service component 354.
Returning to
In
The query message can be generated by locating a record identified by the query region. The record includes a network address or a reference for locating the network address. For example, the network address can be a network address of a multicast service to which the query message can be sent where the network address is based upon the query region. Alternatively or additionally, the query message can be generated to send to a NDS that includes a NDS server operating in a node. The NDS server can be configured to maintain, for a domain identified by at least a portion of the query region, an association between at least two of a network identifier, a domain, and a domain region and/or a node region.
Returning to
A NDS includes a network directory server operating in an execution environment of a node and configured to represent a domain in a domain space represented by the NDS. The domain has or corresponds to a geospatial domain region (domain region, for short) as described above. A network directory service can be configured to receive and process the query based on whether the query region is at least partially included in the domain region as is described below. The directory client component 206 can be invoked by the service resolver component 204 to send the query message generated by the service resolver component 204.
A network directory service represents a domain in a domain space represented by an NDS including the network directory service. The domain has or corresponds to a domain region. A network directory service can be configured to receive and respond to the query when the query region is at least partially included in the domain region.
The query message format, application and/or transport protocol, data representations, and addressing can vary based on the configuration of an arrangement of the components in
In an aspect, the execution environment 302 illustrated in
In another aspect, the execution environment 302 can be provided by the first node 402B illustrated in
In yet another aspect, the execution environment 302 can be provided by the first node 402C illustrated in
In
The directory client component 206C in the execution environment 352 can be configured to operate in all of the alternative first nodes 402 in various network environments including those illustrated in
Alternatively, the first node 402A can send a message via the network 404A to the first NDS 406 for routing to one or more nodes of the first NDS 406 such as the NDS node 408 for identifying one or more domains or nodes in a second NDS 410 that match one or both of the query region and the service type. The first node 402A can then be configured to send one or more query messages to the second NDS 410 to complete the matching operation by one or more service providers of the second NDS 410 such as a second NDS node 412 hosting a second NDS server or simply to translate a symbolic identifier of a service node 414A identified by the first NDS 406 to a network address provided by the second NDS 410 for communicating with the service node 414A.
In a further alternative illustrated in
Returning to
The response message can include a network address and/or a node name as the network identifier. The response message can include a URI for accessing the service. The response message can include an indicator that indicates that the association of the node with the query region has been verified and/or certified. The response message can include information identifying a node region and/or a region defined by the intersection of the node region and the query region. The response message can include multiple network identifiers. Each node identified by one of the multiple network identifiers is in a domain represented by a responding network directory service and, additionally, each node can have a node region that is at least partially included in the query region identified in the query message. Each node region is thus at least partially included in a domain region of a network directory server sending a response. Each network identifier in the multiple network identifiers can identify a different node associated with the query region. The query region and a node region can be the same region.
As further described in U.S. patent application Ser. No. 12/170,821 with respect to a network environment analogous to the network environment illustrated in
The directory client component 206 can provide the network identifier(s) to the service resolver component 204. The service resolver component 204 can determine that the received network identifier(s) correspond to the generated query message. The service resolver component 204 can provide the network identifier(s) to the resolver interface component 202 with information associating the provided information to the input indication received by the resolver interface component 202. The resolver interface component 202 can be configured to receive the network identifier(s) and provide a representation of the network identifiers to another component (not shown). Each of the components 202-206 in
For example, a representation of the service and/or the node identified in the response message can be presented. The service can be accessed via an input received in correspondence with the presentation of the representation. A second query message can be generated and sent to a second NDS to receive a second network identifier from a second address space corresponding to the node. Information based on the response can be associated with a map region representing a geospatial region that at least partially includes the node region.
Turning now to
With reference to
The query message includes information identifying a service type and a query region. The query message can be received with a network address identifying a network interface card (NIC) of a node including the message in-router component 702. As described above, the query message can be addressed to a network directory service such as an NDS including multiple NDS servers each representing a domain in a domain space of the NDS. If the receiving NDS server does not represent a domain having a region that at least partially includes the query region, the message can be routed to another NDS server for locating a NDS service that does represent a domain having a domain region at least partially included in the query region. One can see that one or more network directory services, in a NDS, each including a message in-router component 702 can represent domains having domain regions where each domain region at least partially includes the query region.
Further as described in
As described with respect to
The components of
Returning to
The domain manager component 704 is configured to determine whether the domain region of the represented domain at least partially includes the query region. The determination can be based, for example, on a matching expression, via an intersection operation, and/or by determining that the query region has at least one point included in the domain region.
In
The domain region of the domain represented by a network directory service can be assigned and stored as configuration data in, for example a domain database component 808 in
The determination can be performed by a domain manager component 704 based on retrieving domain region information and/or can be determined by a database manager database component 706. See
If a determination is made that the query region and the domain region have no intersection, a message can be sent for delivery to another network directory service for identifying a node associated with the query region. The address of another service can be sent to a sender of the query message for redirecting the query message. Alternatively or additionally, the network directory service making the determination can send the message for routing through an NDS including the network directory service for delivery to another network directory service. The routing can be performed, in one aspect, based on geospatial information associated with the query message. Alternatively or additionally, the address of the other service can be based on the query region.
Returning to
When a network directory service determines that the domain region of the domain represented by the network directory service at least partially includes the query region, the domain manager component 704 can instruct a database manager component 706 to return network identifiers of all nodes in the domain providing the identified service. Alternatively, the domain manager component 704 can instruct a database manager component 706 to process a query based on the query region and the identified service to determine one or more network identifiers of nodes in the domain that have a node region that is at least partially included in the query region and provides a service that matches the specified type.
In
In
Returning to
In
The response message can include a network address and/or a network name as the network identifier. The response message can include a URI for accessing the service. The response message can include an indicator that indicates that the association of the node with the query region has been verified and/or certified. The response message can include information identifying at least one of a domain region and a node region; and/or a region defined by the intersection of the node region and the query region. The response message can include multiple network identifiers. The network identifier or each network identifier can have a corresponding node region that is at least partially included in the query region identified in the query message. Each node region is thus at least partially included in a domain region of a network directory service sending a response. Each network identifier in the multiple network identifiers can identify a different node associated with the query region. The query region and a node region can be the same region.
The response message can include a representation of the service and/or the network identified in the response for presentation. Information based on the response can be associated with a map region representing a geospatial region that at least partially includes at least one of the domain region and the node region. The information can be used for identifying and retrieving a map associated with the query region, the domain region, and/or the node region.
Returning to
The response message can be addressed to the originator of the query and/or routed back through the network directory server nodes of an NDS for sending the response to the sender of the query message. In
It should be understood that the various system components (and means) defined by the claims and illustrated in the various block diagrams represent logical components that are configured to perform the functionality described herein. While at least one of these components are implemented at least partially as an electronic hardware component, and therefore constitutes a machine, the other components may be implemented in software, hardware, or a combination of the two. More particularly, at least one component defined by the claims is implemented at least partially as an electronic hardware component, such as an instruction execution machine (e.g., a processor-based or processor-containing machine) and/or as specialized circuits or circuitry (e.g., discrete logic gates interconnected to perform a specialized function). Other components may be implemented in software, hardware, or a combination of the two. Moreover, some or all of these other components may be combined, some may be omitted altogether, and additional components can be added while still achieving the functionality described herein. Thus, the subject matter described herein can be embodied in many different variations, and all such variations are contemplated to be within the scope of what is claimed.
To facilitate an understanding of the subject matter described above, many aspects are described in terms of sequences of actions. At least one of these aspects defined by the claims is performed by an electronic hardware component. For example, it will be recognized that the various actions can be performed by specialized circuits or circuitry, by program instructions being executed by one or more processors, or by a combination of both. The description herein of any sequence of actions is not intended to imply that the specific order described for performing that sequence must be followed. All methods described herein can be performed in any suitable order unless otherwise indicated herein or otherwise clearly contradicted by context.
Moreover, the methods described herein can be embodied in executable instructions stored in a computer readable medium for use by or in connection with an instruction execution machine, apparatus, or device, such as a computer-based or processor-containing machine, apparatus, or device. As used here, a “computer-readable medium” can include one or more of any suitable media for storing the executable instructions of a computer program in one or more of an electronic, magnetic, optical, and electromagnetic, such that the instruction execution machine, system, apparatus, or device can read (or fetch) the instructions from the computer readable medium and execute the instructions for carrying out the described methods. A non-exhaustive list of conventional exemplary computer readable medium includes: a portable computer diskette; a random access memory (RAM); a read only memory (ROM); an erasable programmable read only memory (EPROM or Flash memory); optical storage devices, including a portable compact disc (CD), a portable digital video disc (DVD), a high definition DVD (HD-DVD™), a Blu-ray™ disc; and the like.
The use of the terms “a” and “an” and “the” and similar referents in the context of describing the subject matter (especially in the context of the following claims) are to be construed to cover both the singular and the plural, unless otherwise indicated herein or clearly contradicted by context. Recitation of ranges of values herein are merely intended to serve as a shorthand method of referring individually to each separate value falling within the range, unless otherwise indicated herein, and each separate value is incorporated into the specification as if it were individually recited herein. Furthermore, the foregoing description is for the purpose of illustration only, and not for the purpose of limitation, as the scope of protection sought is defined by the claims as set forth hereinafter together with any equivalents thereof entitled to. The use of any and all examples, or exemplary language (e.g., “such as”) provided herein, is intended merely to better illuminate the subject matter and does not pose a limitation on the scope of the subject matter unless otherwise claimed. No language in the specification should be construed as indicating any non-claimed element as essential to the practice of the invention as claimed.
Preferred embodiments are described herein, including the best mode known to the inventor for carrying out the claimed subject matter. Of course, variations of those preferred embodiments will become apparent to those of ordinary skill in the art upon reading the foregoing description. The inventor expects skilled artisans to employ such variations as appropriate, and the inventor intends for the claimed subject matter to be practiced otherwise than as specifically described herein. Accordingly, this claimed subject matter includes all modifications and equivalents of the subject matter recited in the claims appended hereto as permitted by applicable law. Moreover, any combination of the above-described elements in all possible variations thereof is encompassed unless otherwise indicated herein or otherwise clearly contradicted by context.
This application is related to the following commonly owned U.S. Patent Applications, the entire disclosure of each being incorporated by reference herein: application Ser. No. 11/962,285 (Attorney Docket No I509/US) filed on Dec. 21, 2007, entitled “Methods And Systems For Sending Information To A Zone Included In An Internet Network”; application Ser. No. 12/170,281 (Attorney Docket No I522/US) filed on Jul. 10, 2008, entitled “Methods And Systems For Resolving A Geospatial Query Region To A Network Identifier”; application Ser. No. 12/170,829 (Attorney Docket No I523/US) filed on Jul. 10, 2008, entitled “Methods And Systems For Resolving Location Information To A Network Identifier”; application Ser. No. 12/170,833 (Attorney Docket No I524/US) filed on Jul. 10, 2008, entitled “Methods And Systems For Resolving A Query Region To A Network Identifier”; application Ser. No. ______ (Attorney Docket No I496/US) filed on ______, entitled “Methods, Systems, And Computer Program Products For Browsing Using A Geospatial Map Metaphor”; application Ser. No. ______ (Attorney Docket No I508/US) filed on ______, entitled “Methods, Systems, And Computer Program Products For Associating Resources Of A First Geospace With A Second Geospace”; application Ser. No. ______ (Attorney Docket No I515/US) filed on ______, entitled “Methods, Systems, And Computer Program Products For Harmonizing A Geospatial Domain Space With A Non-Geospatial Domain Space”; application Ser. No. ______ (Attorney Docket No I516/US) filed on ______, entitled “Methods, Systems, And Computer Program Products For Accessing A Resource Based On Metadata Associated With A Location On A Map”; and application Ser. No. ______ (Attorney Docket No I534/US) filed on ______, entitled “Methods, Systems, And Computer Program Products For Accessing A Resource Having A Network Address Associated With A Location On A Map.”