Optimization of IPV6 to DNS connections

By pre-executing IPv6 address checking and DNS resolver testing in media devices, the connection problem of network devices when connecting to or without IPv6 networks is solved, enabling faster and more reliable network connections and improved streaming experiences.

CN119817080APending Publication Date: 2025-04-11ROKU INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380063955.9
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-09-08
Filing Date
2023-09-07
Publication Date
2025-04-11

AI Technical Summary

Technical Problem

Existing network devices lack the ability to pre-detect potential connectivity issues with deploying IPv6 addresses when connected to a network that may or does not support IPv6, resulting in poor network flow experience.

Method used

Ensure reliable establishment of network connections by pre-executing IPv6 address checking and DNS resolver testing in media devices. The specific method includes initiating an IPv6 address test on a media device including an IPv6 network stack and an IPv4 network stack, and deciding whether to disable the IPv6 network stack based on the test results, and testing the reliability of the DNS server address in advance through a DNS resolver.

Benefits of technology

This enables faster establishment of IPv6 network connections in media devices, improves streaming experience, and improves network connection reliability.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119817080A_ABST
    Figure CN119817080A_ABST
Patent Text Reader

Abstract

Disclosed herein are system, apparatus, articles of manufacture, methods, and / or computer program product embodiments, and / or combinations and sub-combinations thereof, for using IPv6 and DNS testing to detect network issues associated with IPv6 addressing and incorrect DNS server allocation to optimize network connectivity of media devices. Upon detection of such network issues, the network connection may pre-adjust IPv6 and DNS configuration parameters to optimize connections for media devices.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art Technical Field

[0001] The present disclosure is generally directed to improving connectivity between devices, wherein contact between the devices involves at least one of an IPv6 address and a DNS server. Background Art

[0003] Since its introduction in 2012, the adoption of Internet Protocol version 6, or IPv6, has been steadily increasing. Every device connected to the internet requires an IP address to identify and connect to other devices. The older version of the IP protocol, IPv4, uses 32-bit addresses and has 2 32 unique addresses. In contrast, IPv6 uses 128-bit addresses and has 2 128 Due to inconsistent support for IPv6 addressing by Internet service providers, network devices generally support both IPv6 and IPv4 addresses. However, network devices may face challenges in implementing both addressing schemes, such as how to determine when to use IPv6 or IPv4 addresses when establishing a connection, and how to deal with interoperability issues with various Internet service providers, some of which may support IPv6 while others may not.

[0004] Current network devices that support both IPv6 and IPv4 addresses lack the ability to pre-detect potential connectivity issues with deploying IPv6 addresses when connected to a network that may or may not support IPv6. This deficiency results in a poor network streaming experience as the user waits for the network device to attempt to resolve the connectivity issue. Therefore, there is a need for an improved network address allocation scheme for utilizing both IPv6 and IPv4 addresses in network devices. Summary of the invention

[0005] Provided herein are system, apparatus, article, method and / or computer program product embodiments, and / or combinations and sub-combinations thereof, for pre-testing an Internet connection including an IPv6 address check and a DNS resolver test to ensure reliable establishment of a network connection for streaming content at a media device. The operation of displaying a startup screen (static or dynamic) when compiling or otherwise initiating the compilation of code for an application to be launched can be considered part of the application startup sequence. The startup sequence can be initiated at a media device and can occur before the application is loaded and the media device is controlled.

[0006] The exemplary embodiment operates by initiating an IPv6 address test to a media device including an IPv6 network stack and an IPv4 network stack. When the media device detects an action involving an IPv6 address being performed on a network interface of the media device, the IPv6 address test can be triggered. For example, the action can include assigning a new IPv6 address to the network interface. When performing the IPv6 address test, the media device starts a network interface monitor, which identifies the set of IPv6 addresses assigned to the network interface. As a part of the IPv6 address test, the network interface monitor can 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 can receive the result of the IPv6 address resolution test, which indicates a successful result (for example, the network interface monitor can resolve a predetermined website using the IPv6 address) or a failed result (for example, the network interface monitor cannot resolve a predetermined website).

[0007] The network interface monitor can then perform specific actions based on the results of the IPv6 address resolution test for each IPv6 address. For example, if there is a failure result, the network interface monitor can disable the IPv6 network stack of the network interface. Then, when the IPv6 network stack is disabled, the media device can use the network interface to stream data via the IPv4 network stack. As another example, if there is a success result, the network interface monitor can perform a connection test to a predetermined website (e.g., attempt to access a web page on a predetermined website). Then, the media device can use the network interface to stream data via one of the IPv6 network stack or the IPv4 network stack based on the result of the connection test.

[0008] Another example embodiment operates by initiating a DNS resolver test on the media device. The DNS resolver test pre-tests the DNS server address based on specific trigger conditions (e.g., a change in IPv4 address, a change in DNS server address, and a change in IPv6 address). The DNS resolver test can determine whether the DNS server address is reliable and can be used for subsequent communications with the media device based on a configurable predetermined time period for responding.

[0009] Although described in the context of a media device, the present disclosure is not limited thereto. Rather, the present disclosure is applicable to any system, apparatus, device, method, computer program product that wishes to optimize network communications involving IPv6 and DNS server configuration parameters. BRIEF DESCRIPTION OF THE DRAWINGS

[0010] The accompanying drawings are incorporated herein and constitute a part of this specification.

[0011] Figure 1 A block diagram of a multimedia environment is shown in accordance with some embodiments.

[0012] Figure 2 A block diagram of a media device is shown in accordance with some embodiments.

[0013] Figure 3 A flow chart is shown including steps for IPv6 connectivity testing according to some embodiments.

[0014] Figure 4 A flow chart is shown including steps for DNS resolver testing according to some embodiments.

[0015] Figure 5 A computer system is shown for implementing various embodiments.

[0016] In the accompanying drawings, reference numbers indicate the same or similar elements. In addition, the leftmost digit or digits of a reference number identify the drawing in which the reference number first appears. DETAILED DESCRIPTION

[0017] Provided herein are systems, devices, equipment, methods and / or computer program product embodiments, and / or combinations and sub-combinations thereof, for improved functionality of network devices (e.g., media devices) to utilize IPv6 network addresses. When deployed, the network device can be connected to a network, such as, but not limited to, a home Wi-Fi network, and can be provided with one or more IPv6 endpoint addresses and one or more IPv4 endpoint addresses from an Internet service provider (ISP) serving the home Wi-Fi network, and an IPv6 DNS server address that can be stored in a private memory location of the media device. The network device can be configured with an IPv6 network stack and an IPv4 network stack, and therefore can utilize both IPv6 and IPv4 addresses. The improved functionality includes pre-testing a network connection. An example of a network connection test is a DNS resolver test, which is used to test a new DNS server address assigned to a media device and / or a DNS server address stored in a private memory location of the media device. Another example is to use an IPv6 network stack to transmit data based on an IPv6 endpoint address assigned to a network interface of the media device. Yet another example of a network connection test is to use parallel DNS queries to a DNS server located in a private memory location of the media device. The media device may send DNS queries at the same time. A response from the DNS server indicates that the DNS server is responsive and can be used by the media device.

[0018] The performance of the IPv6 connection test can be triggered by a specific operation performed on the network interface, such as assigning or removing an IPv6 endpoint address from the network interface of the media device. Another network connection test may include testing the DNS server address provided to the media device, such as by a DNS server test or by parallel DNS queries, and pre-selecting the server address and / or ranking the DNS server address for use by the media device. In some embodiments, performing these tests in advance means testing before the media device submits a request for streaming content via a network connection. Implementing these connection tests in the media device improves the functionality of the media device because the media device can establish an IPv6 network connection faster, thereby improving the streaming experience.

[0019] In some embodiments, the IPv6 address test may include multiple subtests that are performed sequentially or in parallel based on the results of previous tests. For example, the IPv6 test may include a subtest for resolving a predetermined network address using an IPv6 DNS server address stored in a private location of the media device, a subtest for downloading a web page from the predetermined network address, a subtest for opening an IPv6 streaming socket of a network interface of the media device, and a subtest for attempting to connect to a second predetermined network address using the IPv6 network stack of the media device.

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

[0021] In some embodiments, the DNS resolver test may test both the IPv4 DNS server address and the IPv6 DNS server address and may be triggered based on certain conditions at the media device, such as a change in the IPv4 address, a change in the DNS server address, and a change in the IPv6 address.

[0022] In some embodiments, the DNS resolver test may include initiating parallel DNS queries. In such embodiments, an application on a media device may use a background process to initiate a query to a DNS server located in a private memory location of a storage device. As part of this process, a background process may poll a separate DNS server file located upstream of a media device in a network to retrieve other DNS servers available to the media device. The media device may form one or more DNS queries based on the information stored in the private memory location, and send one or more DNS queries to the background process. The background process may then check a cache that stores previous DNS responses to previous DNS queries to see if any DNS server identified in the received DNS query has received a previous DNS response. If there is no such DNS response in the cache, the background process may send parallel queries to all DNS servers (identified by their server IP addresses), and cache any responses to parallel queries received. In some embodiments, the parallel DNS query function and cache function described herein are performed for all DNS queries initiated by the media device, rather than just a part of the DNS resolver test.

[0023] Various embodiments of the present disclosure are particularly advantageous for media devices configured with both IPv6 and IPv4 network stacks, because the media device can predetermine which network stack to use before streaming content. This determination may include pretesting network configuration parameters, such as the IPv6 endpoint address and DNS server address (both IPv4 address and IPv6 address) network configuration parameters assigned to the media device, such as network configuration parameters through parallel DNS queries. Therefore, the media device can determine which network configurations to use when subsequently submitting a request for streaming content. Embodiments of the present disclosure provide improvements to more effectively establish a reliable connection to the media device for streaming content.

[0024] In some embodiments, various embodiments of the present disclosure may use Figure 1 The multimedia environment 100 shown may be implemented and / or may be Figure 1 100. However, it should be noted that multimedia environment 100 is for illustration purposes only and is not limiting. As one or more persons skilled in the relevant art will appreciate based on the teachings contained herein, embodiments of the present disclosure may be implemented using a portion of an environment other than and / or in addition to multimedia environment 100, and / or may be a portion of an environment other than and / or in addition to multimedia environment 100. An example of multimedia environment 100 will now be described.

[0025] Multimedia Environment

[0026] Figure 1 A block diagram of a multimedia environment 100 is shown in accordance with some embodiments. In a non-limiting example, the multimedia environment 100 can be directed to streaming media over a network, such as from a server (e.g., content server 120) to a media system (e.g., media system 102). However, the present disclosure is applicable to any type of media (instead of or in addition to streaming media), and any mechanism, means, protocol, method, and / or process for distributing media.

[0027] The multimedia environment 100 may include one or more media systems 102. The media system 102 may represent a family room, a kitchen, a backyard, a home theater, a school classroom, a library, a car, a boat, a bus, an airplane, a movie theater, a stadium, an auditorium, a park, a bar, a restaurant, or any other location or space where it is desirable to receive and play streaming content. One or more users 132 may operate the media system 102 to select and consume content. For example, the one or more users 132 may interact with the remote control 110 through a graphical user interface on the remote control 110, a physical input of the remote control 110, or a microphone 112 to select streaming content.

[0028] Each media system 102 may include one or more media devices 106, each of which is coupled to one or more display devices 104. It should be noted that unless otherwise specified herein, terms such as "coupled," "connected to," "attached," "linked," "combined," and similar terms may refer to physical, electrical, magnetic, logical, etc. connections.

[0029] Media device 106 can be a device for relaying media content, such as a streaming media device, a cable box, a DVD or a blue-ray device, an audio / video playback device, a cable box and / or a digital video recording device, just to name a few examples. In some embodiments, media device 106 can be implemented with a network interface with an IPv6 network stack and an IPv4 network stack, such as implemented with a communication device 118; Therefore, media device 106 can use an IPv6 address and an IPv4 address to relay media content. A dedicated media processor can be implemented as a processor that optimizes streaming media content from a source and provides the streaming media content for display through a graphical user interface on a display device 104. In some embodiments, the processor optimized for streaming media content can be a processor configured to perform only a limited number of tasks related to streaming media content and presenting media content. For example, a media processor cannot handle tasks related to a phone call. Therefore, in some embodiments, media device 106 can be implemented as a media device with a dedicated media processor, which is limited to performing tasks associated with streaming media content.

[0030] Display device 104 may be a monitor, television (TV), computer, smartphone, tablet, wearable device (such as a watch or glasses), appliance, Internet of Things (IoT) device, and / or projector, to name a few examples. In some embodiments, media device 106 may be part of, integrated with, operably coupled to, and / or connected to display device 104.

[0031] Each media device 106 can be configured to communicate with the network 130 via an IPv6 network stack or an IPv4 network stack of a communication device 118. The communication device 118 may include a network interface, such as a cable modem or a satellite television transceiver. The media device 106 can communicate with the communication device 118 via a link 108, which may include a wireless (e.g., Wi-Fi) and / or wired connection.

[0032] In various embodiments, network 130 may include, but is not limited to, wired and / or wireless intranets, extranets, the Internet, cellular, Bluetooth, infrared, and / or any other short-range, long-range, local, regional, global communication mechanisms, means, methods, protocols, and / or networks, and any one or more combinations thereof.

[0033] The media system 102 may include a remote control 110. The remote control 110 may be any component, part, device, and / or method for controlling the media device 106 and / or the display device 104, such as a remote control, a tablet computer, a laptop computer, a smart phone, a wearable device, a screen control, an integrated control button, an audio control, or any combination thereof, to name a few examples. In an embodiment, the remote control 110 may use cellular, Bluetooth, infrared, etc., or any combination thereof, to communicate wirelessly with the media device 106 and / or the display device 104. The remote control 110 may include a microphone 112, which is described in detail below. The remote control 110 may also include a display 114 for displaying a graphical user interface that enables a user to select content to be provided by one or more media devices 106. In an embodiment, the graphical user interface is provided by a remote control application 116 installed in the remote control 110. The display 114 may have various sizes depending on the remote control 110.

[0034] The remote control application 116 can be installed on the remote control 110 and can be configured to display a user interface for accessing content via one or more media devices 106. The user interface can provide any means for allowing one or more users 132 to view, select, and otherwise identify content to be streamed by one or more media devices 106. The user interface can include predefined sizes (e.g., to accommodate the size of the display 114) and predefined configurations that implement specific user interface elements at specific locations in the user interface. For example, the predefined configuration can implement a specific layout of directional keys, volume controls, and other user interface elements for interacting with media content. The application can also include a device for implementing interface customization parameters that modify the predefined size and / or predefined configuration by, for example, reducing the size to a smaller size or modifying the layout so that different user interface elements are displayed at different locations in the user interface.

[0035] In an embodiment, the remote control application 116 may also include means for monitoring local usage information of one or more users 132. For example, the remote control application 116 may track the frequency of use of a particular user interface element and may store the history in a memory. These user interface elements include directional keys and buttons for controlling media content. In an embodiment, the usage information may be implemented as a ranked list identifying the frequency with which one or more users 132 use a particular interface element. For example, the usage information may indicate that one or more users 132 use a volume button (volume up, volume down, mute) more than other interface elements. The application may send the usage information to one or more crowdsourcing servers 142.

[0036] Buttons can allow the user to control the playback of media content and provide access to other tools, such as user settings, network settings. Another example of a user interface element is a slider, which can provide more detailed control of playback (e.g., rewind or fast forward) or settings (e.g., adjust volume, brightness, etc.).

[0037] The multimedia environment 100 may include a plurality of content servers 120 (also referred to as content providers or sources). Figure 1 Only one content server 120 is shown, but in practice the multimedia environment 100 may include any number of content servers 120. Each content server 120 may be configured to communicate with a network 130.

[0038] Each content server 120 may store content 122 and metadata 124. Content 122 may include any combination of music, videos, movies, television programs, multimedia, images, still pictures, text, graphics, game applications, advertisements, programming content, public service content, government content, local community content, software, applications, and / or any other content or data object in electronic form.

[0039] In some embodiments, metadata 124 includes data about content 122. For example, metadata 124 may include associated or supplemental information indicating or relating to writers, directors, producers, composers, artists, actors, summaries, chapters, productions, history, years, trailers, alternate versions, related content, applications, and / or any other information about or relating to content 122. Metadata 124 may also or alternatively include links to any such information about or relating to content 122. Metadata 124 may also or alternatively include one or more indexes to content 122, such as, but not limited to, a trick mode index.

[0040] The multimedia environment 100 may include one or more system servers 140. The system servers 140 may be operable to support one or more media devices 106 from the cloud. It should be noted that the structural and functional aspects of the system servers 140 may exist in whole or in part in the same or different system servers 140.

[0041] One or more media devices 106 may be present in thousands or millions of media systems 102. Thus, one or more media devices 106 may lend themselves to crowdsourcing embodiments, and thus, system server 140 may include one or more crowdsourcing servers 142. One or more media devices 106 may be implemented as one or more different types of devices, such as streaming sticks, cable boxes, and media streaming devices integrated into another media device (e.g., a television or sound bar).

[0042] For example, using information received from one or more media devices 106 among thousands or millions of media systems 102, one or more crowdsourcing servers 142 can identify similarities and duplications between closed captioning requests made by different users 132 while watching a particular movie. Based on this information, one or more crowdsourcing servers 142 can determine that turning on closed captioning during specific portions of the movie can enhance the user's viewing experience (e.g., when the movie's soundtrack is difficult to hear), while turning off closed captioning during other portions of the movie can enhance the user's viewing experience (e.g., when displaying closed captioning obstructs key visual aspects of the movie). As a result, one or more crowdsourcing servers 142 can operate to automatically turn on and / or turn off closed captioning during future streaming of the movie.

[0043] The one or more crowdsourcing servers 142 may also store user interface usage information, such as how one or more users 132 interact with a user interface provided through their respective remote controls 110, including the above-described usage information. The one or more crowdsourcing servers 142 may generate crowdsourced user interface information that may identify a usage history of user interfaces for all remote controls connected to the one or more crowdsourcing servers 142. The crowdsourced user interface information may be implemented as a ranked list identifying the most commonly used user interface elements by multiple users in multiple multimedia environments.

[0044] The one or more crowdsourcing servers 142 may also store network connection information, such as the results of IPv6 connectivity and DNS resolver tests conducted by one or more media devices 106. In some embodiments, one or more media devices 106 may be configured to send the results of one or more tests to one or more crowdsourcing servers, which may then aggregate and organize the network connection information based on parameters associated with the results, such as the type of one or more media devices 106, the type of network connection (e.g., IPv6, IPv4), and the applications installed on the media devices, including network usage by each application. The one or more crowdsourcing servers 142 may provide such aggregated and organized network connection information to one or more system servers 140, which may generate system updates for one or more media devices 106 to improve network performance. For example, a system update may be generated based on determining that one or more media devices 106 of a particular type (e.g., a streaming stick) have more failed results when attempting to connect using an IPv6 address, and the system update may be pushed to these media devices to improve network performance of these media devices. The system update may update network configuration parameters at each of the one or more media devices 106, such as a predetermined period of time to wait for a response from a DNS server tested by a DNS resolver.

[0045] Figure 2 A block diagram of an example media device 106 is shown in accordance with some embodiments. The media device 106 may include a streaming module 202, a processing module 204, a memory 208, and a user interface module 206.

[0046] In streaming embodiments, the streaming module 202 may send content to the display device 106 in real time or near real time as the content is received from one or more content servers 120. In non-streaming embodiments, the media device 106 may store the content received from one or more content servers 120 in the memory 208 for later playback on the display device 106.

[0047] The media device 106 may also include one or more audio decoders 212 and one or more video decoders 214. Each audio decoder may be configured to decode audio in 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 audio formats, to name a few examples.

[0048] Similarly, each video decoder 214 can be configured to decode video in one or more video formats, such as, but not limited to, MP4 (mp4, m4a, m4v, f4v, f4a, m4b, m4r, f4b, mov), 3GP (3gp, 3gp2, 3g2, 3gpp, 3gpp2), OGG (ogg, oga, ogv, ogx), WMV (wmv, wma, asf), WEBM, FLV, AVI, QuickTime, HDV, MXF (OP1a, OP-Atom), MPEG-TS, MPEG-2PS, MPEG-2TS, WAV, Broadcast WAV, LXF, GXF and / or VOB video formats, to name just a few examples. Each video decoder may include one or more video codecs, such as but not limited to H.263, H.264, HEV, MPEG1, MPEG2, MPEG-TS, MPEG-4, Theora, 3GP, DV, DVCPRO, DVCProHD, IMX, XDCAMHD, XDCAM HD422 and / or XDCAM EX, to name just a few examples.

[0049] In some embodiments, the video decoder 214 can be implemented as one or more of a hardware decoder and a software decoder. The hardware decoder can be implemented as a dedicated hardware component, such as a graphics processing unit. The software decoder can be a combination of software that controls the processing module 204 to perform video decoding. In some embodiments, the processing module 204 can unload specific operations of the startup sequence to the video decoder 214 as needed. For example, the processing module 204 can instruct the video decoder 214 to process and display a dynamic startup screen, while the processing module 204 compiles a startup code for starting an application. In some embodiments, the processing module 204 and the video decoder 214 can operate in parallel.

[0050] The media device 106 may further include a network interface monitor 216 and a network interface 218, which may include an IPv4 network stack 220 and an IPv6 network stack 222. The network interface 218 may communicate using IPv6 address information allocated via the IPv6 network stack 222 and IPv4 address information allocated via the IPv4 network stack 220.

[0051] The network interface monitor 216 may be implemented to monitor changes to the network address of the network interface 218, such as the assignment of any new IPv4 or IPv6 endpoint addresses and the removal of any assigned IPv4 or IPv6 endpoint addresses. The network interface monitor 216 may be configured to trigger a connectivity test based on any detected changes to the IPv6 endpoint addresses of the network interface 218. The network interface monitor 216 may also be configured to manage the DNS address repository 210, as discussed further below.

[0052] Reference now Figure 1 and Figure 2 In some embodiments, the user 132 may interact with the media device 106, for example, through the remote control 110. For example, the user 132 may use the remote control 110 to interact with the user interface module 206 of the media device 106 to select content, such as movies, television programs, music, books, applications, games, and the like. The streaming module 202 of the media device 106 may request the selected content from one or more content servers 120 via the network 130. The one or more content servers 120 may send the requested content to the streaming module 202. The media device 106 may send the received content to the display device 106 for playback by the user 132. The media device 106 may store the content received from the content server 120 in the memory 208.

[0053] The memory 208 may also include a DNS address repository 210. In some embodiments, the DNS address repository 210 may be configured to be accessible only to specific components (e.g., a network interface monitor 216) of the media device 106, and may be configured to prevent unauthorized components from accessing any data in the DNS address repository 210. The DNS address repository 210 may also be configured to store IPv6 DNS server addresses. The network interface monitor 216 may also be authorized to manage the IPv6 DNS addresses in the DNS address repository 210 based on the results of the DNS resolver test of the DNS address. Examples of management of the DNS addresses in the DNS address repository 210 include prioritizing, removing, and maintaining the DNS addresses. In some embodiments, the media device 106 may only authorize specific components to access the DNS address repository 210.

[0054] An embodiment of performing an IPv6 connectivity test, which includes an IPv6 address check and a DNS resolver test

[0055] Figure 3 A flow chart of an IPv6 connection test 300 is shown, which shows an IPv6 DNS resolution test and an IPv6 website test performed at a media device, according to some embodiments. Figure 1-2 For example, Figure 3 One or more of the methods described may be performed via a media device (e.g. Figure 1 media device 106) or a display device (e.g., Figure 1 In this embodiment, any of these components can execute the code in the memory to perform Figure 3 The specific steps of IPv6 connection test 300. Although it will be discussed below Figure 3 The IPv6 connection test 300 is performed by the media device 106, but other devices can store the code, so the IPv6 connection test 300 can be performed by directly executing the code. Therefore, the following discussion of the IPv6 connection test 300 will refer to Figure 2 The device is used as an exemplary non-limiting embodiment of the IPv6 connection test 300. In addition, it should be understood that not all steps need to be performed in accordance with the disclosure provided herein. In addition, those of ordinary skill in the art will understand that some steps can be performed simultaneously or in conjunction with Figure 3 The different orders are shown.

[0056] In 302, the media device 106 starts a network interface monitor, such as the network interface monitor 216. The network interface monitor can be configured to monitor any changes in the IPv6 endpoint address. In some embodiments, when the media device 106 obtains the IPv4 endpoint address, the media device 106 can start the network interface monitor.

[0057] At 304, the network interface monitor may detect an action involving an IPv6 address occurring at a network interface of the media device 106. The network interface monitor may initiate an IPv6 address test based on the detected action.

[0058] Steps 306-324 may represent steps or subtests of an IPv6 connection test for each IPv6 address assigned to the network interface of the media device 106 and each IPv6 DNS server address stored in a private memory location of the media device 106. The network interface includes an IPv6 stack for communicating using an IPv6 network address and an IPv4 stack for communicating using an IPv4 network address. In some embodiments, steps 306-324 may be triggered based on an action involving an IPv6 address. Examples of the action include assigning an IPv6 address to the network interface of the media device 106, removing an IPv6 address from the network interface, or updating an existing IPv6 address assigned to the network interface. After detecting the action, the network interface monitor may initiate an IPv6 address test for each IPv6 address of the media device 106 starting from step 306. If any subtest of the IPv6 address test fails, the network interface monitor may disable the IPv6 stack and cause the media device 106 to communicate using the IPv4 stack.

[0059] In some embodiments, the subtest may be pre-triggered, for example, before receiving a request for streaming content. Thus, when the media device 106 subsequently receives a request for streaming content, the subtest increases the likelihood of establishing a reliable IPv6 connection.

[0060] At 306, the network interface monitor may perform an IPv6 DNS resolution test on each IPv6 DNS server address stored in a private memory location of the media device 106. In some embodiments, the IPv6 DNS resolution test may include identifying, by the network interface monitor, IPv6 DNS server addresses and a predetermined website stored at the media device 106 (e.g., in the memory / buffer 208). The network interface monitor may then attempt to resolve the predetermined website using the address of each of the IPv6 DNS server addresses.

[0061] In 308, the network interface monitor may determine the results of the IPv6 DNS resolution test performed on 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 successfully resolve a predetermined website using the IPv6 DNS server address; a failed result may indicate that the media device 106 was unable to resolve using the IPv6 DNS server address. In some embodiments, multiple DNS server addresses may be stored in the private memory location, and not every IPv6 DNS server address may provide a successful result for the resolution test. The network interface monitor may collect results from each IPv6 DNS resolution test.

[0062] At 310, if the IPv6 DNS resolution test for each IPv6 DNS server address is unsuccessful, the network interface monitor can disable the IPv6 network stack of the network interface of the media device 106 and prevent the media device 106 from communicating using IPv6. Thus, disabling the IPv6 network stack causes the media device 106 to transmit data (e.g., stream content) via the IPv4 network stack.

[0063] In 312, if the IPv6 DNS resolution test for at least one IPv6 address is successful, the network interface monitor may proceed with the IPv6 website test using the IPv6 network stack of the media device 106. In some embodiments, the IPv6 website test may include attempting to download a web page from a predetermined website using the IPv6 network stack. In some embodiments, the network interface monitor may set an internal flag to force all communications from the media device 106 to be sent using only the IPv6 network stack, including attempting to download a web page from a predetermined website. In some embodiments, the IPv6 DNS resolution test is performed for each IPv6 address assigned to the media device 106.

[0064] In 314, the network interface monitor may determine the result of the IPv6 website test. The result may indicate a success result or a failure result of the IP website test. For example, a success result may indicate that the media device 106 was able to successfully download a web page from a predetermined website via the IPv6 network stack, which may indicate, for example, that the media device 106 was able to successfully communicate with the predetermined website using the assigned IPv6 endpoint address. A failure result may indicate that the media device 106 was unable to download via the IPv6 network stack.

[0065] At 316, if the IPv6 website test succeeds, the network interface monitor may determine that the IPv6 connectivity test succeeded, e.g., the network interface is correctly configured with IPv6 parameters (e.g., IPv6 endpoint addresses and IPv6 DNS server addresses). The media device 106 may then communicate via the IPv6 network stack.

[0066] In 318, if the IPv6 website test is unsuccessful, the IPv6 connection test transfers to the next subtest, i.e., the IPv6 socket test. In some embodiments, the IPv6 socket test includes opening at least one IPv6 streaming transmission socket of the media device and attempting to use at least one IPv6 streaming transmission socket of the media device for data communication.

[0067] In 320, the network internet monitor can determine the result of the IPv6 socket test. The result can indicate a successful result or a failed result of the IPv6 socket test. For example, a successful result can indicate that at least one IPv6 socket has been successfully opened, and data is received and / or sent from the opened socket. If the IPv6 socket test returns a successful result, the network interface monitor can determine that the IPv6 connection test is successful, and the media device 106 can communicate via the IPv6 network stack. A failed result can indicate that IPv6 has no IPv6 socket that has been successfully opened.

[0068] In 322, if the IPv6 socket test is unsuccessful, the IPv6 connection test is transferred to the next sub-test, i.e., the 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 device 106, such as the memory / buffer 208. In some embodiments, the media device 106 may include a remote configuration service to allow remote updating of the second predetermined website. For example, a remote server may utilize a remote configuration service to access the memory of the media device 106 to change the second predetermined website.

[0069] In 324, the network interface monitor may determine the result of the second IPv6 website test. The result may indicate a success result or a failure result of the second IP website test. For example, similar to the first IPv6 website test, a success result may indicate that the media device 106 is able to successfully connect to the second predetermined website via the IPv6 network stack. A failure result may indicate that the media device 106 is unable to connect to the second website.

[0070] If the second IPv6 website test is successful, the network interface monitor can determine at 316 that the IPv6 connection test is successful and the network interface of the media device 106 can communicate correctly via the IPv6 network stack. If the second IPv6 website test is unsuccessful, the network interface monitor can determine that the network interface cannot communicate correctly using IPv6 and disable the IPv6 network stack. All subsequent network communications can be sent via the IPv4 network stack.

[0071] In some embodiments, it is not necessary to perform all subtests of the IPv6 connectivity test, nor is it necessary to perform all subtests of the IPv6 connectivity test according to the Figure 3 The specific order described is followed.

[0072] Figure 4 is a schematic diagram of a DNS resolver test 400 illustrating time-series functions performed by different components of a media device according to some embodiments. Figure 1-2 For example, Figure 4 One or more of the functions described may be performed by a media device (e.g., Figure 1 media device 106) or a display device (e.g. Figure 1 In this embodiment, any of these components can execute the code in the memory to perform Figure 4 The specific steps of the DNS resolver test 400. Although discussed below Figure 4 The DNS resolver test 400 is performed by a specific component of the media device 102, but other components may store the code and thus perform the DNS resolver test 400 by directly executing the code. Therefore, the following discussion of the DNS resolver test 400 will refer to Figure 2 The device is provided as an exemplary non-limiting embodiment. In addition, it should be appreciated that not all steps are required to perform the disclosure provided herein. In addition, some functions can be performed simultaneously in a different order or by using Figure 4 The same components shown perform as would be understood by one of ordinary skill.

[0073] In 402A-402C, the network manager component of the media device 106 can detect a trigger condition for initiating a DNS resolver test. In some embodiments, the DNS resolver test evaluates each IPv4 DNS address and IPv6 DNS address stored in the DNS address repository 210 of the media device 106. As described above, the DNS address repository 210 can be configured to be managed only by authorized components of the media device 106. Examples of authorized components can include a DNS configuration module, which can be authorized to manage the DNS addresses in the DNS address repository 210. In some embodiments, the media device 106 can prevent any other component from being authorized to access the DNS address repository to maintain the security of the repository. Any trigger condition can trigger the sending of a command to initiate a DNS resolver test for testing a DNS address.

[0074] In 402A, the network manager may detect a change in the IPv4 address assigned to the network interface 218 of the media device 106. Examples of changes include assigning a new IPv4 address, removing a previously assigned IPv4 address, and updating an existing IPv4 address assigned to the network interface 218.

[0075] At 402B, the network manager may detect a change in the DNS address of the DNS address stored in the DNS address repository 210. Examples of a DNS address change include assigning a new DNS (IPv4 or IPv6) server address, removing a previously stored DNS server address, or updating a DNS server address.

[0076] In 402C, the network manager may detect a change in the IPv6 address signed to the network interface 218 of the media device 106. Examples of changes include assigning a new IPv6 address, removing a previously assigned IPv6 address, and updating an existing IPv6 address assigned to the network interface 218.

[0077] In 404A, detecting either an IPv4 address change (step 402A) or a DNS address change (step 402B) triggers the network manager to send a command to the DNS configuration module. One command may be an update address command that causes the DNS configuration module to update the IPv4 and IPv6 addresses at the media device 106. Another command may be a DNS resolver command for initiating a DNS resolver test to test the DNS addresses currently stored in the DNS address repository 210.

[0078] In 404B, the detection of the IPv6 address change (step 402C) triggers the network manager to send only the DNS resolver command to initiate the DNS resolver test. The detection operation of the IPv6 address change is different from the IPv4 address change because in the case of an IPv4 address change, the DHCP packet itself will bring the DNS server address to the media device.

[0079] In 406, the DNS configuration module will build a DNS server list based on the DNS server addresses provided in the DHCP packet of the IPv4 address change or the new DNS server addresses. For example, when the IPv4 address changes, the DNS configuration module will update the DNS server list based on the DNS server addresses included in the DHCP packet, which includes any changes to the IPv4 address, such as the assignment of the IPv4 address to the media device 106. In some embodiments, the DNS server list is a temporary file separate from the DNS address repository 210. The DNS server list can include all DNS server addresses to be tested, and any DNS server that passes the resolver test (step 408) can be added to the DNS address repository 210.

[0080] In some embodiments, the DNS configuration module may populate the DNS server list with only new DNS server addresses provided as part of an IPv4 address change or a DNS server address change. In some embodiments, the DNS configuration module may populate the DNS server list with 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 (step 408) may be performed only on the new DNS server addresses. In the latter embodiment, the DNS resolver test may be performed on the new DNS server addresses while also retesting the previously stored DNS server addresses to check whether the previously stored DNS server addresses are still functioning properly.

[0081] In 408, the DNS configuration module initiates a 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 a failure result or a success result for each DNS server address tested. 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 (e.g., 2 seconds). The DNS configuration module may configure the predetermined time period based on a command received from a remote device such as the system server 140. For example, the system server 140 may adjust the predetermined time period based on crowdsourced information received from one or more other media devices communicating with the system server 140. In some embodiments, the system server 140 may push an update to one or more media devices 106 that modifies one or more configuration parameters, including a predetermined time period for the DNS configuration module to wait for a response from a DNS server in a DNS resolver test.

[0082] In some embodiments, the DNS configuration module can perform DNS resolver testing 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, the DNS configuration module will attempt to resolve the domain name in parallel using each address.

[0083] In such an embodiment, parallel DNS queries can be initiated by a background process in the media device 106. The background process can be configured such that the DNS resolver test may include initiating parallel DNS queries. The background process can collaborate with an application installed on the media device to initiate queries to the DNS servers available to the media device 106. The application can retrieve the DNS address from the private local memory of the media device 106 and generate a DNS query based on the retrieved DNS address. Separately, the background process can also poll a separate DNS server file located upstream of the media device in the network to retrieve the DNS server. When the background process receives a DNS query from the application, the background process can then check the cache, which is also on the media device 106 and stores previous DNS responses to previous DNS queries to see if a previous DNS response has been received from any DNS server identified in the received DNS query. If there is no such DNS response in the cache, 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.

[0084] In some embodiments, the DNS configuration module may distinguish between IPv6 DNS server addresses and IPv4 DNS server addresses when performing a DNS resolver test. For example, if the DNS configuration module detects a change in the IPv4 address at the network interface 218 of the media device 106, the DNS configuration module may only initiate a DNS resolver test for the IPv4 DNS server addresses (and exclude the IPv6 DNS server addresses). Similarly, if the DNS configuration module detects a change in the IPv6 address, the DNS configuration module may only initiate a DNS resolver test for the IPv6 DNS server addresses.

[0085] In 410, the DNS configuration module updates the DNS address repository 210 based on the results of the resolver test for each DNS server address. In some embodiments, a failure of the DNS resolver test for a DNS server address causes the DNS configuration module to remove the DNS server address from the DNS address repository 210; for a successful DNS resolver test, the DNS configuration module maintains the DNS server address in the DNS address repository.

[0086] Example Computer System

[0087] For example, various embodiments may be implemented using one or more well-known computer systems, such as Figure 5 Computer system 500 is shown. For example, media device 106 can be implemented by a combination or sub-combination of computer systems 500. Additionally or alternatively, one or more computer systems 500 can also be used, for example, to implement any of the embodiments discussed herein, as well as combinations and sub-combinations thereof.

[0088] Computer system 500 may include one or more processors (also referred to as central processing units, or CPUs), such as processor 504. Processor 504 may be connected to a communication infrastructure or bus 506.

[0089] The computer system 500 may also include one or more user input / output devices 503 , such as a display, a keyboard, a pointing device, etc., which may communicate with a communication infrastructure 506 via one or more user input / output interfaces 502 .

[0090] One or more processors 504 may be a graphics processing unit (GPU). In one embodiment, a GPU may be a processor that is designed to process math-intensive applications. A GPU may have a parallel structure that is efficient for processing large blocks of data in parallel, such as math-intensive data commonly found in computer graphics applications, images, videos, etc.

[0091] The computer system 500 may also include a main memory 508, such as a random access memory (RAM). The main memory 508 may include one or more levels of cache. The main memory 508 may store control logic (ie, computer software) and / or data therein.

[0092] The computer system 500 may also include one or more secondary storage devices or memories 510. The secondary storage 510 may include, for example, a hard disk drive 512 and / or a removable storage device or drive 514. The removable storage drive 514 may be a floppy disk drive, a tape drive, an optical disk drive, an optical storage device, a tape backup device, and / or any other storage device / drive.

[0093] The removable storage drive 514 can interact with a removable storage unit 518. The removable storage unit 518 may include a computer-usable or readable storage device having computer software (control logic) and / or data stored therein. The removable storage unit 518 may be a floppy disk, a magnetic tape, an optical disk, a DVD, an optical storage disk, and / or any other computer data storage device. The removable storage drive 514 can read from and / or write to the removable storage unit 518.

[0094] Secondary storage 510 may include other methods, devices, components, tools, or other means for allowing computer programs and / or other instructions and / or data to be accessed by computer system 500. These methods, devices, components, tools, or other means may include, for example, a removable storage unit 522 and an interface 520. Examples of removable storage unit 522 and interface 520 may include a program cartridge and a cartridge interface (such as that found in video game devices), a removable memory chip (such as an EPROM or PROM) and an associated socket, a memory stick and a USB or other port, a memory card and an associated memory card slot, and / or any other removable storage unit and associated interface.

[0095] The computer system 500 may also include a communication or network interface 524. The communication interface 524 may enable the computer system 500 to communicate and interact with any combination of external devices, external networks, external entities, etc. (individually or collectively represented by reference numeral 528). For example, the communication interface 524 may enable the computer system 500 to communicate with external or remote devices 528 via communication paths 526, which may be wired and / or wireless (or a combination thereof) and may include any combination of LANs, WANs, the Internet, etc. Control logic and / or data may be sent to and from the computer system 500 via the communication paths 526.

[0096] The computer system 500 may also be any of a personal digital assistant (PDA), a desktop workstation, a laptop or notebook computer, a netbook, a tablet computer, a smartphone, a smart watch or other wearable device, an appliance, part of the Internet of Things, and / or an embedded system, to name a few non-limiting examples, or any combination of these devices.

[0097] Computer system 500 may be a client or server, accessing or hosting any applications and / or data through any delivery model, including but not limited to remote or distributed cloud computing solutions; local or owned software (“owned” cloud-based solutions); “as a service” models (e.g., Content as a Service (CaaS), Digital Content as a Service (DCaaS), Software as a Service (SaaS), Managed Software as a Service (MSaaS), Platform as a Service (PaaS), Desktop as a Service (DaaS), Framework as a Service (FaaS), Backend as a Service (BaaS), Mobile Backend as a Service (MBaaS), Infrastructure as a Service (IaaS), etc.); and / or hybrid models including any combination of the foregoing examples or other services or delivery paradigms.

[0098] Any suitable data structures, file formats, and schemas in computer system 500 may be derived from standards including, but not limited to, JavaScript Object Notation (JSON), Extensible Markup Language (XML), Yet Another Markup Language (YAML), Extensible Hypertext Markup Language (XHTML), Wireless Markup Language (WML), MessagePack, XML User Interface Language (XUL), or any other functionally similar representations (alone or in combination). Alternatively, proprietary data structures, formats, or schemas may be used, either alone or in combination with known or open standards.

[0099] In some embodiments, a tangible, non-transitory device or article of manufacture comprising a tangible, non-transitory computer-usable 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 system 500, main memory 508, secondary memory 510, and removable storage units 518 and 522, as well as tangible articles of manufacture embodying any combination of the foregoing. When executed by one or more data processing devices (such as computer system 500 or processor 504), these control logics may cause these data processing devices to operate as described herein.

[0100] Based on the teachings contained in this disclosure, it will be clear to those skilled in the relevant art how to use the Figure 5 The embodiments of the present disclosure may be made and used with data processing devices, computer systems, and / or computer architectures other than those shown in . In particular, the embodiments may be implemented with software, hardware, and / or operating system implementations other than those described herein.

[0101] in conclusion

[0102] It should be understood that the detailed description section, rather than any other section, is intended to be used to interpret the claims. The other sections may list one or more exemplary embodiments contemplated by one or more inventors, but not all embodiments, and therefore, are not intended to limit the present disclosure or the appended claims in any way.

[0103] Although the present disclosure describes exemplary embodiments of exemplary fields and applications, it should be understood that the present disclosure is not limited thereto. Other embodiments and modifications thereto are possible and within the scope and purpose of the present disclosure. For example, without limiting the generality of this paragraph, the embodiments are not limited to the software, hardware, firmware and / or entities shown in the figures and / or described herein. In addition, the embodiments (whether or not explicitly described herein) have significant practicality for fields and applications beyond the examples described herein.

[0104] Embodiments are described herein with the aid of functional building blocks that demonstrate the implementation of specified functions and their relationships. For ease of description, the boundaries of these functional building blocks are arbitrarily defined herein. As long as the specified functions and relationships (or their equivalents) are appropriately performed, alternative boundaries may be defined. In addition, alternative embodiments may perform functional blocks, steps, operations, methods, etc., in a different order than described herein.

[0105] "One embodiment", "embodiment", "exemplary embodiment" or similar phrases mentioned herein indicate that the described embodiments may include specific features, structures or characteristics, but not necessarily every embodiment includes the specific features, structures or characteristics. In addition, these phrases do not necessarily refer to the same embodiment. In addition, when describing specific features, structures or characteristics in conjunction with an embodiment, a person skilled in the relevant art may incorporate these features, structures, or characteristics into other embodiments, regardless of whether they are explicitly mentioned or described herein. In addition, some embodiments may be described using "coupling" and "connection" and their derivatives. These terms are not necessarily synonymous with each other. For example, some embodiments may be described using the terms "connection" and / or "coupling" to indicate that two or more elements are in direct physical or electrical contact with each other. However, the term "coupling" may also mean that two or more elements are not in direct contact with each other, but still cooperate or interact with each other.

[0106] The breadth and scope of the present disclosure should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.

Claims

1. A method comprising: Initiating an IPv6 address test on a media device including a network interface configured with an IPv6 network stack and an IPv4 network stack, wherein the IPv6 address test comprises: identifying, by a network interface monitor, a set of IPv6 server addresses stored in a private memory of the media device; identifying, by the network interface monitor, a predetermined website stored in a memory of the media device; Performing an IPv6 address resolution test of the predetermined website for each IPv6 server address in the set of IPv6 server addresses through the network interface monitor; In response to a result of the IPv6 address resolution test indicating a failing result for each IPv6 server address: disabling the IPv6 network stack, wherein the media device streams data via the IPv4 network stack using the network interface; and In response to a result of the IPv6 address resolution test indicating a successful result for at least one IPv6 server address: A connection test is performed on the predetermined website, wherein the media device streams the data using the network interface via the IPv6 network stack or the IPv4 network stack based on a second result of the connection test.

2. The method according to claim 1, wherein: The connectivity test includes attempting to download a web page from the predetermined website using the IPv6 network stack.

3. The method according to claim 1, wherein: Initiating the IPv6 address test is performed in response to detecting, by the network interface monitor, an action involving an IPv6 endpoint address, wherein the action is performed on a network interface of the media device.

4. The method according to claim 3, wherein: The action includes one of assigning the IPv6 endpoint address to the network interface of the media device or removing the IPv6 endpoint address from the network interface of the media device.

5. The method according to claim 1, further comprising: In response to the second result indicating a successful result of the connectivity test, streaming the data via the IPv6 network stack using the network interface; In response to the second result indicating a failure result of the connection test, performing an IPv6 streaming socket test; as well as In response to a third result of the IPv6 streaming socket test indicating a successful result of the IPv6 streaming socket test, the data is streamed via the IPv6 network stack using the network interface.

6. The method according to claim 5, wherein: The IPv6 streaming socket test includes: opening at least one IPv6 streaming socket of the media device; and Attempting to communicate using at least one IPv6 streaming socket of the media device.

7. The method according to claim 5, further comprising: in response to the third result of the IPv6 streaming socket test indicating a failure result of the IPv6 streaming socket test, performing a second connection test using a second predetermined website using the IPv6 network stack of the media device; as well as In response to a fourth result of the second connectivity test indicating a successful result of the second connectivity test, the data is streamed via the IPv6 network stack using the network interface.

8. The method according to claim 7, further comprising: responsive to the fourth result of the second connectivity test indicating a failed result, disabling the IPv6 network stack; as well as The data is streamed by the media device via the IPv4 network stack using the network interface.

9. The method according to claim 7, wherein: The second connection test includes attempting to connect to the second predetermined website via the IPv6 network stack.

10. A media device comprising: At least one processor, the processor being configured to perform operations comprising: Initiating an IPv6 address test on a media device including an IPv6 network stack and an IPv4 network stack, wherein the IPv6 address test includes: identifying a set of IPv6 server addresses stored in a private memory of the media device; identifying a predetermined website stored in a memory of the media device; Performing an IPv6 address resolution test of the predetermined website for each IPv6 server address in the set of IPv6 server addresses; In response to a result of the IPv6 address resolution test indicating a failing result for each IPv6 server address: Disable the IPv6 network stack; and streaming data using the network interface via the IPv4 network stack; In response to a result of the IPv6 address resolution test indicating a successful result for at least one IPv6 server address: Performing a connection test on the predetermined website; and Based on a second result of the connection test, the data is streamed via the IPv6 network stack or the IPv4 network stack using the network interface.

11. The media device according to claim 10, wherein: The connectivity test includes attempting to download a web page from the predetermined website using the IPv6 network stack.

12. The media device of claim 10, wherein: Initiating the IPv6 address test is performed in response to detecting, by the network interface monitor, an action involving an IPv6 endpoint address, wherein the action is performed on a network interface of the media device.

13. The media device of claim 12, wherein: The action includes one of assigning the IPv6 endpoint address to the network interface of the media device or removing the IPv6 endpoint address from the network interface of the media device.

14. The media device of claim 10, the operations further comprising: In response to the second result indicating a successful result of the connectivity test, streaming the data via the IPv6 network stack using the network interface; In response to the second result indicating a failure result of the connection test, performing an IPv6 streaming socket test; as well as In response to a third result of the IPv6 streaming socket test indicating a successful result of the IPv6 streaming socket test, the data is streamed via the IPv6 network stack using the network interface.

15. The media device of claim 14, wherein: The IPv6 streaming socket test includes: opening at least one IPv6 streaming socket of the media device; and Attempting to communicate using at least one IPv6 streaming socket of the media device.

16. The media device of claim 14, the operations further comprising: in response to the third result of the IPv6 streaming socket test indicating a failure result of the IPv6 streaming socket test, performing a second connection test using a second predetermined website using the IPv6 network stack of the media device; as well as In response to a fourth result of the second connectivity test indicating a successful result of the second connectivity test, the data is streamed via the IPv6 network stack using the network interface.

17. The media device of claim 16, the operations further comprising: responsive to the fourth result of the second connectivity test indicating a failed result, disabling the IPv6 network stack; as well as The data is streamed by the media device via the IPv4 network stack using the network interface.

18. The media device of claim 17, wherein: The second connection test includes attempting to connect to the second predetermined website via the IPv6 network stack.

19. A non-transitory computer readable medium having stored thereon instructions which, when executed by at least one computing device, cause the at least one computing device to: Initiating an IPv6 address test on a media device including a network interface configured with an IPv6 network stack and an IPv4 network stack, wherein: The IPv6 address test includes: identifying, by a network interface monitor, a set of IPv6 server addresses stored in a private memory of the media device; identifying, by the network interface monitor, a predetermined website stored in a memory of the media device; Performing an IPv6 address resolution test of the predetermined website for each IPv6 server address in the set of IPv6 server addresses through the network interface monitor; In response to a result of the IPv6 address resolution test indicating a failing result for each IPv6 server address: disabling the IPv6 network stack, wherein the media device streams data via the IPv4 network stack using the network interface; and In response to a result of the IPv6 address resolution test indicating a successful result for at least one IPv6 server address: A connection test is performed on the predetermined website, wherein the media device uses the network interface to stream the data via the IPv6 network stack or the IPv4 network stack based on a second result of the connection test.

20. The non-transitory computer readable medium of claim 19, wherein: The connectivity test includes attempting to download a web page from the predetermined website using the IPv6 network stack.