Methods for connecting, discovering content, transferring data, and controlling specific network devices and specific local area networks
SLANs formed by locally caching data at Wi-Fi access points address the 'last mile' challenges by optimizing data delivery through direct communication between access points, enhancing bandwidth and reducing latency for video streaming and large data transfers.
Patent Information
- Application Number
- JP2022542006
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-01-05
- Filing Date
- 2021-01-07
- Publication Date
- 2025-11-14
- Estimated Expiration
- 2041-01-07
AI Technical Summary
The 'last mile' problem in data transfer between network data centers and local area networks is characterized by high latency, bandwidth limitations, and costly infrastructure, particularly affecting video streaming and large data transfers, which existing CDN technologies struggle to address effectively.
Creating a Specific Local Area Network (SLAN) using Wi-Fi access points that cache data locally and communicate directly, forming an independent network layer to reduce reliance on the Internet or private networks for data transfer, utilizing caching algorithms and heuristics to optimize data delivery.
SLANs improve network performance by reducing bandwidth issues and latency, enabling faster and more reliable delivery of large data, such as video content, without overburdening ISPs or private networks, particularly during peak usage times.
Smart Images

Figure 0007770322000002 
Figure 0007770322000003 
Figure 0007770322000004
Abstract
Description
[Technical Field]
[0001] (Priority) This application incorporates by reference and claims the benefit of U.S. Patent Application No. 62 / 958,240, filed January 7, 2020, and U.S. Patent Application No. 17 / 141,889, filed January 5, 2021, which are incorporated by reference in their entireties.
[0002] (Technical field) FIELD OF THE INVENTION Embodiments of the present invention relate generally to the field of networking and secure data transfer over ad-hoc networks. [Background technology]
[0003] Digital data transferred over the Internet is growing rapidly, driven primarily by video: downloaded video, video on demand (VOD), live video (both broadcast and consumer video), and interactive video (e.g., video conferencing, video telephony, and video games) are all increasing in popularity.
[0004] Network companies, such as mobile operators and cable companies, are making significant investments in everything from fiber optics to next-generation millimeter-wave cellular (e.g., 5G) technologies. However, these companies are often seeing diminishing returns on these investments as "price per bit" rapidly declines due to intense competition. The so-called "last mile" problem, which is the transfer of data between network data centers (e.g., Internet Service Providers (ISPs), cellular networks) and customer devices or local area networks (LANs), is by far the most expensive and difficult network challenge.
[0005] For video specifically, there are three challenging metrics in data transfer performance that directly relate to Quality of Service (QoS) and Quality of Experience (QoE): First, reducing latency (the time from source to destination) is crucial for a good user experience, especially for interactive and live video. High latency often leads to people in video conferences talking over each other, resulting in unnatural and unhelpful communication.
[0006] Second, continuity of transmission is important, especially for VOD, live, and interactive video. Pauses and undesirable buffering marks are annoying to viewers. Because large amounts of data need to be transferred at a relatively constant rate for the duration of the video, interruptions or bandwidth reductions cause problems. Most techniques for mitigating the effects of bandwidth changes involve adapting the size and quality of the video data to dynamically match bandwidth fluctuations. Quality-selective protocols (e.g., Dynamic Adaptive Streaming over HTTP, or MPEG-DASH) are used, which reduce the bandwidth required to transmit the video at the expense of video quality. However, this does not solve network dropouts when there is no data stream at all.
[0007] Third, simply put, video data is extremely large. This requires a lot of bandwidth and computation at the source, at strategic nodes throughout the network, and, worst of all, in the "last mile." Such bandwidth is limited in many locations and / or during popular streaming times. And improving bandwidth everywhere and at peak times is prohibitively expensive. Witness the painfully slow rollout of new 5G cellular technology.
[0008] To help mitigate these problems, one technology that has become increasingly popular is the content delivery network, sometimes called a content distribution network (CDN). A CDN is a geographically distributed network of proxy servers and data centers at the edge of the network. Rather than video data being sourced from a single server or data center in one location around the world, video is distributed (copied) from the source server to multiple CDN edge nodes strategically placed around the world. Data copies are either preloaded into the CDN cache on demand or forwarded when the CDN edge node receives the initial request.
[0009] A request for data from a client device is redirected to the most physically appropriate CDN edge node. If the data is cached at the CDN edge node, the response is fast and with relatively low latency. If not, the CDN edge node requests the data from either another CDN edge node or the source server. The data is delivered to the client device and cached at the CDN edge node.
[0010] Content delivery networks offer two advantages to content providers with central content repositories. First, the content provider's source server or data center only needs to serve a few (or even hundreds) of CDN edge nodes instead of potentially millions of client requests, reducing the burden on the source server and store. Second, the transfer between the source server and the CDN edge node is often achieved over a high-bandwidth, predictable, and even dedicated network connection, reducing the latency from the source server to the edge node. For example, Amazon Web Services (AWS) uses dedicated, high-bandwidth connections between its regional data centers and its AWS CloudFront CDN service. (Note that CDN services can be independent of content server and store services.) Also, high-bandwidth connections between source servers and CDN edge data centers are not always available. In fact, it is increasingly common to use multiple CDN services, such as AWS CloudFront and Akamai, to increase coverage.
[0011] Optimizing CDN technology involves many parameters and strategies to achieve high performance. Caching strategies (what to store at the edge and for how long) are crucial and context-dependent. Artificial intelligence techniques can be used to determine what and where to pre-position data, or to cache data at nodes only after the first client request. Location proxy mapping can be modified to include bandwidth, edge node utilization, and data availability. CDN technology is a rapidly evolving field, with a growing number of companies (e.g., Akamai, Amazon Web Services CloudFront) extending their edge networks.
[0012] CDNs are well-suited to reducing traffic and latency from content source servers. However, CDNs still have limitations in terms of local latency and bandwidth. Some companies, which prioritize low latency above all else, have installed dedicated edge servers at Internet Service Provider (ISP) points of presence (PoPs) that connect clients to the Internet. This can work with large ISPs such as Comcast Xfinity and ATT. However, there are hundreds or even thousands of smaller ISPs, so full coverage using dedicated edge servers does not scale well. [Prior art documents] [Patent documents]
[0013] [Patent Document 1] U.S. Patent No. 10,104,046 [Patent Document 2] U.S. Patent No. 8,751,000 [Patent Document 3] U.S. Patent No. 8,751,795 Summary of the Invention
[0014] An apparatus, method and infrastructure for interworking with SND and SLAN are described. In one embodiment, a network configuration comprises a plurality of access points that are part of one or more existing networks, the plurality of access points operable to individually address and communicate with each other to form a local area network (LAN) that transfers data between two or more of the plurality of access points using point-to-point links independent of their function in the one or more existing networks; Each access point of the plurality of access points is associated with a cache that stores content that can be forwarded to other access points in the plurality of access points via one or more direct point-to-point forwardings between pairs of access points of the plurality of access points in response to a forwarding request message to forward the content, and each access point has a mapping indicating, if any, a first set of one or more access points of the plurality of access points to which each access point repeats the message, and for each access point of the first set, a first list of one or more access points of the plurality of access points from which to forward the message as necessary upon receiving it, and wherein two access points in the plurality of access points that are directly connected to a third access point do not repeat the same message to the third access point.
[0015] They also include methods and apparatus for connecting SNDs to create an SLAN, locating cached content, managing the number of hops between SNDs, managing content via a blockchain ledger and Bit Torrent, using smart speaker devices, interacting with an SLAN without an SND, interacting with a DVR, acting as a virtual DVR, and hosting content on an SLAN.
[0016] The present invention will be more fully understood from the detailed description given below and the accompanying drawings of various embodiments of the invention, which, however, should not be construed as limiting the invention to the particular embodiments, but are for purposes of illustration and understanding. [Brief explanation of the drawings]
[0017] [Figure 1a] 1 is a schematic diagram illustrating typical Internet networking. [Figure 1b] FIG. 1 is a schematic diagram illustrating CDN edge networking. [Figure 1c]FIG. 1 is a schematic diagram illustrating PoP edge networking. [Figure 1d] FIG. 1 is a schematic diagram illustrating specific local area network edge networking according to one embodiment. [Figure 2] FIG. 1 is a schematic diagram of one embodiment of an SLAN. [Figure 3] FIG. 2 is a block diagram of one embodiment of a particular network device. [Figure 4] FIG. 1 is a flow diagram of software components in SND. [Figure 5] FIG. 1 is a flow diagram illustrating one embodiment of communication between nodes in an SLAN network using a Zero Configuration Network protocol. [Figure 6] FIG. 1 is a flow diagram illustrating one embodiment of communication between nodes in an SLAN network using a central server. [Figure 7] FIG. 1 is a communication schematic diagram of one embodiment of no-hop and multi-hop search. [Figure 8] 1 is an example of an SLAN network for creating a topology diagram of SND nodes in the SLAN. DETAILED DESCRIPTION OF THE INVENTION
[0018] In the following description, numerous details are set forth in order to more thoroughly explain the present invention. However, it will be apparent to those skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the present invention.
[0019] (overview) An embodiment of the present invention is based on the fact that multiple existing Specific Network Device (SND) Wi-Fi access points are physically close enough to each other (e.g., within about 50 meters) to communicate directly. These are nodes within a Specific Local Area Network (SLAN).
[0020] These SNDs connect to each other (through embodiments described below) to form an SLAN that is independent of any connection to the Internet or other private networks. These SNDs intelligently cache data that passes through (or is proactively requested by the SNDs). Additionally, in some embodiments, the SNDs have access to data on connected client devices.
[0021] At the same time, these SNDs also provide the traditional function of connecting wireless clients to the Internet or other private networks. However, now the wireless clients can also benefit from the global caching of the SLAN. When a data request from a wireless client can be served from data cached in the SLAN, the access is generally fast and does not impact (incur) Internet traffic.
[0022] Embodiments of the present invention have one or more advantages. First, embodiments of the present invention are useful in certain situations to improve network performance, particularly within the so-called "last mile," i.e., the connection between an ISP or private network (a traditional network separate from the Internet) and a local device. Embodiments of the present invention may reduce bandwidth issues, potentially improving continuity and reducing latency, allowing better performance for video and other large data transfers.
[0023] Second, embodiments of the present invention create an entirely new layer in this data caching approach: creating specialized local area networks (SLANs) and performing caching at Wi-Fi access points physically located in homes or businesses. Many or all of these nodes are also connected to a central network or networks (e.g., the Internet via an ISP), but the networks are capable of transferring data between the networked nodes independently of the central network.
[0024] In densely populated areas such as business districts and urban and suburban neighborhoods, there are often multiple Wi-Fi access points (or hotspots or IEEE 802.11x "Wi-Fi" networks) within range, broadcasting their name (Service Set Identifier, SSID). Most of these Wi-Fi access points require a password to authenticate that the client is authorized for access. In one embodiment, a client device sees these Wi-Fi access points, and the Wi-Fi access points themselves are close enough to connect to each other.
[0025] In one embodiment, the functionality described below is enabled, and all Wi-Fi access points located close enough to physically connect to each other thus form an SLAN.
[0026] In one embodiment, these Wi-Fi access point devices are referred to as specialized network devices (SNDs), and the functions of an SND include caching hardware and software for handling data, discovery of other SNDs, networking with other SNDs to form an SLAN, message passing and response within the SLAN, data transfer within the SLAN, and functioning as a traditional Wi-Fi access point for client devices and communicating with ISPs or private networks. In some embodiments, this functionality is realized by a traditional computer running custom software connected to the traditional Wi-Fi access point device. In other embodiments, integrated SND hardware with these specialized functions is utilized.
[0027] In one embodiment, networking between SNDs is embodied in sideband signals (a separate Wi-Fi signal dedicated for this purpose). For security reasons, in one embodiment, this sideband signal is restricted to the SNDs by hardware and / or software authentication. In other embodiments, the SNDs connect through switching between Wi-Fi signals or other wireless and / or wired communication capabilities.
[0028] In one embodiment, one SND can connect to multiple other SNDs, forming an SLAN. However, because the SNDs in one embodiment can self-associate and self-organize into a network, they are not a closed mesh network (e.g., not a private network). In one embodiment, one SND can directly connect to N other SNDs. These N SNDs do not necessarily all need to be connected to each other. This first SND acts as a bridge node or repeater, more specifically, a Wi-Fi repeater, between the other SNDs that are not directly connected. Similarly, some of the N other SNDs can connect to SNDs to which the first SND is not connected. These SNDs therefore act as bridges or Wi-Fi repeaters between these SNDs. Messages and data are transmitted by hopping between these nodes. Theoretically, this network can extend to the physically farthest SND that can connect to at least one of the other nodes, but the cost of multiple hops between nodes in the network can degrade performance.
[0029] In one embodiment, SND caches large files or objects, especially multimedia content, locally based on heuristics and learning algorithms. In one embodiment, these algorithms are initially derived from those used in CDNs and other caching schemes and are expected to evolve for the characteristics of a given SLAN. A common example of a caching scheme is the "least accessed" principle. When data is accessed, a timestamp is updated. When memory is needed for new data, the least accessed data is evicted first.
[0030] With SND deployed, when a client requests large data, it queries the SLAN to see if the data is available locally, and if so, processes the client's request locally. Caching files and objects at the Wi-Fi access point level of the network has many of the same bandwidth and latency-reducing benefits as CDNs and PoPs. This will certainly benefit popular live broadcasts and on-demand binge-watching, especially during evening hours when networks are congested. (Note that the benefits of embodiments of the present invention for interactive video, which requires low latency, are not well known.)
[0031] Embodiments of the present invention also facilitate streaming video. A single SND can receive streaming data and forward it across an SLAN for multiple clients, reducing the burden on the ISP, the Internet, and / or private networks. However, there are practical performance limitations. For example, SLAN nodes (SNDs) connected through Wi-Fi repeaters require packet retransmissions, creating some congestion in the local spectrum. Nevertheless, embodiments of the present invention improve performance for streaming popular content.
[0032] The following description and figures describe the steps for creating such a network and delivering data, especially large data such as video, over it. In one embodiment, these steps include: Forming an SLAN by direct networking between Wi-Fi access points (SNDs); using multicast DNS or a similar protocol to address SND nodes within the network; retrieving content on the SLAN without interacting with an ISP or private network; transferring content directly between Wi-Fi access points (SND and connected clients) without interacting with ISPs and private networks; Data caching and partitioning in the Wi-Fi access point (SND); and data and network security, tracking, and analysis steps without interacting with ISPs and private networks.
[0033] The description of embodiments of the present invention characterizes an SLAN created by replacing existing Wi-Fi access points with SND-enabled hardware and software or adding new Wi-Fi access points with SND-enabled hardware and software. This description assumes taking advantage of the existing topology of these points, e.g., homes, coffee shops, workplaces, and airports. However, those skilled in the art can envision placing these devices in strategic locations to "complete" the SLAN and provide the benefits of just this type of "last-foot" networking. In other words, embodiments of the present invention encompass both ad hoc and engineered creation of this SLAN.
[0034] Furthermore, embodiments of the present invention are not limited to the ad-hoc creation of these networks relative to (relatively) physically fixed Wi-Fi access points: those skilled in the art in view of this disclosure can envision these networks being spontaneously created using mobile devices capable of having the necessary functionality.
[0035] Explaining a LAN with CDNs, Pops, and Wi-Fi access points Figure 1A is a schematic diagram of an example of an exchange over the Internet. A source server 101 contains origin content (e.g., a video). A client device 105 requests the content (after appropriate authentication and transaction for a given business model). Physically, the source server 101 and the client device 105 may be many kilometers, even continents, apart. There is no direct connection between the source server 101 and the client device 105, as it does not scale easily.
[0036] Traditional networking divides data into packets. Each packet is sent to an Internet node 102 and similarly repeated to another node along the data packet path 106 until the packet is received by an Internet Service Provider (ISP) 103 and then a client device 105. The data packet's path may require multiple hops (i.e., passing through multiple Internet nodes 102). Internet nodes 102 may be located anywhere, including around the world. Furthermore, each packet in a data transfer may take a different path. In one embodiment, the path is determined by sophisticated algorithms known to those skilled in the art that depend on factors such as, but not limited to, bandwidth, availability, and connectivity at the nodes. While these algorithms attempt to reduce and possibly minimize packet paths, the source server 101 may not be able to predict or require low latency or sufficient bandwidth. Also, in this model, the source server 101 itself may become a bottleneck if there is a high demand for its content.
[0037] 1b illustrates an existing method for reducing latency and network internet traffic (e.g., between PaaS or IaaS provider regional nodes) involving content delivery network CDN edge servers 107. By moving data directly from the source server 101 and caching the data on geographically distributed CDN edge servers 107, often using high-bandwidth, predictable, and / or dedicated networking, the data is physically closer to the client's internet service provider 103.
[0038] The main benefit of using a CDN is data propagation to the geographic edge of the network, meaning content reaches the client closer and therefore faster. However, data propagation for static content takes longer; often data is propagated (pre-loaded or updated) before the first access.
[0039] Through effective caching and prediction schemes, CDNs significantly reduce bandwidth stress on source servers and latency to clients, where data packet paths 108 become significantly shorter and potentially more predictable. This is the most common method used by large video content providers today.
[0040] However, even with CDNs, high latency and bandwidth demands persist. A few companies, such as Amazon's game streaming service, Twitch, have moved their servers closer to the edge by placing them at some ISP's points of presence (usually the last node before the client). Figure 1c shows this variation, with a predictable or direct network connection between the source server 101 and the ISP 103. Dedicated servers, most likely facilitated by the content source company, are located in the ISP data center 103. This makes the data packet path 109 even shorter and more predictable. However, this solution is expensive and difficult to scale, so it is only pursued by a few services that can charge a premium for the improved customer experience.
[0041] Embodiments of the present invention have two additional advantages that can complement either of these networking approaches: First, local area networks with data caches can be created closer to client devices. Second, servicing requests for locally cached data can be performed without involving the Internet or an ISP.
[0042] 1d shows an SLAN 112 centered around a specific SND 113 that is directly connected to a client device 105. Given a specific request for data by a client device 105, that data is discovered to reside on a specific SND 114 (using methods described below). Using this information, the data is then forwarded to the specific SND 113 and then directly to the client device 105 via data packet path 111. Note that this path does not include the ISP or the Internet.
[0043] definition It should be noted that this disclosure uses the current state-of-the-art method of wireless connectivity, commonly referred to as Wi-Fi (a trademarked term for the family of IEEE 802.11x standards). Wi-Fi is one method for wireless networking, but those skilled in the art can envision successor technologies (wired, wireless, or contact) that may be used for purposes of embodiments of the present invention. Additionally, there are other modern wireless technologies (e.g., Bluetooth, Near Field Communication, etc.) that may be used. Finally, embodiments of the present invention may also operate with a combination of technologies for both wired and wireless networking.
[0044] For purposes of discussion, the term "Wi-Fi access point" will be used to refer to a device that is connected to the Internet (e.g., via an ISP and appropriate modem) on the one hand and to client devices via Wi-Fi on the other. However, the term "access point" is a more general expression that refers to network access regardless of wireless or wired protocol. In one embodiment, an access point is any final point on the edge of a network that allows client devices to connect directly. Note that a single physical device can provide multiple Wi-Fi signals. Also, note that a single physical device can have multiple Wi-Fi signals, each with a different service set identifier (SSID).
[0045] A Wi-Fi repeater is a Wi-Fi access point that repeats packets from other Wi-Fi access points. In one embodiment, a Wi-Fi repeater is used to bridge communications between a client device with a connection to a modem (and ISP or private network) and the access point, thereby "extending" the Wi-Fi range. In one embodiment, the Wi-Fi repeater uses the same SSID as the originating Wi-Fi access point.
[0046] A point in a network of computing devices is called a node. Traditionally, a Wi-Fi access point or Wi-Fi repeater is the last node in the network before a client device.
[0047] Content is data that is generally large and has some persistent value (i.e., potentially valuable at a later time). A good example of content is video data. Video data tends to be large, can be requested multiple times, and does not need to be refreshed. Examples of data that are not considered content in this disclosure include metadata describing the content, messages passed between devices, request calls, and other application programmer's interface (API) related data. Note that this non-content data can be iterated by SND.
[0048] Description of a Specific Local Area Network (SLAN) Embodiment In one embodiment, specific network devices (SNDs) are connected to and interact with each other, thus functioning as nodes in a specific local area network (SLAN). For purposes herein, the definition of an SLAN is the network created by all SNDs that can address each other. In one embodiment, addressing is done directly via Wi-Fi signals. The SLAN can extend beyond the Wi-Fi signal range if there are one or more bridge SNDs that can act as Wi-Fi repeaters. Any data packets also "hop" through these bridge SNDs. Conceptually, this network can extend over large geographical distances with many SNDs, provided there are bridge SNDs in the correct physical locations.
[0049] 2, SND 200 is connected to SNDs 201, 202, 203, 204, and 205 via one or more Wi-Fi signals to form SLAN 210. SND 201 is connected to SNDs 200, 202, 205, 206, 207, 208, and 209 via Wi-Fi signals to form SLAN 211. When the connection between SND 200 and SND 201 is used as a Wi-Fi repeater, all SNDs are connected directly or with one hop. Thus, SLAN 210 and SLAN 211 are combined into one SLAN.
[0050] A method for discovering and connecting SNDs to create an SLAN is described below. Using the method described below, an SND requests information about all SNDs on the SLAN. In some embodiments, these connections are described using a structured list (CSV, JSON, etc.) or using a local or global database (e.g., a graph database, a relational database, a NoSQL database, etc.), and are shared in some embodiments. In other embodiments, addressing is not shared until content is found, as also described below.
[0051] Table 1 provides a textual description of the connections between SNDs in FIG. 2 as an exemplary embodiment. Two SNDs that are connected to each other by Wi-Fi signal can pass data directly. Otherwise, one or two hops are required. For example, as shown in FIG. 2, SND 203 can communicate directly with SND 200. However, for SND 203 to communicate with SND 205, the packet is repeated by SND 200. For SND 203 to communicate with SND 209, the packet is first repeated by SND 200 and then a second time by SND 201. TIFF0007770322000001.tif104146
[0052] There are various ways to represent this table in database form, for example, as a description of nodes and edges in a graphical database. With the appropriate representation, it is possible to identify how to address all SNDs in the SLAN. However, an SND or network controller may not need to know this network topology in order to find or forward content around the SLAN. This is discussed below.
[0053] Hardware and Software in SLAN Implementations For purposes of explanation, the term "specific network device" (SND) is used herein to refer to a physical (or virtual) device that has all the functionality to participate in an SLAN. In one embodiment, the SND may or may not have a connection to the Internet via a modem, one or more Wi-Fi signals, data storage capabilities for caching content and partitions of content, and sufficient computing hardware and software to participate in the network, retrieve content, and transfer content. All of this can be manufactured in a single, dedicated enclosure, but it can also be constructed using conventional modems, Wi-Fi access points, and computers. For clarity, in one embodiment, the SND is a conventional Wi-Fi access point with the additional hardware and software necessary for the SND functionality described herein.
[0054] Figure 3 is a block diagram illustrating the elements of an SND. ISP connection 300 is the connection to an Internet Service Provider or private network. This connection can be direct wired or wireless, using standard hardware, software, and protocols. Modem / receiver 301 receives data, converts it from network signals into packets, and interprets these packets. Router 304 sends the packets to different devices via wired connection 307. Router 304 is optional for the SND, but is shown here. An Internet connection is not required for the SND. Router 304 can connect to other SNDs and / or act as a repeater for traditional Wi-Fi access points and still have the benefits described herein.
[0055] The primary Wi-Fi signal 305 transmits and receives data via Wi-Fi 308. In one embodiment, the primary Wi-Fi signal 305 interacts with client devices. Optionally, the primary Wi-Fi signal 305 uses multiple separate Wi-Fi signals with separate SSIDs. In one embodiment, each of the multiple separate Wi-Fi signals is at a different frequency, e.g., 5.0 GHz and 2.4 GHz. In one embodiment, the SND operates exactly like a conventional Wi-Fi access point for normal requests.
[0056] The connectivity computing and storage unit 302 is a computer or other processing logic (e.g., one or more processors, controllers, execution units, etc.) that controls SND functions such as network discovery, content retrieval, content caching, and controlling the transfer of content and content elements. In one embodiment, the connectivity computing and storage unit 302 comprises connectivity logic. The connectivity logic comprises hardware (e.g., circuitry, digital logic, etc.), software, firmware, or a combination of all three. In one embodiment, the connectivity logic is coupled to the first and second communication interfaces (e.g., the Wi-Fi and other communication interfaces described above) and the content cache (e.g., 303) and uses the second wireless communication interface to initiate wireless connections with one or more access points in the plurality of access points and transfer desired content cached by the respective access points of the SLAN.
[0057] The content cache 303 is memory (volatile or non-volatile) where content is accumulated and temporarily stored. The side Wi-Fi signal 306 transmits and receives data over the side Wi-Fi 309 and is dedicated to SLAN traffic. This functionality is utilized in some embodiments, but not in others, as described below.
[0058] In some embodiments, an optional global positioning system 310 is included in the SND. In one embodiment, the global position is used when evaluating the analyses generated by the SND and SLAN.
[0059] In one embodiment, all of this functionality is assembled from dedicated hardware elements or, except as noted herein, is implemented using off-the-shelf computer, modem, and Wi-Fi access point hardware.
[0060] 4 illustrates the software according to one embodiment of the SND. These software modules can be implemented in a number of common ways, such as an API, an SDK, or one or more programs. In one embodiment, the modem, router, access point, Wi-Fi repeater core software 400 is typical software present in current modem / router / Wi-Fi access point and Wi-Fi repeater devices, except as noted herein.
[0061] In one embodiment, the server software module 407 is a HyperText Transfer Protocol (HTTP) or web server (e.g., Apache HTTP Server), which is common in many modem / router / Wi-Fi access point devices. This allows the device to be accessed via protocols like HTTP, while presenting the configuration to the user as a web page. Some embodiments use this software for communication with ISPs and clients as well as other SNDs.
[0062] The SND discovery and connection module 401 connects to other SNDs and handles authentication to allow other SNDs to connect with each other and with other devices. In one embodiment, the SND discovery and connection module 401 utilizes a network configuration protocol, such as, but not limited to, a zero-configuration network also known as Bonjour® (a registered trademark of Apple, Inc.), to query the network for device capabilities, e.g., which devices have SND functionality.
[0063] In one embodiment, the SLAN local DNS management module 402 uses a protocol such as multicast Domain Name Server (mDNS), which is part of the Zero Configuration Network Protocol, to discover, record, and share the identities of SNDs on the SLAN, where a description of the network in the form of a database can optionally be created and stored (see Table 1).
[0064] The SLAN content retrieval module 403 retrieves content requested by a client device.
[0065] The SLAN content transfer module 404 forwards and / or repeats packets to affect the transfer of data from the SND to the client device within the SLAN in which the content is discovered.
[0066] The SND content caching module 405 strategically stores content or content elements that pass through the SLAN. The strategy for caching content depends on the novelty, popularity, size, access frequency, and several other factors of the content on the SLAN. Caching algorithms that can be used are well known to those skilled in the art. In one embodiment, both heuristic and machine learning caching strategies are utilized. The effectiveness of the caching strategy is recorded by several metrics, which are used to improve the strategy. Measurement and learning functions are part of this software module in some embodiments. In other embodiments, there is a central server that collects analytical data (see below) and performs strategic corrections in real time or offline.
[0067] The SND analysis module 406 reports caching metrics and other information related to the caching scheme, network topology, or business model.
[0068] The global position system module 408 retrieves the global coordinates of the SND and shares them with the SLAN and network controller. In one embodiment, this optional component is used for analytics.
[0069] In some embodiments, a client device is connected to a conventional Wi-Fi access point and a computer is used to simulate or replicate the functionality of an SND, where the functionality of the client device software is similar to that of an SND.
[0070] Forming a network of SNDs In one embodiment, an SLAN is formed when at least two SNDs connect to each other, and all SNDs are networked together in a mesh formation.
[0071] There are at least two different types of embodiments in which SND discovers and joins an SLAN. The first type of embodiment is a self-organizing network. SND forms a peer-to-peer network using local discovery, such as, but not limited to, zero-configuration networking, Apple's Bonjour, multicast DNS, and other similar protocols.
[0072] In an exemplary embodiment of the network formation process, referring to FIG. 5, each SND begins the process by searching for similar devices by searching for specific SSIDs (500). These SSIDs are typically hidden, i.e., the SSIDs are not broadcast. (Hiding the SSID is a common practice for Wi-Fi security, but the goal here is to avoid confusing users with inaccessible SSIDs while trying to connect client devices.) In one embodiment, once the SSID is known, the SND attempts a direct connection using either traditional software authentication (SSID + password). For greater security, in one embodiment, the SND communicates securely with the server using a protocol such as Transport Layer Security (TLS). The server distributes a specific password for the SSID (possibly unique to a single SND). Other forms of secure authentication may also be utilized. The first SND then connects to the second SND (510).
[0073] Once connected, the SND can initially interact with other devices through a system such as Apple's Bonjour. The SND creates its name (ensuring uniqueness by querying the network) and publishes that name to other SNDs on the local network (515). In one embodiment, the SND uses its unique Media Access Control (MAC) address for the name. The SND can query (520) all other devices on the SLAN for their service records (e.g., capabilities, names, addresses, ports, etc.). One or more SNDs on the network will then respond (523) with these records. In many embodiments, there is a multicast DNS caching scheme that reduces the number of SNDs that need to respond. These requests can also be used by other SNDs to update their own records. At this point, the new SND has enough information to form its own local record 530.
[0074] There are ways in which some embodiments of the present invention may differ from the features of standard implementations.
[0075] First, in one embodiment, a valid SLAN network contains only SNDs, so all devices will have the capability when queried. In some embodiments, to reduce chatter, SNDs can have a specific order in which they respond (alphabetical by name, numerical by IP address, age by connect time, etc.). The first one in the list responds with a network-wide set of records. If that SND does not send a response within a certain timeout, the second one in the list will send a response, and so on.
[0076] Second, in some embodiments, a list of connections within the network is sent indicating how many hops are required to reach the device. Conversely, a table of information similar to Table 1 is sent to the SND within the SLAN.
[0077] Another difference in the embodiment is that a similar broadcast protocol is used to search for specific content on the network, as will be described in more detail below.
[0078] In one embodiment, the SLAN includes a network controller and is a network controller-assisted network. In one embodiment, the network controller is a typical network server, typically located on the Internet or a private network, often at an ISP. This network controller is responsible for receiving, storing, and distributing the SLAN's location, SSID, authentication password, and related information for forming the network. In one embodiment, the network controller also records mappings of cached content and control cache decisions, as described below.
[0079] In one embodiment, the SND communicates with a network controller to discover other SNDs and join the SLAN. In one embodiment, this server is located on a specific SND or on a permanently connected client device designated as a local server. In this case, access to the server through an ISP, the Internet, or a private network is still required to establish an initial connection. In other embodiments, this server is located on an ISP or elsewhere on the Internet or a private server.
[0080] In some embodiments, the network controller not only serves as a DNS but also as a secure password source. Referring to FIG. 6, the new SND searches for SSIDs in range, hidden and otherwise (600). The SND securely sends this list to the server (605). It is then the server's responsibility to figure out which of these SSIDs the SND is and which are most appropriate for the new SND to connect to. The server then securely sends the SSIDs and passwords to the new SND (607). The new SND connects to other SNDs 610 and sends a success or failure message to the server. The server then assigns a name and address for the new SND 615. The new SND records the name and address to respond to future queries.
[0081] SLAN Addressing and Multihop In order for SNDs to communicate with each other, in one embodiment, they have a unique identifier (such as a Media Access Control address or MAC address) and a domain name (or IP address assigned using mDNS). The above description shows how these names are assigned, in some embodiments via a peer-to-peer method with a locally stored list, and in other embodiments the assignment and list are handled by a remote server.
[0082] Through DNS or SLAN network lists, any SND can pass messages and / or content directly to each other using conventional protocols such as, for example, File Transfer Protocol (FTP) and HTTP. However, in some embodiments, there are differences between this configuration and a typical network. The SND in these embodiments knows how many (minimum) hops away another SND is. Thus, the SND can evaluate whether it would be more efficient to request content from a distant SND multiple hops away, or directly from the Internet. For purposes of this disclosure, this is referred to as multi-hop (Wi-Fi repeater) versus no-hop multi-hop access.
[0083] Note that Wi-Fi repeater technology is useful for extending the physical range of a Wi-Fi access point, but does so by repeating packets, using more time and more wireless bandwidth. This must be dynamically taken into account when deciding whether to request content that requires multi-hop access.
[0084] Data Discovery and Search In one embodiment, when a client requests access to content (e.g., play a movie), the first step is to authenticate that the client has permission (e.g., paid for the movie). That authentication process is beyond the scope of this disclosure, but it can be assumed that there will be either interaction with a paywall server or rules-based player technology, such as that described in U.S. Patent No. 8,751,795 B2, "Secure Transfer and Tracking of Data Using Removable Non-Volatile Memory Devices," incorporated herein by reference. In one embodiment, at a minimum, the request includes a globally unique identifier (GUID) for the session and a content identifier for the content.
[0085] To find content or all of the elements of content, several types of implementations can be utilized, such as peer-to-peer and network controllers.
[0086] In a peer-to-peer embodiment, an SND connected to a requesting client broadcasts a request on the SLAN, similar to a zero-configuration network protocol. Any SND node in the network that has the entire content or a portion of the content (e.g., elements of the content identified with metadata that allow reconstruction) responds to the request describing the content.
[0087] Note that in these embodiments, no network list is required. The zero-configuration network protocol is extended to include searches for specific content, where no prior knowledge of either the SLAN topology or address lists is required. The response to the request contains a service record and ultimately the address of the SND that has the requested content.
[0088] In one embodiment, the Apple Bonjour protocol is used to locate content on the network. The relationship between Internet Protocol (IP) addresses and Apple Bonjour service records is described in the publicly available Apple Bonjour developer documentation (https: / / developer.apple.com / library / archive / documentation / Cocoa / Conceptual / NetServices / Introduction.html# / / apple_ref / doc / uid / TP40002445-SW1). Using an API library such as Apple's NSNetService, SND can expose available services. In this case, a service is an element of content. In one embodiment, the name of the service type is slan-content. The name of the TCP and given service is <content-id>is.
[0089] In an alternative embodiment, individual SND nodes are queried directly (one by one) using the local domain name stored on the requesting SND. In an alternative embodiment, the local domain name of the SND node is stored on the server (as described above).
[0090] All responses are passed back to the originating SND with a description of the available content elements and the addresses required to access them.
[0091] Figure 7 shows the two SLANs of Figure 2. In this case, when an SND 700 broadcasts a content search message to all SNDs 701 to 709, only the SNDs that have the content respond.
[0092] In another embodiment, a network controller system similar to BitTorrent is used. BitTorrent is a peer-to-peer content distribution system in which content, or pieces of content, are stored on client devices. The Internet Protocol addresses and locations of the content and content pieces are listed in a network controller called a tracker. With BitTorrent, content or pieces of content can be placed on client devices anywhere in the world, called a swarm. To access the content or its pieces, the BitTorrent tracker notifies the requesting client of the content's address, and the client requests the content directly.
[0093] Some embodiments described herein can use the same approach: the network controller accounts for the address and location of cached content on the SLAN. When an SND requests content, the network controller notifies the SND of the address for the cached content in the SLAN, and the SND requests the content directly.
[0094] Embodiments of the present invention that use this approach have several advantages over BitTorrent. First, in BitTorrent, content is often split into several pieces specifically to compensate for the uneven bandwidth offered by many ISPs. That is, upload bandwidth is often inferior to download bandwidth. When multiple pieces are requested simultaneously, the aggregate speed of the multiple uploads can approach matching the requester's download speed. However, in the network configuration described herein, transfer rates between SNDs are more or less balanced. Thus, fragmenting content does not pose a problem in terms of bandwidth imbalance. (There are other reasons for fragmenting content into pieces; for example, fragmentation can distribute caching burdens and possibly local Wi-Fi congestion across the SLAN.)
[0095] Another advantage over BitTorrent is that the cached content is accessed within the SLAN, without needing access to the ISP, the Internet, or the private network, thus providing faster access to the content and not contributing to bandwidth congestion on the ISP, the Internet, or the private network.
[0096] Data Transfer In one embodiment, data transfer is accomplished using Internet Protocol routing between SND nodes within the SLAN, eliminating the need to route content through an ISP or other parts of the greater Internet in most cases, where significant bandwidth and latency reductions are achieved.
[0097] In one embodiment, an SND requests content from another specific SND using a HyperText Transfer Protocol (HTTP) GET or POST command. The minimum data in an Application Programmer's Interface (API) call is: Request: URL <SND with Universal Resource Locator (URL) of cached content>. Endpoint: / content_transfer Parameter: content_id <string>The identifier of the requested content Response: Parameters: Metadata <json>Contains all metadata for the content Content Data <binary>file
[0098] Note that content or elements of content may be cached on the SND node or on client devices connected to the SND node.
[0099] Content partitioning schemes similar to those used by BitTorrent can reduce the caching burden on single nodes and reduce the content forwarding burden on those nodes. These schemes are used as dictated by the topology of the network, the size and popularity of the content, and other determined factors.
[0100] In one embodiment, routing between nodes uses conventional networking techniques that optimize data packet paths, given the topology and current usage. There are multiple networking schemes that can learn given the network's topology, usage patterns, and ongoing demand. Many of the network optimization and content caching algorithms used in LANs and the Internet can be utilized in SLANs.
[0101] As described above, in one embodiment, the requesting SND sends a zero-configuration request for particular content and receives either no response or one or more responses. There are several ways for the requesting SND to determine the best source for transferring the content.
[0102] In some embodiments, the requesting SND uses Ping, a known call and response software function, to determine the latency between the requesting SND and the SND or SNDs that have the content. The source of the content with the lowest latency (or other factors, such as bandwidth capability) is the SND selected to transfer the content. In some embodiments, the requesting SND also Pings the ISP, the Internet, or a private network. If the Ping has the lowest latency (or other factors), the content is downloaded directly.
[0103] In some embodiments, the requesting SND requests content from all sources. The first content packet received is persisted. Other requests can be canceled.
[0104] In some embodiments, the topology of the network, e.g., as defined in Table 1, is used to predict forwarding performance based on the number of Wi-Fi repeaters, network hops, that the content must navigate. This is a more complex method than the above two methods, which only estimate the forwarding latency.
[0105] Data Caching The above description describes that content or content elements are cached locally on the SND. It is stated that there are multiple ways to determine which content to cache and for how long. An extensive list of techniques known to those skilled in the art for optimizing content caching schemes can all be used in the embodiments described herein.
[0106] However, in one embodiment, caching in an SLAN has a somewhat unusual (but not unique) characteristic: Content cached across an SLAN is actually a distributed cache, where the content or content elements are physically cached on one or more of the SNDs within the SLAN. These SNDs are, in many embodiments, crowd-sourced in terms of location, capabilities (e.g., cache size, transfer speed, etc.), and persistence (i.e., online uptime may vary). Thus, a challenge exists to create a coherent caching scheme for an SLAN.
[0107] There are several solutions to this caching problem. In some embodiments, individual SNDs simply ignore other SNDs when caching content. Presumably, a request to the ISP, Internet, or private network was preceded by a request for content on the SLAN without success. Thus, new content obtained from the ISP, Internet, or private network connection, but not from the SLAN, can be assumed to be unique.
[0108] In one embodiment, when the SND receives a request for content from a client device, it acts as a proxy server, requesting the content first from its own cache and then from the SLAN. If the content is not found, the SND requests the content from a content server on the Internet. When the content response arrives, the SND caches the content locally.
[0109] In other embodiments, a network controller is used to instruct a particular SND to cache particular content as it passes through the SND. In response, the network controller includes a flag or other information that instructs the SND to cache the content in response. In yet other embodiments, there is a message passed from the content source SND that is cached along with the content, suggesting information (e.g., location, number of hops, etc.) that guides the SND in whether to cache the content.
[0110] In addition to caching content on the SND, in some embodiments, content or content elements are located and accessed on client devices connected to SND nodes in the SLAN. In these embodiments, the content on the client device is considered a virtual extension of the SND cache. Referring again to FIG. 2, in one embodiment, content residing on the client device 212 is considered part of the cache on the SND 204. When the SND 204 receives a request for content, it queries and requests the content from the client device 212 and then passes it on to the original requester. Of course, content on the client device is controlled by the user and may not be available with the same consistency and immutability as the SND cache. The user can delete the content or disconnect the device at any time.
[0111] In some embodiments, certain content is "preloaded," meaning that it is proactively downloaded and cached at some SNDs on the SLAN. In one embodiment, the network controller uses an API designed to instruct the SNDs to receive and cache the content. In one embodiment, the network controller uses the Internet Protocol (IP) address of the SND in a Hypertext Transfer Protocol (HTTP) POST request to instruct the SND to cache the content and serve the content. In other embodiments, a different API is used for this function. Which content is preloaded is a function of several factors. For example, in one embodiment, the content is predicted by an artificial intelligence algorithm that analyzes the consumption behavior of users on the SLAN. In another example, the content is part of a series of content (e.g., a television series) to which the user subscribes. In yet another example, the content is part of a promotional package of content from a content provider (e.g., the latest offerings from Home Box Office).
[0112] In some embodiments with preloaded content, there is a network controller that knows which SLANs a particular user is likely to connect to. The server proactively requests that an SND in that SLAN download the content or sends the content directly to the SND. This is also true in embodiments where the SLAN is a virtual content kiosk (described below). In other embodiments, the SND proactively requests any speculative content from a content provider that is not already on the SLAN when the user connects.
[0113] Many algorithms, both learning and heuristic, exist for determining which content persists and which should be removed from a given SND's cache. A common heuristic mentioned above is to replace the least accessed content with new content. However, preloaded content, especially content for virtual content kiosk functionality, may be subject to different criteria.
[0114] Data and Network Security Embodiments of the present invention use conventional network security for data traffic, including Transport Layer Security (TSL) and Secure Shell (SSH), and may use certificates pre-installed in or requested by the SND.
[0115] Content security is (typically) achieved by encrypting the content at the source. SND generally does not decrypt the content. SND only needs to know the identity of the content or content elements in order to properly cache and deliver the content.
[0116] Content security can be achieved in a variety of ways. One embodiment uses the technology found in U.S. Patent No. 8,751,795 B2, "Secure Transfer and Tracking of Data Using Removable Non-volatile Memory Devices," incorporated herein by reference. This involves a dedicated player with digital rights management encryption, tracking, and rules-based playback. In this embodiment, only authorized players can decrypt and play the content.
[0117] Local Peer-to-Peer Versus Network Controller As mentioned above, different embodiments are possible for connecting to a network, retrieving data, and caching decisions. In each case, these functions can be performed locally or via peer-to-peer. Alternatively, these functions can be performed using a network controller.
[0118] In one embodiment, when connecting peer-to-peer, the SND searches for hidden SSIDs representing SLAN signals and joins those networks. In one embodiment, when connecting using a network controller, the SND uploads a list of visible SSIDs (and optionally their locations), and the network controller suggests an SSID and password to join.
[0119] In one embodiment, when searching via peer-to-peer, the SND broadcasts a modified zero configuration message to the network and SNDs with content respond. In one embodiment, when searching via a network controller, the SND requests content addressing instructions from the network controller, which functions as a search engine for the SLAN.
[0120] In one embodiment, when caching via peer-to-peer, the SND makes the decision to cache content based on whether the content is on some other SLAN (and many other possible parameters). In one embodiment, when caching with a network controller, it is the network controller that signals the SND what data to cache.
[0121] In describing the embodiments, the functions for connecting, searching, and caching have been presented as being facilitated peer-to-peer or using a network controller. However, in many embodiments, an SND can perform the functions in one, two, or all three ways. Furthermore, these functions need not be performed in the same way by all SNDs in an SLAN. Nor do they need to be performed in the same way by the same SND every time. These functions can coexist among a heterogeneous mix of SNDs.
[0122] Similarly, the implementation of the network controller can vary: the connection, lookup, and cache functions do not have to be performed by the same network controller, or even in the same location in the logical domain. A heterogeneous mix of network controllers can exist.
[0123] In one embodiment, the network controller functionality is physically instantiated in the SND. That is, the location of the cached content, the SND address (or multicast DNS), and the APIs for caching and preloading content are implemented by the SND. The SND is either directly connected to the server, or the server is embedded in the SND. This embodiment has the advantage that the network controller is on the SLAN side of the ISP, and no communication through the ISP is required. Otherwise, the same API calls for retrieving content and caching or preloading content work in the same way as described above.
[0124] SLAN running kiosk or SpeedSpot distribution In the embodiments described thus far, it is assumed that the client device connects to a conventional Wi-Fi access point signal broadcast by the SND and that the client device connects to the Wi-Fi access point in a conventional manner, i.e., by selecting the SSID signal and entering a password. However, in some embodiments, the SND and / or SND perform the functionality of a content distribution "kiosk" or SpeedSpot, as described in U.S. Patent No. 10,104,046 B2, "Content Distribution Systems and Methods," which is incorporated herein by reference. In this case, the kiosk consumer client device connects and performs the functionality using an application on the kiosk consumer client device.
[0125] In one embodiment, a client device running an application in the background searches for a specific SSID from a Wi-Fi access point. This SSID is a generic SLAN name. The application then switches over an existing Wi-Fi connection on the client device (if any) and connects to the SLAN using the SSID and authentication information (e.g., a programmed password). The application on the client device then requests and downloads pre-authorized content. Once the process is complete, the application on the client device reconnects to the original Wi-Fi network (if any).
[0126] These embodiments utilize the connection, retrieval, forwarding, and caching functionality described above. Indeed, these embodiments can be used with client devices such as those described above, in addition to the new functionality described herein. These kiosks are, in many embodiments, an additional feature of SND and SLAN.
[0127] Kiosk embodiments differ from typical SND / SLAN functionality in several ways. In some embodiments, the "kiosk" is a physical device with branding to attract and sell products. In other embodiments, the "kiosk" is simply an SND Wi-Fi access point signal that connects to the SLAN. In other words, the idea of a kiosk is virtual. In these embodiments, the SLAN is the kiosk.
[0128] In many embodiments, the client device includes software that, in one embodiment, performs a number of functions, including (1) authenticating and directly connecting to the SLAN's Wi-Fi signal without user assistance, (2) authorizing transactions to purchase or rent content, and (3) assisting the user in locating physical locations where a connection to the SLAN can be made.
[0129] As mentioned above, in some embodiments, content is proactively distributed (preloaded) to SNDs within the SLAN. As mentioned above, the content selected for preloading can be predicted by a learning algorithm measuring content traffic. This can be extended to kiosk functionality in the same way as for client devices described above.
[0130] However, in some kiosk embodiments, the preloaded content is a set library provided by a content provider. For example, the latest movie releases or game highlights can be preloaded. Note that the same embodiment can provide this service to both kiosk users (i.e., client devices that connect automatically via software) and traditional client devices (client devices that connect via authentication to the client SSID signal).
[0131] In other words, if a user obtains an SND to connect to their ISP, that SND, and possibly the connected SLAN, can automatically act as a "crowdsourcing" kiosk for other users.
[0132] Dynamic load balancing between ISPs connected to an SLAN In one embodiment, the SLAN network is used for load balancing between ISPs. In this case, an SND on the SLAN is connected to two or more different ISPs. At any given time, the bandwidth from the ISPs to the SND can vary. In these embodiments, if the SND has a request that cannot be served locally by the SLAN (i.e., must go through the ISP), it can measure the bandwidth of the ISP (using Ping and other software known to those skilled in the art). If the ISP bandwidth is found to be below a certain standard, the SND can make a request to find an SND on the SLAN that is currently connected to an ISP with better performance. A request is then made from the initial SND to the responding SND that is connected to the better-performing ISP, and content is transferred in this manner.
[0133] Client terminal Many client devices exist that can connect to the SND, and many more are being invented. In one embodiment, client devices include computers, tablets, and mobile phones. These devices do not need to run applications to utilize the SND and SLAN cached content. In one embodiment, for legacy requests, the SND acts as a proxy server to find content locally or on the Internet.
[0134] However, in one embodiment, if these client devices are running an application compatible with Mo-DV's Mo2Go video distribution service, the devices can automatically connect to an SND or SLAN and access pre-authorized content. In one embodiment, this automatic connection is performed using techniques known in the art, such as the way SNDs connect to each other. For example, an application on the client device runs either in the foreground or background and scans a specific SSID for Mo2Go to indicate a valid SND. The application then switches network connections to connect to the SND, downloads the content, and switches back to the original network connection. This can be done with or without user notification and / or permission requests.
[0135] In one embodiment, the other client device is a set-top box. These devices are commonly used to convert cable and satellite signals into digital monitor signals, access the Internet, and provide a television user interface. Again, these devices can utilize content caching within the SND or SLAN without the use of software. However, in one embodiment, Mo-DV's Mo2Go compatible software is running, which allows the set-top box to access pre-authorized content.
[0136] In yet another embodiment, the client device is a digital video recorder (DVR). In one embodiment, it is integrated with a set-top box, and the device caches content according to user instructions. In one embodiment, software runs on the DVR to enable the SND to search for and transfer content on the DVR. The content on the DVR then becomes part of the SND and SLAN's distributed content cache.
[0137] In one embodiment, the functionality of the SND and the client device is integrated into one device.
[0138] SND propagation Embodiments of the present invention have the potential to create a content cache at the first point in the network for client devices, essentially freeing up network bandwidth. This potential reduction in latency, bandwidth utilization, and greater predictability and consistency in content delivery are highly valued features. Consumers benefit from a better experience. ISPs benefit from potentially reduced bandwidth and caching demands. Backbone back-end network and source server companies benefit from reduced bandwidth and improved performance. Network device manufacturers can offer SNDs with different configurations and tunings to improve their competitive position. And finally, content providers benefit from a better experience and increased accessibility.
[0139] Currently, there are several models for content delivery and Wi-Fi access. In one model, a company builds a private network and installs multiple Wi-Fi access points. Replacing some or all of these Wi-Fi access points with SNDs offers clear benefits, especially if the company's private network delivers a lot of the same content to multiple employees. Similarly, multiple SNDs can be installed that connect directly to the ISP, with the SLAN limited to the company's SNDs.
[0140] In some cases, businesses are setting up Wi-Fi access points for customers, and locations such as coffee shops, airports, and stadiums could greatly benefit from using this technology in high-demand areas, making it an especially ideal environment for content delivery kiosks.
[0141] In some cases, ISPs (such as Comcast's Xfinity) sell, rent, or provide modems / Wi-Fi access points to their customers. In some cases, these devices also provide "crowdsourced" Wi-Fi hotspots (called xfinitywifi in Xfinity's case). Customers have a technical interface to "opt out" of the hotspot provisioning, but many do not. Replacing these devices with SNDs provides all the benefits mentioned above to the ISP's customers, and also allows them to provide kiosk and SLAN access to other customers. (See example below.)
[0142] In many cases, Wi-Fi access points are deployed in homes and businesses without any coordination. Your neighbors may have different ISPs and modem / Wi-Fi access point hardware devices with different capabilities. If these neighbors purchase or rent SND-enabled devices, they and you can both enjoy the benefits. See the example below.
[0143] In one embodiment, individual SNDs are configured to opt out of all or some of the functionality. For example, in an embodiment, an SND can disallow certain other SNDs from connecting at a first location. An SND can prohibit caching of certain content. An SND can limit the content it requests from an SLAN. An SND can prevent others from requesting content through the SND from an ISP connected to the SND. An SND can prevent queries and requests for content from certain or all connected client devices.
[0144] These prohibitions, and many others, can be configured by the user or the owner of the SND (perhaps a company), saved as state, and then checked by the SND before performing any function. This type of configuration technique is common, straightforward, and well known to those skilled in the art. However, the transparency and control that these settings provide is important for a user's acceptable and comfortable use of the invention.
[0145] Example of a centrally managed set of SLANs To further illustrate the features of the technology described herein, an exemplary system deployed by a single ISP network provider is described in this section, which relies on the ISP's network controller for discovery, connectivity, DNS, and content retrieval.
[0146] In this exemplary embodiment, a single large ISP (e.g., Comcast's Xfinity product) provides SND hardware to many customers. Most, if not all, SNDs are the same dedicated hardware that includes a modem, at least two Wi-Fi signals (one to connect to clients and one hidden network to create an SLAN), a large cache memory, and a CPU and software to manage the SLAN interactions.
[0147] Customers install these SNDs in their homes, businesses, or anywhere they choose. Just as xfininitywifi hotspots are generated from Comcast-provided hardware, customers can opt out of the SLAN network through software settings.
[0148] The ISP server knows the locations of these SNDs (more or fewer, depending on whether GPS is used). When a customer first powers on an SND, the SND uploads the SSIDs of all other Wi-Fi signals within range to the ISP server. The ISP server figures out which of these are also its own SNDs and instructs the new SND to join the SND's hidden SSID in the SLAN network. The SND and the ISP server can now know the topography of the particular SLAN. In one embodiment, the ISP server stores this interconnected network information in a data store.
[0149] The new SND then receives a request for a large content element (perhaps a movie) from a client device, and the SND sends the request to an ISP server. The ISP server first searches for the content (or content element) within the SND's SLAN. If the content is not cached on any SND in the SLAN, the ISP requests the content from the Internet. Now, when the SND receives the content from the ISP (from the Internet, not the SLAN), it is accompanied by caching instructions from the ISP server. It then caches the content locally (stores it in the SND) according to these instructions. In one embodiment, the caching instructions include features such as storage period, whether to check for consistency of updates before accessing from the cache, whether to fragment the content, whether to push to other SND nodes in the network, what to do with alternative content that may be pushed from the ISP later, etc.
[0150] Otherwise, if the content is found to be cached on one or more SNDs in the SLAN, the ISP server instructs the SND to access the content locally. The content is then forwarded to the requesting SND via normal network means. In this example, the SND acts as a slave to the ISP's central server. SLAN discovery, SLAN connection, content discovery, caching instructions, and content forwarding are all orchestrated by the ISP's server. Learning algorithms and tuning of caching methods are all done centrally on the ISP's server.
[0151] In fact, ISP servers can discover weaknesses in SLAN networks, such as signal holes that prevent effective bridging between networks, or insufficient cache memory in a particular node. For example, ISPs can proactively change the physical topology of their networks by changing equipment or physically installing new (non-customer) nodes.
[0152] Example of an ad-hoc formed and managed SLAN In these exemplary embodiments, an SLAN is formed by the peer-to-peer interaction of SNDs within range of one another. This ad-hoc network, or any individual SND, may or may not rely on a network controller for some or all of its network functions.
[0153] When the SND is first powered on, it searches for hidden secondary SLAN Wi-Fi networks. If it finds a network, the SND joins this network via a secure password or authenticated transaction.
[0154] As in the previous example, the new SND receives a request for a large piece of content (perhaps a movie) from a client device, however, in this embodiment, the SND sends a modified Bonjour request to all SNDs on its network searching for the content or a portion of the content.
[0155] Similar to the previous example, if the content is not found cached in any of the SNDs in the SLAN, the SND will request the content from the Internet. Now, when the SND receives the content from the Internet via the ISP, the content is cached locally (stored in the SND) according to cache directives that may have been pre-configured, learned, or attached to the content. The cache directives include features such as storage period, whether to check for consistency of updates before accessing from the cache, whether to fragment the content, whether to push to other SND nodes on the network, what to do with alternative content that may be pushed later, etc.
[0156] If the content is found cached on one or more SNDs in the SLAN, the requesting SND pings the SNDs with the content and possibly the Internet to determine which content source is best in terms of bandwidth and latency. The requesting SND then makes a direct request to the source of the content. The content is then transferred to the requesting SND via normal network means.
[0157] Additional Techniques for SND and SLAN Operation The following are new techniques for interacting with SNDs and SLANs, including but not limited to connecting SNDs to create an SLAN, discovering cached content, managing the number of hops between SNDs, managing content with blockchain ledgers and BitTorrent, using smart speaker devices, interacting with an SLAN without an SND, interacting with a DVR, acting as a virtual DVR, and hosting content on an SLAN.
[0158] Creating a network using Wi-Fi and searching for content using Bonjour In one embodiment, a mesh network is an interconnected network for passing messages and data between source (requesting) and destination devices. In a classic mesh network, there are endpoint devices (such as client devices and traditional Wi-Fi access points), gateway devices that connect to a larger network, such as the Internet, and repeater devices that forward messages between the endpoints and gateways. In one embodiment, the SND performs any of these functions depending on the relative location (topology) within the network for a given message and the requester of the message.
[0159] In one embodiment, the SND has a network connection via a modem, a Wi-Fi signal dedicated to connecting to client devices, and a second Wi-Fi signal dedicated to connecting to the SLAN mesh network. When a client device requests data found on the SND, the SND acts as both a proxy server and an endpoint (in this case, the data source endpoint). When a client device requests data found on the SLAN but not on the connected SND, the SND acts as a proxy server and redirects the request to an SND and / or device on the SLAN that has the data. There can be multiple hops or repeaters between the requesting SND and the responding SND. In this case, the SND is acting as a repeater. When a client device requests data not found on the SLAN, the SND acts as a gateway device.
[0160] Mesh network technology is well known and offered by several vendors. These networks are typically self-configuring, meaning that new devices can automatically join the mesh. Mesh networks are also self-healing, meaning they can adapt to service interruptions at different nodes. Traditional nodes in mesh networks function as gateways, repeaters, or endpoints, depending on the topology, but these nodes do nothing more than pass messages between requesting and responding devices. Traditional mesh network nodes do not provide proxy server, caching, or zero-configuration networking capabilities.
[0161] In one embodiment, the SLAN architecture adds to the mesh network. In addition to passing messages and data, the nodes (SNDs) of the SLAN are also cache repositories of data, proxy servers, and zero-configuration service providers for client requests. In some cases, service interruptions at key repositories or proxy nodes can have a detrimental effect on the performance of the SLAN. In one embodiment, the SLAN topology is known at least locally by the SNDs. The distance data travels (e.g., number of hops) and the overall size of the SLAN are considered for retrieval, forwarding, and caching strategies, as described below.
[0162] In one embodiment, the SLAN topology is known globally by a server with a database. Given this topology, decisions regarding where data is cached and where proxy requests are dropped are made globally. This is particularly important in applications where an ISP or other network server requests that the SLAN / SND preload and store content, thereby initiating or triggering content downloads. In one embodiment, this server is outside the network, for example, a cloud server. In one embodiment, this server is one of the SNDs or is directly connected to the SND.
[0163] In one embodiment, the cached contents of the SND, or the entire SLAN, are available to the connected network, e.g., the Internet. In this manner, the SLAN acts as a CDN for Internet-connected devices in geographic proximity to the SLAN. Similarly, the SND and SLAN act as nodes in distributed content delivery schemes such as Bit Torrent and Blockchain Video Streaming, described below.
[0164] Also different from traditional mesh networks is the handling of zero-configuration calls (e.g., Bonjour calls) in each SND. In one embodiment, there is a publication, discovery, and resolution mechanism to identify all SNDs in the directly connected mesh. Using Bonjour syntax, for example, the publication of an SND service includes the instance name (e.g., SND identification, or SND MAC number), service type (e.g., _snd), and domain (e.g., _tcp.local).
[0165] In one embodiment, there are publishing, discovery, and resolution methods for finding specific content located in an SND repository. Using Bonjour syntax, for example, an SND service publication includes an instance name (e.g., content identification or hash), a service type (e.g., _snd_content), and a domain (e.g., _tcp.local).
[0166] Managing hops for lookup, forwarding, and caching In one SLAN embodiment, each SND joins a local SLAN and makes Bonjour-like requests for content, regardless of the source URL or number of hops. In one embodiment, most or all of the SNDs repeat requests to fully query the SLAN. This embodiment finds the URL of the content source, but can have many redundant repeated requests. These redundant requests can have a detrimental effect on network performance.
[0167] To reduce redundant requests, in one embodiment, a map of the SLAN's connection topography (i.e., which SNDs are directly connected to each other and how indirectly connected SNDs are connected through hops, i.e., repeated requests) is created. Referring to the example shown in Figure 8, 811 shows a directly connected mesh network (A) with SNDs 801A-804A, 805AB, and 806AB. 812 shows a directly connected mesh network (B) with SNDs 807B-810B, 805AB, and 806AB. Note that 805AB and 806AB are connected to all SNDs, while the other SNDs are only connected to either SND A or SND B.
[0168] The method described below illustrates one embodiment of a process where each SND creates a local mapping of which requests to repeat to which other SNDs for the minimum number of repeated requests for full coverage.
[0169] In one embodiment, after connecting to the SLAN, each SND performs the following method to register with the SLAN as part of the registration process to join the SLAN. Step A: The new SND requests each directly connected SND to send its connection data. This request is a connection data request. In one embodiment, this is accomplished with a zero-configuration network request that is not repeated by any SND. Therefore, only directly connected SNDs respond. Step B: Each SND responds with its connection data. In one embodiment, the data includes (at least) the identity of the responding SND, a list of all SND identities to which the responding SND is connected, and a list of SNDs to which the responding SND repeats messages. In one embodiment, the list includes all SNDs connected to the corresponding SND to which the responding SND repeats messages (see example below). Step C: The requesting SND determines whether there are any SNDs to which it is connected, either directly or through other SNDs repeating messages, but to which no other SNDs are connected. If so, the requesting SND adds each uniquely connected SND to its repeat message list. Step D: The requesting SND determines whether there are any SNDs to which it is not directly connected but to which other SNDs are connected. If there are such SNDs, the requesting SND then sends a direct request to these SNDs, asking them to include the requesting SND in a list of other SNDs to repeat messages. This registration process creates a hierarchy in which SNDs repeat messages depending on when they joined the network. That is, an SND only decides which SNDs to repeat messages to at the time of joining, without taking over the message repeating responsibilities of any existing SNDs in the topology (e.g., LAN) that already exist.
[0170] For example, referring to FIG. 8, assume that all SNDs except 805AB, 806AB, and 810B have performed this method. First, 805AB joins the network. Step A: 805AB requests connection data from all directly connected SNDs. Step B: 805AB receives connection data from 801A, 802A, 803A, 804A, 807B, 808B, and 809B. (Note that 806AB and 810B have not yet joined the SLAN.) The connection data may be in JSON format, for example, as follows: { "SNDID":"801a", "connections":["802A","803A","804A"] "repeat ":{ "802A":"None", "803A":"None", "804A":"None" } } Step C: 805AB determines for SNDs 801A, 802A, 803A, 804A to repeat the message to SNDs 807B, 808B, 809B and vice versa. Step D.805AB determines that there are no SNDs that are not directly connected. Therefore, the connection data for 805AB is as follows: { "SNDID":"805AB". "connection":["801A","802A","803A","804A","807B","808B","809B"], "repeat":{ "801A":["807B","808B","809B"],"809B"], "802A":["807B","808B","809B"], "803A":["807B","808B","809B"], "804A":["807B","808B","809B"], "807A":["801A","802A","803A","804A"], "808A":["801A","802A","803A","804A"], "809A":["801A","802A","803A","804A"] } }
[0171] Now, in this example, 810B joins the network. Step A: 810A makes a Bonjour request. Step B: 810B receives data from 805AB, 807B, 808B, and 809B. 805AB, 807B, 808B, and 809B also update their connection data to reflect the new connection with 810B. Step C: 810B determines that there is an SND that needs to repeat the signal. Step D: 810B then requests 805AB to repeat the message for 801A, 802A, 803A, and 804A. 805AB updates its connection data to include the new repeat service for 810B.
[0172] Now, in this example, 806AB joins the network. 806AB performs step A and receives connection data from all SNDs in step B. In step C, 806AB determines that all of the directly connected SNDs are connected to each other, either directly or by 806AB repeating the message. In step D, 806AB determines that there are no other SNDs that need to repeat the message.
[0173] Thus, by having a locally known direct connection mapping for each node where each SND knows its direct connections and which of them are connected to each other, when a message is passed, each SND knows which SNDs will receive the message and which SNDs it should pass the message to, so given this topology, it can know if only all or some of its directly connected SNDs received the message. SNDs repeat messages to achieve complete coverage, and if two or more SNDs are connected to both the message sender and an SND that did not receive the message, only one of these SNDs will repeat the message. This results in reduced message passing, as duplicate messages are not received by an SND.
[0174] In one embodiment, messages are sent with a count of how many times to repeat the message. For example, if the count is zero, the message will not be repeated by any SND. If the count is one, the count is decremented to zero, after which the SND passes the message on, and so on. Using this method, the scope of messaging and the number of repetitions is controlled.
[0175] In one embodiment, the message is a ZeroConf (or Bonjour) request for a service. In this case, however, the service is the content (or portion of content) that the originating SND desires. If an SND has the requested content, the IP address or URI of that SND is sent to the originating SND. The originating SND can then request the data transfer directly (or using a chain of repeated intermediate SNDs).
[0176] This approach has the advantage that new SNDs can be easily introduced into the SLAN. However, there are two issues that must be addressed: first, how to manage race conditions when two or more SNDs arrive at the SLAN at the same time; and second, how to adapt when an SND drops out of the SLAN.
[0177] There are several ways to handle the race condition when new SNDs arrive simultaneously. In one embodiment, the connection data from each SND includes a timestamp indicating when it was last updated. If any of the connection data updates are too close to the present, the SND repeats the process after a potentially random delay (e.g., several seconds to several minutes). Whether any of the connection data updates are too close to the present is determined based on a predetermined time period, and if the update time is within that predetermined time period (e.g., within that threshold), the SND resends the connection data request.
[0178] In one embodiment, one SND acts as a controller and sequentially instructs each of the other SNDs to perform the registration method (reset). In one embodiment, the SND with the lowest MAC acts as the controller for the network (e.g., LAN) and commands the reset. In one embodiment, the reset of the registration process is propagated through iterations. In this way, the entire SLAN can be reset.
[0179] In one embodiment, the SND receives a signal from a central server (e.g., on the Internet or an ISP) to reset the network by performing a registration process with all SNDs in the topology, where the central server can instruct the entire topology (e.g., LAN) to reset.
[0180] In one embodiment, a central server can request connection data from each of the SNDs. This information can be used to determine an overall connection mapping for the SLAN. In one embodiment, this mapping is used for one or more of analysis, performance measurements, determining where to improve the network by adding SNDs, and / or determining the best caching scheme to utilize.
[0181] Another issue is resetting the mapping when an SND leaves the network. In one embodiment, there is a power-down sequence that allows the departing SND to signal the rest of the SLAN that it is leaving. The departing SND signals to the SLAN that it is leaving and sends its connection data. The remaining SNDs analyze the connection data to see if there are any common connections that can replace the repeat service of the departing SND. For example, with reference to the SLAN described above, if SND 805AB leaves, SND 806AB can take over all repeat request messages with which it has a common connection.
[0182] In one embodiment, the departure of an SND triggers a serial reset of the network starting from the first designated SND (e.g., MAC order). In other words, when an SND is removed from the network topology (e.g., LAN), a network reset occurs, which causes the registration process to be repeated. In one embodiment, the reset can be initiated by a controller (e.g., another SND, another SND with the lowest MAC, a central server, etc.).
[0183] In one embodiment, if there is no shutdown sequence or if power is lost immediately, the SND detects the lost node by periodically pinging, e.g., seeking a response from a directly connected SND.
[0184] In one embodiment, the SLAN automatically resets a schedule or timeout counter. The number of iterations or hops required for data transfer from one SND to another within an SLAN directly relates to the performance and operation of the overall network. In one embodiment, request messages are sent with a hop limit, i.e., an integer representing the number of allowable hops. For each SND that repeats a request, the hop limit is decremented by one. If a request arrives with a hop limit of zero, the receiving SND will not repeat it.
[0185] A blockchain ledger for content sourcing, authorization, and analytics Most video distribution on the Internet is dominated by large companies, such as AWS, Google, Microsoft, and Akamai. With the explosion of video distribution on the Internet, there is an opportunity to disrupt centralized streaming systems with decentralized systems. An example of this is BitTorrent (discussed below). However, this network relies on a single central server to orchestrate the storage and distribution of content. In many situations, this single server is a single point of failure, a security risk, and / or a bottleneck.
[0186] Blockchain technology creates a secure, crowdsourced, trusted ledger without a central server and certificate authority. When used for video distribution, a blockchain ledger refers to a highly encrypted, decentralized ledger of content, handles authentication of that content, and records all access to that content using blockchain technology.
[0187] In one embodiment, the SND acts as a blockchain mining resource (i.e., updates the ledger) for decentralized content. In one embodiment, the SND encrypts and stores content from other sources and incorporates that content into the blockchain ledger.
[0188] In one embodiment, the SND uses the blockchain ledger to find distributed content and / or authorization information for that content. Using this information, the SND can request the content, decrypt the content, and send it to the client device.
[0189] In one embodiment, one or more of the SNDs on the SLAN act as nodes that both mine and store content in the blockchain ledger. The content and blockchain ledger stored on the SLAN are available not only on the SLAN but also over the Internet (through gateway connections of one or more SNDs).
[0190] In one embodiment, SNDs or a collective SLAN are awarded credits for mining and / or storing content on a blockchain ledger (similar to mining Bitcoin). According to the business model, these credits can be redeemed by the SND holder (or the collective owners of the SLAN) in a number of ways, e.g., for purchasing or renting streaming video, for Bitcoin, etc. This allows users to reduce content acquisition costs by purchasing SNDs.
[0191] BitTorrent over SLAN As mentioned above, in one embodiment, some or all of the SNDs in the SLAN participate in a BitTorrent network. In this well-known distributed video distribution model, content is split into pieces and stored on local machines rather than using Internet resources. However, in the classic BitTorrent model, there is a central server with a database that maps the locations of all content pieces, and the Internet is used for transport.
[0192] In one embodiment of the SND, pieces of content are stored in the SND cache. These pieces are accessible not only to other SNDs on the SLAN, but also to other devices participating in the Bit Torrent network anywhere on the Internet. In other words, the SND acts just like a Bit Torrent device.
[0193] In one embodiment, a single SND acts as the tracker (the central server with the database) for the Bit Torrent network.
[0194] In one embodiment, multiple SNDs within an SLAN act as trackers for the Bit Torrent network. When a Bit Torrent request comes into an SND, that SND can forward it to another SND on the SLAN. This allows for multiple servers to respond to Bit Torrent requests. In one embodiment, the SNDs access a common Bit Torrent tracker database. In another embodiment, the SNDs use a copied version of the Bit Torrent tracker database.
[0195] Incorporating SND hardware and functionality into other network devices In one embodiment, the SND proxy and caching functionality (and the necessary memory and computing hardware) is built into a smart speaker (e.g., Amazon Echo, Google Home, Apple HomePod). When video content is requested (by voice command), the smart speaker performs a proxy lookup for the content locally on the SND / smart speaker, then over the SLAN, and then to the internet.
[0196] In one embodiment, the smart speaker includes software for accessing the SLAN via a regular Wi-Fi access point (as described below in the section "Accessing the SLAN without SND Hardware").
[0197] In one embodiment, the smart speaker also includes Wi-Fi signaling capabilities for the SND and operates as part of the SLAN. In essence, the SND is the smart speaker, or the two devices function as one.
[0198] In one embodiment, the smart speaker is connected to a traditional SND and passes content requests through the SND, hi one embodiment, the smart speaker translates proprietary requests (used to communicate directly with proprietary servers, e.g., AWS, Google Cloud, iCloud) into traditional content requests that the SND can understand.
[0199] In one embodiment, the SND has the necessary software to parse proprietary requests from the smart speaker. In one embodiment, the SND / smart speaker requests translations from a proprietary server.
[0200] Accessing SLAN without SND hardware When a device connects to the SND and requests content, the SND performs a proxy request for the content across the SLAN as described above. In one embodiment, content on the SLAN is accessed using a conventional Wi-Fi access point.
[0201] In one embodiment, if the Wi-Fi access point to which the requesting device is connected is not part of the SND or SLAN, the requesting device uses the application software to find and connect to the local SLAN directly (without using a secondary Wi-Fi signal). The request then proceeds as described above. Upon completion, the application reconnects to the original Wi-Fi access point.
[0202] In one embodiment, a device uses a software application to instruct a Wi-Fi access point that is not an SND or not connected to the SLAN to connect to the SLAN. The Wi-Fi access point then acts as an SLAN repeater, extending the range of the SLAN. However, a drawback is that client application software that complies with the SLAN's communication protocol must mediate transactions over the SLAN.
[0203] Using a Digital Video Recorder (DVR) as a repository As mentioned above, client devices such as DVRs connected to an SND can provide content to the SLAN. For devices such as computers, tablets, and mobile phones, the interaction between the SND and the device providing the content is programmed into an application on the device. However, because these devices are often not connected to an SND, the content stored on the device is unreliable for access via the SLAN.
[0204] In contrast, DVRs are typically always available on the network. Their primary purpose is to store content for later consumption, similar to the cache of an SND. However, most DVRs do not run custom software and do not have an API for access between the SND and the DVR. Therefore, the connection between the SND and the DVR depends on the type of DVR.
[0205] In one embodiment, new DVRs are designed with an API that interacts with software in the SND. In one embodiment, the DVR has a specific program for synchronization with the computer (or SND). For example, AT&T's DIRECTV™ has software called GenieCO™.
[0206] In one embodiment, the SND is aware of the content available on the device and has the ability to access that content.
[0207] Using SLAN as a "virtual" DVR As mentioned above, SNDs can preload content to perform the same function as Mo2Go™'s SpeedSpot™. Given the interconnectivity and transport capabilities of SLANs, SNDs that cache content are less important for content retrieval.
[0208] This same "preload" feature can be used to provide a "virtual" digital video recorder function over an SLAN. A traditional DVR allows the user to select programs that were broadcast at a particular time and store them for later viewing. This same functionality can be provided with an SND.
[0209] Advantages of one embodiment of a virtual DVR are that no extra hardware is required; content can be shared across the SLAN, reducing bandwidth usage and redundancy in storage; content is available on any device; content is always available regardless of the user's home internet connection or DVR status; and the service can be upgraded, modified, or improved through software and parameter changes.
[0210] In one embodiment, an ISP, content provider, or other Internet service provides software for selecting content and storing (or accessing from third parties) the content online within the Internet, which may be independent of the SLAN and SND embodiments described above.
[0211] There are several ways an SLAN can function as a virtual SND. In one embodiment, an ISP creates software and / or a website for selecting programs to capture. The ISP then "loads" the content onto one or more SNDs on the SLAN. For example, a user pre-selects a live broadcast, such as a sporting event, to record on a virtual DVR. Then, when the event occurs, the ISP uses SND API calls to load the stream content (or post-event content file). If multiple users in an SLAN pre-select an event, only one copy of the event content needs to be distributed to any SND in the SLAN.
[0212] In one embodiment, the content provider (or a third party) provides software and / or a website for selecting content. The SND requests the content directly from the content provider. First, the SND checks all other SNDs on the SLAN to see if the content has already been requested. In one embodiment, this is done by a Bonjour-like broadcast request. If it has already been requested, the SND does not download the content but instead checks the address of the content in the SLAN.
[0213] If the content is not requested on the SLAN, the SND requests the content directly from the content provider. For live streaming, in one embodiment, the request is timed to the start of the event and captures the stream data. For VOD, the content is requested and downloaded at a convenient time, taking into account bandwidth constraints. (In one embodiment, the content provider chooses to create VOD content from the live stream and provide it to the SND after the event, either as an element or as complete content.)
[0214] In one embodiment, user requests are stored and content is stored for user viewing, with deletion occurring at user request or content timeout (or other business rules).
[0215] Creating and managing locally hosted content In one embodiment, each SND acts as a web server, providing both web content upload and download capabilities, web page messaging and blogs (e.g., Facebook™, NextDoor™), and other web functionality. (Many conventional Wi-Fi access points already include a web server for a user configuration control interface.) Web server software (such as Apache HTTP Web Server) and conventional web programming tools (such as JavaScript and HTML) can be used to enable an SND to function as a web server.
[0216] Depending on the security settings and configuration, the SND web server can be used as a private server for directly connected devices, a local server dedicated to devices connected to the SLAN, or a web server accessible via the Internet using an ISP gateway.
[0217] In one embodiment, using standard web security and linkages, the content of a given web page is served over the World Wide Web (WWW) via SND, or SLAN, or the Internet.
[0218] The applications of personal web servers that provide content to the World Wide Web are multiple and well known (eg, web pages, photo and video hosting, messaging).
[0219] Applications of a personal server (e.g., limited to devices directly connected to the SND and any local repeaters) include accessing data between user devices without interacting with the internet. Examples include calendars, documents, and backup data.
[0220] A unique feature is the ability to set up a Neighborhood Wide Web (NWW), a collection of websites and services that can only be accessed by devices connected to the SLAN. Some sites, such as NextDoor, create message and blog pages that are restricted to neighbors only. However, ensuring that only neighbors can access the content is a difficult process that involves exchanging postcards through the mail. With an SLAN network, membership is restricted to directly connected neighbors, and the content never reaches the World Wide Web. With all the tools of the World Wide Web available, the applications of such a NWW are limited only by the imagination of the neighbors.
[0221] Several exemplary embodiments are described herein.
[0222] Example 1 comprises a plurality of access points that are part of one or more existing networks, the plurality of access points operable to be individually addressed and communicate with each other to form a local area network (LAN) that transfers data between two or more of the plurality of access points using point-to-point links independent of their function in the one or more existing networks; A network configuration characterized in that each access point of the plurality of access points is associated with a cache that stores content that can be forwarded to other access points in the plurality of access points via one or more direct point-to-point forwarding between pairs of access points of the plurality of access points in response to a forwarding request message to forward the content, and each access point has a mapping indicating, if any, a first set of one or more access points of the plurality of access points to which each access point repeats messages, and for each access point of the first set, a first list of one or more access points of the plurality of access points from which to forward messages as needed upon receiving them, and wherein two access points in the plurality of access points that are directly connected to a third access point do not repeat the same message to the third access point.
[0223] Example 2 is a network configuration of Example 1 that can optionally include each access point of the plurality of access points being directly connected to a second set of one or more access points of the access points and having information indicating which access points of the second set of one or more access points of the access points are connected by a point-to-point link.
[0224] Example 3 is the network configuration described in Example 1, which can optionally include that the mapping of each access point indicating to which access point each access point repeats messages is initially set when each access point joins the LAN.
[0225] Example 4 is a network configuration described in Example 1 that may optionally include the steps of: sending a connection data request by one of the multiple access points to each access point directly connected when joining a LAN; receiving connection data by the one access point from each access point responding to the connection data request, the connection data including an identifier, a second list of all access points to which the responding access point is connected, and a list of access points to which the responding access point repeats the message; determining whether any of the directly connected access points is not connected to any other of the directly connected access points by directly or by another access point repeating the message; and, if the one access point determines from the connection data that the directly connected access point is not connected to any other of the directly connected access points by directly or by another access point repeating the message, sending a request to any of the access points to add the one access point to a first list of one or more of the multiple access points to which the message is forwarded when received.
[0226] A fifth embodiment of the present invention includes a step of determining whether any non-directly connected access point is connected to any other directly connected access point; if an access point determines from the connectivity data that a non-directly connected access point is connected to any other directly connected access point, sending a request to the connected access point to forward a message to the non-directly connected access point; 10 is a network configuration of Example 4, which can optionally further include:
[0227] Example 6 is the network configuration of Example 4, which can optionally include that the connection data request includes a Bonjour request.
[0228] Example 7 is a network configuration of Example 4 that can optionally include the following: the departure of one of the access points triggers a reset of the LAN, and each remaining access point sends a connection data request to each access point to which it is directly connected.
[0229] Example 8 is a network configuration of Example 4, which may optionally include the connection data including timestamp information indicating the time when the last update was made to the connection data, and upon receiving the connection data, one access point determining based on the timestamp information whether the connection data has been updated within a predetermined time period of the connection data request, and if so, resending the connection data request to each directly connected access point.
[0230] Example 9 is a network configuration of Example 4 that can optionally include one access point of the plurality of access points functioning as a controller of the LAN and operable to trigger a reset of the LAN.
[0231] Example 10 is the network configuration of Example 9, which can optionally include one access point functioning as the controller having the lowest MAC among all access points in the plurality of access points.
[0232] Example 11 is the network configuration of Example 1, which can optionally include a central server that acts as a controller for the LAN and is operable to trigger a reset of the LAN.
[0233] Example 12 is a network configuration of Example 1 that can optionally include one access point operable to address one or more of the plurality of access points and select from one or more access points that have cached content available as a source of desired content for a client coupled to the one access point that has requested the content.
[0234] Example 13 is a method for use in a network configuration in which communication occurs between a plurality of access points that are part of one or more existing networks, the method comprising: 1. A method of forming a local area network (LAN) in which a plurality of access points individually address each other, thereby transferring data between two or more of the plurality of access points using point-to-point links independent of functionality in one or more first existing networks, comprising: generating, by an access point, a mapping indicating, for each access point, a first set of one or more access points of the plurality of access points to which each access point will repeat the message, if any, and for each access point of the first set, a first list of one or more access points of the plurality of access points from which to forward the message upon receipt, as appropriate, wherein two access points in the plurality of access points that are directly connected to a third access point do not repeat the same message to the third access point; identifying, by an access point, one or more of the plurality of access points that have the desired content cached; requesting, by the one access point, at least one access point of the plurality of access points to transfer the desired content to the one access point via one or more direct point-to-point transfers between access pairs of the plurality of access points; The method includes:
[0235] Example 14 is the method of Example 13, which may optionally include each access point of the plurality of access points being directly connected to a second set of one or more access points of the access points and having information indicating which access points of the second set of one or more access points of the access points are connected by a point-to-point link.
[0236] Example 15 is the method of example 13, which can optionally include that the mapping of each access point indicating to which access point each access point repeats messages is initialized when each access point joins the LAN.
[0237] Example 16 is a method for generating a mapping, comprising: sending a connection data request to each access point to which the access point is directly connected when joining the LAN by the access point of the plurality of access points; receiving, by one access point, connection data from each access point that responds to the connection data request, the connection data including an identifier, a second list of all access points to which the responding access point is connected, and a list of access points to which the responding access point will repeat the message; determining whether any directly connected access point is not directly connected to any other directly connected access point by repeating the message; A method of Example 13 that may optionally include a step of: if one access point determines from the connection data that a directly connected access point is not connected to any other directly connected access point by repeating the message, sending a request to any access point to add the one access point to a first list of one or more access points of the plurality of access points to which the message is forwarded when received.
[0238] Example 17 is the method of Example 16, which may optionally include the steps of determining whether any access point that is not directly connected is connected to any other access point that is directly connected, and if one access point determines from the connection data that the access point that is not directly connected is connected to any other access point that is directly connected, sending a request to the connected access point to forward a message to the access point that is not directly connected.
[0239] Example 18 is one or more non-transitory computer-readable storage media having instructions stored thereon, The instructions, when executed by a system having at least a processor and a memory, cause the system to perform a method for use in a network configuration in which communications occur between a plurality of access points that are part of one or more existing networks; a plurality of access points forming a local area network (LAN) for transferring data between two or more of the plurality of access points using point-to-point links independent of functioning in one or more first existing networks by the access points individually addressing each other; The method is generating, by an access point, a mapping indicating, for each access point, a first set of one or more access points of the plurality of access points to which each access point will repeat the message, if any, and for each access point of the first set, a first list of one or more access points of the plurality of access points from which to forward the message upon receipt, as appropriate, wherein two access points in the plurality of access points that are directly connected to a third access point do not repeat the same message to the third access point; identifying, by an access point, one or more of the plurality of access points that have the desired content cached; requesting, by the one access point, at least one access point of the plurality of access points to transfer the desired content to the one access point via one or more direct point-to-point transfers between access pairs of the plurality of access points; Includes.
[0240] Example 19 is a device used in a network configuration, The network configuration is a plurality of access points that are part of one or more existing networks, the plurality of access points operable to be individually addressed and to communicate with each other to form a local area network (LAN) that transfers data between two or more of the plurality of access points using point-to-point links independent of their function in the one or more existing networks; The client device a first communication interface for connecting to one or more existing networks; a second wireless communication interface that connects via individual addressing to one or more of the plurality of access points that are part of the one or more existing networks and transfers data using a point-to-point link; a cache for storing content; connection logic coupled to the first and second communication interface caches to set up wireless connections to one or more of the access points using the second wireless communication interface for transferring desired content cached by respective access points of the plurality of access points; Equipped with The wireless connection is used to request at least one of one or more of the plurality of access points to transfer the desired content via one or more direct point-to-point transfers with one or more of the access points in the plurality of access points.
[0241] Example 20 is the device of example 19, which can optionally include the connection logic being operable to set up the wireless connection itself in response to input from a network controller that is part of the LAN.
[0242] Example 21 is a method for connecting SNDs to create an SLAN as described herein.
[0243] Example 22 is a method for locating cached content as described herein.
[0244] Example 23 is a method for managing the number of hops between SNDs as described herein.
[0245] Example 24 is a method for managing content via a blockchain ledger and Bit Torrent as described herein.
[0246] Example 25 is a method of using a smart speaker device as described herein.
[0247] Example 26 is a method for interacting with SLAN without SND, as described herein.
[0248] Example 27 is a method for interacting with a DVR as described herein.
[0249] Example 28 is a method for operating an SLAN as a virtual DVR, as described herein.
[0250] Example 29 is a method for hosting content on an SLAN, as described herein.
[0251] A 30th embodiment is an apparatus for carrying out one or more of the methods of the 21st to 29th embodiments.
[0252] Additional Considerations As used herein, any reference to "one embodiment" or "an embodiment" means that a particular element, feature, structure, or characteristic described in connection with an embodiment is included in at least one embodiment. The appearances of the phrase "in one embodiment" in various places in this specification do not necessarily all refer to the same embodiment.
[0253] As used herein, the terms "comprise," "comprising," "includes," "has," "having," or other variations thereof are intended to convey a non-exclusive inclusion. For example, a process, method, article, or apparatus that includes a list of elements is not necessarily limited to only those elements and may include other elements not expressly listed or inherent in such process, method, article, or apparatus. Furthermore, "or" refers to an inclusive "or," not an exclusive "or," unless otherwise specified. For example, condition A or B may be satisfied by any one of the following: A is true (or present) and B is false (or absent), A is false (or present) and B is true (or present), or both A and B are true (or present).
[0254] Furthermore, the use of "a" or "an" is utilized to describe elements and components of embodiments herein. This is done merely for convenience and to give a general sense of the invention. The specification should be read to include one or at least one, unless clearly meant otherwise, and the singular also includes the plural.
[0255] The foregoing description has been described with reference to specific embodiments for purposes of explanation. However, the exemplary discussion above is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teachings. The embodiments have been chosen and described to best explain the principles of the invention and its practical application, and thereby enable others skilled in the art to best utilize the invention and its various embodiments with various modifications as suited to the particular applications contemplated.
[0256] Some portions of the detailed descriptions which follow are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps require physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
[0257] It should be noted, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. As is evident from the above discussion, unless specifically stated otherwise, discussions throughout this specification utilizing "processing" or "computing" or "calculating" or "determining" or "displaying" or "networking" and similar terms are understood to refer to the operations and processing of a computer system or similar electronic computing device that manipulates and converts data represented as physical (electronic) quantities in the computer system's registers and memory into other data similarly represented as physical quantities in the computer system's memory or registers or other such information storage, transmission, or display device.
[0258] The present invention also relates to apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such computer programs may be stored on a computer-readable storage medium, such as, but not limited to, a floppy disk, an optical disk, a CD-ROM, any type of disk including a magneto-optical disk, a read-only memory (ROM), a random-access memory (RAM), an EPROM, an EEPROM, a magnetic or optical card, or any type of medium suitable for storing electronic instructions, each coupled to a computer system bus. Similarly, general-purpose networking devices, including, but not limited to, modems, routers, Wi-Fi access points, Bluetooth, and other wired and wireless networking hardware systems, may be utilized.
[0259] The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specific apparatus to perform the required method steps. The required structure for these systems will be apparent from the description above. Further, the present invention is not described with reference to any particular programming language. It will be understood that a variety of programming languages can be used to implement the teachings of the present invention as described herein.
[0260] While many variations and modifications of the present invention will no doubt become apparent to those skilled in the art after reading the foregoing description, it should be understood that any particular embodiments shown and described by way of illustration are not intended to be considered limiting. Accordingly, references to details of various embodiments are not intended to limit the scope of the claims, which in themselves recite only those features regarded as essential to the invention. [Explanation of symbols]
[0261] 101 Source Server 102 Internet nodes 106 Data Packet Path 103 Internet Service Providers 104 Modem Router Access Point 105 client devices< / binary> < / json> < / string>
Claims
1. 1. A network configuration, comprising: a plurality of access points that are part of one or more networks, the plurality of access points operable to be individually addressed and to communicate with each other to form a local area network (LAN) for transferring data between two or more of the plurality of access points using point-to-point links independent of their function in the one or more networks; each access point of the plurality of access points is associated with a cache that stores content that can be transferred to other access points in the plurality of access points via one or more direct point-to-point transfers between access point pairs of the plurality of access points in response to a transfer request message to transfer the content; each said access point has a mapping indicating a first set of one or more access points of said plurality of access points to which said each access point repeats a message, and for each access point of said first set, a first list of one or more access points of said plurality of access points from which said message is to be forwarded upon receipt as appropriate, wherein no two access points in said plurality of access points that are directly connected to a third access point repeat the same message to said third access point; The mapping may be When joining the LAN by one of the plurality of access points, sending a connection data request to each of the access points to which it is directly connected; receiving, by the one access point, connection data from each of the access points responding to the connection data request, the connection data including an identifier, a second list of all access points to which the responding access point is connected, and a list of access points to which the responding access point will repeat messages; determining whether any directly connected access point is not directly connected to any other directly connected access point by repeating the message; if the one access point determines from the connection data that the directly connected access point is not connected to any other of the directly connected access points, either directly or by another access point repeating the message, sending a request to the one access point to add the one access point to the first list of the one or more access points of the plurality of access points from which the message is forwarded when received; A network configuration, characterized in that:
2. 2. The network configuration of claim 1, wherein each access point of the plurality of access points is directly connected to a second set of one or more access points of the access points and has information indicating which access points of the second set of one or more access points of the access points are connected by point-to-point links.
3. 2. The network configuration of claim 1, wherein the mapping for each access point indicating to which access points the access point repeats messages is initially set when the access point joins the LAN.
4. determining whether any of the non-directly connected access points are connected to any other directly connected access points; if the one access point determines from the connection data that a non-directly connected access point is connected to any other directly connected access point, sending a request to the connected access point to forward a message to the non-directly connected access point; The network arrangement of claim 1 further comprising:
5. The network arrangement of claim 3 , wherein the connection data request comprises a Bonjour request.
6. 2. The network configuration of claim 1, wherein the departure of one of the access points commands a reset to the LAN, and each of the remaining access points sends the connection data request to each of the access points to which it is directly connected.
7. 2. The network element of claim 1, wherein the connection data includes timestamp information indicating when the last update occurred for the connection data, and upon receiving the connection data, the one access point determines based on the timestamp information whether the connection data has been updated within a predetermined time of the connection data request, and if so, resends the connection data request to each of the directly connected access points.
8. 2. The network arrangement of claim 1, wherein the one access point of the plurality of access points acts as a controller for the LAN and is operable to command a reset for the LAN.
9. The network configuration of claim 8 , wherein the one access point that functions as the controller has the lowest MAC of all access points in the plurality of access points.
10. 2. The network arrangement of claim 1, further comprising a central server acting as a controller for said LAN and operable to command a reset for said LAN.
11. 2. The network configuration of claim 1, wherein the one access point is operable to address one or more of the plurality of access points and select from the one or more access points having cached content available as a source of desired content for a client coupled to the one access point that has requested the content.
12. 1. A method for use in a network configuration in which communications occur between a plurality of access points that are part of one or more networks, comprising: wherein the plurality of access points form a local area network (LAN) that transfers data between two or more of the plurality of access points using point-to-point links independent of their function in the one or more first networks by the access points individually addressing each other; generating, by an access point, a mapping indicating, for each access point, a first set of one or more access points of the plurality of access points to which the access point will repeat a message, and, for each access point of the first set, a first list of one or more access points of the plurality of access points from which the message is to be forwarded, as appropriate, upon receipt, wherein two access points in the plurality of access points that are directly connected to a third access point do not repeat the same message to the third access point; identifying, by the one access point, one or more of the plurality of access points that have the desired content cached; requesting, by the one access point, at least one of the one or more access points to transfer desired content to the one access point via one or more direct point-to-point transfers between access pairs of the plurality of access points; Including, The step of generating the mapping comprises: When joining the LAN by one of the plurality of access points, sending a connection data request to each of the access points to which it is directly connected; receiving, by the one access point, connection data from each of the access points responding to the connection data request, the connection data including an identifier, a second list of all access points to which the responding access point is connected, and a list of access points to which the responding access point will repeat messages; determining whether any directly connected access point is not directly connected to any other directly connected access point by repeating the message; if the one access point determines from the connection data that the directly connected access point is not connected to any other of the directly connected access points, either directly or by another access point repeating the message, sending a request to the one access point to add the one access point to the first list of the one or more access points of the plurality of access points from which the message is forwarded when received; A method comprising:
13. 13. The method of claim 12, wherein each access point of the plurality of access points is directly connected to a second set of one or more access points of the access points and has information indicating which access points of the second set of one or more access points are connected by point-to-point links.
14. 13. The method of claim 12, wherein the mapping for each access point indicating to which access points the access point repeats messages is initialized when the access point joins the LAN.
15. determining whether any of the non-directly connected access points are connected to any other directly connected access points; if the one access point determines from the connection data that a non-directly connected access point is connected to any other directly connected access point, sending a request to the connected access point to forward a message to the non-directly connected access point; The method of claim 12 further comprising:
16. one or more non-transitory computer-readable storage media having instructions stored thereon, the instructions, when executed by a system having at least a processor and a memory, cause the system to perform a method for use in a network configuration in which communications occur between a plurality of access points that are part of one or more networks; the plurality of access points form a local area network (LAN) that transfers data between two or more of the plurality of access points using point-to-point links independent of their function in the one or more first networks by the access points individually addressing each other; The method comprises: generating, by an access point, a mapping indicating, for each access point, a first set of one or more access points of the plurality of access points to which the access point will repeat a message, and, for each access point of the first set, a first list of one or more access points of the plurality of access points from which the message is to be forwarded, as appropriate, upon receipt, wherein two access points in the plurality of access points that are directly connected to a third access point do not repeat the same message to the third access point; identifying, by the one access point, one or more of the plurality of access points that have the desired content cached; requesting, by the one access point, at least one of the one or more access points to transfer desired content to the one access point via one or more direct point-to-point transfers between access pairs of the plurality of access points; Including, The step of generating the mapping comprises: When joining the LAN by one of the plurality of access points, sending a connection data request to each of the access points to which it is directly connected; receiving, by the one access point, connection data from each of the access points responding to the connection data request, the connection data including an identifier, a second list of all access points to which the responding access point is connected, and a list of access points to which the responding access point will repeat messages; determining whether any directly connected access point is not directly connected to any other directly connected access point by repeating the message; if the one access point determines from the connection data that the directly connected access point is not connected to any other of the directly connected access points, either directly or by another access point repeating the message, sending a request to the one access point to add the one access point to the first list of the one or more access points of the plurality of access points from which the message is forwarded when received; Including, A non-transitory computer-readable storage medium comprising:
17. A device for use in a network configuration, comprising: The network configuration: a plurality of access points that are part of one or more networks, the plurality of access points operable to be individually addressed and to communicate with each other to form a local area network (LAN) for transferring data between two or more of the plurality of access points using point-to-point links independent of their function in the one or more networks; the device comprising: a first communication interface for connecting to the one or more networks; a second wireless communication interface that connects to one or more of the plurality of access points that are part of the one or more networks via individual addressing and transfers data using a point-to-point link; a cache for storing content; connection logic, coupled to the first and second communication interfaces and to the cache, for setting up wireless connections to one or more access points using the second wireless communication interface to transfer desired content cached by a respective access point of the plurality of access points; Equipped with the wireless connection is used to request transfer of the desired content from at least one of the one or more access points of the plurality of access points via one or more direct point-to-point transfers with the one or more access points in the plurality of access points; A device characterized in that
18. the connection logic is operable to set up the wireless connection itself in response to input from a network controller that is part of the LAN; 18. The device of claim 17.
Citation Information
Patent Citations
Radio terminal and radio communication system
JP2008154016A
Information processing system, information processing device, information processing method and information processing program
JP2018077588A
US10,104,046
Content delivery to physically-proximate devices using a mesh-assisted cache
US20160134691A1
Isolating lead body for fault detection
US8751000B2