Abstract:
An apparatus, method, system, and computer-readable medium are described for permitting communications between devices complying with different communication protocols or versions. For example, a computing device may store a map indicative of associations between one or more tunnels or channels and one or more destination addresses. In some examples, a destination address may be associated with a user device. One or more messages may include an address that may be extracted by a device, such as a router, to determine which channel to use in transmitting the message to the user device. One or more messages may include an indication of a channel that may be extracted by the device to determine a destination address of the message.

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application is a continuation of U.S. patent application Ser. No. 14/634,187, filed Feb. 27, 2015, entitled “Address Translation”, which is a continuation of U.S. patent application Ser. No. 13/353,439, filed Jan. 19, 2012, entitled “Address Translation” (now U.S. Pat. No. 9,014,189 issued on Apr. 21, 2015), and each of which is incorporated in its entirety by reference herein. 
     
    
     BACKGROUND 
       [0002]    Communications between two or more devices may be implemented or facilitated via the use of addresses. For example, IPv4 communications support thirty-two (32) bit addresses. Due to the growth and expansion of communication networks, and more particularly, the number of devices that now communicate over networks like the Internet, additional communication protocols have been introduced and utilized. For example, IPv6 utilizes one hundred twenty eight (128) bit addresses, thereby expanding the number of available addresses. 
         [0003]    Transitioning communications from a first type (e.g., a first version of a protocol) to a second type (e.g., a second version of a protocol), such as transitioning from IPv4 to IPv6 communications, may be cumbersome. For example, some new or legacy devices, such as legacy hosts, routers, and user devices might not be configured to support IPv6 communications. Given the extent and prevalence of such devices, device makers and network and service providers may be reluctant to incur the costs associated with the transition. Such reluctance may delay the advancement and progress of IPv6 compliant communications. Moreover, even assuming that device makers and network or service providers might otherwise be inclined to transition to IPv6 communications, the providers might not have access or control over such communications, devices, or equipment, thereby potentially requiring the providers to continue to support IPv4 communications during a transition to IPv6 communications. The foregoing shortcomings are identified by this disclosure, and address below. 
       SUMMARY 
       [0004]    This summary is not intended to identify critical or essential features of the disclosure provided herein, but instead merely summarizes certain features and variations thereof. 
         [0005]    In some embodiments, a device may operate as a proxy for converting data traffic according to a first communication type (e.g., IPv4 data packets) into traffic according to a second communication type (e.g., IPv6 data packets), and vice versa. In some embodiments, the device may serve as an interface between two or more other devices or communication networks, where the two or more communication networks may adhere to different communication types, protocols, standards, etc. 
         [0006]    In some embodiments, a device may receive one or more messages from a client device. The one or more received messages may be indicative of a request for service. The one or more received messages may be indicative of, or be interpreted as, a request to be enrolled in one or more service groups. 
         [0007]    In some embodiments, a device may receive data intended for one or more destinations. The data received at the device may adhere to a first communication type. The one or more destinations may comprise one or more user or client devices. In some embodiments, the device may maintain a table to facilitate forwarding or transmitting the data as part of a tunnel or channel (e.g., a multicast tunnel or channel). The table may map a destination address to one or more tunnel interfaces. In some embodiments, the device may transmit or forward the received data to one or more destination addresses using one or more tunnels. In some embodiments, the transmitted or forwarded data may be directed to the destination addresses using a second communication type. 
         [0008]    Other details and features will also be described in the sections that follow. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0009]    Some features herein are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements. 
           [0010]      FIG. 1  illustrates an example information distribution network. 
           [0011]      FIG. 2  illustrates an example computing device on which the various elements described herein can be implemented. 
           [0012]      FIG. 3  illustrates an architecture demonstrating one or more aspects of this disclosure. 
           [0013]      FIG. 4  illustrates a method demonstrating one or more aspects of this disclosure. 
       
    
    
     DETAILED DESCRIPTION 
       [0014]    Various connections between elements are discussed in the following description. These connections are general and, unless specified otherwise, may be for example direct or indirect, wired or wireless, and this specification is not intended to be limiting in this respect. 
         [0015]    In the following description of various illustrative embodiments, reference is made to the accompanying drawings, which form a part hereof, and in which is shown, by way of illustration, various embodiments in which aspects of the disclosure may be practiced. It is to be understood that other embodiments may be utilized and structural and functional modifications may be made, without departing from the scope of the present disclosure. 
         [0016]      FIG. 1  illustrates an example information distribution network  100  on which many of the various features described herein may be implemented. Network  100  may be any type of information distribution network, such as satellite, telephone, cellular, wireless, etc. One example may be an optical fiber network, a coaxial cable network or a hybrid fiber/coax distribution network. Such networks  100  use a series of interconnected communication lines  101  (e.g., coaxial cables, optical fibers, wireless, etc.) to connect multiple premises  102  (e.g., businesses, homes, consumer dwellings, etc.) to a central office or headend  103 . The central office  103  may transmit downstream information signals onto the lines  101 , and each premises  102  may have a receiver used to receive and process those signals. 
         [0017]    There may be one line  101  originating from the central office  103 , and it may be split a number of times to distribute the signal to various premises  102  in the vicinity (which may be many miles) of the central office  103 . The lines  101  may include components not illustrated, such as splitters, filters, amplifiers, etc. to help convey the signal clearly, but in general each split introduces a bit of signal degradation. Portions of the lines  101  may also be implemented with fiber-optic cable, while other portions may be implemented with coaxial cable, other lines, or wireless communication paths. 
         [0018]    The central office  103  may include a termination system (TS)  104 , such as a cable modem termination system (CMTS), which may be a computing device configured to manage communications between devices on the network of lines  101  and backend devices such as servers  105 - 107  (to be discussed further below). The termination system (TS) may be as specified in a standard, such as the Data Over Cable Service Interface Specification (DOCSIS) standard, published by Cable Television Laboratories, Inc. (a.k.a. CableLabs), or it may be a similar or modified device instead. The termination system (TS) may be configured to place data on one or more downstream frequencies to be received by modems at the various premises  102 , and to receive upstream communications from those modems on one or more upstream frequencies. The central office  103  may also include one or more network interfaces  108 , which can permit the central office  103  to communicate with various other external networks  109 . These networks  109  may include, for example, networks of Internet devices, telephone networks, cellular telephone networks, fiber optic networks, local wireless networks (e.g., WiMAX), satellite networks, and any other desired network, and the interface  108  may include the corresponding circuitry needed to communicate on the network  109 , and to other devices on the network such as a cellular telephone network and its corresponding cell phones. 
         [0019]    As noted above, the central office  103  may include a variety of servers  105 - 107  that may be configured to perform various functions. For example, the central office  103  may include a push notification server  105 . The push notification server  105  may generate push notifications to deliver data and/or commands to the various premises  102  in the network (or more specifically, to the devices in the premises  102  that are configured to detect such notifications). The central office  103  may also include a content server  106 . The content server  106  may be one or more computing devices that are configured to provide content to users in the homes. This content may be, for example, video on demand movies, television programs, songs, text listings, etc. The content server  106  may include software to validate user identities and entitlements, locate and retrieve requested content, encrypt the content, and initiate delivery (e.g., streaming) of the content to the requesting user and/or device. 
         [0020]    The central office  103  may also include one or more application servers  107 . An application server  107  may be a computing device configured to offer any desired service, and may run various languages and operating systems (e.g., servlets and JSP pages running on Tomcat/MySQL, OSX, BSD, Ubuntu, Redhat, HTML5, JavaScript, AJAX and COMET). For example, an application server may be responsible for collecting television program listings information and generating a data download for electronic program guide or interactive program guide listings. Another application server may be responsible for monitoring user viewing habits and collecting that information for use in selecting advertisements. Another application server may be responsible for formatting and inserting advertisements in a video stream being transmitted to the premises  102 . Another application server may be responsible for receiving user remote control commands, and processing them to provide an intelligent remote control experience. 
         [0021]    An example premises  102   a  may include an interface  120 . The interface  120  may comprise, in one aspect, a modem  110 , which may include transmitters and receivers used to communicate on the lines  101  and with the central office  103 . The modem  110  may be, for example, a coaxial cable modem (for coaxial cable lines  101 ), a fiber interface node (for fiber optic lines  101 ), or any other desired modem device. The modem  110  may be connected to, or be a part of, a gateway interface device  111 . The gateway interface device  111  may be a computing device that communicates with the modem  110  to allow one or more other devices in the premises  102   a  to communicate with the central office  103  and other devices beyond the central office. The gateway  111  may be a set-top box (STB), digital video recorder (DVR), computer server, or any other desired computing device. The gateway  111  may also include (not shown) local network interfaces to provide communication signals to devices in the premises  102   a , such as televisions  112 , additional STBs  113 , personal computers  114 , laptop computers  115 , wireless devices  116  (wireless laptops and netbooks, mobile phones, mobile televisions, personal digital assistants (PDA), etc.), and any other desired devices. Examples of the local network interfaces include Multimedia Over Coax Alliance (MoCA) interfaces, Ethernet interfaces, universal serial bus (USB) interfaces, wireless interfaces (e.g., IEEE 802.11), Bluetooth interfaces, and others. In some embodiments, a client device  117  may communication with central office  103  via one or more communication interfaces, such as network interface  108  and network  109 . 
         [0022]      FIG. 2  illustrates general hardware elements that can be used to implement any of the various computing devices discussed above. The computing device  200  may include one or more processors  201 , which may execute instructions of a computer program to perform any of the features described herein. The instructions may be stored in any type of computer-readable medium or memory, to configure the operation of the processor  201 . For example, instructions may be stored in a read-only memory (ROM)  202 , random access memory (RAM)  203 , removable media  204 , such as a Universal Serial Bus (USB) drive, compact disk (CD) or digital versatile disk (DVD), floppy disk drive, or any other desired electronic storage medium. Instructions may also be stored in an attached (or internal) hard drive  205 . The computing device  200  may include one or more output devices, such as a display  206  (or an external television), and may include one or more output device controllers  207 , such as a video processor. There may also be one or more user input devices  208 , such as a remote control, keyboard, mouse, touch screen, microphone, etc. The computing device  200  may also include one or more network interfaces, such as input/output circuits  209  (such as a network card) to communicate with an external network  210 . The network interface may be a wired interface, wireless interface, or a combination of the two. In some embodiments, the interface  209  may include a modem (e.g., a cable modem), and network  210  may include the communication lines  101  discussed above, the external network  109 , an in-home network, a provider&#39;s wireless, coaxial, fiber, or hybrid fiber/coaxial distribution system (e.g., a DOCSIS network), or any other desired network. 
         [0023]    Aspects of this disclosure may be implemented to interface communications between two or more network or communications systems. In some embodiments, an exchange of messages and/or data may be used to facilitate the communications. In some embodiments, an address associated with one or more client devices may be obtained to associate the client device(s) with one or more tunnels. 
         [0024]      FIG. 3  illustrates an architecture demonstrating one or more aspects of this disclosure. In some embodiments, the various blocks shown in  FIG. 3  may be included in, associated with, or implemented in accordance with one or more of the components and devices described above in connection with  FIGS. 1-2 . 
         [0025]    A source  302  may generate or otherwise transmit data. The data may be indicative of one or more content items, such as audio content, voice (e.g., VoIP), video content, graphics, pictures, text, emails, instant messages, etc. In some embodiments, source  302  may be associated with central office  103  or servers  105 - 107  of  FIG. 1 . In some embodiments, source  302  may include one or more VOD servers configured to deliver video using IPv4. 
         [0026]    A network  308  may include one or more communication or data access networks. In some embodiments, network  308  may adhere to a first communication type, such as IPv4 communications. Network  308  may convey data received from source  302 , or data generated by network  308 , to one or more devices as described further below. In some embodiments, network  308  may be associated with network  109  of  FIG. 1  or network  210  of  FIG. 2 . 
         [0027]    A computing device such as a router  314 , such as an Address Family Transition Router (AFTR), may function as a proxy to deliver one or more messages, such as an Internet Group Management Protocol (IGMP) message, to one or more devices, such as one or more routers. For example, router  314  may deliver a message from users behind an element  326  to a first-hop IPv4 multicast router upstream of router  314 . In some embodiments, router  314  and/or element  326  may be associated with central office  103  or interface  120  of  FIG. 1 . In some embodiments, element  326  may comprise a broadband element, such as a Basic Bridging BroadBand element (B4). 
         [0028]    In some embodiments, router  314  may be included as a bridge to join both IPv4 and IPv6 multicast (or another transmission scheme) distribution trees. For example, router  314  may replicate IPv4 multicast streams into IPv4-in-IPv6 streams in one or more branches of an IPv6 multicast distribution stream. In some embodiments, router  314  may build or reference a translation tool, such as a mapping table, that maps element  326 &#39;s IPv6 addresses and multicast groups. The table may function as an access table to, for example, match a multicast enrollment or subscription to element  326 . 
         [0029]    In some embodiments, router  314  may function to translate an IPv4 multicast address to an IPv6 multicast address and use join messages (e.g. PIM-JOIN) to join both the IPv4 and IPv6 multicast (or another transmission scheme) distribution trees. For example, router  314  may take the IPv6 multicast address from the PIM message sent by a router in network  320  and translate the IPv6 multicast address to the IPv4 multicast address. Router  314  may use the IPv4 multicast address to send the PIM message to a next-hop router in network  308 . 
         [0030]    A network  320  may include one or more communication or data access networks. In some embodiments, network  320  may adhere to a second communication type, such as IPv6 communications. In some embodiments, network  320  may be associated with network  109  of  FIG. 1  or network  210  of  FIG. 2 . 
         [0031]    In some embodiments, element  326  may be included in (e.g., embedded in), or otherwise associated with, a client device, such as a user or client device  332 . In some embodiments, element  326  may enforce an Internet Group Management Protocol—Multicast Listener Discovery (IGMP-MLD) interworking function together with a de-capsulation function of received multicast IPv4-in-IPv6 packets. For example, element  326  may perform a listener portion of an Internet Group Management Protocol (IGMP) and a host portion of a Multicast Listener Discovery (MLD) protocol on an upstream interface. As a skilled artisan would appreciate, IGMP may be used in connection with IPv4 groups (e.g., multicast groups) and MLD may be used in connection with IPv6 groups (e.g., multicast groups). IGMP and MLD may be used between end systems to request or otherwise communicate data. 
         [0032]    User device  332  may include one or more components for communicating with one or more devices, such as source  302 . For example, in some embodiments user device  332  may be within a service node or group, such as a logical service group, associated with source  302 . In some embodiments, client device may adhere to one or more communication types. For example, user device  332  may communicate according to IPv6. In some embodiments, user device  332  may be associated with devices  112 - 117  of  FIG. 1  or device  200  of  FIG. 2 . In some embodiments, user device  332  may include an IP-TV set-top box configured to receive a multicast stream from source  302  in IPv4. 
         [0033]    The architecture of  FIG. 3  is illustrative. In some embodiments, other architectures or variations of the architecture shown in  FIG. 3  may be used. The various blocks of  FIG. 3  may be arranged in any way, and any number of communication paths may exist between or amongst the various blocks. By way of illustration, the dashed lines in  FIG. 3  may represent alternative communication paths between source  302  and router  314 , network  320 , element  326 , and/or user device  332 . Thus, using one or more of the dashed communication paths, source  302  may communicate with one or more of router  314 , network  320 , element  326 , and/or user device, potentially bypassing network  308 . Other communication paths (not shown in  FIG. 3 ) may be used by one or more of the blocks shown in  FIG. 3 . 
         [0034]      FIG. 4  illustrates a method that may be used in conjunction with one or more aspects of this disclosure. The method of  FIG. 4  may be operative in connection with one or more architectures or environments. The method of  FIG. 4  is described below in connection with the architecture of  FIG. 3  for illustrative purposes only. The method may be adapted to accommodate other environments or architectures. 
         [0035]    The method of  FIG. 4  may be used as a proxy for encapsulating IPv4 packets or traffic into IPv6 packets or traffic, or vice versa. For example, a device (e.g., device  332  of  FIG. 3 ) behind an element or device (e.g., element  326  of  FIG. 3 ) may only have an IPv6 address (as opposed to an IPv4 address) associated with it, potentially due to a lack of available IPv4 addresses or other reasons. The method of  FIG. 4  may be used to realize an expansion of a network address space (e.g., IPv4 to IPv6 compliant communication) without having to fully implement a more advanced communication type (e.g., IPv6). 
         [0036]    In step  404 , user device  332  may transmit one or more messages. The one or more messages may be indicative of a request for service, such as a request for a content item or asset. The one or more messages may be transmitted in response to a user of device  332  indicating that the user wants to join or subscribe to a group, such as an IPv4 multicast group. The one or more messages may comprise an IGMP message. The one or more messages may be generated by device  332 . The one or more messages may comprise one or more control messages. 
         [0037]    In step  410 , a network device such as element  326  may receive one or more messages, such as a message transmitted by user device  332 , in connection with step  404 . Element  326  may encapsulate the one or more messages with a header, such as an IPv6 header. Element  326  may convert one or more messages into a report message, such as an MLD report message. Element  326  may transmit the MLD report message upstream, e.g., towards source  302 . 
         [0038]    In step  416 , a join message may be triggered or generated. For example, a join message (e.g., a PIM-JOIN) may be triggered by an MLD querier or another entity (not shown in  FIG. 3 ) in response to receiving the MLD report message. In some embodiments, the join message may be indicative of a communication type, such as IPv6. The join message may be transmitted to one or more devices or entities. 
         [0039]    In step  422 , the join message of step  416  may be received by one or more entities. For example, the join message may be received by a computing device, such as a router  314 . Router  314  may extract a group address (e.g., an IPv4 multicast group address) from the join message and may transmit the join message, or a portion thereof, upstream, e.g., toward source  302 . In this regard, communications between router  314  and devices upstream from router  314  (e.g., source  302 ) may adhere to a first communication type (e.g., IPv4), and communications between router  314  and devices downstream from router  314  (e.g., user device  332 ) may adhere to a second communication type (e.g., IPv6). 
         [0040]    In step  428 , source  302  (or another entity not shown in  FIG. 3 ) may receive the join message, or a portion thereof, transmitted in connection with step  422 . In response to the message, source  302  (or another entity) may provide service to user device  332 . For example, as part of step  428 , source  302  (or another entity) may enroll user device  332  in a service group, provide or transmit a content item or asset, etc. 
         [0041]    In step  434 , source  302  may transmit data to router  314 . The data may be transmitted in response to the (portion of the) join message received in connection with step  428 . The transmitted data may fulfill a service request initiated by user device  332  (e.g., where the service request may be indicated by one or more of the messages transmitted in connection with step  404 ). 
         [0042]    In step  440 , router  314  may receive the data transmitted in connection with step  434  and may prepare the data for transmission over network  320 , where network  320  may adhere to IPv6 communications. 
         [0043]    In some embodiments, as part of step  440 , router  314  may associate one or more tunnel interfaces, such as logical tunnel interfaces, to create a multicast tunnel or channel, or a unicast tunnel or channel, or another type of communication/transmission path. One or more devices may encapsulate data packets according to a first communication type (e.g., IPv4) into packets of a second communication type (e.g., IPv6). One or more devices may transmit the encapsulated data packets according to the second communication type to one or more other devices, such as a downstream multicast enabled router configured in accordance with the second communication type, via the tunnel. 
         [0044]    In some embodiments, data received at router  314  from an upstream device (e.g., source  302 ) may include an indication of the tunnel itself or an intended destination (e.g., user device  332 , or an address of user device  332 ). Responsive to receiving data with such an indication, router  314  may convert such data to a particular communication type (e.g., IPv6) and transmit the data to the destination device(s) in that form. Router  314  may maintain a table in memory to facilitate mapping a destination device to one or more tunnels or channels. For example, router  314  may maintain a mapping of an address associated with a destination device to one or more tunnels or channels. 
         [0045]    The method of  FIG. 4  is illustrative. In some embodiments, some of the steps (or portions thereof) may execute in an order different from what is shown. In some embodiments, some of the steps (or portions thereof) may be optional. In some embodiments, one or more additional steps not shown may be included. 
         [0046]    While some examples have been described above in the context of Internet Protocol (IP) technology and communications, aspects of this disclosure may readily be applied to other forms and types of communication. The various forms of communication may be operative in connection with one or more television networks, computer networks, satellite networks, cellular networks, etc., in any potential combination. 
         [0047]    Although not required, various aspects described herein may be embodied as a method, a system, an apparatus, and/or as a transitory and/or non-transitory computer-readable medium storing executable instructions. Accordingly, those aspects may take the form of an entirely hardware embodiment, an entirely software embodiment, an entirely firmware embodiment, or an embodiment combining software, firmware, and/or hardware. The functionality may be resident in a single computing device or application, or may be distributed across multiple computing devices/platforms or applications, the multiple computing devices/platforms optionally being connected to one another via one or more networks. Moreover, the structural components described herein may be distributed amongst one or more devices, optionally within a common housing or casing. 
         [0048]    Various signals representing content, data, or events as described herein may be transferred between a source and a destination in the form of electromagnetic waves traveling through signal-conducting media such as metal wires, optical fibers, and/or wireless transmission media (e.g., air and/or space). 
         [0049]    The methods and processes described herein may be tied to particular machines or apparatuses. For example, as described herein, a router may interface communications between two or more entities using two or more communication types. More generally, one or more apparatuses may include one or more processors and memory storing instructions that, when executed by the one or more processors, cause the one or more apparatuses to perform the methodological acts and processes described herein. Furthermore, the methodological acts and processes described herein may perform a variety of functions including transforming an article (e.g., messages and/or data in accordance with a first communication type) into a different state or thing (e.g., messages and/or data in accordance with a second communication type). 
         [0050]    Aspects of the disclosure have been described in terms of illustrative embodiments thereof. While illustrative systems and methods as described herein embodying various aspects of the present disclosure are shown, it will be understood by those skilled in the art, that the disclosure is not limited to these embodiments. Modifications may be made by those skilled in the art, particularly in light of the foregoing teachings. For example, each of the features of the aforementioned illustrative examples may be utilized alone or in combination or subcombination with elements of the other examples. For example, any of the above described systems and methods or parts thereof may be combined with the other methods and systems or parts thereof described above in any order. It will also be appreciated and understood that modifications may be made without departing from the true spirit and scope of the present disclosure. The description is thus to be regarded as illustrative instead of restrictive on the present disclosure.