METHOD AND SYSTEM TO ENHANCE COMMUNICATION BETWEEN AN IPV6-ONLY SIP CLIENT AND AN IPV4-ONLY SERVER OR CLIENT
20220094664 · 2022-03-24
Inventors
Cpc classification
H04L65/65
ELECTRICITY
H04L61/4535
ELECTRICITY
H04L2101/686
ELECTRICITY
H04L65/403
ELECTRICITY
International classification
Abstract
Systems, methods, software and apparatus to enhance connectivity to an IPv6-only SIP client and an IPv4-only server and/or client. In one embodiment, a method comprises assigning the IPv6-only client an IPv4-translatable IPv6 Internet Protocol (IP) address. The method further includes determining the IPv6-only client is initiating the SIP communication session with the IPv4-only server or client. The method further includes extracting an IPv4 IP address from the IPv4 translatable IPv6 IP address, and using the extracted IPv4 address in a SIP contact header to register with an IPv4 SIP server and the Via header to get 200 OK responses. The IPv4 address used in the ‘c’ or ‘m’ lines is used to synthesize an IPv4 translatable IPv6 address for directly transferring media between an IPv6-only client and an IPv4-only client.
Claims
1. A method of operating an IPv6-only client to conduct a SIP (Session Initiation Protocol) communication session with an IPv4-only server or client, the method comprising: assigning the IPv6-only client an IPv4-translatable IPv6 Internet Protocol (IP) address; determining the IPv6-only client is initiating the SIP communication session with the IPv4-only server or client; extracting an IPv4 IP address from the IPv4 translatable IPv6 IP address; and providing the extracted IPv4 address in a SIP header of IPv6 packets.
2. The method of claim 1, further comprising: using the extracted IPv4 address in ‘m’ and ‘c’ SDP LINES as a destination Real-time Transport Protocol (RTP) address.
3. The method of claim 1, further comprising: registering with a SIP IPv4-only Proxy using the extracted IPv4 IP address.
4. The method of claim 1, further comprising: using the IPv4 translatable IPv6 IP address for TCP.
5. The method of claim 1, wherein determining the IPv6-only client is initiating the SIP communication session with the IPv4-only server or client comprises performing a DNS query for a SIPv4 Proxy FQDN and receiving AAAA records in response, and wherein the AAAA records start with an IPv6 translation prefix.
6. The method of claim 1, wherein extracting the IPv4 IP address from the IPv4 translatable IPv6 IP address comprises: determining a translation prefix; and extracting the IPv4 IP address from the IPv4 translatable IPv6 IP address using the determined translation prefix.
7. The method of claim 1, wherein using the extracted IPv4 IP address in the SIP header comprises using the extracted IPv4 IP address in a Via header and a contact header.
8. The method of claim 1, further comprising: the IPv6-only client and the IPv4-only server or client transmitting media directly using UDP.
9. An IPv6-only client conducting a SIP (Session Initiation Protocol) communication session with an IPv4 only server or client, the IPv6-only client comprising: a processor configured to determine the SIP communication session is with the IPv4-only server or client; the processor configured to extract an IPv4 IP address from the IPv4-translatable IPv6 IP address; and a communication interface configured to provide the extracted IPv4 IP address in a SIP header of IPv6 packet.
10. The IPv6-only client of claim 9, further comprising: the communication interface configured to use the extracted IPv4 address in ‘m’ and ‘c’ SDP LINES as a destination Real-time Transport Protocol (RTP) address.
11. The IPv6-only client of claim 9, further comprising: the communication interface configured to register with a SIP IPv4-only Proxy using the extracted IPv4 IP address.
12. The IPv6-only client of claim 9, further comprising: the communication interface configured to use the IPv4 translatable IPv6 IP address for TCP.
13. The IPv6-only client of claim 9, wherein the communication interface configured to perform a DNS query and receives AAAA records in response, and wherein the AAAA records start with an IPv6 translation prefix.
14. The IPv6-only client of claim 9, wherein the processor is further configured to: determine a translation prefix; and extract the IPv4 IP address from the IPv4-translatable IPv6 IP address using the determined translation prefix.
15. The IPv6-only client of claim 9, wherein the communication interface is configured to use the extracted IPv4 IP address in a Via header and a contact header.
16. A computer-readable medium comprising processor-executable instructions comprising: instructions configured to conduct a SIP (Session Initiation Protocol) communication session between an IPv6-only client and an IPv4-only server or client; instructions configured to determine the IPv6-only client is initiating the SIP communication session with the IPv4-only server or client; instructions configured to extract an IPv4 IP address from the IPv4-translatable IPv6 IP address; and instructions configured to provide the extracted IPv4 IP address in a SIP header of IPv6 packets.
17. The computer-readable medium of claim 16, further comprising: instructions configured to use the extracted IPv4 address in ‘m’ and ‘c’ SDP LINES as a destination Real-time Transport Protocol (RTP) address.
18. The computer-readable medium of claim 16, further comprising: instructions configured to use the IPv4 translatable IPv6 IP address for TCP
19. The computer-readable medium of claim 16, further comprising: instructions configured to register with a SIP IPv4-only Proxy using the extracted IPv4 IP address.
20. The computer-readable medium of claim 16, further comprising: instructions configured to determine a translation prefix; and instructions configured to extract the IPv4 IP address from the IPv4-translatable IPv6 IP address instructions configured to use the determined translation prefix.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0049] The present disclosure is described in conjunction with the appended figures:
[0050]
[0051]
[0052]
[0053]
[0054]
[0055]
[0056]
[0057]
[0058]
DETAILED DESCRIPTION
[0059] The ensuing description provides embodiments only, and is not intended to limit the scope, applicability, or configuration of the claims. Rather, the ensuing description will provide those skilled in the art with an enabling description for implementing the embodiments. It being understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the appended claims.
[0060] It should be appreciated that embodiments of the present disclosure can be utilized in numerous address selection scenarios.
[0061] Furthermore, while the illustrative embodiments herein show the various components of a system collocated, it is to be appreciated that the various components of the system can be located at distant portions of a distributed network, such as a communication network and/or the Internet, or within a dedicated secure, unsecured, and/or encrypted system. Thus, it should be appreciated that the components of the system can be combined into one or more devices, such as an enterprise server or collocated on a particular node of a distributed network, such as an analog and/or digital communication network. As will be appreciated from the following description, and for reasons of computational efficiency, the components of the system can be arranged at any location within a distributed network without affecting the operation of the system. For example, the various components can be located in a local server, at one or more users' premises, or some combination thereof.
[0062] With reference initially to
[0063]
[0064] The communication networks 210 and 220 may include wired and/or wireless communication technologies. The Internet is an example of a communication networks 210 and 220 that constitutes an Internet Protocol (IP) network consisting of many computers, computing networks, and other communication devices located all over the world. Other examples of communication networks include, without limitation, a standard Plain Old Telephone System (POTS), an Integrated Services Digital Network (ISDN), the Public Switched Telephone Network (PSTN), a LAN, a WAN, a Session Initiation Protocol (SIP) network, a Voice over IP (VoIP) network, a cellular network, an enterprise network, and any other type of packet-switched or circuit-switched network known in the art. In addition, it can be appreciated that the communication networks 210 and 120 need not be limited to any one network type, and instead may be comprised of a number of different networks and/or network types. Moreover, the communication networks 210 and 220 may comprise a number of different communication media such as coaxial cable, copper cable/wire, fiber-optic cable, antennas for transmitting/receiving wireless messages, and combinations thereof. Although, only one network is shown for clarity, in some embodiments, there may be more than one network using the same or different communication protocols.
[0065] In some embodiments, the devices 212 and 222 may include a personal communication device. Examples of suitable devices 212 and 222 include, without limitation, a telephone, a softphone, a cellular phone, a multi-speaker communication device (e.g., conference phone), a video phone, a PC, a laptop, a tablet, a PDA, a smartphone, a thin client, or the like. In various embodiments, the servers 211 and 221 may include server computers, cloud computing platforms, data centers, and any physical or virtual computing machine, as well as any variation or combination thereof.
[0066] The system 200 is shown to include single mode devices 212 and 222, single mode servers 211 and 221, IPv6-only network 210, and IPv4-only network 220. The device 212 and the server 211 are IPv6-only clients connected to an IPv6 network 210. The device 222 and the server 221 are IPv4-only clients connected to an IPv4 network 220. For example, the device 212 may need to communicate with the device 222, or the servers 221, via NAT64 230 and SIP Proxy 240.
[0067]
[0068]
[0069] In another example, illustrated in
[0070]
[0071] With these changes, an IPv6-only phone can provide its IPv4 service address during registration with SIPv4 Proxy 240 (e.g.,
[0072] With reference now to
[0073] As illustrated in
[0074] When communicating with the IPv4-only servers and clients (i.e., SIPv4 Proxy 240) represented with an IPv4-Translatable IPv6 address, an IPv6-only host has to select its IPv4 service address. The IPv4 service address is derived from the IPv4 translatable IPv6 address (using an NAT64 prefix). The IPv4 service address is set into the Via and Contact SIP headers when talking to the IPv4-only SIP Proxy 240. This ensures IPv4-only servers and clients will get an IPv4 service address from IPv6-only host and their messages will be routed to SIIT.
[0075] As illustrated in
[0076] The IPv6 only host sends media, RTP, and RTCP to the NAT64 translator using the IPv4-translatable IPv6 address. For example, the NAT64 may extract the IPv4 destination address from a UDP destination address, by removing the translation prefix part of the destination address, and sends RTP to the IPv4-only host. The IPv6-only phone will synthesize an IPv4 translatable IPv6 address for the RTP destination. When an IPv6-only host sends media, RTP and RTCP, to NAT64 XLAT, using the IPv4-translatable IPV6 address, the NAT64 extracts IPv4 destination address and sends RTP to IPv4-only host. If an INVITE comes from (n4) the IPv4-only host, with an IPv4 address in the SDP ‘m’ and ‘c’ lines, (n6) the IPv6-only host takes the IPv4 address from ‘m’ line, adds the translation prefix, and sends RTPv6 packets to the NAT64, using an IPv4 translatable IPv6 address as the UDP packet destination address (IPv6 service address is a translation prefix+IPv4 address in ‘c’ line). The IPv6-only host (n6) creates an IPv6 service address for media to (n4) the IPv4-only host and an IPv4 service address for registration to SIPv4 proxy.
[0077]
[0078] Address Translation Table 500 comprises the fields/columns “DEVICE,” “NETWORK MODE,” “IPv6 ADDRESS,” “IPv4 ADDRESS,” and “CONTACT.” The columns listed in Address Translation table 500 are for illustrative purposes only, and not all columns are required, additionally, the table may include other columns not listed in this example.
[0079] For example, NAT64 230 may generate the address translation table 500.
[0080]
[0081] The computing system 600 is representative of any computing system or systems with which the various operational architectures, processes, scenarios, and sequences disclosed herein for providing a communication service and selecting media paths may be implemented.
[0082] The computing system 600 is an example of the single mode devices 112, 122, 212, and 222, and the servers 111, 121, 211, and 221, although other examples may exist. The computing system 600 comprises a communication interface 601, a user interface 602, and a processing system 603. The processing system 603 is linked to the communication interface 601 and the user interface 602. The processing system 603 includes a microprocessor and/or processing circuitry 605 and a memory device 606 that stores operating software 607. The computing system 600 may include other well-known components such as a battery and enclosure that are not shown for clarity. The computing system 600 may comprise a server, a user device, a desktop computer, a laptop computer, a tablet computing device, or some other user communication apparatus.
[0083] The communication interface 601 comprises components that communicate over communication links, such as network cards, ports, radio frequency (RF), processing circuitry and software, or some other communication devices. The communication interface 601 may be configured to communicate over metallic, wireless, or optical links. The communication interface 601 may be configured to use SIP, TCP, UDP, Time Division Multiplex (TDM), Internet Protocol (IP), Ethernet, optical networking, wireless protocols, communication signaling, or some other communication format—including combinations thereof. In some implementations, the communication interface 601 is configured to communicate with other end user devices, wherein the communication interface is used to transfer and receive voice communications for the devices.
[0084] The user interface 602 comprises components that interact with a user to receive user inputs and to present media and/or information. The user interface 602 may include a speaker, microphone, buttons, lights, display screen, touch screen, touch pad, scroll wheel, communication port, or some other user input/output apparatus—including combinations thereof. The user interface 602 may be omitted in some examples.
[0085] The processing circuitry 605 comprises a microprocessor and other circuitry that retrieves and executes operating the software 607 from the memory device 606. The memory device 606 may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. The memory device 606 may be implemented as a single storage device, but may also be implemented across multiple storage devices or sub-systems. The memory device 606 may comprise additional elements, such as a controller to read the operating software 607. Examples of storage media include random access memory, read only memory, magnetic disks, optical disks, and flash memory, as well as any combination or variation thereof, or any other type of storage media. In some implementations, the storage media may be a non-transitory storage media. In some instances, at least a portion of the storage media may be transitory. It should be understood that in no case is the storage media a propagated signal.
[0086] The processing circuitry 605 is typically mounted on a circuit board that may also hold the memory device 606 and portions of the communication interface 601 and the user interface 602. The operating software 907 comprises computer programs, firmware, or some other form of machine-readable program instructions. The operating software 607 includes an IPv4 translation module 608 and a detection module 610, although any number of software modules within the application may provide the same operation. The operating software 607 may further include an operating system, utilities, drivers, network interfaces, applications, or some other type of software. When executed by the processing circuitry 605, the operating software 607 directs the processing system 603 to operate the computing system 600 as described herein.
[0087] In at least one implementation, the IPv4 translation module 608, when read and executed by the processing system 603, directs the processing system 603 to extract an IPv4 address from an IPv4 translatable IPv6 address assigned to an IPv6-only device. In some embodiments, the IPv4 translation module 608, when read and executed by the processing system 603, directs the processing system 603 to append an IPv6 prefix to an IPv4 address for IPv4 only to IPv6 only. For example, the IPv6 prefix may be appended to the IPv4 packet header source address and the registered contact IPv4 address. In at least one implementation, the detection module 610, when read and executed by the processing system 603, directs the processing system 603 to determine that the destination of a communication is an IPv4-only device on an IPv4-only network.
[0088] It should also be appreciated that the methods described above may be performed by hardware components or may be embodied in sequences of machine-executable instructions, which may be used to cause a machine, such as a general-purpose or special-purpose processor (GPU or CPU) or logic circuits programmed with the instructions to perform the methods (FPGA). These machine-executable instructions may be stored on one or more machine readable mediums, such as CD-ROMs or other type of optical disks, floppy diskettes, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, flash memory, or other types of machine-readable mediums suitable for storing electronic instructions. Alternatively, the methods may be performed by a combination of hardware and software.
[0089] Specific details were given in the description to provide a thorough understanding of the embodiments. However, it will be understood by one of ordinary skill in the art that the embodiments may be practiced without these specific details. For example, circuits may be shown in block diagrams in order not to obscure the embodiments in unnecessary detail. In other instances, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail in order to avoid obscuring the embodiments.
[0090] Also, it is noted that the embodiments were described as a process which is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process is terminated when its operations are completed but could have additional steps not included in the figure. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination corresponds to a return of the function to the calling function or the main function.
[0091] Furthermore, embodiments may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware or microcode, the program code or code segments to perform the necessary tasks may be stored in a machine-readable medium such as storage medium. A processor(s) may perform the necessary tasks. A code segment may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and/or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc.
[0092] While illustrative embodiments of the disclosure have been described in detail herein, it is to be understood that the inventive concepts may be otherwise variously embodied and employed, and that the appended claims are intended to be construed to include such variations, except as limited by the prior art.