U.S. patent application number 15/965541 was filed with the patent office on 2019-01-31 for data storage and retrieval.
The applicant listed for this patent is Callahan Cellular L.L.C.. Invention is credited to Gene Fein, Edward Merritt.
Application Number | 20190037021 15/965541 |
Document ID | / |
Family ID | 48281536 |
Filed Date | 2019-01-31 |
![](/patent/app/20190037021/US20190037021A1-20190131-D00000.png)
![](/patent/app/20190037021/US20190037021A1-20190131-D00001.png)
![](/patent/app/20190037021/US20190037021A1-20190131-D00002.png)
![](/patent/app/20190037021/US20190037021A1-20190131-D00003.png)
![](/patent/app/20190037021/US20190037021A1-20190131-D00004.png)
![](/patent/app/20190037021/US20190037021A1-20190131-D00005.png)
![](/patent/app/20190037021/US20190037021A1-20190131-D00006.png)
![](/patent/app/20190037021/US20190037021A1-20190131-D00007.png)
![](/patent/app/20190037021/US20190037021A1-20190131-D00008.png)
![](/patent/app/20190037021/US20190037021A1-20190131-D00009.png)
![](/patent/app/20190037021/US20190037021A1-20190131-D00010.png)
View All Diagrams
United States Patent
Application |
20190037021 |
Kind Code |
A1 |
Fein; Gene ; et al. |
January 31, 2019 |
DATA STORAGE AND RETRIEVAL
Abstract
A method for data forwarding storage and retrieval in a network
of interconnected computer system nodes may include directing data
to a computer memory, continuously forwarding the data, from one
computer memory to anther computer memory in the network of
interconnected computer system nodes without storing on any
physical storage device in the network, and retrieving the data in
response to an activity.
Inventors: |
Fein; Gene; (Malibu, CA)
; Merritt; Edward; (Lenox, MA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Callahan Cellular L.L.C. |
Wilmington |
DE |
US |
|
|
Family ID: |
48281536 |
Appl. No.: |
15/965541 |
Filed: |
April 27, 2018 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
14951157 |
Nov 24, 2015 |
9961144 |
|
|
15965541 |
|
|
|
|
13735759 |
Jan 7, 2013 |
9203928 |
|
|
14951157 |
|
|
|
|
13003502 |
Feb 1, 2011 |
8370446 |
|
|
PCT/US2009/049763 |
Jul 7, 2009 |
|
|
|
13735759 |
|
|
|
|
12170925 |
Jul 10, 2008 |
7636758 |
|
|
13003502 |
|
|
|
|
13003505 |
Apr 11, 2011 |
8599678 |
|
|
PCT/US2009/049755 |
Jul 7, 2009 |
|
|
|
13735759 |
|
|
|
|
12170901 |
Jul 10, 2008 |
7673009 |
|
|
13003505 |
|
|
|
|
13057072 |
Feb 1, 2011 |
8356078 |
|
|
PCT/US2009/050008 |
Jul 9, 2009 |
|
|
|
13735759 |
|
|
|
|
12184866 |
Aug 1, 2008 |
7599997 |
|
|
13057072 |
|
|
|
|
12989638 |
Feb 25, 2011 |
8386585 |
|
|
PCT/US2009/041817 |
Apr 27, 2009 |
|
|
|
13735759 |
|
|
|
|
12109458 |
Apr 25, 2008 |
|
|
|
12989638 |
|
|
|
|
12991383 |
Jan 24, 2011 |
8452844 |
|
|
PCT/US2009/042971 |
May 6, 2009 |
|
|
|
13735759 |
|
|
|
|
12116610 |
May 7, 2008 |
|
|
|
12991383 |
|
|
|
|
13119133 |
Mar 15, 2011 |
8352635 |
|
|
PCT/US2009/058368 |
Sep 25, 2009 |
|
|
|
13735759 |
|
|
|
|
12240925 |
Sep 29, 2008 |
7631051 |
|
|
13119133 |
|
|
|
|
13119124 |
Mar 15, 2011 |
8489687 |
|
|
PCT/US2009/058362 |
Sep 25, 2009 |
|
|
|
13735759 |
|
|
|
|
12240951 |
Sep 29, 2008 |
7636759 |
|
|
13119124 |
|
|
|
|
13119122 |
Mar 15, 2011 |
8478823 |
|
|
PCT/US2009/058052 |
Sep 23, 2009 |
|
|
|
13735759 |
|
|
|
|
12240967 |
Sep 29, 2008 |
7636760 |
|
|
13119122 |
|
|
|
|
13119147 |
Mar 15, 2011 |
8554866 |
|
|
PCT/US2009/058376 |
Sep 25, 2009 |
|
|
|
13735759 |
|
|
|
|
12240991 |
Sep 29, 2008 |
7636761 |
|
|
13119147 |
|
|
|
|
12052345 |
Mar 20, 2008 |
8458285 |
|
|
13735759 |
|
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
H04L 67/1097 20130101;
G06Q 30/0269 20130101; H04L 63/0471 20130101; H04L 67/20 20130101;
H04L 67/02 20130101; G06Q 30/0271 20130101; H04L 67/327
20130101 |
International
Class: |
H04L 29/08 20060101
H04L029/08; H04L 29/06 20060101 H04L029/06; G06Q 30/02 20060101
G06Q030/02 |
Claims
1. A method comprising: without storing a data item on any fixed
storage medium in a network of interconnected computer system
nodes, the data item identified for constant routing within the
network from node to node, the data item associated with a user
account, receiving, at a first node in the network, the data item;
receiving user account information based on the user account;
determining an address of a second node in the network available to
receive the at least one data item based on the user account
information; and forwarding the data item to the second node in the
network without storing the forwarded at least one data item on any
fixed storage medium.
Description
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation of U.S. application Ser.
No. 14/951,157, filed Nov. 24, 2015, which is a continuation of
U.S. application Ser. No. 13/735,759, filed Jan. 7, 2013, now U.S.
Pat. No. 9,203,928 which is a continuation-in-part of each of the
following: [0002] U.S. application Ser. No. 13/003,502, filed Feb.
1, 2011, now U.S. Pat. No. 8,370,446 which is the U.S. National
Phase of International Application No. PCT/US2009/049763, filed
Jul. 7, 2009, which is a continuation of U.S. patent application
Ser. No. 12/170,925, filed Jul. 10, 2008, now U.S. Pat. No.
7,636,758, each entitled "ADVERTISEMENT FORWARDING STORAGE" [0003]
U.S. application Ser. No. 13/003,505, filed Apr. 11, 2011, now U.S.
Pat. No. 8,599,678 which is the U.S. National Phase of
International Application No. PCT/US2009/049755, filed Jul. 7,
2009, which is a continuation of U.S. patent application Ser. No.
12/170,901, filed Jul. 10, 2008, now U.S. Pat. No. 7,673,009, each
entitled "MEDIA DELIVERY IN DATA FORWARDING STORAGE NETWORK" [0004]
U.S. application Ser. No. 13/057,072, filed Feb. 1, 2011, now U.S.
Pat. No. 8,356,078 which is the U.S. National Phase of
International Application No. PCT/US2009/050008, filed Jul. 9,
2009, which is a continuation of U.S. patent application Ser. No.
12/184,866, filed Aug. 1, 2008, now U.S. Pat. No. 7,599,997, each
entitled "MULTI-HOMED DATA FORWARDING STORAGE" [0005] U.S.
application Ser. No. 12/989,638, filed Feb. 25, 2011, now U.S. Pat.
No. 8,386,585 which is the U.S. National Phase of International
Application No. PCT/US2009/041817, filed Apr. 27, 2009, which is a
continuation of U.S. patent application Ser. No. 12/109,458, filed
Apr. 25, 2008, now abandoned, each entitled "REAL-TIME
COMMUNICATIONS OVER DATA FORWARDING FRAMEWORK" [0006] U.S.
application Ser. No. 12/991,383, filed Jan. 24, 2011, now U.S. Pat.
No. 8,452,844 which is the U.S. National Phase of International
Application No. PCT/US2009/042971, filed May 6, 2009, which is a
continuation of U.S. patent application Ser. No. 12/116,610, filed
May 7, 2008, now abandoned, each entitled "DELETION IN DATA FILE
FORWARDING FRAMEWORK" [0007] U.S. application Ser. No. 13/119,133,
filed Mar. 15, 2011, now U.S. Pat. No. 8,352,635 which is the U.S.
National Phase of International Application No. PCT/US2009/058368,
filed Sep. 25, 2009, which is a continuation of U.S. patent
application Ser. No. 12/240,925, filed Sep. 29, 2008, now U.S. Pat.
No. 7,631,051, each entitled "GEOLOCATION ASSISTED DATA FORWARDING
STORAGE" [0008] U.S. application Ser. No. 13/119,124, filed Mar.
15, 2011, now U.S. Pat. No. 8,489,687 which is the U.S. National
Phase of International Application No. PCT/US2009/058362, filed
Sep. 25, 2009, which is a continuation of U.S. patent application
Ser. No. 12/240,951, filed Sep. 29, 2008, now U.S. Pat. No.
7,636,759, each entitled "ROTATING ENCRYPTION IN DATA FORWARDING
STORAGE" [0009] U.S. application Ser. No. 13/119,122, filed Mar.
15, 2011, now U.S. Pat. No. 8,478,823 which is the U.S. National
Phase of International Application No. PCT/US2009/058052, filed
Sep. 23, 2009, which is a continuation of U.S. patent application
Ser. No. 12/240,967, filed Sep. 29, 2008, now U.S. Pat. No.
7,636,760, each entitled "SELECTIVE DATA FORWARDING STORAGE" [0010]
U.S. application Ser. No. 13/119,147, filed Mar. 15, 2011, now U.S.
Pat. No. 8,554,866 which is the U.S. National Phase of
International Application No. PCT/US2009/058376, filed Sep. 25,
2009, which is a continuation of U.S. patent application Ser. No.
12/240,991, filed Sep. 29, 2008, now U.S. Pat. No. 7,636,761, each
entitled "MEASUREMENT IN DATA FORWARDING STORAGE" [0011] U.S.
application Ser. No. 12/052,345, filed Mar. 20, 2008, now U.S. Pat.
No. 8,458,285 entitled "REDUNDANT DATA FORWARDING STORAGE."
[0012] Each of the above-listed references is hereby incorporated
by reference in its entirety.
BACKGROUND
[0013] The volume of data that must be stored by individuals,
organizations, businesses and government is growing every year. In
addition to just keeping up with demand, organizations face other
storage challenges. With the move to on-line, real-time business
and government, critical data must be protected from loss or
inaccessibility due to software or hardware failure. Today, many
storage products do not provide complete failure protection and
expose users to the risk of data loss or unavailability. For
example, many storage solutions on the market today offer
protection against some failure modes, such as processor failure,
but not against others, such as disk drive failure. Many
organizations are exposed to the risk of data loss or data
unavailability due to component failure in their data storage
system.
[0014] The data storage market is typically divided into two major
segments, i.e., Direct Attached Storage (DAS) and Network Storage.
DAS includes disks connected directly to a server.
[0015] Network Storage includes disks that are attached to a
network rather than a specific server and can then be accessed and
shared by other devices and applications on that network. Network
Storage is typically divided into two segments, i.e., Storage Area
Networks (SANs) and Network Attached Storage (NAS).
[0016] A SAN is a high-speed special-purpose network (or
subnetwork) that interconnects different kinds of data storage
devices with associated data servers on behalf of a larger network
of users. Typically, a SAN is part of the overall network of
computing resources for an enterprise. A storage area network is
usually clustered in close proximity to other computing resources
but may also extend to remote locations for backup and archival
storage, using wide area (WAN) network carrier technologies.
[0017] NAS is hard disk storage that is set up with its own network
address rather than being attached to the local computer that is
serving applications to a network's workstation users. By removing
storage access and its management from the local server, both
application programming and files can be served faster because they
are not competing for the same processor resources. The NAS is
attached to a local area network (typically, an Ethernet network)
and assigned an IP address. File requests are mapped by the main
server to the NAS file server.
[0018] All of the above share one common feature that can be an
Achilles tendon in more ways than one, i.e., data is stored on a
physical medium, such as a disk drive, CD drive, and so forth.
BRIEF DESCRIPTION OF THE DRAWINGS
[0019] The embodiments are illustrated by way of example and not
limitation in the figures of the accompanying drawings, in which
like references indicate similar elements.
[0020] FIG. 1A is a block diagram of an exemplary network.
[0021] FIG. 1B is a block diagram of an exemplary continuous data
forwarding framework including two user systems.
[0022] FIG. 1C is a block diagram of an exemplary framework that
includes a user system and a number of network systems.
[0023] FIG. 2 is a block diagram of an exemplary user system.
[0024] FIG. 3A is a block diagram of an exemplary network
system.
[0025] FIG. 3B is a block diagram of another exemplary network
system.
[0026] FIG. 4A is a flow diagram of an exemplary storage
process.
[0027] FIG. 4B is a flow diagram of another exemplary storage
process.
[0028] FIG. 5A is a flow diagram of an exemplary data forwarding
process.
[0029] FIG. 5B is a flow diagram of another exemplary data file
forwarding process.
[0030] FIG. 5C is a flow diagram of another exemplary data file
forwarding process.
[0031] FIG. 6A is a flow diagram of an exemplary process for
forwarding advertisements.
[0032] FIG. 6B is a flow diagram of an exemplary data forwarding
process.
[0033] FIG. 6C is a flow diagram of an exemplary search
process.
[0034] FIG. 7 is a flow diagram of an exemplary file retrieval
process.
[0035] FIG. 8 is a flow diagram of an exemplary file deletion
process.
[0036] FIG. 9 is an example of a user interface for an instant
messaging client program.
DETAILED DESCRIPTIONS
[0037] Unlike peer to peer networks, which use data forwarding in a
transient fashion so that data is eventually stored on a physical
medium such as a disk drive, the present invention is a continuous
data forwarding system, i.e., data is stored by continually
forwarding it from one node memory to another node memory.
Example Continuous Data Forwarding Frameworks
[0038] As shown in FIG. 1A, an exemplary network 10 includes a user
system 12 and a number of network systems 14, 16, 18, 20, 22. Each
of the network systems 14, 16, 18, 20, 22 can be considered to be a
node in the network 10 and one such network system may be
designated as a central server, such as network system 14, which
may assume a control position in network 10. Each of the nodes 14,
16, 18, 20, 22 may be established as a privately controlled network
of peers under direct control of the central server 14. Peered
nodes may also be a mix of private and public nodes, and thus not
under the direct physical control of the central server 14. The
network 10 may also be wholly public where the central server 14
(or servers) has no direct ownership or direct physical control of
any of the peered nodes.
[0039] As shown in FIG. 1B, an exemplary continuously data
forwarding framework 10 includes two user systems 12, 14 (also
referred to as client systems) coupled to a number of network
systems 16, 18, 20, 22 (also referred to as servers). Each of the
network systems 16, 18, 20, 22 is considered to be a node in a
network 24 and one such network system may be designated as a host
or central server, such as network system 16. As such, network
system 16 may assume a control position in network 24. Each of the
nodes 16, 18, 20, 22 can be established as a privately controlled
network of peers under direct control of the central server 16.
Peered nodes can also be a mix of private and public nodes (e.g.,
the Internet), and thus not under the direct physical control of
the central server 16. The network 24 can also be wholly public
where the central server 16 (or servers) has no direct ownership or
direct physical control of any of the peered nodes.
[0040] The continuously data forwarding framework 10 supports
communications between computer users, such as users on user
systems 12, 14. Computer users on user systems 12, 14 are
distributed geographically and communicate using one or more of the
network systems 16, 18, 20, 22 in network 24. User systems 12, 14
are connected to network 24 through various communication mediums,
such as a modem connected to a telephone line (using, for example,
serial line internet protocol (SLIP) or point-to-point protocol
(PPP)) or a direct internetwork connection (using, for example,
transmission control protocol/internet protocol (TCP/IP)).
[0041] Each of the user systems 12, 14 may be implemented using,
for example, a general-purpose computer capable of responding to
and executing instructions in a defined manner, a personal
computer, a special-purpose computer, a workstation, a server, a
device, a component, or other equipment or some combination thereof
capable of responding to and executing instructions. User systems
12, 14 may receive instructions from, for example, a software
application, a program, a piece of code, a device, a computer, a
computer system, or a combination thereof, which independently or
collectively direct operations, as described herein. These
instructions may take the form of one or more communications
programs that facilitate communications between the users of client
systems 12, 14. For instance, such communications programs may
include E-mail programs, Instant Messaging (IM) programs, File
Transfer Protocol (FTP) programs, Voice-over-Internet (VoIP)
programs, as so forth. The instructions may be embodied permanently
or temporarily in any type of machine, component, equipment, or
storage medium.
[0042] Clients systems 12, 14 include a communications interface
(not shown) used by the communications programs to send
communications through network 24. The communications may include
E-mail, audio data, video data, general binary data, or text data
(e.g., encoded in American Standard Code for Information
Interchange (ASCII) format).
[0043] The network 24 can include a series of portals
interconnected through a coherent system. Examples of the network
24 include the Internet, Wide Area Networks (WANs), Local Area
Networks (LANs), analog or digital wired and wireless telephone
networks (e.g. a Public Switched Telephone Network (PSTN)), an
Integrated Services Digital Network (ISDN), a Digital Subscriber
Line (xDSL)), or any other wired or wireless network. The network
24 may include multiple networks or sub-networks, each of which may
include, for example, a wired or wireless data pathway.
[0044] A central server 16 (also referred to as host server) may be
connected to network 24 and may be used to facilitate some direct
or indirect communications between the client systems 12, 14. As
with the client systems 12, 14, central server 16 may be
implemented using, for example, a general-purpose computer capable
of responding to and executing instructions in a defined manner, a
personal computer, a special-purpose computer, a workstation, a
server, a device, a component, or other equipment or some
combination thereof capable of responding to and executing
instructions. Central server 16 may receive instructions from, for
example, a software application, a program, a piece of code, a
device, a computer, a computer system, or a combination thereof,
which independently or collectively direct operations, as described
herein. These instructions may take the form of one or more
communications programs. For instance, such communications programs
may include E-mail programs, IM programs, FTP programs, VoIP
programs, and so forth. The instructions may be embodied
permanently or temporarily in any type of machine, component,
equipment, or storage medium.
[0045] Further, central server 16 includes a communications
interface (not shown) used by the communications programs to send
communications through network 24. The communications may include
E-mail, audio data, video data, general binary data, or text data
(e.g., encoded in American Standard Code for Information
Interchange (ASCII) format).
[0046] The user systems 12, 14 can execute an instant messaging
(IM) client program. IM programs typically enable users to
communicate in real-time with each other in a variety of ways. Most
IM programs provide, for example:
[0047] (1) Instant messages--send notes back and forth with a
friend who is online
[0048] (2) Chat--create a chat room with friends or co-workers
[0049] (3) Web links--share links to your favorite Web sites
[0050] (4) Video--send and view videos, and chat face to face with
friends
[0051] (5) Images--look at an image stored on your friend's
computer
[0052] (6) Sounds--play sounds for your friends
[0053] (7) Files--share files by sending them directly to your
friends
[0054] (8) Talk--use the Internet instead of a phone to actually
talk with friends
[0055] (9) Streaming content--real-time or near-real-time stock
quotes and news
[0056] (10) Mobile capabilities--send instant messages from your
cell phone
[0057] Examples of IM communications include those provided by AIM
(America Online.TM. Instant Messenger), Yahoo.TM. Messenger,
MSN.TM. Messenger, and ICQ.TM., and so forth.
[0058] The framework 10 supports these IM communications and
enables users to store video, images, sounds, files and other
content, which can be included in IM communications. Unlike other
systems, such as data storage networks, the framework 10 does not
use fixed physical data storage to store data, such as image files
and video files, for example. When a request to store data is
received by the central server 16 from one of the user systems 12,
14, data is directed to a node in the network 24 where it is then
continuously forwarded from node memory to node memory in the
network 24 without storing on any physical storage medium such as a
disk drive. The forwarded data resides only for a very brief period
of time in the memory of any one node in the network 24. Data is
not stored on any physical storage medium in any network node.
[0059] In a like manner, when a request to retrieve data is
received by the central server 16 from a user system 12, 14, the
requested data, which is being forwarded from node memory to node
memory in the network 24, is retrieved.
[0060] Data forwarded in this manner can be segmented and segments
forwarded as described above. Still, the segmented data is not
stored on any physical storage medium in any network node, but
merely forwarded from the memory of one node to the memory of
another node.
[0061] As shown in FIG. 1C, an exemplary framework 10A includes a
user system 12 (also referred to as client systems) and a number of
network systems 14, 16, 18, 20, 22. Each of the network systems 14,
16, 18, 20, 22 can be considered to be a node in the framework 10A
and one such network system may be designated as a central server,
such as network system 14, which may assume a control position in
framework 10A. Each of the nodes 14, 16, 18, 20, 22 may be
established as a privately controlled network of peers under direct
control of the central server 14. Peered nodes may also be a mix of
private and public nodes, and thus not under the direct physical
control of the central server 14. The framework 10A may also be
wholly public where the central server 14 (or servers) has no
direct ownership or direct physical control of any of the peered
nodes.
[0062] In one example, nodes 14, 16, 18, 20 and 22 are considered
to be a private network. In a private network, an administrator
controls the nodes and may designate which node is the central
server. The framework 10A can also include one or more additional
nodes, for example, nodes 24, 26 and 28. These nodes 24, 26 and 28
are considered to be part of one or more public networks in which
the administrator has little or no control.
Example Selective Data Forwarding
[0063] In addition, when a request to store data is received, its
ownership and/or data type can be checked against entries in a
store maintained by the central server 14. For example, data owned
by a paid subscriber may be forwarded from node memory to node
memory, and/or data of a particular type, such as office
productivity file data type, an audio data file type, a visual data
file type, a video data file type, an object oriented file type
and/or a database data file type. Thus, data forwarding is
selective based on ownership and/or type. Certain users can have
data forwarded from node memory to node memory, and/or certain
types of data can be forwarded from node memory to node memory.
Entries in the store can be added, modified or deleted, enabling
even more flexibility in selectively forwarding data from node
memory to node memory. Such a store can reside locally at the
central server 14 or be forwarded from node memory to node memory
without storing on any physical storage medium such as a disk
drive. In addition to ownership and file type, other data
parameters that can be evaluated include file size, file use
frequency, user history, user preferences, and premiums paid by
users.
Example User System
[0064] As shown in FIG. 2, the user system 12 can include a
processor 30, memory 32 and input/output (I/O) device 34. Memory 32
can include an operating system (OS) 36, such as Linux, Apple.TM.
OS or Window.TM., one or more application processes 38, and a
storage process 100, explained in detail below. Application
processes 38 can include user productivity software, such as
OpenOffice or Microsoft Office.TM.. The I/O device 34 can include a
graphical user interface (GUI) 40 for display to a user 42.
Example Network Systems
[0065] As shown in FIG. 3A, each of the network systems, such as
network system 14, can include a processor 50 and memory 52. Memory
52 can include an OS 54, such as Linux, Apple.TM. OS or
Windows.TM., and a data forwarding process 200, explained in detail
below.
[0066] As shown in FIG. 3B, each of the network systems, such as
network system 14A (any reference herein to system 14 may refer to
system 14 of FIG. 3A and/or system 14A of FIG. 3B), can include a
processor 50 and memory 52. Memory 52 can include an OS 54, such as
Linux, Apple.TM. OS or Windows.TM., a data file forwarding process
200, a search process 300 and a retrieval process 400, fully
described below.
[0067] One network system, such as network system 22, is designated
as a deletion node, more fully described below. Memory of the
deletion node 22 does not include a data file forwarding process
200, search process 300 and retrieval process 400. Any data file
received by the deletion node is not forwarded or saved. New data
received in the memory of the deletion node overwrites old data
received by the memory of the deletion node. In effect, the
deletion node 22 acts as a black hole for data files forwarded to
it.
[0068] In traditional systems, application processes 38 needs to
store, delete, search and retrieve data files. In these traditional
systems, a data file is stored on local or remote physical devices.
And in some systems, this data file can be segmented into different
pieces or packets and stored locally or remotely on physical
mediums of storage. Use of fixed physical data storage devices add
cost, maintenance, management and generate a fixed physical record
of the data, whether or not that is the desire of the user 42.
[0069] The present invention as described in FIG. 3A and 3B does
not use fixed physical data storage to store data files. Herein,
the terms "data file" are used to represent all file and media
types handled by the system, such as, for example, files for data,
program files, audio files, video files, picture files, and so
forth. When a request to store a data file is received by the
central server 14 from storage process 100, the data file is
directed to a node memory in the framework 10 where it is then
continuously forwarded from node memory to node memory in the
framework 10 by the data file forwarding process 200 in each of the
network nodes without storing on any physical storage medium, such
as a disk drive. The forwarded data file resides only for a very
brief period of time in the memory of any one node in the framework
10. Data files are not stored on any physical storage medium in any
network node.
[0070] When a request to retrieve a data file is received by the
central server 14 from storage process 100, the requested data
file, which is being forwarded from node memory to node memory in
the framework 10, is retrieved.
[0071] Data files forwarded in this manner can be segmented and
segments forwarded as described above. Still, the segmented data is
not stored on any physical storage medium in any network node, but
forwarded from the memory of one node to the memory of another
node.
[0072] Data files being forwarded in this manner can be deleted and
thus no longer forwarded from node memory to node memory.
Example Storage Processes
[0073] As shown in FIG. 4A, storage process 100 includes sending
(102) a request to a central server 14 to store or retrieve data.
If the request is a retrieve data request, storage process 100
receives the requested data from the central server 14 or node in
the network.
[0074] If the request to the central server 14 is a store data
request, storage process 100 receives (104) an address of a node
from the central server 14 and forwards (106) the data to the node
memory represented by the received address. Determining an address
of a node available to receive the data can be based on one or more
factors, such as network traffic analysis, available memory,
combinations of factors, and so forth. A time stamp can be applied
to the data in the computer memory of the specific node.
[0075] As shown in FIG. 4B, storage process 100A includes sending
(102) a request to a central server 14 to store, retrieve or delete
a data file. If the request is a retrieve data file request,
storage process 100 receives (104) the requested data file from the
central server 14 or node in the network. Any reference herein to
storage process 100 may refer to storage process 100 of FIG. 4A
and/or storage system 100A of FIG. 4B.
[0076] If the request to the central server 14 is a store data file
request, storage process 100 receives (106) an address of a node
from the central server 14 and forwards (108) the data file to the
node memory represented by the received address.
Example Data Forwarding Processes
[0077] FIG. 5A, 5B, and 5C are flowcharts illustrating example
processes of data forwarding. Any reference herein to process 200
may refer to process 200A of FIG. 5A, process 200B of FIG. 5B,
and/or process 200C of FIG. 5C, depending on context of the
reference.
[0078] As shown in FIG. 5A, data forwarding process 200 includes
receiving (202) a request to store or retrieve data. If the
received request is a request to store data, data forwarding
process 200 determines (204) an address of a node available to
receive the data in memory. This determination (204) can include
pinging the network and determining which of the nodes in a network
is available, or determining which node in the network has the
least traffic, or determining which node in the network has the
largest available memory, or any combination of these or other
factors.
[0079] Process 200 sends (206) a message to the user system with
the address of a specific node for the requester to forward the
data.
[0080] Process 200 detects (208) the presence of data in node
memory. Process 200 forwards (210) the data in memory to another
node in the network of nodes and continues to repeat detecting
(208) and forwarding (210) of the data from node memory to node
memory. When data arrive in any node memory, process 200 affixes
(212) a time stamp to the data. Additionally, as data enters and
exits any mode memory, the data may be encrypted and
de-encrypted.
[0081] Forwarding (210) can include pinging the node in the network
to determine which of the nodes in the network is available, or
determining which node in the network has the least traffic, or
determining which node in the network has the largest available
memory, or any combination of these or other factors.
[0082] In one specific example, at the point of entry to a node,
data undergoes an encrypted "handshake" with the node or central
server 14 or user. This can be a public or private encryption
system, such as the Cashmere system, which can use public-private
keys. Cashmere decouples the encrypted forwarding path and message
payload, which improves the performance as the source only needs to
perform a single public key encryption on each message that uses
the destination's unique public key. This has the benefit that only
the true destination node will be able to decrypt the message
payload and not every node in the corresponding relay group.
Cashmere provides the capability that the destination can send
anonymous reply messages without knowing the source's identity.
This is done in a similar way, where the source creates a reply
path and encrypts it in a similar manner as the forwarding
path.
[0083] In another example, other routing schemes are utilized.
[0084] If the received request is a request to retrieve data being
continuously forwarded from node memory to node memory, data
forwarding process 200 matches (214) at the central server 14 using
a hash mark or other unique code that can be "sniffed" by the node
upon the data entering the node via the encryption handshake. This
can occur by pinging the nodes in the network. Process 200 sends
(216) the message to return the data to the user directly to the
node or node state where the central server 14 believes the data
will likely appear. The more the central server 14 can narrow the
node state that it pings to, then the more efficient the retrieval
will become and the less burdened by unnecessary messaging traffic
to nodes that are not necessary for a transaction between the
central server 14 and the node capable of forwarding the data.
[0085] Once the correct node receives the message to forward the
data in node memory to the requester, process 200 forwards (218) in
node memory the data to the requester and forwards (220) a
confirmation message that the data has been sent to the user. This
routing message may be sent directly to the central server 14 or
may be passed to the central server 14 or servers via other node(s)
or supernode(s) in the network 10. Upon the user receiving the
requested data the user's application functions to automatically
ping the central server 14 that the data requested has been
received. Thus the network 10 creates data storage without caching,
downloading and/or storing the data on any physical storage medium.
Data storage and management is accomplished via a continuous
routing of the data from node memory to node memory, the forwarded
data only downloaded when the user requests the data to be returned
to the user from the network 10.
[0086] New nodes and node states may be added and/or deleted from
the network 10 based upon performance. Users may have access to all
nodes or may be segmented to certain nodes or "node states" by the
central server(s) or via the specific architecture of the private,
public or private-public network.
[0087] Individual nodes, nodes states and supernodes may also be
extranet peers, wireless network peers, satellite peered nodes,
Wi-Fi peered nodes, broadband networks, and so forth, in public or
private networks. Peered nodes or users may be used as routing
participants in the network 10 from any valid peer point with the
same security systems employed, as well as custom solutions
suitable for the rigors of specific deployments, such as wireless
encryption schemes for wireless peers, and so forth.
[0088] In process 200, rather than have data cached or held in
remote servers, hard drives or other fixed storage medium, the data
are passed, routed, forwarded from node memory to node memory. The
data are never downloaded until the authorized user calls for the
data. A user on the system may authorize more than one user to have
access to the data.
[0089] A primary goal in process 200 is to generate a data storage
and management system where the data is never fixed in physical
storage, but in fact, is continually being routed/forwarded from
node memory to node memory in the network. The path of the nodes to
which data is forwarded may also be altered by the central server
14 to adjust for system capacities and to eliminate redundant paths
of data that may weaken the security of the network due to the
increased probability of data path without this feature.
[0090] As shown in FIG. 5B, data file forwarding process 200B
includes receiving (202) a request from a source system in a
network to store a data file.
[0091] Process 200 directs (204) the data file to a computer memory
in a network. Process 200 saves (206) a file name of the data file,
and in some implementations, a file type, a username and a date
stamp, in an index file associated with the central server 14; the
actual data contained in the data file is not stored on any
physical medium. The index file is used to search for data files
during the search process 300, described fully below. Process 200
scrambles (208) a copy of the contents of the data file and saves
(210) the copied scrambled data in memory or on a physical storage
device associated with the central server 14.
[0092] For example, assume a data file named "myfile.txt" includes
the following text: This is an example of data contained in an
exemplary data file. The text herein is maintained as written in
the data file and the data file continuously forwarded from node
memory to node memory without storing on a physical medium.
[0093] Scrambling (208) a copy of the above data file may, in one
example, results in the following scrambled data: to without
storing on a physical medium example node this contained exemplary
herein file from maintained text data, and the in continuously is
an of forwarded memory.
[0094] Only this scrambled data, indexed by file name, is saved to
physical storage--no unscrambled data file is stored in any
physical medium, such as a disk drive. Saving the copied scrambled
data aids in maintaining security and in searching for data files
being continuously forwarded.
[0095] Process 200 continuously forwards (212) the data file from
the first computer memory to other computer memories in the network
without storing on any physical storage device in the network.
Continuously forwarding (212) includes detecting a presence of the
data file in memory of the specific node of the network and
forwarding the data file to another computer memory of a node in
the network of interconnected computer system nodes without storing
any physical storage device.
[0096] In one specific example, at the point of entry to a node,
forwarded data in the data file undergoes an encrypted "handshake"
with the node or central server 14 or user. This can be a public or
private encryption system, such as the Cashmere system, which can
use public-private keys. Cashmere decouples the encrypted
forwarding path and message payload, which improves the performance
as the source only needs to perform a single public key encryption
on each message that uses the destination's unique public key. This
has the benefit that only the true destination node will be able to
decrypt the message payload and not every node in the corresponding
relay group. Cashmere provides the capability that the destination
can send anonymous reply messages without knowing the source's
identity. This is done in a similar way, where the source creates a
reply path and encrypts it in a similar manner as the forwarding
path. In another example, other routing schemes are utilized.
[0097] New nodes and node states may be added and/or deleted from
the framework 10 based upon performance. Users may have access to
all nodes or may be segmented to certain nodes or "node states" by
the central server(s) or via the specific architecture of the
private, public or private-public network.
Example Measurement in Data Forwarding and Storage
[0098] Data forwarded in the network can be measured. For example,
the central server 14 maintains a store of data statistics each
time new data is requested to be forwarded in the network. The
store can be a flat file, a table, or a database file, and is
continuously forwarded from node memory to node memory in the
network with storage on any physical medium, such as a disk drive.
Contents of the store record each time a file is requested to be
forwarded, its owner, its type, and/or additional information. In
this manner, the central server 14 can generate a list of useful
information when requested. More particularly, the central server
14 can account for the number of files, the number of file types,
and the gross amount of data (e.g., megabytes) in the system as a
whole, or owned per user of group of users. The central server 14
tracks data added and removed from the network using the store. The
central server 14 can generate a list of all data being forwarded
in the network, and/or data being forwarded by a specific user or
group of users.
Example Data Forwarding Assisted by Geolocation
[0099] Geolocation generally refers to identifying a real-world
geographic location of an Internet connected computer, mobile
device, website visitor or other. Geolocation can be used to refer
to the practice of assessing the location, or it can be used to
refer to the actual assessed location or location data. Geolocation
can be performed by associating a geographic location with, for
example, the Internet Protocol address, Media Access Control (MAC)
address, Radio Frequency Identification (RFID), hardware embedded
article/production number, embedded software number (such as UUID,
Exif/IPTC/XMP or modern steganography), Wi-Fi connection location,
or device GPS coordinates, or other, perhaps self-disclosed,
information.
[0100] Networks in general, and more particularly the Internet,
have become a collection of resources meant to appeal to a large
general audience. Although this multitude of information has been a
great boon, it also has diluted the importance of geographically
localized information. Offering the ability for network users to
garner information based on geographic location can decrease search
times and increase visibility of local establishments. Similarly,
user communities and chat-rooms can be enhanced through knowing the
locations (and therefore, local times, weather conditions and news
events) of their members as they roam the globe. It is possible to
provide user services in applications and Web sites without the
need for users to carry GPS receivers or even to know where they
themselves are.
[0101] Geolocation by IP address is the technique of determining a
user's geographic latitude, longitude and, by inference, city,
region and nation by comparing the user's public Internet IP
address with known locations of other electronically neighboring
servers and routers.
[0102] Possible applications for geolocation by IP address exist
for Weblogs, chat programs, user communities, forums, distributed
computing environments, security, urban mapping and network
robustness.
[0103] Although several methods of geographically locating an
individual currently exist, each system has cost and other
detriments that make them technology prohibitive in computing
environments. Global Positioning System (GPS) is limited by
line-of-sight to the constellation of satellites in Earth's orbit,
which severely limits locating systems in cities, due to high
buildings, and indoors, due to complete overhead blockage. Several
projects have been started to install sensors or to use broadcast
television signals to provide for urban and indoor geolocation.
[0104] By contrast, these environments already are witnessing a
growing trend of installing wireless access points (AP). Airports,
cafes, offices and city neighborhoods all have begun installing
wireless APs to provide Internet access to wireless devices. Using
this available and symbiotic infrastructure, geolocation by IP
address can be implemented immediately.
[0105] Several RFC proposals have been made by the Internet
Engineering Task Force (IETF) that aim to provide geolocation
resources and infrastructure. Several companies now offer
pay-per-use services for determining location by IP. Several years
ago, CAIDA, the Cooperative Association for Internet Data Analysis,
began a geolocation by IP address effort called NetGeo. This system
was a publicly accessible database of geographically located IP
addresses. Through the use of many complex rules, the NetGeo
database slowly filled and was corrected for the location of IP
addresses.
[0106] To query the NetGeo database, an HTTP request is made with
the query IP address, like this:
TABLE-US-00001 ---- $
http://netgeo.caida.org/perl/netgeo.cgi?target=192.168.0.1
VERSION=1.0 TARGET:192.168.0.1 NAME:IANA-CBLK1 CITY:MARINA DEL REY
STATE: CALIFORNIA COUNTRY: US LAT: 33.98 LONG: -118.45
LAT_LONG_GRAN: cITY LAST-UPDATED: 16-MAY-2001 NIC: ARIN
LOOKUP_TYPE: Block Allocation RATING: DOMAIN_GUESS:iana.org STATUS:
OK ----
[0107] The NetGeo response includes the city, state, country,
latitude and longitude of the IP address in question. Furthermore,
the granularity (LAT_LONG_GRAN) also is estimated to give some idea
about the accuracy of the location. This accuracy also can be
deduced from the LAST_UPDATED field. Obviously, the older the
update, the more likely it is that the location has changed. This
is true especially for IP addresses assigned to residential
customers, as companies holding these addresses are in constant
flux.
[0108] Several existing packages assist in retrieving information
from the NetGeo database. The PEAR system has a PHP package, and a
PERL module, CAIDA::NetGeo::Client, is available. It is a
relatively straightforward task to make a request in whatever
language you are using for your application or service. For
example, a function in PHP for getting and parsing the NetGeo
response looks like this:
TABLE-US-00002 ---- 1: function getLocationCaidaNetGeo($ip) 2: { 3:
$NetGeoURL = "http://netgeo.caida.org/perl/netgeo.cgi?target=".$ip;
4: 5: if($NetGeoFP = fopen($NetGeoURL,r)) 6: { 7: ob_start( ); 8:
9: fpassthru($NetGeoFP); 10: $NetGeoHTML = ob_get_contents( ); 11:
ob_end_clean( ); 12: 13: fclose($NetGeoFP); 14: } 15: preg_match
("/LAT:(.*)/i", $NetGeoHTML, $temp) or die("Could not find element
LAT"); 16: $location[0] = $temp[1]; 17: preg_match ("/LONG:(.*)/i",
$NetGeoHTML, $temp) or die("Could not find element LONG"); 18:
$location[1] = $temp[1]; 19: 20: return $location; 21: } ----
[0109] The NetGeo database slowly is becoming more inaccurate as IP
address blocks change hands in company close-outs and absorptions.
Several other tools are available for determining location,
however. A description of the NetGeo infrastructure itself presents
some of the methods it employed for mapping IP addresses and can be
a source of guidance for future projects.
[0110] One of the most useful geolocation resources is DNS LOC
information, but it is difficult to enforce across the Internet
infrastructure. RFC 1876 is the standard that outlines "A Means for
Expressing Location Information in the Domain Name System."
Specifically, this is done by placing the location information of a
server on the DNS registration page. Several popular servers have
employed this standard but not enough to be directly useful as of
yet.
[0111] To check the LOC DNS information of a server, you need to
get the LOC type of the host:
TABLE-US-00003 ---- $ host -t LOC yahoo.com yahoo.com LOC 37 23
30.900 N 121 59 19.000 W 7.00m 100m 100m 2m ----
[0112] This parses out to 37 degrees 23' 30.900'' North Latitude by
121 degrees 59' 19.000'' West Longitude at 7 meters in altitude,
with an approximate size of 100 meters at 100 meters horizontal
precision and 2 meters vertical precision. There are several
benefits to servers that offer their geographic location in this
way. First, if you are connecting from a server that shows its DNS
LOC information, determining your geolocation is simple, and
applications may use this information without further work,
although some verification may be useful. Second, if you are
connecting on your second or third bounce through a server that has
DNS LOC information, it may be possible to make an estimate of your
location based on traffic and ping times. However, these estimates
greatly degrade accuracy.
[0113] It also is possible to put the DNS LOC information for your
Web site in its registration. If more servers come to use LOC
information, geolocation accuracy will be much easier to
attain.
[0114] The "host" is a DNS lookup utility that allows users to find
out various pieces of information about a host. The simplest use is
doing hostname to IP address lookups and the reverse. The reverse,
dotted-decimal IPv4 notation, is used for this, and the actual
server that hosts the canonical name is returned. The type flag,
-t, can be used to obtain specific information from the host record
from the name server.
[0115] Service providers typically provide an internal naming
scheme for assigning IP addresses and associating names with these
addresses. Typically, the canonical name of an IP address contains
the country-code top-level domain (ccTLDs) in a suffix. CN is
China, FR is France, RO is Romania and so on. Furthermore, the name
even may contain the city or region in which the IP address is
located. Often, however, this information is shortened to some name
that requires a heuristic to determine. For example, in your
service or application, a user may appear to be coming from
d14-69-1-64.try.wideopenwest.com. A whois at this address reveals
it is a WideOpenWest account from Michigan. Using some logic, it is
possible to deduce that this user is connecting through a server
located in Troy, Mich., hence the .try. in the canonical name.
[0116] Some projects have been started to decipher these addresses,
and you also can get all of the country codes and associated cities
and regions of a country from the IANA Root-Zone Whois Information
or the US Geospatial Intelligence Agency, which hosts the GEOnet
Names Server (GNS). The GNS has freely available data files on
almost all world countries, regions, states and cities, including
their sizes, geographic locations and abbreviations, as well as
other information.
[0117] Information such as that presented on the GNS also can be
used to provide users with utilities and services specific to their
geographical locations. For example, it is possible to determine a
user's local currency, time zone and language. Time zone is
especially useful for members of a community or chat group to
determine when another friend may be available and on-line.
[0118] When a request to retrieve data is received by the central
server 14 from storage process 100, the requested data, which is
being forwarded from node memory to node memory in the network 10
assisted by geolocations of the nodes, is retrieved.
[0119] Data forwarded in this manner can be segmented and segments
forwarded as described above. Still, the segmented data is not
stored on any physical storage medium in any network node, but
merely forwarded from the memory of one node to the memory of
another node. As shown in FIG. 4A, storage process 100 includes
sending (102) a request to a central server 14 to store or retrieve
data. If the request is a retrieve data request, storage process
100 receives the requested data from the central server 14 or node
in the network.
[0120] If the request to the central server 14 is a store data
request, storage process 100 receives (104) an address of a node
from the central server 14 and forwards (106) the data to the node
memory represented by the received address. The central server 14
is assisted in finding an appropriate address by a geolocation,
which can help locate a node that is underutilized or light in
terms of network traffic.
[0121] As shown in FIG. 5C, data forwarding process 200C includes
receiving (202) a request to store or retrieve data. If the
received request is a request to store data, data forwarding
process 200 determines (204) an address of a node available to
receive the data in memory assisted by its geolocation. This
determination (204) can include using a geolocation to help locate
a node, pinging the network and determining which of the nodes in a
network is available, or determining which node in the network has
the least traffic, or determining which node in the network has the
largest available memory, or the geographic coordinates of the
node, or any combination of these or other factors. Using
geolocation enables greater speed and efficiency by selecting nodes
that are proximate to each other and/or the user.
[0122] Process 200 sends (206) a message to the user system with
the address of a specific node for the requester to forward the
data.
[0123] Process 200 detects (208) the presence of data in node
memory. Process 200 forwards (210) the data in memory to another
node in the network of nodes, assisted by geolocation (e.g., a
location of the node in the network) and continues to repeat
detecting (208) and forwarding (210) of the data from node memory
to node memory assisted by geolocation. When data arrives in any
node memory, process 200 affixes (212) a time stamp to the
data.
[0124] Forwarding (210) can include pinging the node in the network
to determine which of the nodes in the network is available, or
determining which node in the network has the least traffic, or
determining which node in the network has the largest available
memory, or any combination of these or other factors.
Example Multi-Homed Data Forwarding and Storage
[0125] A node typically has one network interface with one
associated network address. However, a node may include multiple
network interfaces, each with their own associated non-loopback
network address, such as a non-loopback Internet protocol (IP)
address. Furthermore, a node may include a network interface with
multiple associated non-loopback network addresses, such as
multiple non-loopback IP addresses. Such a node is referred to as a
"multi-homed node."
[0126] For example, the Internet Engineering Task Force (IETF) has
developed IP version 6 (IPv6). The hierarchical layers provided by
IPv6 may change the way multi-homing devices within a network are
perceived. In IPv4, multi-homing is generally perceived as a host
or system that uses multiple network interfaces. In contrast, hosts
in IPv6 may only have one network interface, but respond to
multiple global IPv6 addresses, link-local addresses, and
site-local addresses. As a result, almost every host in the IPv6
network can be a multi-homed host.
[0127] Process 200 can be modified and enabled within a single
computer system that includes multiple IP (IP) addresses (e.g.,
2001:db8::1, 2001:db8::2 and 2001:db8::3 in IPv6), but only one
physical upstream link. This is sometimes referred to as single
link, multiple IP address (spaces) multi-homing.
[0128] As described above, a device can be multi-homed (e.g.,
host-centric multi-homing), when it has more than one interface,
and each of the interfaces is attached to different networks (may
be within a multi-homed network). In addition, in IPv6, each
interface can have multiple addresses, which means than even with a
single interface, a host can be multi-homed.
[0129] Multi-homing can provide a certain degree of
resilience/redundancy against failures (link, hardware, protocols,
others) and also enables features such as load balancing. Moreover,
multi-homing can be used in order to differentiate traffic based on
policy, for non-technical reasons, such as cost associated with
different flows, time of the day, and so forth. For highly
distributed enterprises, it can also occur as an aid to address
that enterprise's geographical distribution, and as a traffic
engineering mechanism to improve local performance such as latency
and hop count reductions for real time protocols.
[0130] With single link, multiple IP address (spaces) multi-homing,
a modified process 200 forwards data in memory within a single
computer having multiple assigned IP addresses. When the computer
is powered-off or experiences a failure, such as loss of power, all
data being forwarded in memory is automatically forwarded to a node
memory in the network 10, where it is continually routed/forwarded
from node memory to node memory in the network 10 according to
process 200. When power is restored to the computer, data is
recovered/reloaded from the network 10 and then continuously
forwarded within the memory of the computer without ever being
fixed in physical storage.
Example Advertisement Forwarding
[0131] In one example, this data forwarding storage and management
system where the data is continually being routed/forwarded from
node memory to node memory in the network is used as an
advertisement forwarding and retrieval system. Advertisement is
deployed into the data forwarding storage and management system
from a master server or control station and recalled on demand or
in response to a stimulus or activity. Here, we consider
advertisement as a broad term that can include any content,
including, but limited to, text, audio, visual or any combination
thereof. Advertisement can be deployed into the data forwarding
storage network and recalled/retrieved when needed, e.g., directed
to an IP address of a specific user system, directed to paid and/or
unpaid subscribers of applications within the data forwarding
storage network, and/or directed to users outside of the data
forwarding storage network. Advertisement being continuously
forwarded in the data forwarding storage network can be sent to all
users or specifically targeted according to one or more user
characteristics, user profiles, usage patterns, history and/or past
or present viewed page content. The advertisement being
continuously forwarded in the data forwarding storage network can
be displayed to a current user within an application or web browser
or delivered to a wired or wireless radio, television and/or
television network. Advertisements can be retrieved in response to
a stimulus or activity, such as the user's profile, traffic
patterns of one or more users, application profiles, and so forth.
Advertisements can be stored and delivered in any media form and
either pre-configured by specific file type and size for a specific
end user or site delivery requirements/formats, or delivered and
formatted by virtue of the end user or middleware software
compatibility systems.
[0132] In one example, selected advertisement can be delivered to a
user through a web browser. More particularly, a plug-in and/or
helper application can be associated with a user's web browser. In
general, a plug-in is a computer program that interacts with a host
application (a web browser or an email client, for example) to
provide a certain, usually very specific, function "on demand." As
a user navigates to a particular web page, the plug-in can parse
displayed text. The plug-in can then request specific advertisement
being continuously forwarded in the data forwarding storage network
that matches the parsed text to the web browser of the user for
display in a section of the display screen or as a pop-up.
[0133] In another example, a user requesting retrieval of a data
file being continuously forwarded in the data forwarding storage
network may be presented with specific advertisement being
continuously forwarded in the data forwarding storage network that
matches the user's profile. The user's profile may include various
personal and/or demographic data that aids in directing appropriate
advertisement to the user. The advertisement may then be displayed
as a banner or in a shared window or in a separate window.
[0134] As shown in FIG. 6A, a process 300A includes directing (302)
advertisement to a computer memory. The advertisement can include
any content, including, but limited to, text, audio, visual or any
combination thereof. The advertisement can include multiple
configurations in order to satisfy different systems delivery
specifications. Advertisements can be stored and delivered in any
media form and either pre-configured by specific file type and size
for a specific end user or site delivery requirements/formats, or
delivered and formatted by virtue of the end user or middleware
software compatibility systems.
[0135] Process 300 directs (304) data to a computer memory.
[0136] Process 300 continuously forwards (306) each of the unique
data, independent of each other, from one computer memory to
another computer memory in the network of interconnected computer
system nodes without storing on any physical storage device in the
network.
[0137] Process 300 continuously forwards (308) each of the unique
advertisements, independent of each other, from one computer memory
to another computer memory in the network of interconnected
computer system nodes without storing on any physical storage
device in the network.
[0138] Process 300 retrieves (310) one of the advertisements in
response to an activity.
Example Data Retrieval
[0139] FIG. 6A, 6B, and 6C are flowcharts illustrating example
processes. Any reference herein to process 300 may refer to process
300A of FIG. 6A, process 300B of FIG. 6B, and/or process 400C of
FIG. 6C, depending on context of the reference.
[0140] As shown in FIG. 6B, data forwarding process 300B includes
receiving (302) a request to store or retrieve data. If the
received request is a request to store data, data forwarding
process 300 determines (304) a memory location associated with an
IP address available to receive the data.
[0141] Process 300 sends (306) a message with the memory location
associated with the IP address for the requester to forward the
data.
[0142] Process 300 detects (308) the presence of data in a memory
location. Process 300 forwards (310) the data in the memory
location to another memory location associated with another IP
address within the computer and continues to repeat detecting (308)
and forwarding (310) of the data from memory location associated
with one IP address to a memory location associated with another IP
address.
[0143] If the received request is a request to retrieve data being
continuously forwarded from memory location to memory location,
data forwarding process 300 locates (312) the requested data being
forwarded within the memory and returns (314) the located data to
the requester.
Example Search Query Processing
[0144] As shown in FIG. 6C, the search process 300C includes
receiving (302) a query. Example queries include filenames, file
types, usernames, dates and so forth. In one example, the query is
a keyword or keywords. Search process 300 searches (304) the
database of scrambled files represented by the index of file names
for a match of the keyword or keywords. If a match of the keyword
or keywords is found among the scrambled files, process 300
generates (306) a list of filenames containing the keyword or
keywords. In one example, the list of file names is displayed to a
user on an input/output device, enabling the user to select one of
the file names. In another example, the list of filenames displayed
includes supplemental information with respect to the file, such
as, file type, file size, date saved and/or last modified, and so
forth. Process 300 receives (308) a user selection of one of the
filenames contained in the generated list of file names. The user
selection can include a mouse click, a key board input, an audio
input, and so forth, indicating a selected filename.
[0145] Process 300 launches (310) a file retrieval process 400.
Example File Retrieval Process
[0146] As shown in FIG. 7, the file retrieval process 400 matches
(402) the requested filename at the central server using a hash
mark or other unique code that can be "sniffed" by the node upon
the data entering the node via the encryption handshake. This can
occur by pinging the nodes in the network. Process 400 sends (404)
the message to return the data to the user directly to the node or
node state where the central server believes the data will likely
appear. The more the central server can narrow the node state that
it pings to, then the more efficient the retrieval will become and
the less burdened by unnecessary messaging traffic to nodes that
are not necessary for a transaction between the central server and
the node capable of forwarding the data.
[0147] Once the correct node receives the message to forward the
data in node memory to the requester, process 400 forwards (406) in
node memory the data to the requester and forwards (408) a
confirmation message that the data has been sent to the user. This
routing message may be sent directly to the central server or may
be passed to the central server or servers via other node(s) or
supernode(s) in the framework 10. Upon the user receiving the
requested data the user's application functions to automatically
ping the central server that the data requested has been received.
Thus the framework 10 creates data storage without caching,
downloading and/or storing the data on any physical storage medium.
Data storage and management is accomplished via a continuous
routing of the data from node memory to node memory.
[0148] In another embodiment, storage process 100 only stores the
scrambled data along with filename, and in some instances, file
type, username, and/or date stamp, while automatically deleting the
non-scrambled data file.
[0149] If the request to the central server 14 is a delete data
file request, the central server 14 launches a file deletion
process 500.
Example File Deletion
[0150] As shown in FIG. 8, process 500 matches (502) the filename
to delete at the central server 14 using a hash mark or other
unique code that can be "sniffed" by the node upon the data
entering the node via the encryption handshake. This can occur by
pinging the nodes in the network. Process 500 sends (504) the
message to forward the data to the deletion node 28 directly to the
node or node state where the central server believes the data will
likely appear. The more the central server can narrow the node
state that it pings to, then the more efficient the retrieval will
become and the less burdened by unnecessary messaging traffic to
nodes that are not necessary for a transaction between the central
server and the node capable of forwarding the data.
[0151] Process 500 forwards (506) in node memory the data to the
deletion node. Process 500 removes (508) the data file name from
the index and forwards (510) a confirmation message that the data
has been deleted to the user. This routing message may be sent
directly to the central server or may be passed to the central
server or servers via other node(s) or supernode(s) in the
framework 10.
[0152] The framework 10 creates data storage without caching,
downloading and/or storing the data on any physical storage medium.
Data storage and management is accomplished via a continuous
routing of the data from node memory to node memory, the forwarded
data only downloaded when the user requests the data to be returned
to the user from the framework 10.
Example User Interface for Real-Time Communications
[0153] FIG. 9 illustrates an example interface presented to a user
of one of the client systems 12, 14 when running an instant
messaging client program. As described above, instant messaging
programs typically enable users to communicate in real-time with
each other in a variety of ways. For example, many instant
messaging programs enable users to send text as an instant message,
to transfer files, and to communicate by voice.
[0154] Shown is a desktop 900 with a user interface 905 of the
instant messaging client program. User interface 905 has a text box
910 that displays representations 915 of the program user's
contacts or buddies (both terms are used interchangeably herein),
which are other users of an instant messaging program with whom the
program user desires to communicate and interact. The
representations 915 may provide contextual information to the
program user about the buddy, such as whether the contact is
online, how long the contact has been online, whether the contact
is away, or whether the contact is using a mobile device.
[0155] The list of contacts displayed in text box 910 of user
interface 905 typically is referred to as the contact list or buddy
list. The IM program user can typically add or remove contacts from
the contact list. In the example shown, the representations 915 are
text icons showing the screen names of the contacts.
[0156] Instant messaging programs may use an instant messaging
server to assist in communications between users of the instant
messaging program. The instant messaging server may be implemented,
for example, using central server 16. When a user is connected to
the network and executes the instant messaging program, the instant
messaging program contacts the central server 16 and logs the user
onto the central server 16. The central server 16 informs the
instant messaging program when the program user's contacts are
online and facilitates communications between the program user and
an online contact.
[0157] The central server 16 may support IM services irrespective
of a program user's network or Internet access. Thus, central
server 16 may enable users to send and receive IMs, regardless of
whether they have access to any particular Internet service
provider (ISP). The central server 16 also may support associated
services, such as administrative matters, advertising, directory
services, chat, and interest groups related to IM. To transfer
data, the central server 16 employs one or more IM protocols. The
data may be encrypted and de-encrypted.
[0158] To begin an IM session, the IM client program running on a
client system 12, 14 establishes a connection with the central
server 16 and logs onto the central server 16. Once a session is
established, a user can use the IM client program to view whether
particular buddies are online, exchange IMs with particular
buddies, participate in group chat rooms, and trade files such as
pictures, invitations or documents. The IM program user also may be
able to find other buddies with similar interests, get customized
information such as news and stock quotes, and search the World
Wide Web.
[0159] Central server 16 may assist IM communications between users
of IM client programs by facilitating the establishment of a
peer-to-peer communication session between the IM client programs.
Or the central server 16 may assist IM communications by directly
routing communications between the IM client programs.
[0160] When a contact is online, the IM program user can
communicate or interact with the contact in a number of ways. For
instance, the IM program user can send an instant message to the
contact (typically in the form of text).
[0161] Sending a message opens up a window in which messages can be
typed back-and-forth between the IM program user and the contact.
Similarly, the IM program user also can send a file or other
content to the contact.
[0162] To initiate these actions for a contact, the IM program user
performs operations on the representation of the contact displayed
in user interface 905. The program then executes the corresponding
action in response to the operation performed on the
representation. For example, an instant message might be initiated
by double-clicking on a contact's representation. Or, a file
transfer might be initiated by the IM program user selecting the
contact's representation to bring up a context menu and choosing
"send a file" from the menu.
[0163] Other actions can be executed in response to operations
performed on the representation of the contact displayed in
interface 905. For instance, a "buddy icon" can be set for the
contact such that communications with the contact display the buddy
icon. In addition, for example, profile information about the
contact can be retrieved, an alert can be set to inform the program
user when the contact is online, a VoIP communication session can
be established, or an e-mail can be sent.
[0164] User interface 905 may have icons 930 to help a user set
various options or perform operations in the instant messaging
program.
Example Rotating Encryption in Data Forwarding Storage
[0165] In one specific example, at the point of entry to a node,
data undergoes an encrypted "handshake" with the node or central
server 14 or user. The encryption scheme employed is under the
control of the central server 14, which can change or rotate the
scheme periodically or in response to external factors. Any two or
more encryption schemes can be used. For example, encryption
schemes involving simple conversions can include ASCII to Binary,
Binary to ASCII, ASCII to Hex, Hex to ASCII, Binary to Hex, Hex to
Binary, Dec to Hex, Hex to Dec, Dec to Roman, and Roman to Dec, and
so forth.
[0166] Encryption schemes involving network tools can include IP to
Dec, Dec to IP, IP to Hex, Hex to IP, IP/Net Calculator, IPv6
Validator, IPv6 Compress, IPv6 Uncompress, and so forth.
[0167] Non-Key En/DeCryption schemes can include PasswordGen,
Backwards, Base 64 Encode, Base 64 Decode, Caesar Bruteforce, 133t
5p34k 3nc0d3, 133t 5p34k d3c0d3, Igpay Atinlay, Un-Pig Latin,
ROT-13, and so forth.
[0168] HTML Encoding schemes can include HTML Entities Encode, HTML
Entities Decode, URL Encode, URL Decode and so forth.
[0169] Hash Algorithm schemes can include DES, MD4, MD5, SHA1,
SHA-224, SHA-256, SHA-384, SHA-512, HAVAL 128, HAVAL 160, HAVAL
192, HAVAL 224, HAVAL 256, RIPEMD 128, RIPEMD 160, RIPEMD 256,
RIPEMD 320, Tiger, Tiger 128, Tiger 160, Adler 32, Whirlpool, GOST,
CRC32, CRC32B, and so forth.
[0170] Key En/DeCryption schemes can include Tripple DES, Blowfish,
CAST 128, CAST 256, GOST, Rijndael 128, Rijndael 192, Rijndael 256,
SERPENT, Safer+, RC2, XTEA, LOKI97, DES, TwoFish, Wake (ECB mode,
BASE64 armored), and so forth.
[0171] Time Conversion schemes can include Unix Timestamp to
Date/Time, Date/Time to Unix Timestamp, Unix Timestamp to RFC 2822,
Unix Timestamp to Internet Time, Unix Timestamp to ISO 8601, and so
forth.
[0172] The central server 14 can direct a different encryption
scheme to each of the network systems 16, 18, 20, 22, or a single
encryption scheme to all of the network systems 16, 18, 20, 22.
[0173] The central server 14 can periodically direct one or more of
the network systems 16, 18, 20, 22, to change their current
encryption scheme to another encryption scheme. The central server
14 can direct the network systems 16, 18, 20, 22, to employ a
particular encryption scheme based on the type of data being
forwarded from node memory to node memory. The central server 14
can direct the network systems 16, 18, 20, 22, to employ a
particular encryption scheme based on an owner of the data being
forwarded from node memory to node memory.
[0174] The central server 14 can store the various encryption
schemes locally and send a particular encryption scheme to a node
memory for use, or the network systems 16, 18, 20, 22, can store
the various encryption schemes locally and wait for instructions
received from the central server 14 to select a particular
encryption scheme for use.
[0175] If the received request is a request to retrieve data being
continuously forwarded from node memory to node memory, data
forwarding process 200 matches (214) at the central server 14 using
a hash mark or other unique code that can be "sniffed" by the node
upon the data entering the node via the encryption handshake. This
can occur by pinging the nodes in the network. Process 200 sends
(216) the message to return the data to the user directly to the
node or node state where the central server 14 believes the data
will likely appear. The more the central server 14 can narrow the
node state that it pings to, then the more efficient the retrieval
will become and the less burdened by unnecessary messaging traffic
to nodes that are not necessary for a transaction between the
central server 14 and the node capable of forwarding the data.
Redundant Data Forwarding
[0176] A redundant data storage and management system may be
implemented where the redundant data is never fixed in physical
storage, but in fact, is continually being routed/forwarded from
node memory to node memory. The path of the nodes to which
redundant data is forwarded may also be altered by the central
server 14 to adjust for system capacities and to eliminate
redundant paths of data that may weaken the security of the network
due to the increased probability of data path without this
feature.
[0177] The invention can be implemented to realize one or more of
the following advantages. One or more networks create redundant
data storage without caching or downloads. Redundant data storage
and management are accomplished via a constant routing of the
redundant data.
Other Descriptions
[0178] This data storage and management system in which the data is
never fixed in physical storage, but in fact, is continually being
routed/forwarded from node memory to node memory in the network,
can be used as a backend system(s) in many applications that
currently used fixed medium storage. In one example, this data
storage and management system where the data is continually being
routed/forwarded from node memory to node memory in the network is
used in a media delivery system. Here, we consider media to broadly
include any predictable content, any archival content, any audio
content, visual content, any text-based content, and so forth.
Predictable content can be deployed into the data forwarding
storage network and recalled/retrieved when needed, e.g., directed
to an IP address of a specific user system.
[0179] The content can include text, audio, visual images,
audiovisual images, or any combination thereof. For example, the
network can continuously forward certain audiovisual highlights
that are used each day, such as program introductions, graphic
packages, introduction and theme music, historical footage of
significance, commonly used reference footage, and so forth.
[0180] This content being continuously forwarded in the network may
or may not be needed in the future. More specifically, content that
is most likely needed but are seeded into the network according to
the probability of use, not based upon the individual needs of a
user to store a file. In addition to using probability of need as a
storage priority, the network can use a more diverse distribution
list for the stored content than the forward storage system
utilized by a user for "normal file storage" because users are
delivered material not by calling/requesting a file from the
network itself, but by virtue of a content provider using the
network as a distribution tool to their audience.
[0181] One such example is a stock quote system. In traditional
stock quote systems used on the World Wide Web ("Web"), a user
accesses a stock quote website through a graphical user interface
(GUI) used for web browsing, such as Firefox.TM., Opera.TM., or
Flock.TM.. One example stock quote website is Yahoo! .TM.
financial. The user enters a trading symbol of a stock in which
he/she wants to query. The stock quote website receives the stock
symbol, sends the stock symbol to a stock quote backend for a
current price, receives the current price from the stock quote
backend, and sends the current price to the user's GUI for viewing
by the user. The current price is a numerical value, such as 171/2,
in this example.
[0182] Numeric values can be deployed into the data storage and
management system and continually routed/forwarded from node memory
to node memory in the network. A range of numeric values in
appropriate increments can be deployed in the data storage and
management system, similar to how data files are deployed when a
message to store is received. Each of the numeric values is sent
from a user system to the central server 14 using the data
forwarding process 200, fully described above. This results in a
large number of distinct and unique numeric values continually
being routed/forwarded from node memory to node memory in the
network.
[0183] When a user requests a current stock price from a web
application like Yahoo! financial, Yahoo! financial requests from
the backend stock quote server a current price and the central
server 14 is informed of this price directly from the back end
stock quote server. The central server 14 requests the numeric
value representing the received price from the network and once
found, directs the numeric value to the Internet Protocol (IP)
address of the user requesting the quote.
[0184] In another stock quote example, a range of numeric values
embedded in text can be deployed into the data storage and
management system where they are continually being routed/forwarded
from node memory to node memory in the network. For example, "IBM
is selling at 25," "IBM is selling at 251/8," and forth, can be
deployed. When a result for the current price of IBM is received,
the financial web site requests from the backend stock quote server
a current price and the central server 14 is informed of this price
directly from the back end stock quote server. The central server
14 requests the numeric value representing the received price,
along with associated text, from the network and once found,
directs the numeric value with associated text to the Internet
Protocol (IP) address of the user requesting the price. For
example, if the current price of IBM sock is 25, the central server
14 requests that "IBM is selling at 25" be delivered to the user
requesting the quote.
[0185] The above specific example used a range of unique numeric
values in appropriate increments deployed in our data storage and
management system. However, any predictable content, archival data
and/or media data can be deployed in our data storage and
management system. For example, election results can be deployed
into our data storage and management system. More specifically, a
news item reporting "Senator Obama won the general election" and
that "Senator McKane won the general election" can be deployed to
the network where they are never fixed in physical storage, but in
fact, continually being routed/forwarded from node memory to node
memory in the network.
[0186] When the election results are known in November 2008, a user
can request election results. The web application makes a request
to a news service requesting election results from a web
application having a back end supported by our data storage and
management system. The central server 14 is informed of election
results by a news server. The central server 14 locates the news
item in the network and directs the news story to the Internet
Protocol (IP) address of the user requesting the news
information.
[0187] In each of the examples above, the network includes a group
of interconnected computer system nodes each adapted to receive
data items and continuously forward the data items from computer
memory to computer memory, independent of each other, without
storing on any physical storage device, in response to a request to
store the data items from a requesting system and retrieve a
particular data item being continuously forwarded from computer
memory to computer memory in response to a request to retrieve the
data item from the requesting system. Each node in the network is
adapted to detect the presence of a data item in its memory and
forward the data item to a computer memory of another node in the
interconnected computer systems nodes according to a node's
availability. The node's availability can be determined according
to its volume of network traffic. Each node can encrypt the data
item.
[0188] A central node can be adapted to match the data retrieval
request at a central server using a hash mark representing the data
item entering a node, send a message to a node that is predicted to
have the data item in memory, the message instructing the node to
forward the data item in memory to the requester, and send a
confirmation message to the central server that the data item in
memory has been forwarded to the requester.
[0189] The techniques described above are not limited to any
particular hardware or software configuration. Rather, they may be
implemented using hardware, software, or a combination of both. The
programs may be implemented in a high-level programming language
and may also be implemented in assembly or other lower level
languages, if desired. Any such program will typically be stored on
a computer-usable storage medium or device (e.g., CD-ROM, RAM, or
magnetic disk). When read into the processor of the computer and
executed, the instructions of the program cause the programmable
computer to carry out the various operations described.
[0190] Furthermore, while the techniques have been described
primarily with IM applications, they may be applied to other
communications programs such as FTP programs, e-mail programs,
voice-over-IP (VoIP) or other telephony programs, or players for
streaming media.
[0191] It is to be understood that the foregoing description is
intended to illustrate and not to limit the scope of the
disclosure, which is defined by the scope of the appended claims.
Other embodiments are within the scope of the following claims.
* * * * *
References