IPV6 connectivity test and DNS improvements

Disclosed herein are system, apparatus, article of manufacture, method and/or computer program product embodiments, and/or combinations and sub-combinations thereof, for optimizing network connections of media devices using IPv6 and DNS tests to detect network issues related to IPv6 addressing and improper DNS server assignments. Upon detection of such network issues, network connections may preemptively adjust IPv6 and DNS configuration parameters to optimize connections for the media devices.

BACKGROUND

Field

This disclosure is generally directed to improving connectivity between devices where the connections between the devices involve at least one of IPv6 addresses and DNS servers.

Background

Adoption of Internet Protocol version 6 or IPv6 has steadily increased since its introduction in 2012. Every device connected to the Internet requires an IP address to be identified and connected to other devices. An older version of the IP protocol, IPv4, utilizes 32-bit addresses and has a limitation of 232unique addresses. In contrast, IPv6 utilizes 128-bit addresses and has a limitation of 2128unique addresses. Because support for IPv6 addressing is not consistent across internet service providers, network devices typically support both IPv6 and IPv4 addresses. But network devices can face challenges when implementing both addressing schemes such as how to determine when to use IPv6 or IPv4 addresses when establishing connections, and how to handle interoperability issues with various internet service providers, some of which may support IPv6 and some of which may not.

Current network devices that support both IPv6 and IPv4 addresses lack the capability to preemptively detect potential connectivity issues with deploying IPv6 addresses when connecting to networks that may or may not support IPv6. This deficiency results in poor network streaming experiences while the user waits for the network devices attempt to resolve connectivity issues. Therefore, what is needed is an improved network address allocation scheme for utilizing IPv6 and IPv4 addresses in network devices.

SUMMARY

Provided herein are system, apparatus, article of manufacture, method and/or computer program product embodiments, and/or combinations and sub-combinations thereof, for preemptively performing internet connectivity tests including an IPv6 address check and DNS resolver test to ensure reliable establishment of network connections for streaming content at a media device. The operations of displaying splash screens (static or dynamic) while compiling or otherwise initiating the compilation of code for the application to be launched may be considered part of a launch sequence for that application. The launch sequence may be initiated at the media device and may occur prior to the application being loaded and having control over the media device.

An example embodiment operates by initiating an IPv6 address test on a media device comprising an IPv6 network stack and an IPv4 network stack. The IPv6 address test may be triggered when the media device detects an action involving an IPv6 address being performed on a network interface of the media device. For example, the action may include assigning a new IPv6 address to the network interface. In performing the IPv6 address test, the media device initiates a network interface monitor that identifies a set of IPv6 addresses assigned to the network interface. As part of the IPv6 address test, the network interface monitor may perform an IPv6 address resolution test by attempting to resolve a predetermined website stored in a memory of the media device for each IPv6 address in the set of IPv6 addresses. For each IPv6 address, the network interface monitor may receive a result of the IPv6 address resolution test indicating either a successful result (e.g., the network interface monitor was able to resolve the predetermined website using the IPv6 address) or a failed result (e.g., the network interface monitor was not able to resolve the predetermined website).

The network interface monitor may then perform certain actions based on the result of the IPv6 address resolution test for each IPv6 address. For example, if there is a failed result, the network interface monitor may disable the IPv6 network stack of the network interface. The media device may then stream data using the network interface over the IPv4 network stack while the IPv6 network stack is disabled. As another example, if there is a successful result, the network interface monitor may perform a connectivity test to the predetermined website (e.g., attempt to access a web page at the predetermined website). The media device may then stream data using the network interface over either the IPv6 network stack or the IPv4 network stack based on the result of the connectivity test.

Another example embodiment operates by initiating a DNS resolver test on a media device. The DNS resolver test preemptively tests DNS server addresses based on certain trigger conditions such as changes to IPv4 addresses, changes to DNS server addresses, and changes to IPv6 addresses. The DNS resolver test may determine, based on a configurable predetermined time period for responses, whether DNS server addresses are reliable and can be used for subsequent communications for the media device.

While described in the context of media devices, this disclosure is not so limited. Instead, this disclosure is applicable to any system, apparatus, device, method, computer program product where it is desirable to optimize network communications involving IPv6 and DNS server configuration parameters.

In the drawings, reference numbers indicate identical or similar elements. Additionally the left-most digit(s) of a reference number identifies the drawing in which the reference number first appears.

DETAILED DESCRIPTION

Provided herein are system, apparatus, device, method and/or computer program product embodiments, and/or combinations and sub-combinations thereof, for the improved functioning of network devices, such as media devices, to utilize IPv6 network addresses. When deployed, network devices may connect to a network, such as but not limited to a home Wi-Fi network, and be provided with one or more IPv6 endpoint addresses and one or more IPv4 endpoint addresses from the internet service provider (ISP) servicing that home Wi-Fi network, as well as IPv6 DNS server addresses which may be stored in a private memory location of the media device. The network devices may be configured with an IPv6 network stack and an IPv4 network stack and therefore capable of utilizing both IPv6 and IPv4 addresses. The improved functioning includes preemptively performing network connectivity tests. One example of a network connectivity test is a DNS resolver test to test new DNS server addresses that are assigned to the media device and/or the DNS server addresses that are stored in the private memory location of the media device. Another example is to transmit data using the IPv6 network stack based on the IPv6 endpoint addresses that have been assigned to the network interface of the media device. Yet another example of a network connectivity test is the use of parallel DNS queries to DNS servers located within the private memory location of the media device. The media device may send the DNS queries at the same time. Responses from DNS servers indicate that the DNS servers are responsive and usable by media device.

The performance of the IPv6 connectivity tests may be triggered by specific actions performed on the network interface such as the assignment or removal of an IPv6 endpoint address from the network interface of the media device. Another network connectivity test may include testing DNS server addresses provisioned to a media device, such as via a DNS server test or via parallel DNS queries, and preemptively selecting and/or ranking DNS server addresses for use by the media device. In some embodiments, preemptively performing these tests means performing the tests prior to the media device submitting a request for streaming content over the network connection. Implementing these connectivity tests in a media device improves the functioning of the media device because the media device may more quickly establish IPv6 network connections which results in an improved streaming experience.

In some embodiments, the IPv6 address test may be comprised of multiple sub-tests that are performed sequentially or in parallel based on the results of a prior test. For example, the IPv6 test may include sub-tests for resolving a predetermined network address using IPv6 DNS server addresses stored in a private location of the media device, for downloading a webpage from the predetermined network address, for opening IPv6 streaming sockets of the network interface of the media device, and for attempting to connect to a second predetermined network address using the IPv6 network stack of the media device.

In some embodiments, these sub-tests may be performed in a sequential manner and be based on the results of the previous sub-test. For example, the media device may be programmed to initiate communications over the IPv6 network stack upon a successful result of any one of the sub-tests of the IPv6 address test and to initiate communications over the IPv4 network stack (e.g., by disabling the IPv6 network stack) upon a failed result of any or all of the sub-tests of the IPv6 address test.

In some embodiments, the DNS resolver test may test both IPv4 and IPv6 DNS server addresses and may be triggered based on certain conditions at the media device such as changes to IPv4 addresses, changes to DNS server addresses, and changes to an IPv6 addresses.

In some embodiments, the DNS resolver test may include initiating parallel DNS queries. In such embodiments, applications on the media device may use a background process to initiate queries to the DNS servers that are located in the private memory location of the memory device. As part of this process, the background process may poll a separate DNS server file that is located upstream in the network from the media device to retrieve additional DNS servers available to the media device. The media device may form the DNS query or queries based on the information stored in the private memory location and transmit the DNS query or queries to the background process. The background process will then check a cache, which stores prior DNS responses to prior DNS queries, to see if a prior DNS response has been received from any of the DNS servers identified in the received DNS queries. If no such DNS responses are in the cache, then the background process will send parallel queries to all DNS servers (identified by their server IP addresses) and cache any responses received to the parallel queries. In some embodiments, parallel DNS queries and caching functionality described herein is performed for all DNS queries initiated by the media device, and not just part of the DNS resolver test.

Various embodiments of this disclosure are particularly advantageous for media devices that are configured with both an IPv6 and IPv4 network stack because the media device may preemptively determine which network stack to use prior to streaming content. This determination may include preemptively testing network configuration parameters such as IPv6 endpoint addresses assigned to the media device and DNS server addresses (both IPv4 and IPv6 addresses), such as via parallel DNS queries. Accordingly, the media device may determine which network configurations to use when subsequently submitting requests to stream content. Embodiments of this disclosure provide improvements for more effectively establishing reliable connections for streaming content to media devices.

Various embodiments of this disclosure may be implemented using and/or may be part of a multimedia environment100shown inFIG.1, in some embodiments. It is noted, however, that multimedia environment100is provided solely for illustrative purposes and is not limiting. Embodiments of this disclosure may be implemented using and/or may be part of environments different from and/or in addition to the multimedia environment100, as will be appreciated by persons skilled in the relevant art(s) based on the teachings contained herein. An example of the multimedia environment100shall now be described.

Multimedia Environment

FIG.1illustrates a block diagram of a multimedia environment100, according to some embodiments. In a non-limiting example, multimedia environment100may be directed to streaming media across a network, such as from a server (e.g., content server120) to a media system (e.g., media system102). However, this disclosure is applicable to any type of media (instead of or in addition to streaming media), as well as any mechanism, means, protocol, method and/or process for distributing media.

The multimedia environment100may include one or more media systems102. A media system102could represent a family room, a kitchen, a backyard, a home theater, a school classroom, a library, a car, a boat, a bus, a plane, a movie theater, a stadium, an auditorium, a park, a bar, a restaurant, or any other location or space where it is desired to receive and play streaming content. User(s)132may operate with the media system102to select and consume content. For example, user(s)132may interact with remote control110via a graphical user interface on the remote control110, physical inputs on the remote control110, or microphone112, to select content for streaming.

Each media system102may include one or more media device(s)106each coupled to one or more display devices104. It is noted that terms such as “coupled,” “connected to,” “attached,” “linked,” “combined” and similar terms may refer to physical, electrical, magnetic, logical, etc., connections, unless otherwise specified herein.

Media device106may be a device that relays media content such as a streaming media device, a set-top box, DVD or BLU-RAY device, audio/video playback device, cable box, and/or digital video recording device, to name just a few examples. In some embodiments, media device106may be implemented with network interface, such as communication device118, having an IPv6 network stack and an IPv4 network stack; media device106may therefore be capable of relaying media content using IPv6 and IPv4 addresses. A dedicated media processor may be implemented as a processor that is optimized for streaming media content from one source and providing it for display via a graphical user interface on display device104. In some embodiments, a processor that is optimized for streaming media content may be a processor that is configured to perform a limited number of tasks associated only with streaming and presenting media content. As an example, a media processor may not be capable of processing tasks associated with a phone call. Accordingly, in some embodiments, media device106may be implemented as media device with a dedicated media processor that is limited to performing tasks associated with streaming media content.

Display device104may be a monitor, television (TV), computer, smart phone, tablet, wearable device (such as a watch or glasses), appliance, internet of things (IoT) device, and/or projector, to name just a few examples. In some embodiments, media device106can be a part of, integrated with, operatively coupled to, and/or connected to display device104.

Each media device106may be configured to communicate with network130via the IPv6 network stack or IPv4 network stack of communication device118. The communication device118may include network interfaces such as, for example, a cable modem or satellite TV transceiver. The media device106may communicate with the communication device118over a link108, wherein the link108may include wireless (such as Wi-Fi) and/or wired connections.

Media system102may include a remote control110. The remote control110can be any component, part, apparatus and/or method for controlling the media device106and/or display device104, such as a remote control, a tablet, laptop computer, smartphone, wearable, on-screen controls, integrated control buttons, audio controls, or any combination thereof, to name just a few examples. In an embodiment, the remote control110wirelessly communicates with the media device106and/or display device104using cellular, Bluetooth, infrared, etc., or any combination thereof. The remote control110may include a microphone112, which is further described below. The remote control110may further include a display114for displaying a graphical user interface that enables user selection of content to be provided by media device(s)106. In an embodiment, the graphical user interface is provided by a remote control application116installed in remote control110. Display114may be of various size depending on the remote control110.

The remote control application116may be installed on remote control110and may be configured to display a user interface for accessing content via media device(s)106. The user interface may provide any means for allowing user(s)132to view, select, and otherwise identify content to be streamed by media device(s)106. The user interface may include a predefined dimension (e.g., to fit the size of display114) and predefined configuration that implements particular user interface elements at specific positions in the user interface. For example, the predefined configuration may implement a particular layout for a direction pad, volume controls, and other user interface elements for interacting with media content. The application may further include means for implementing an interface customization parameter that modifies the predefined dimension and/or the predefined configuration by, for example, either reducing the dimension to a smaller size or modifying the layout so that different user interface elements are displayed at different positions of the user interface.

In an embodiment, the remote control application116may also include means for monitoring local usage information by user(s)132. For example, the remote control application116may track how often certain user interface elements are utilized and may store this history in memory. These user interface elements include a direction pad and buttons for controlling the media content. In an embodiment, the usage information may be implemented as a ranked list identifying how often certain interface elements are used by user(s)132. For example, the usage information may indicate that user(s)132utilizes the volume buttons—volume up, volume down, mute—more than other interface elements. The application may transmit the usage information to crowdsource server(s)142.

Buttons may allow users to control playback of media content and provide access to other tools such as user settings, network settings. Another example a user interface element is a slider which may provide more granular control over playback (e.g., rewind or fast forward) or settings (e.g., adjusting volume, brightness, etc.)

The multimedia environment100may include a plurality of content servers120(also called content providers or sources). Although only one content server120is shown inFIG.1, in practice the multimedia environment100may include any number of content servers120. Each content server120may be configured to communicate with network130.

In some embodiments, metadata124comprises data about content122. For example, metadata124may include associated or ancillary information indicating or related to writer, director, producer, composer, artist, actor, summary, chapters, production, history, year, trailers, alternate versions, related content, applications, and/or any other information pertaining or relating to the content122. Metadata124may also or alternatively include links to any such information pertaining or relating to the content122. Metadata124may also or alternatively include one or more indexes of content122, such as but not limited to a trick mode index.

The multimedia environment100may include one or more system servers140. The system servers140may operate to support the media device(s)106from the cloud. It is noted that the structural and functional aspects of the system servers140may wholly or partially exist in the same or different ones of the system servers140.

The media device(s)106may exist in thousands or millions of media systems102. Accordingly, the media device(s)106may lend themselves to crowdsourcing embodiments and, thus, the system servers140may include one or more crowdsource servers142. Media device(s)106may be implemented as one or more different types of devices, such as a streaming stick, a set-top box, and a media streaming device integrated into another media device such as a television or a sound bar.

For example, using information received from the media device(s)106in the thousands and millions of media systems102, the crowdsource server(s)142may identify similarities and overlaps between closed captioning requests issued by different users132watching a particular movie. Based on such information, the crowdsource server(s)142may determine that turning closed captioning on may enhance users' viewing experience at particular portions of the movie (for example, when the soundtrack of the movie is difficult to hear), and turning closed captioning off may enhance users' viewing experience at other portions of the movie (for example, when displaying closed captioning obstructs critical visual aspects of the movie). Accordingly, the crowdsource server(s)142may operate to cause closed captioning to be automatically turned on and/or off during future streaming of the movie.

Crowdsource server(s)142may further store user interface usage information such as how user(s)132interact with the user interface provided through their respective remote control110including the usage information described above. Crowdsource server(s)142may generate crowdsource user interface information that may identify usage history of the user interface for all remote controls that are connected to crowdsource server(s)142. The crowdsource user interface information may be implemented as a ranked list identifying user interface elements that are most used by a plurality of users across multiple multimedia environments.

Crowdsource server(s)142may further store network connection information such as results of IPv6 connectivity and DNS resolver tests performed by media device(s)106. In some embodiments, media device(s)106may be configured to transmit the results of one or more tests to crowdsource server(s) which may then aggregate and organize the network connection information based on parameters associated with the results, such as the type of media device(s)106, the type of network connection (e.g., IPv6, IPv4), and applications installed on the media device including network usage of each of the applications. Crowdsource server(s)142may provide this aggregated and organized network connection information to system server(s)140which may generate system updates for media device(s)106to improve network performance. For example, the system updates may be generated based on determining that certain types of media device(s)106(e.g., a streaming stick) are having more failed results attempting to connect using IPv6 addresses and the system update may be pushed to those media devices in order to improve the network performance of those media devices. System updates may update network configuration parameters at each media device(s)106such as predetermined time periods to wait for responses from the DNS servers of a DNS resolver test.

FIG.2illustrates a block diagram of an example media device106, according to some embodiments. Media device106may include a streaming module202, processing module204, storage208, and user interface module206.

In streaming embodiments, the streaming module202may transmit the content to the display device106in real time or near real time as it receives such content from the content server(s)120. In non-streaming embodiments, the media device106may store the content received from content server(s)120in storage208for later playback on display device106.

The media device106may also include one or more audio decoders212and one or more video decoders214. Each audio decoder may be configured to decode audio of one or more audio formats, such as but not limited to AAC, HE-AAC, AC3 (Dolby Digital), EAC3 (Dolby Digital Plus), WMA, WAV, PCM, MP3, OGG GSM, FLAC, AU, AIFF, and/or VOX, to name just some examples.

In some embodiments, video decoder214may be implemented as one or more of a hardware decoder and a software decoder. Hardware decoder may be implemented as a dedicated hardware component, such as a graphics processing unit. Software decoder may be a combination of software that controls processing module204to perform video decoding. In some embodiments, processing module204may offload certain operations of the launch sequence to the video decoder214as needed. For example, processing module204may direct video decoder214to process and display the dynamic splash screen while processing module204compiles start-up code for launching the application. In some embodiments, processing module204and video decoder214may operate in parallel.

Media device106may further include network interface monitor216and network interface218, which may comprise an IPv4 network stack220and an IPv6 network stack222. Network interface218may communicate using assigned IPv6 address information over the IPv6 network stack222and assigned IPv4 address information over the IPv4 network stack220.

Network interface monitor216may be implemented to monitor network address changes to network interface218, such as assignment of any new IPv4 or IPv6 endpoint addresses and removal of any assigned IPv4 or IPv6 endpoint addresses. Network interface monitor216may be configured to trigger connectivity tests based on any detected IPv6 endpoint address changes to network interface218. Network interface monitor216may be further configured to manage DNS address repository210, as discussed further below.

Now referring to bothFIGS.1and2, in some embodiments, the user132may interact with the media device106via, for example, the remote control110. For example, the user132may use the remote control110to interact with the user interface module206of the media device106to select content, such as a movie, TV show, music, book, application, game, etc. The streaming module202of the media device106may request the selected content from the content server(s)120over the network130. The content server(s)120may transmit the requested content to the streaming module202. The media device106may transmit the received content to the display device106for playback to the user132. The media device106may store content received from content server120in storage208.

Storage208may further include a DNS address repository210. In some embodiments, DNS address repository210may be configured to be accessible only by specific components of media device106such as network interface monitor216and may be configured to prevent unauthorized components from accessing any data within DNS address repository210. DNS address repository210may further be configured to store IPv6 DNS server addresses. Network interface monitor216may be further authorized to manage the IPv6 DNS addresses within the DNS address repository210based on the results of a DNS resolver test on the DNS addresses. Examples of management of DNS addresses in the DNS address repository210include prioritizing DNS addresses, removing DNS addresses, and maintaining DNS addresses. In some embodiments, media device106may authorize only certain components to access the DNS address repository210.

Embodiments of Performing IPv6 Connectivity Tests Including IPv6 Address Check and DNS Resolver Test

FIG.3illustrates a flowchart for an IPv6 connectivity test300illustrating performing an IPv6 DNS resolution test and an IPv6 website test at a media device, according to some embodiments. As a non-limiting example with regards toFIGS.1-2, one or more processes described with respect toFIG.3may be performed by a media device (e.g., media device106ofFIG.1) or a display device (e.g., display device104ofFIG.1). In such an embodiment, any of these components may execute code in memory to perform certain steps of IPv6 connectivity test300ofFIG.3. While IPv6 connectivity test ofFIG.3will be discussed below as being performed by media device106, other devices may store the code and therefore may execute IPv6 connectivity test300by directly executing the code. Accordingly, the following discussion of IPv6 connectivity test300will refer to devices ofFIG.2as an exemplary non-limiting embodiment of IPv6 connectivity test300. Moreover, it is to be appreciated that not all steps may be needed to perform the disclosure provided herein. Further, some of the steps may be performed simultaneously or in a different order than shown inFIG.3, as will be understood by a person of ordinary skill in the art.

In302, media device106initiates a network interface monitor, such as network interface monitor216. The network interface monitor may be configured to monitor any IPv6 endpoint address changes. In some embodiments, media device106may initiate the network interface monitor when the media device106obtains an IPv4 endpoint address.

In304, the network interface monitor may detect an action involving an IPv6 address taking place at the network interface of media device106. The network interface monitor may initiate an IPv6 address test based on the detected action.

Steps306-324may represent steps or sub-tests of the IPv6 connectivity test that are performed on each IPv6 address that is assigned to the network interface of the media device106and on each IPv6 DNS server addresses that are stored the private memory location of the media device106. The network interface comprises an IPv6 stack for communicating using IPv6 network addresses and an IPv4 stack for communicating using IPv4 network addresses. In some embodiments, steps306-324may be triggered based on the action involving the IPv6 address. Examples of the action include assigning the IPv6 address to the network interface of the media device106, removing the IPv6 address from the network interface, or updating an existing IPv6 address already assigned to the network interface. Upon detecting the action, network interface monitor may initiate the IPv6 address test for each IPv6 address of media device106starting with step306. If any sub-test of the IPv6 address test fails, then network interface monitor may disable the IPv6 stack and cause media device106to communicate using the IPv4 stack.

In some embodiments, the sub-tests may be triggered preemptively such as prior to receiving a request to stream content. Accordingly, the sub-tests increase the likelihood of establishing reliable IPv6 connections when the media device106subsequently receives requests to stream content.

In306, network interface monitor may perform an IPv6 DNS resolution test on each IPv6 DNS server address that is stored in the private memory location of the media device106. In some embodiments, the IPv6 DNS resolution test may include identifying, by the network interface monitor, the set of IPv6 DNS server addresses and a predetermined website stored at media device106, such as in storage/buffers208. The network interface monitor may then attempt to resolve a predetermined website using each IPv6 DNS server address in the set of IPv6 DNS server addresses.

In308, network interface monitor may determine the results of the IPv6 DNS resolution test that is performed for each IPv6 DNS server address. The results may indicate a successful result or a failed result of the resolution test. For example, a successful result may indicate that the media device was able to successful resolve the predetermined website using the IPv6 DNS server address; a failed result may indicate that the media device106was not able to perform the resolution with the IPv6 DNS server address. In some embodiments, there may be multiple DNS server addresses stored in the private memory location and not every IPv6 DNS server address may provide a successful result to the resolution test. The network interface monitor may collect the results from each IPv6 DNS resolution test.

In310, if the IPv6 DNS resolution test is unsuccessful for every IPv6 DNS server address, then network interface monitor may disable the IPv6 network stack of the network interface of media device106and prevent the media device106from communicating using IPv6. Accordingly, disabling the IPv6 network stack causes media device106to communicate data, such as streaming content, over the IPv4 network stack.

In312, if the IPv6 DNS resolution test is successful for at least one IPv6 address, then network interface monitor may continue with an IPv6 website test using the IPv6 network stack of the media device106. In some embodiments, the IPv6 website test may include attempting to download a webpage from the predetermined website using the IPv6 network stack. In some embodiments, network interface monitor may set an internal flag to force all communications from the media device106to be transmitted only using the IPv6 network stack, including attempts to download a webpage from the predetermined website. In some embodiments, IPv6 DNS resolution test is performed for every IPv6 address that is assigned to media device106.

In314, the network interface monitor may determine the result of the IPv6 website test. The result may indicate a successful result or a failed result of the IP website test. For example, a successful result may indicate that the media device106was able to successfully download a webpage from the predetermined website over the IPv6 network stack, which may indicate, for example, that the media device106was able to successfully use an assigned IPv6 endpoint address to communicate with the predetermined website. A failed result may indicate that the media device106was not able to perform the download over the IPv6 network stack.

In316, if the IPv6 website test is successful, then the network interface monitor may determine that the IPv6 connectivity test is successful, e.g., that the network interface is properly configured with IPv6 parameters (e.g., IPv6 endpoint addresses and IPv6 DNS server addresses). The media device106may then communicate over the IPv6 network stack.

In318, if the IPv6 website test is not successful, then the IPv6 connectivity test moves to performing the next sub-test, the IPv6 socket test. In some embodiments, the IPv6 socket test comprises opening at least one IPv6 streaming socket of the media device and attempting to communicate data using the at least one IPv6 streaming socket of the media device.

In320, the network internet monitor may determine the result of the IPv6 socket test. The result may indicate a successful result or a failed result of the IPv6 socket test. For example, a successful result may indicate that at least one IPv6 socket was successfully opened and received and/or transmitted data from that opened socket. If the IPv6 socket test returns a successful result, then the network interface monitor may determine that the IPv6 connectivity test is successful and that the media device106may communicate over the IPv6 network stack. A failed result may indicate that the IPv6 no IPv6 sockets were successfully opened.

In322, if the IPv6 socket test is not successful, then the IPv6 connectivity test moves to performing the next sub-test, a second IPv6 website test using the IPv6 stack. In some embodiments, the second IPv6 website test may include attempting to connect to a second predetermined website using the IPv6 network stack. The second predetermined website may be stored in a memory of the media device106, such as storage/buffers208. In some embodiments, media device106may include a remote configuration service to allow the second predetermined website to be remotely updated. For example, a remote server may utilize the remote configuration service to access the memory of the media device106to change the second predetermined website.

In324, the network interface monitor may determine the result of the second IPv6 website test. The result may indicate a successful result or a failed result of the second IP website test. For example, similar to the first IPv6 website test, a successful result may indicate that the media device106was able to successfully connect to the second predetermined website over the IPv6 network stack. A failed result may indicate that the media device106was not able to connect to the second website.

If the second IPv6 website test is successful, then the network interface monitor may determine that the IPv6 connectivity test is successful and that the network interface of the media device106may communicate properly over the IPv6 network stack at316. If the second IPv6 website test is not successful, then the network interface monitor may determine that the network interface cannot communicate properly using IPv6 and disables the IPv6 network stack. All subsequent network communications may then be transmitted over the IPv4 network stack.

In some embodiments, not all sub-tests of the IPv6 connectivity test need to be performed or in the specific order described with respect toFIG.3.

FIG.4is a diagram of a DNS resolver test400illustrating a time sequence functions performed different components a media device, according to some embodiments. As a non-limiting example aboutFIGS.1-2, one or more functions described with respect toFIG.4may be performed by a media device (e.g., media device106ofFIG.1) or a display device (e.g., display device104ofFIG.1). In such an embodiment, any of these components may execute code in memory to perform certain steps of DNS resolver test400ofFIG.4. While DNS resolver test400ofFIG.4will be discussed below as being performed by certain components of media system102, other components may store the code and therefore may execute DNS resolver test400by directly executing the code. Accordingly, the following discussion of DNS resolver test400will refer to devices ofFIG.2as an exemplary non-limiting embodiment. Moreover, it is to be appreciated that not all steps may be needed to perform the disclosure provided herein. Further, some of the functions may be performed simultaneously, in a different order, or by the same components than shown inFIG.4, as will be understood by a person of ordinary skill in the art.

In402A-C, a network manager component of media device106may detect a trigger condition for initiating the DNS resolver test. In some embodiments, the DNS resolver test evaluates each IPv4 and IPv6 DNS addresses stored in the DNS address repository210of media device106. As noted above, DNS address repository210may be configured to be managed only by authorized components of media device106. An example of an authorized component may include a DNS configuration module, which can be authorized to manage the DNS addresses in the DNS address repository210. In some embodiments, media device106may prevent any other component from being authorized to access the DNS address repository in order maintain the sanctity of the repository. Either one of the trigger conditions may trigger a command to be sent to initiate the DNS resolver test for testing the DNS addresses.

In402A, the network manager may detect a change to an IPv4 address assigned to the network interface218of media device106. Examples of a change include assignment of a new IPv4 address, removal of a previously assigned IPv4 address, and updating of an existing IPv4 address assigned to the network interface218.

In402B, the network manager may detect a change to a DNS address of a DNS address stored in DNS address repository210. Examples of a change to a DNS address include assignment of a new DNS (IPv4 or IPv6) server address, removal of a previously stored DNS server address, or update of the DNS server address.

In402C, the network manager may detect a change to an IPv6 address signed to the network interface218of media device106. Examples of a change include assignment of a new IPv6 address, removal of a previously assigned IPv6 address, and updating of an existing IPv6 address assigned to the network interface218.

In404A, either detection of an IPv4 address change (step402A) or a DNS address change (step402B) triggers the network manager to transmit commands to the DNS configuration module. One command may be an update address command, which causes the DNS configuration module to update the IPv4 and IPv6 addresses at the media device106. Another command may be a DNS resolver command to initiate a DNS resolver test to test the DNS addresses currently stored in DNS address repository210.

In404B, detection of the IPv6 address change (step402C) triggers the network manager to transmit only the DNS resolver command to initiate the DNS resolver test. The detection of the IPv6 address change operates differently from the IPv4 address change because, in the case of the IPv4 address change, the DHCP packet itself brings the DNS server address to the media device.

In406, the DNS configuration module will build the DNS server list based on the DNS server address provided in the DHCP packet of the IPv4 address change or the new DNS server address. For example, when an IPv4 address is changed, the DNS configuration module will update the DNS server list based on DNS server address included in the DHCP packet that included any changes to the IPv4 address, such as assignment of the IPv4 address to the media device106. In some embodiments, the DNS server list is a temporary file that is separate from the DNS address repository210. The DNS server list may include all DNS server addresses to be tested and any DNS servers that pass that the resolver test (step408) may be added to the DNS address repository210.

In some embodiments, the DNS configuration module may populate the DNS server list only with the new DNS server addresses provided as part of the IPv4 address change or the DNS server address change. In some embodiments, the DNS configuration module may populate the DNS server list with the new DNS server addresses in addition to the DNS server addresses stored in the DNS server repository. In the former embodiment, the DNS resolver test (step408) may be performed on the new DNS server addresses only. In the latter embodiment, the DNS resolver test may be performed on the new DNS server addresses while also retesting previously stored DNS server addresses to check that they are still functioning properly.

In408, the DNS configuration module initiates the DNS resolver test for each DNS server address in the DNS server list. The DNS configuration module may receive the results of the DNS resolver test and determine, for each tested DNS server address, a failed or successful result. In some embodiments, a successful result of the DNS resolver test is receiving a response from the identified DNS server within a predetermined time period, such as 2 seconds. The DNS configuration module may configure this predetermined time period based on commands received from a remote device, such as system server140. For example, system server140may adjust the predetermined time period based on crowdsource information received from one or more other media device(s) that are in communication with system server140. In some embodiments, system server140may push an update to the one or more media devices106that modifies one or more configuration parameters including the predetermined time period for the DNS configuration module to wait for a response from the DNS server in the DNS resolver test.

In some embodiments, the DNS configuration module may perform the DNS resolver test in parallel for each DNS server address in the DNS server list. For example, if there are five DNS server addresses in the server list, DNS configuration module attempts to resolve a domain name in parallel with each address.

In such embodiments, parallel DNS queries may be initiated by a background process in media device106. The background process may be configured to the DNS resolver test may include initiating parallel DNS queries. The background process may coordinate with applications installed on the media device to initiate queries to the DNS servers that may be available to media device106. The applications may retrieve DNS addresses from the private local memory of media device106and generate DNS queries based on the retrieved DNS addresses. Separately, the background process may also poll a separate DNS server file that is located upstream in the network from the media device to retrieve DNS servers. When the background process receives the DNS queries from the applications, the background process may then check a cache, also on media device106and which stores prior DNS responses to prior DNS queries, to see if a prior DNS response has been received from any of the DNS servers identified in the received DNS queries. If no such DNS responses are in the cache, then the background process will send parallel queries to all DNS servers (identified by their server IP addresses), and subsequently cache any responses received to the parallel queries

In some embodiments, the DNS configuration module may distinguish between IPv6 DNS server addresses and IPv4 DNS server addresses when performing the DNS resolver test. For example, if the DNS configuration module detects a change to an IPv4 address at the network interface218of the media device106, then DNS configuration module may only initiate the DNS resolver test for IPv4 DNS server addresses (and exclude the IPv6 DNS server addresses). Similarly, if the DNS configuration module detects a change to an IPv6 address, then the DNS configuration module may only initiate the DNS resolver test for IPv6 DNS server addresses.

In410, the DNS configuration module updates the DNS address repository210based on the results of the resolver test for each DNS server address. In some embodiments, a failed DNS resolver test for a DNS server addresses causes the DNS configuration module to remove the DNS server address from the DNS address repository210; for a successful DNS resolver test, the DNS configuration module maintains the DNS server address in the DNS address repository.

Example Computer System

Various embodiments may be implemented, for example, using one or more well-known computer systems, such as computer system500shown inFIG.5. For example, the media device106may be implemented using combinations or sub-combinations of computer system500. Also or alternatively, one or more computer systems500may be used, for example, to implement any of the embodiments discussed herein, as well as combinations and sub-combinations thereof.

Computer system500may include one or more processors (also called central processing units, or CPUs), such as a processor504. Processor504may be connected to a communication infrastructure or bus506.

Computer system500may also include user input/output device(s)503, such as monitors, keyboards, pointing devices, etc., which may communicate with communication infrastructure506through user input/output interface(s)502.

Computer system500may also include a main or primary memory508, such as random access memory (RAM). Main memory508may include one or more levels of cache. Main memory508may have stored therein control logic (i.e., computer software) and/or data.

Computer system500may also include one or more secondary storage devices or memory510. Secondary memory510may include, for example, a hard disk drive512and/or a removable storage device or drive514. Removable storage drive514may be a floppy disk drive, a magnetic tape drive, a compact disk drive, an optical storage device, tape backup device, and/or any other storage device/drive.

Removable storage drive514may interact with a removable storage unit518. Removable storage unit518may include a computer usable or readable storage device having stored thereon computer software (control logic) and/or data. Removable storage unit518may be a floppy disk, magnetic tape, compact disk, DVD, optical storage disk, and/any other computer data storage device. Removable storage drive514may read from and/or write to removable storage unit518.

Computer system500may further include a communication or network interface524. Communication interface524may enable computer system500to communicate and interact with any combination of external devices, external networks, external entities, etc. (individually and collectively referenced by reference number528). For example, communication interface524may allow computer system500to communicate with external or remote devices528over communications path526, which may be wired and/or wireless (or a combination thereof), and which may include any combination of LANs, WANs, the Internet, etc. Control logic and/or data may be transmitted to and from computer system500via communication path526.

In some embodiments, a tangible, non-transitory apparatus or article of manufacture comprising a tangible, non-transitory computer useable or readable medium having control logic (software) stored thereon may also be referred to herein as a computer program product or program storage device. This includes, but is not limited to, computer system500, main memory508, secondary memory510, and removable storage units518and522, as well as tangible articles of manufacture embodying any combination of the foregoing. Such control logic, when executed by one or more data processing devices (such as computer system500or processor(s)504), may cause such data processing devices to operate as described herein.

CONCLUSION