Large-scale real-time multimedia communication technology

文档序号:1398620 发布日期:2020-03-03 浏览:4次 中文

阅读说明:本技术 大规模实时多媒体通信技术 (Large-scale real-time multimedia communication technology ) 是由 刘勇 孙雨润 赵斌 于 2018-12-05 设计创作,主要内容包括:本发明提出了一种使用软件定义网络(SDN)进行实时多媒体通信的方法、设备和系统。该方法包括由处理器接收表示SDN中直接连接的服务节点之间传输容量的路径度量,由处理器基于路径度量确定包括第一个边缘节点和第二个边缘节点之间最佳路径的级联网络拓扑,其中,最佳路径在第一个边缘节点和第二个边缘节点之间的SDN中的数据传输路径中具有最低的传输延迟,并且如确定要在第一个边缘节点和第二个边缘节点之间传输多媒体数据,则在第一个边缘节点和第二个边缘节点之间根据最佳路径来传输多媒体数据。(The invention provides a method, equipment and a system for real-time multimedia communication by using a Software Defined Network (SDN). The method includes receiving, by a processor, a path metric representing transmission capacity between directly connected service nodes in the SDN, determining, by the processor, a tandem network topology including a best path between a first edge node and a second edge node based on the path metric, wherein the best path has a lowest transmission delay in a data transmission path in the SDN between the first edge node and the second edge node, and transmitting multimedia data according to the best path between the first edge node and the second edge node if it is determined that the multimedia data is to be transmitted between the first edge node and the second edge node.)

1. A method for real-time multimedia communication using a Software Defined Network (SDN), comprising:

the processor receives path metrics representing transmission capacity between directly connected service nodes in the SDN;

the processor determines, from the path metrics, a cascaded network topology comprising an optimal path between the first edge node and the second edge node, wherein the optimal path has a lowest transmission delay in a data transmission path between the first edge node and the second edge node in the SDN; and

if it is determined that the multimedia data is to be transmitted between the first edge node and the second edge node, the multimedia data is transmitted according to the optimal path between the first edge node and the second edge node.

2. The method of claim 1, wherein the network interface hardware of the nodes of the SDN is general purpose network interface hardware.

3. The method of claim 1, wherein

The path metrics comprise a load status of at least one directly connected service node and a transmission metric between at least two directly connected service nodes,

the load state comprises at least one of an available throughput and an operational state, an

The transmission metric includes at least one of delay, packet loss rate, network traffic load, and transmission quota.

4. The method of claim 3, further comprising:

the transmission metrics are determined using at least one of multimedia data and test data, wherein the multimedia data and the test data are transmitted between directly connected serving nodes.

5. The method of claim 1, further comprising:

receiving path metrics in an iterative manner; and

the cascaded network topology is updated in an iterative manner based on the path metrics.

6. The method of claim 5, wherein the tandem network topology includes an updated best path between the first edge node and the second edge node, and the updated best path is different from the previous best path.

7. The method of claim 1, further comprising:

the processor selects a first edge node from the first plurality of candidate edge nodes as an edge node for the first terminal in the SDN based on at least one of: a previous best path associated with the first terminal, rules of a network operator associated with the SDN, a geographic location of the first terminal, geographic locations of candidate edge nodes, and path metrics associated with the candidate edge nodes; and is

A connection is established between the first terminal and the first edge node.

8. The method of claim 7, wherein transmitting the multimedia data between the first edge node and the second edge node according to the best path comprises:

if it is determined that the multimedia data is to be sent from the first edge node to the second edge node, sending path data to the first edge node containing a best path, wherein the best path is asymmetric and is to be stored by the first edge node;

attaching path data in a packet header of the multimedia data;

sending the data packet to the next service node of the optimal path; and is

The next service node determines the best path from the path data determined from the data packet.

9. The method of claim 7, further comprising:

verifying that the first terminal is connected to the first edge node, the verifying based on one or more of the following conditions: a permission to connect the first terminal to the SDN, a time limit to connect the first terminal to the SDN, a permission for the first terminal to send multimedia data, and a permission for the first terminal to receive multimedia data.

10. The method of claim 1, wherein transmitting the multimedia data between the first edge node and the second edge node according to the best path comprises:

transmitting a first packet of multimedia data according to a first path, and transmitting a second packet of multimedia data according to a second path, wherein the first packet and the second packet are duplicate packets, the first path and the second path are transmission paths between a first edge node and a second edge node, and the first path is different from the second path.

11. The method of claim 10, further comprising:

receiving at least a portion of the contents of the first packet and at least a portion of the contents of the second packet at the second edge node; and is

The complete data packet is determined by combining at least a portion of the content of the first data packet and at least a portion of the content of the second data packet.

12. A real-time multimedia communication system based on a Software Defined Network (SDN), comprising:

a first service node in the SDN;

a second service node in the SDN directly connected to the first service node; and

a control node in an SDN, comprising a processor and a memory coupled to the processor, the memory configured to store instructions that when executed by the processor are operable to:

receiving a path metric representing a transmission capacity between the first serving node and the second serving node;

determining a cascaded network topology from the path metrics, the cascaded network topology comprising an optimal path from a sender edge node to a plurality of receiver edge nodes, wherein the optimal path between the sender edge node and one of the plurality of receiver edge nodes has a lowest transmission delay in a data transmission path between the sender edge node and the receiver edge node in the SDN; and

if it is determined that the multimedia data is to be transmitted from the sender edge node to the receiver edge node, the multimedia data is transmitted from the sender edge node to the receiver edge node according to the optimal path.

13. The system of claim 12, wherein the network interface hardware of the control node, the first service node, and the second service node is generic network interface hardware.

14. The system of claim 12, wherein determining the path metrics is in an iterative manner, and the cascaded network topology is updated in an iterative manner upon receiving the path metrics.

15. The system of claim 12, wherein the cascaded network topology includes at least two transmission paths between a sender edge node and the receiver edge node.

16. The system of claim 15, wherein the at least two transmission paths include a first path from the sender edge node to the receiver edge node and a second path from the receiver edge node to the sender edge node, and the serving node in the first path is different from the serving node in the second path.

17. The system of claim 12, wherein the system comprises a plurality of communication channels in an SDN, and wherein

Each communication channel includes a set of service nodes in the SDN, an

At least one of the service nodes in the set of service nodes is associated with a different communication channel.

18. An apparatus of a Software Defined Network (SDN) for real-time multimedia communication, comprising:

a processor, and

a memory coupled to the processor, the memory configured to store instructions that when executed by the processor are operable to:

receiving path metrics associated with a first service node in the SDN and a second service node in the SDN in a periodic manner, wherein the path metrics include at least one of: a load status of at least one of the first service node and the second service node, and a transmission metric between the first service node and the second service node; and is

Upon receiving the path metrics, a cascaded network topology is updated that includes an optimal path for transmitting multimedia data from the first edge node to the second edge node.

19. The apparatus of claim 18, wherein the memory further contains instructions that when executed by the processor are operable to:

blocking a communication channel of the SDN based on a predetermined rule, wherein the communication channel comprises at least one of a first edge node and a second edge node.

20. The apparatus of claim 18, wherein the memory further contains instructions that when executed by the processor are operable to:

if it has been determined that the number of terminals in the communication channel exceeds the threshold number, a transmission mode for transmitting the multimedia data is decided for the communication channel, wherein the transmission mode comprises at least one of a multicast mode, a broadcast mode and a unicast mode.

Technical Field

The invention relates to a multimedia communication technology, in particular to the field of large-scale real-time video communication.

Background

Real-time multimedia (e.g., audio or video) communication has a wide range of applications, such as conferencing, live broadcasting, or web seminars. Multimedia streams may be generated and compressed into bitstreams using end-user terminals equipped with audio/video (a/V) devices, such as microphones and/or cameras. The bit stream may be packetized and transmitted in packets to a target user over a network, such as the internet. Upon receiving the data packets, the end-user may decompress, render, and display the multimedia bitstream (e.g., using a speaker or display) to the target user.

In the case of multi-user communications, multiple end-user ports may be used to simultaneously transmit and receive multimedia streams for interactive communications. As the size of users increases, the demands on the quality and performance of networks and systems supporting such large-scale multimedia communications become higher.

Disclosure of Invention

Methods, devices and systems for real-time video communication are set forth below.

In one aspect, a method for real-time multimedia communication using a Software Defined Network (SDN) is disclosed herein. The method includes receiving, by a processor, a path metric representing transmission capacity between directly connected service nodes in the SDN, determining, by the processor, a tandem network topology including a best path between a first edge node and a second edge node based on the path metric, wherein the best path has a lowest transmission delay in a data transmission path in the SDN between the first edge node and the second edge node, and transmitting, by the processor, multimedia data between the first edge node and the second edge node according to the best path if it is determined that the multimedia data is to be transmitted between the first edge node and the second edge node.

In another aspect, a system for real-time multimedia communication using SDN is also disclosed herein. The system includes a first service node in the SDN, a second service node in the SDN directly connected to the first service node, and a control node in the SDN. The control node includes a processor and a memory coupled to the processor. The memory is configured to store instructions that, when executed by the processor, are operable to receive a path metric indicative of a transmission capacity between a first serving node and a second serving node, determine a tandem network topology based on the path metric, the tandem network topology comprising an optimal path from a sender edge node to a plurality of receiver edge nodes, wherein the optimal path has a lowest transmission delay in a data transmission path between the first edge node and the second edge node in the SDN, and transmit multimedia data according to the optimal path between the first edge node and the second edge node if it is determined that the multimedia data is to be transmitted between the first edge node and the second edge node.

In yet another aspect, an apparatus for SDN for real-time multimedia communication is also disclosed herein. The apparatus includes a processor and a memory coupled to the processor. The memory is configured to store instructions that, when executed by the processor, are operable to receive path metrics associated with a first one of the service nodes in the SDN and a second one of the service nodes in the SDN in a periodic manner, wherein the path metrics include at least one of: a load status of at least one of the first service node and the second service node, and a transmission metric between the first service node and the second service node, and upon receiving the path metric, updating a tandem network topology comprising an optimal path for transmitting multimedia data between the first edge node and the second edge node.

Drawings

The invention will be better understood when reading the following detailed description with reference to the accompanying drawings. It is emphasized that, according to common practice, the various features of the drawing are not to scale. On the contrary, the dimensions of the various features are arbitrarily expanded or reduced for clarity.

Fig. 1 is a diagram depicting an example of a system for real-time video communication in accordance with an embodiment of the invention.

Figure 2 is a schematic diagram of a Software Defined Network (SDN) for real-time video communication, drawn in accordance with an embodiment of the present invention.

Fig. 3 is a schematic diagram of a cascaded network topology for real-time video communication, according to an embodiment of the present invention.

Fig. 4 is a flowchart depicting an example process for real-time video communication in accordance with an embodiment of the present invention.

Fig. 5 is a flowchart illustrating an example process for updating a tandem network topology according to an embodiment of the present invention.

Fig. 6 is a flowchart illustrating an example of a process for multimedia data transmission according to an embodiment of the present invention.

Fig. 7 is a flowchart illustrating an example process for authenticating a terminal in an SDN according to an embodiment of the present invention.

Fig. 8 is a diagram depicting an example of an apparatus for real-time video communication in accordance with an embodiment of the invention.

Fig. 9 is a drawing of another example of an apparatus for real-time video communication, according to an embodiment of the present invention.

Fig. 10 is a diagram of an example communication channel for real-time video communication, plotted according to an embodiment of the invention.

Detailed Description

Large-scale real-time multimedia communication in a network is quite challenging. In a large-scale real-time multimedia communication scenario, there may be a very large number of users (e.g., over 100,000) participating in the communication. Users may also be located throughout the world at various locations. In interactive multimedia communications (e.g., large-scale concerts, on-line lectures, talk show programs, etc.), the low latency requirements for multimedia transmission may be very demanding (e.g., requiring delays below 400 milliseconds).

For example, in a large scale online educational lecture held across cities, one audience may be required to participate in a quiz session with a set of performing guests, while all other audiences need to hear and participate in the discussion at any time. In live talk show programs played by paying viewers on the internet, comedians may wish to control the point in time to throw laughter out of all viewers at the same time, to respond to laughter in time, and to engage in impromptu interactions with the viewers under appropriate circumstances. Participants from different countries are also subject to different network conditions at a whole annual meeting held by a multinational company, and they all wish to be able to meet with other participants to get an immersive experience, whether speaking, watching or listening. All of these and other similar application scenarios require low-latency interactive multimedia communications.

Various challenges may be encountered in providing technical solutions for real-time interactive multimedia communication. For example, a conferencing mode may be provided for multimedia communication that may allow low-latency two-way interaction of participants, but the maximum number of simultaneous participants is very limited, only applicable in a small scale and not suitable for large scenes. As another example, in multimedia communications a broadcast mode may be provided which may allow a large number of simultaneous participants, but which typically only supports one-way communications and may have a high latency.

Systems, devices, and methods are disclosed herein for providing technical solutions for large-scale, low-latency, interactive, multi-media communication using a Software Defined Network (SDN). SDN is deployed at the application layer of a network and thus can be overlaid on top of the infrastructure of an existing public network, such as the internet. SDNs may be implemented as software modules installed in interconnected general-purpose computers, such as computer servers. SDNs may also be deployed on two types of computers (hereinafter "nodes"), a service node and a control node, respectively. The service node and the control node are interconnected with each other. The serving node is configured to receive the multimedia data transmitted from the user equipment, route (i.e., forward) the multimedia data, and transmit the multimedia data to the target user equipment. The control node is used for controlling data transmission in the SDN, such as determining an optimal transmission path for data transmission. According to an embodiment of the invention, a control node of the SDN may provide a distributed control service. That is, the control services are not centralized (e.g., implemented by a single node or a single group of nodes). Multiple control nodes may be distributed at multiple geographic locations around the world to provide control services for the SDN, and the number, location, or configuration of any control node may be modified, changed, added, or removed in any manner at any time in providing control services.

In SDN, parameters representing transmission capacity may be set periodically between service nodes. The parameters may be sent to a control node from which the optimal transmission path may be dynamically determined. When data transmission is performed, the control node may dynamically configure a cascaded network topology for transmitting multimedia data according to actual network traffic requirements. Furthermore, SDN may support multi-channel communication, so multiple events may be organized simultaneously using SDN and users may be grouped into different channels according to different events, without interfering with each other.

SDN nodes may be deployed anywhere to connect to the internet. In some implementations, SDN nodes may be deployed globally to support ring-and-ball scale real-time multimedia communications. The transmission of data packets between service nodes may be through the use of SDN connections, non-SDN connections (such as direct internet connections between service nodes), or both. The transmission of the data packets may be a bi-directional transmission between the serving nodes.

In some implementations, the SDN may be implemented only as a software module. That is, no dedicated or specific hardware is required to build the SDN, and no dedicated or specific network or network service provider is required to connect the SDN. For example, the software modules may be one or more Software Development Kits (SDKs). SDNs may be built and deployed in the application layer of any publicly accessible network, such as the internet. Therefore, the SDN only needs simple hardware for construction, and is convenient to configure, short in time consumption and low in cost. According to embodiments of the invention, SDN may support up to hundreds of thousands of users for interactive real-time multimedia communications, and the delay may be maintained as low as hundreds of milliseconds (ms). Typically the delay may be between 400-800 milliseconds.

In some implementations, SDNs may also be implemented as software and hardware modules. For example, some software modules may be implemented by specific hardware modules, such as Intellectual Property (IP) cores, Application Specific Integrated Circuits (ASICs), Field Programmable Gate Arrays (FPGAs), programmable logic arrays, optical processors, programmable logic controllers, microcode, microcontrollers, servers, microprocessors, digital signal processors, or any other suitable circuit device. Software modules of an SDN may be built and deployed in the application layer of any publicly accessible network, such as the internet. A hardware module of the SDN may interface with a software module to assist in implementing the functionality of the software module. By adopting the method, the hot spot speed of the SDN application can be increased through the hardware module, so that the performance of the SDN system is improved.

Fig. 1 is an exemplary diagram of a system 100 for real-time video communication, rendered in accordance with an embodiment of the present invention. As shown in FIG. 1, system 100 may include multiple devices and networks, such as device 102, device 104, and network 106. The device may be any configuration of one or more computers, such as a microcomputer, mainframe computer, supercomputer, general purpose computer, special purpose or special purpose computer, integrated computer, database computer, remote server computer, personal computer, laptop, tablet, cell phone, Personal Data Assistant (PDA), wearable computing device, etc., or a computing service (e.g., web hosting or cloud service) provided by a computing service provider. In some implementations, the computing devices may be implemented in the form of groups of computers, each of which may be located in different geographic locations and communicate with each other over a network or the like. While certain operations may be performed by multiple computers in common, in some implementations, different computers may be assigned different operations. In some implementations, the system 100 can be implemented using a general purpose computer or processor with a computer program that, when executed, performs the corresponding methods, algorithms, and/or instructions described herein.

The device 102 may include a hardware configuration of a processor 108, memory 110, input output devices (I/O)112, and a network interface 114. Processor 108 may be any type of device or devices capable of operating or processing information. In some implementations, the processor 108 may include a central processing unit (e.g., a central processing unit, i.e., CPU). In some implementations, the processor 108 may also include a graphics processor (e.g., a graphics processing unit, i.e., a GPU). Although only a single processor is illustrated herein, multiple processors may be used by device 102. For example, processor 108 may be distributed across multiple machines or devices (each with one or more processors), which may be directly coupled or interconnected via a network (e.g., a local area network). Memory 110 may be any transitory or non-transitory device or devices capable of storing code and data that is accessible by a processor (via, for example, a bus). The memory 110 described herein may be any combination of random access memory devices (RAM), read only memory devices (ROM), optical or magnetic disks, hard drives, solid state drives, flash drives, Secure Digital (SD) cards, memory sticks, Compact Flash (CF) cards, or any suitable type of storage device. In some implementations, the memory 110 may be distributed across multiple machines or devices, such as a network-based memory or a cloud-based memory. The memory 110 may store data (not shown), which may be any data for processing (e.g., audio, video, or multimedia streams), an operating system (not shown), and applications (not shown), which may be programs that allow the processor 108 to execute instructions to generate control signals that may be used to perform the functions described in the methods described below.

In some implementations, the device 102 may also include a secondary (e.g., external) storage device (not shown). If the auxiliary storage device is used, additional storage space can be provided when the processing requirement is high. The secondary storage device may be a storage device in the form of any suitable non-transitory computer readable medium, such as a memory card, hard drive, solid state drive, flash drive, or optical drive, among others. In addition, the secondary storage device may be a component of the device 102 or a shared device accessed over a network. In some implementations, the application programs in memory 110 may be stored in whole or in part in a secondary storage device and loaded into memory 110 as needed for processing.

I/O device 112 may be implemented in a number of ways, such as it may be a display coupled to device 102 and configured to display an image of graphical data. The I/O device 112 may be any device that transmits a visual, audible, or tactile signal to a user, such as a display, a touch sensitive device (e.g., a touch screen), a speaker, a headset, a Light Emitting Diode (LED) indicator light, or a vibrating motor, among others. The display device may be a Liquid Crystal Display (LCD), Cathode Ray Tube (CRT), or any other output device capable of providing a visual output to an individual. I/O device 112 may also be any input device that receives visual, audible, or tactile signals from a user, such as a keyboard, a numeric keypad, a mouse, a trackball, a touch-sensitive device (such as a touch screen), a sensor, a microphone, a camera, or a gesture-sensitive input device. In some cases, an output device may also serve as an input device, such as a touch screen display that receives touch input.

The network interface 114 may be used to communicate signals and/or data with another device (e.g., via the network 106). For example, the network interface 114 may include wired means for transmitting signals or data from the device 102 to another device. As another example, the network interface 114 may include a wireless transmitter or receiver compatible with a wireless transmission protocol. The communication device 114 may be implemented in a number of ways, such as a transponder or transceiver device, a modem, a router, a gateway, a circuit, a system on chip (SoC), a wired (e.g., RJ-45) network adapter, a wireless (e.g., Wi-Fi) network adapter, a bluetooth adapter, an infrared adapter, a Near Field Communication (NFC) adapter, a cellular network antenna, or any combination of any suitable types of devices that may provide functionality for communicating with the network 106. In some implementations, the network interface 114 may be a generic or general network interface that is not specific to a particular network and does not conform to a specific (e.g., closed source, proprietary, non-open, or non-public) network protocol. For example, the network interface may be a general-purpose network interface that supports the transmission control protocol/internet protocol (TCP/IP) communication protocol suite (or "suite"). As another example, the network interface may be a general-purpose network interface that supports only the TCP/IP suite of communication protocols. It should be noted that the network interface 114 may be implemented in various ways and is not limited to the above examples.

Device 104, like device 102, is equipped with a processor 116, memory 118, I/O devices 120, and a network interface 122. The implementation of elements 116 and 122 of device 104 may be similar to 108 and 114, respectively, of device 102. Devices 102 and 104 may serve as service nodes for the SDN. Devices 102 and 104 may also function as control nodes for the SDN. Devices 102 and 104 may also function as end-user terminal computers (or simply "terminals") connected to the SDN. Device 102 may communicate with device 104 over network 106. Devices 102 and 104 may also communicate with other devices connected to network 106. It should be noted that the functions of the various parts of the devices 102 and 104 need not be implemented in the same manner.

Network 106 may be any combination of any suitable type of physical or logical network, such as a wireless network, a wired network, a Local Area Network (LAN), a Wide Area Network (WAN), a Virtual Private Network (VPN), a cellular data network, a bluetooth network, an infrared connection, an NFC connection, or the internet, among others.

The network 106 may include a plurality of server computers (or simply "servers"). The servers can be connected with each other. A server may also be connected to the terminal. A server directly connected to a terminal may be referred to as an "edge server". In the present disclosure, the phrase "directly connected" refers to a connection being established between a first node and a second node in a network without passing through intermediate nodes, routing nodes, or forwarding nodes. That is, the direct connection can send and receive data between the first node and the second node without assistance or adjustment by any other node in the network. It should be noted that "direct connection" is at the application level of the network, while establishing a "direct connection" does not exclude the use of auxiliary or regulating devices or equipment, such as gateways, routers, switches or any other routing or forwarding devices or devices, which are not nodes at the application level in the network. As shown in fig. 1, if devices 102 and 104 are terminals, server 124 is an edge server that directly connects device 102 to network 106 (e.g., the internet), and server 126 is an edge server that directly connects device 104 to network 106. The network 106 may include a plurality of edge servers and non-edge servers. It should be noted that the edge servers may be directly or indirectly connected to each other in the network 106. For example, the servers 124 and 126 may be indirectly connected to each other (i.e., at least one third party server is connected between the servers 124 and 126 in the network 106). It should also be noted that multiple terminals may be connected to the same edge server. For example, server 124 may be an edge server that is directly connected to device 102 and device 104.

Servers 124 and 126 may be any type of general purpose computer (e.g., server computers) that include similar components as devices 102 and 104. For example, servers 124 and 126 may include processors (e.g., similar to processors 108 and 116), memories (e.g., similar to memories 110 and 118), I/O devices (e.g., similar to I/O devices 112 and 120), and network interfaces (e.g., similar to network interfaces 114 and 122).

In some implementations, a Software Defined Network (SDN) may be implemented at an application layer of the network 106. Servers 124 and 126 may be considered nodes in the SDN. See description related to figure 2 for SDN details.

It should be noted that the components or assemblies of devices 102 and 104 for real-time multimedia communication are not limited to those elements shown in fig. 1. The devices 102 and 104 for real-time multimedia communication may include more or fewer components, hardware, or software modules for implementing various functions of real-time multimedia communication without departing from the scope of the present disclosure.

Fig. 2 is a schematic diagram of a Software Defined Network (SDN)200 for real-time video communication, rendered in accordance with an embodiment of the present disclosure. SDN200 is implemented at the application layer of a computer network, such as network 106. For example, in the TCP/IP model, a computer communications network may be divided into multiple layers. For example, the layers may include a physical layer, a network layer, a transport layer, and an application layer, respectively, in a hierarchical order from bottom to top. Each of the above layers serves the layer above it and is served by the layer below it. The application layer is a TCP/IP layer that interacts directly with the end-user through the software application. SDN200 may be implemented in network 106 as an application layer software module.

In some implementations, SDN200 may be implemented asSoftware installed on nodes of network 106, such as servers 124 and 126. In some implementations, the hardware distributed among the various nodes in SDN200 need not be dedicated or specific hardware (dedicated or proprietary network access point hardware). For example, a node may be equipped withAny x86 or x64 computer of an Operating System (OS), and the network interface of a node that is an access point of SDN200 may be any general purpose network interface hardware (such as an RJ-45 ethernet adapter, a wired or wireless router, a Wi-Fi communication adapter, or any general purpose network interface hardware). For example, software modules of SDN200 may be installed in multiple general purpose servers, and the servers may be shipped to different server hosting locations (e.g., data centers) to deploy SDN 200. For example, the servers may be shipped to different countries to build a global real-time multimedia communication network.

Furthermore, the network 106 building the SDN200 may be a public network (e.g., the internet). In some implementations, nodes of the SDN can communicate over both the SDN200 and the public network. In other words, data transmissions of a portion of SDN200 may be routed through a common network, rather than entirely within the SDN. In some implementations, all nodes in SDN200 are capable of data transmission through SDN200 and a public network simultaneously.

By implementing SDN200 as a software module on a general purpose computer on a public network, deploying SDN200 may be simple, fast, efficient, and low cost to a user (e.g., building SDNs without investing costs in dedicated hardware or proprietary network services).

As shown in fig. 2, SDN200 includes two types of nodes: a service node and a control node. The service nodes (e.g., service node 204 and 218) are used for receiving, forwarding and transmitting multimedia data from different user terminals. Control nodes, such as control node 202, are used to control network traffic. The service node and the control node may be interconnected with each other, which is not fully shown in fig. 2. For example, in an SDN with N nodes, there may be at least N × (N-1) direct connections of the above nodes. That is, any two nodes in the SDN may be directly interconnected. The connection between the nodes may be bidirectional. The connection between the nodes may also be unidirectional. The connections between nodes may also be sometimes bidirectional and sometimes unidirectional. It should be noted that the direction of network traffic between nodes of the SDN is not limited to the examples described in this disclosure.

In fig. 2, connections between nodes of the SDN200 may be represented by connecting lines between service nodes and control nodes. Solid lines with double arrows may represent bidirectional interconnections between service nodes. In some implementations, the bidirectional interconnection between serving nodes may also be used to send data to determine transmission capacity, as described in detail in relation to fig. 3-10. The dashed line with double arrows then represents the bi-directional connection between the serving node and the control node. The control node may receive data for determining the transmission capacity from the serving node and may send the best path to the serving node. In this disclosure, the term "transmission capacity" refers to the capacity or capability of an in-use (or "used") or potential (or "reserved use") network for data transmission. The transmission capacity of a node refers to the node's useful or potential capacity or ability to forward (e.g., receive and retransmit) network data. The transmission capacity between the first node and the second node means at least one of: the first node transmits network data from the first node to the second node's active or potential capacity or capability, and the second node transmits network data from the second node to the first node's active or potential capacity or capability. It should be noted that any number of any type of nodes may be deployed and interconnections between nodes may be arbitrarily configured when implementing SDN200 and are not limited to the example shown in fig. 2.

Service nodes can be subdivided into two types: an edge service node (or simply "edge node") and a routing service node (or simply "routing node"). The edge nodes are directly connected to end-user terminals (or simply "terminals"), such as terminal 220 and 226. The terminal may comprise any end-user device capable of multimedia communication, such as a smartphone, tablet, camera, display, laptop, desktop, workstation computer, or multimedia I/O equipped device. In fig. 2, the service node 206 is an edge node of the terminals 220 and 222. Serving node 210 is an edge node of terminal 224. The service node 218 is an edge node of the terminal 226. The connections between the terminals 220 and 226 and their respective edge nodes are represented by solid single or double arrows. The direction of the arrow indicates the direction of the multimedia data. The solid double-headed arrows, e.g., terminals 220 and 224, indicate that they have two-way communication with serving nodes 206 and 210, respectively. The solid single-headed arrow for terminal 222 indicates that it is transmitting data to serving node 206. And the solid single-headed arrow of terminal 226 indicates that it is receiving data from serving node 218.

The routing node is not directly connected to any terminal. The routing nodes participate in forwarding data, such as service nodes 204, 208, and 212, 216. In some implementations, the serving node may switch between the edge node and the routing node at different times or act as both nodes. For example, serving node 206 is an edge node of terminal 220 for a first transmission path from terminal 222 to terminal 224, where transmission is via serving node 206 and serving node 210. Serving node 206 is a routing node for a second transmission path from terminal 224 to terminal 226, wherein transmission occurs via serving node 210, serving node 206, serving node 204, and serving node 218. When both the first and second transmission paths are used simultaneously, then the serving node 206 may be both an edge node and a routing node.

In some implementations, edge nodes of SDN200 may be connected to Autonomous Systems (ASs) operated by Internet Service Providers (ISPs). The topology of SDN200 may be divided into hierarchical groups based on the geographic locations of the service nodes, ASs, and ISPs. Data transmission for SDN200 can be divided into two types: inter-node traffic (i.e., network traffic between serving nodes) and end-node traffic (i.e., network traffic between edge nodes and terminals). Various strategies may be employed to optimize transmissions between nodes and between terminals and nodes, as described in detail in U.S. patent application serial No. 15/052,810 filed 24.2.2016, the entire contents of which are incorporated herein by reference.

In some implementations, SDN based systems may be used for real-time multimedia communications. The system may be constructed based on an SDN (e.g., SDN 200) and include a plurality of service nodes (e.g., service nodes 204 and 218) and at least one control node (e.g., control node 202). The service nodes may include edge nodes (e.g., service nodes 206, 210, and 218) and routing nodes (e.g., service nodes 204, 208, and 212) 216. Any service node in the SDN may switch between the edge node and the routing node.

A parameter indicative of transmission capacity between the serving nodes may be determined and transmitted to the control node to determine an optimal data transmission path (simply referred to as "optimal path") between the serving nodes. Hereinafter, this parameter may be referred to as a "path metric". The path metrics may be monitored iteratively (e.g., periodically or aperiodically). In some implementations, the path metric may be repeatedly determined between any two directly connected service nodes of the SDN at certain time intervals. In some implementations, the time interval may be constant (e.g., tens of milliseconds). In some implementations, the time interval may also be dynamically adjusted, such as according to the transmission load of the SDN (e.g., the time interval increases as the transmission load decreases and vice versa).

In some implementations, the path metrics may include a load state of the serving node and a transmission metric (e.g., for unidirectional or bidirectional transmission) between the serving node and another serving node. The load status may include one or more parameters indicative of the service node load. For example, the load state may include any combination of any number of parameters, such as the available throughput of the serving node and the operational state of the serving node. The transmission metrics may include statistical parameters or event-based parameters representing transmission capacity between serving nodes. For example, the transmission metrics may include any combination of any number of parameters, such as delay time, packet loss rate, network traffic load, and transmission quota.

The path metric may be determined between any two serving nodes in an active mode, a passive mode, or a combination thereof. In active mode, any two directly connected service nodes on the SDN may send and receive test packets (e.g., dummy packets containing placeholder data) to each other using, for example, a routing protocol. By performing calculations using received test packets, a transmission metric (such as delay or packet loss rate) may be determined. For example, the packet loss rate may be determined by dividing the total size of the received test packets by the total size of the test packets contained in their packet headers. In the passive mode, test packets are not used, but actual user packets are transmitted between the service nodes. For two directly connected service nodes, the transmission metric may be determined by performing a calculation on the user data packets. It should be noted that in bi-directional communication, a first transmission metric associated with a transmission from a first serving node to a second serving node may be different from a second transmission metric associated with a transmission from the second serving node to the first serving node. That is, the first transmission metric and the second transmission metric may be determined separately and independently. This transmission metric may be referred to as "asymmetry" of the bi-directional communication. Otherwise, if the first transmission metric is set to be the same as the second transmission metric (e.g., only the first transmission metric is monitored), the transmission metrics may be referred to as "symmetric". By determining the path metrics, the quality of bidirectional communication between any two directly connected service nodes in the SDN can be monitored and updated in real time.

In some implementations, an inter-service node transport metric may be determined that establishes a connection in the SDN, referred to as an "internal transport metric. In some implementations, a transmission metric (e.g., a direct internet connection) between non-SDN connected service nodes may also be determined, which is referred to as an "external transmission metric. It should be noted that any combination of any number of internal and external transmission metrics may be employed to determine the path metric. Internal and external transmission metrics may be used to decide whether to select whether to transmit multimedia data between two service nodes over a non-SDN connection or an SDN connection. In other words, non-SDN connections may be used as candidate routing options for SDN connections and vice versa.

The determined path metrics may be reported to the control node. For example, each time a serving node determines a transmission metric (e.g., an asymmetric transmission metric) between the node and another serving node, the serving node may immediately transmit the path metric to the control node. And the load status of the serving node may be repeatedly monitored and sent to the control node (e.g., along with the transmission metrics). The control node may determine the best path between the serving nodes based on the path metrics. In some implementations, if the path metric is measured and sent to the control node based on a certain period of time (e.g., a period of tens of milliseconds), the best path may also be determined based on the same period of time. The best path may be further determined based on a priori knowledge, such as a previously determined best path. In some implementations, the best path may be determined between any two service nodes of the SDN. In some implementations, multiple best paths may also be determined between any two service nodes of the SDN.

In some implementations, the best path may be symmetric (as in one-way communications). That is, the best path from the first edge node to the second edge node is the reverse path of the best path from the second edge node to the first edge node. In some implementations, the paths may also be asymmetric (as in two-way communications). That is, the best path from the first edge node to the second edge node is not the reverse path of the best path from the second edge node to the first edge node. If the determined transmission path metric is symmetric, the best path may also be symmetric. If the determined transmission path metric is asymmetric, the best path may also be asymmetric.

For example, one SDN may support bi-directional communication and include N edge nodes, where N is a positive integer. An asymmetric path metric may be determined between any two directly connected service nodes. Based on the path metrics, at least N x (N-1) best paths may be determined. In some implementations, K asymmetric best paths may be determined for any two serving nodes, where K is a positive integer. The K best paths may have different delay values. In some implementations, the K best paths may be ranked (e.g., ascending) according to delay values, and may be candidate paths for each other. For example, when the lowest delay path of the K best paths for data transmission is unavailable (e.g., has been disconnected or its delay has increased dramatically), then the path with the second lowest delay may be switched to continue data transmission.

After determining the best path, the control node may synchronize path data to the serving node, including information about the best path. In some implementations, the path data may be in the form of a routing table. In some implementations, the path data may be synchronized with all service nodes of the SDN. The synchronization of the path data may be achieved in a propagated manner.

As shown in fig. 2, control node 202 may send path data (e.g., path data stored in a routing table) to all edge nodes of SDN200, including service node 210, which is an edge node for terminal 224. In the data transmission from the terminal 224 to the terminal 220, the best path can be determined as the service node 210 and 208 and 206. In the present disclosure, the node name is connected with a hyphen along the path direction for indicating the transmission path. For example, the transmission path from node A to nodes B, C and D may be denoted as "A-B-C-D". When serving node 210 receives user data (e.g., multimedia data) from terminal 224, the path data may be appended to the header of the user data packet. The user data may be sent to serving node 208, which is used as a routing node. The service node 208 may obtain path data from the header of the user data packet and extract the optimal path 210 and 208 by processing the path data (e.g., reading from a routing table) along with 206. Based on the best path, serving node 208 may forward the user data to the next serving node of the best path, where the user data also includes path data in the packet header. The next serving node may repeat the same operations to obtain the best path and forward the user data until the edge node of terminal 224, serving node 206 in this example, is reached. Serving node 206 may then transmit the user data to terminal 224.

In some embodiments of the invention, the control node may select the service node as an edge node to connect a terminal to the SDN. The connection between the terminal and the edge node is a non-SDN connection (e.g., an internet connection). By receiving the path metrics, the control node may obtain real-time performance statistics of the SDN. An edge node may be selected from the one or more candidate edge nodes based on one or more of the following considerations: a previous best path associated with the terminal (e.g., an edge node taken by the terminal in the previous best path may be a candidate edge node for the current round), rules of a network operator associated with the SDN (e.g., the rules require all terminals to connect to a particular service node), a geographic location of the candidate terminal, a geographic location of the candidate service node, and path metrics associated with the candidate edge node. It should be noted that the consideration is not limited to the above example, but may be any factor related to the transmission capacity. The control node may assign different priorities to the considerations to determine the edge nodes.

As shown in fig. 2, when a terminal 226 is connected to the SDN200 and is ready to send multimedia data to the terminal 220, the service nodes 212 and 218 may all be candidate edge nodes, and they may have different strengths in consideration. The serving node 212 to the terminal 226 may have the lowest connection delay. The serving node 214 may have been used as an edge node for the terminal 226 in the previous best path. Service node 216 may have the smallest current transmission load among service nodes 212-218. The service node 218 may have the shortest geographic distance to the terminal 226. The serving node 218 may be selected as its edge node when the control node sets the geographical distance between the terminal 226 and the serving node to the highest priority. When the control node sets the serving node's transmission load to the highest priority, serving node 216 may be selected as its edge node. When the control node sets the previously used edge node to the highest priority, serving node 214 may be selected as its edge node. When the control node sets the connection delay to the highest priority, the serving node 212 may be selected as its edge node. It should be noted that the control node may also determine the edge node by comprehensively considering the priority of the candidate edge node. For example, each consideration factor may be assigned a weight to represent its priority. For each consideration factor, the control node may score the candidate edge nodes to indicate how strong or weak it is in the consideration factor. For each candidate edge node, a different score may be assigned to each of the plurality of consideration factors, and an overall score may be determined from the assigned plurality of scores, such as by computing a weighted sum between the plurality of scores and the weights of the respective consideration factors. The control node may select an edge node based on some rule based on the total score of the candidate edge nodes (e.g., select the candidate edge node with the highest or lowest total score).

In some implementations, after selecting an edge node for a terminal, the terminal may be authenticated prior to connecting to the SDN. For example, the configurable edge node authenticates the terminal. The verification may be based on one or more of the following conditions: a permission to connect the terminal to the SDN, a time limit to connect the terminal to the SDN, a permission for the terminal to send data, and a permission for the terminal to receive data. For example, a user may be charged a fee to use the SDN. An administrator of the SDN may assign access rights (such as a username and password) to a paying user. Access rights may include granting various permissions for a paying user to use SDN. For example, the permissions may restrict a user to be able to send data only, receive data only, use SDN for only a limited time, or use SDN freely without any restrictions. Different fees may be charged for different access rights. A request for unauthorized permission of a paying user to use the SDN may be denied. Unauthorized users (such as non-paying users or malicious attackers) may also be prevented from connecting to the SDN.

In some implementations, the control node may also authenticate the connected terminal based on the content of the user data. For example, the service node may sample the transmitted multimedia data, such as by taking a snapshot of the video stream or taking a sample of the audio stream. The sampled data may be periodically sent to a control node, which may detect (e.g., by using artificial intelligence algorithms) whether illegal, inappropriate, or rule-violating content is present in the multimedia data. If such content is detected, the control node may terminate the access rights of the offending terminal.

In some embodiments of the present invention, the control node may automatically adjust the routing mode of multimedia data transmission between the serving nodes according to the channel conditions. Users of SDN200 may send and receive multimedia data in different data communication channels, such as duplex data channels. Communication events such as concerts, meetings or live programmes may use channels for users to exchange multimedia data between each other. Users in the same channel participate in the same event. In some cases (e.g., events where a large number of users are participating), multiple channels may be available for the same event. Each channel of the SDN200 may be assigned a unique identifier, referred to as a "channel ID," by the control node. User data associated with the same channel ID may be aggregated for transmission. The serving node may also be simultaneously used for different frequency channels.

As shown in FIG. 2, a user of terminal 220 and 226 may participate in an online education session for which a duplex channel having a unique channel ID may be established. Terminals 220 and 222 are connected to the same edge node (i.e., serving node 206), and user data sent and received by terminals 220 and 222 may be aggregated by serving node 206 for transmission.

As another example, in FIG. 2 the users of terminals 220 and 224 may be participating in a meeting, while the users of terminals 222 and 226 may be participating in a live concert. Channels may be established for the two events separately and have respective unique channel IDs. Terminals 220 and 222 are connected to the same edge node (i.e., serving node 206), but the user data sent and received by terminals 220 and 222 are not aggregated by serving node 206 for transmission.

In some implementations, the control node may switch the routing mode of the serving node in the same channel between unicast mode, multicast mode, and broadcast mode. The control node may synchronize information participating in the terminal in the channel with the serving node in the channel. For example, the SDN200 may use multicast mode as a default transport mode. The multicast mode may automatically switch to the unicast mode when only two terminals are included in the channel (i.e. the communication is one-to-one). The multicast mode may automatically switch to the broadcast mode when only one data transmitting terminal is included in the channel (i.e. the communication is unidirectional and one-to-many). In other words, the unicast mode and the broadcast mode can be considered as a simplified case of the multicast mode.

In some implementations, a cascaded network topology may be employed for data transmission in multicast mode when the amount of multimedia data exchanged in a channel exceeds a threshold, or when the number of users in a channel exceeds a threshold. The tandem network topology is a tree-like network topology used to represent the interconnections between service nodes. The tandem network topology may be dynamically configured according to changes in SDN transmission capacity. By using a cascaded network topology, excessive or redundant data forwarding may be reduced or avoided in an SDN.

Fig. 3 is an exemplary diagram of a cascaded network topology 300 for real-time video communication, as depicted in accordance with an embodiment of the present invention. Cascaded network topology 300 may be used for data transmission in an SDN, such as SDN200 in fig. 2. Tandem network topology 300 may be decided by a control node of the SDN, such as control node 202 in fig. 2. As shown in fig. 3, the cascaded network topology 300 is represented by the service nodes 302 and 326 and the connecting lines between them. As shown in fig. 3, the sender 302 may receive multimedia data (e.g., from a sending terminal) and send it to the receiver 310 via the router 304 and 308 and 326. The receiving party 310 and 326 can receive the multimedia data transmitted by the transmitting party 302 and forwarded by the router 304 and 308, and then transmit the multimedia data to the receiving terminal specified by the transmitting terminal. The sender, receiver and router may be service nodes of the SDN. For example, the sender 302 and the receiver 310 and 326 may be edge nodes of the SDN 200. Router 304 and 308 may be routing nodes of SDN 200. As shown in fig. 3, the path or route connecting any one of the sender 302 and the receiver 310 and 326 may be the best path between the sender 302 and the receiver. In some implementations, the best path may not include a routing node (i.e., the sender is directly connected to the receiver).

The lines between service nodes 302 and 306 may represent direct network connections (e.g., direct SDN connections) therebetween. The cascaded network topology 300 may be determined based on the best path between the sender and the receiver. If the best path is symmetric, all the above service nodes can use the same cascaded network topology for data transmission and reception, which may be referred to as "symmetry". If the best path is asymmetric, different cascaded network topologies, which may be referred to as "asymmetric," may be determined for different senders. I.e. an asymmetric cascaded network topology for unidirectional data transmission. As shown in fig. 3, when the cascaded network topology 300 is asymmetric, unidirectional data transmission is represented by a single arrowed line connecting the service nodes 302 and 326. In other words, the tandem network topology 300 is associated with the sender 302. When the service node 302-.

In some implementations, cascaded network topology 300 may include both SDN connections and non-SDN connections. For example, a direct network connection in cascaded network topology 300 may include a direct internet connection between its serving nodes. For ease of explanation without any ambiguity, in the following, direct network connections in cascaded network topology 300 are assumed to be direct SDN connections unless explicitly stated otherwise.

The cascaded network topology 300 may be determined from the path metrics determined by the control node. In some implementations, a cascaded network topology may be determined by a control node for a sender and a plurality of receivers based on path metrics measured between the sender and the receivers, and each path in the determined cascaded network topology may represent an optimal path. For example, in fig. 2, when user data is transmitted from terminal 222 to terminals 224 and 226, asymmetric optimal paths 206 and 208 and 210 may be determined between terminals 222 and 224. The edge node of the terminal 222 is the serving node 206, represented in fig. 3 by the sender 302. The edge node of terminal 224 is serving node 210, which may be represented in fig. 1 by recipient 318. The routing node for the best path 206, 208, 210 is the serving node 208, which is represented in FIG. 3 by router 306. For the sender (i.e., serving node 206), the tandem network topology 300 may be determined by the control node, including the best path between the sender and the receiver (e.g., serving nodes 210 and 218). The optimal paths 206, 208, 210 may also be included in the cascaded network topology 300, as represented by paths 302, 306, 318.

In some implementations, the tandem network topology 300 may be dynamically configured based on changes in transmission capacity represented by path metrics. As shown in FIG. 3, in the first time period, the router 304 is selected for the best path between the sender 302 and the recipient 310, as represented by path 302 and 304 and 310. Path metrics between the sender 302 and other service nodes in the same SDN may be periodically monitored. A plurality of candidate best paths may be determined between the sender 302 and the receiver 310. For example, K best paths with different total delay times may be included in the plurality of candidate best paths from the sender 302 to the receiver 310. The K best paths may include path 302-. During the first time period, the path 302 along 304 and 310 with the lowest delay in the transmission from the sender 302 to the receiver 310.

After the first time period, assuming that the measured path metrics indicate that the total delay of the path 302 and 328 and 310 becomes the lowest among the K best paths, the control node may update the cascaded network topology 300 by changing the best path from the sender 302 to the receiver 310 to the path 302 and 328 and 310. The path 302-304-310 may be removed from the updated cascaded network topology 300. The new path 302 and 328 may be synchronized 310 at least in the router 328 and used to send user data for the second time period.

In some implementations, multimedia data may be transmitted using redundant transmissions to achieve fault tolerance. In some cases, a service node of the SDN may experience an unexpected failure (e.g., a power outage). To avoid data transfer interruptions, user data may be copied for transfer. For example, the tandem network topology 300 may be modified to group multiple service segments to form a "service cluster". User data may be transmitted between serving clusters, and the unit or "node" of the best path is a serving cluster.

For example, cascaded network topology 300 may be modified such that each circle in fig. 3 may represent a service cluster (i.e., not a single service node). In transferring user data between the serving clusters 306 and 316, the user data is actually transferred between the current serving node of the serving cluster 306 and one serving node of the serving cluster 316. For example, at the service cluster 306, user data may be replicated to multiple service nodes. The replicated user data may be independently sent to a plurality of corresponding serving nodes in the serving cluster 318. When the current serving node of serving cluster 306 fails, user data can still be sent to serving cluster 318 by other serving nodes without causing a transmission interruption.

When the replicated user data arrives at a receiving party, such as an edge node of a receiving terminal, it may be filtered (e.g. by excluding corrupted packet portions) and/or merged (e.g. by combining portions of packets) to obtain complete user data representing the original content. The complete user data may then be transmitted to the second terminal.

As shown in fig. 3, by using a tandem network topology 300, excessive or redundant data forwarding may be reduced or avoided in an SDN since user data flows between senders and receivers may be aggregated. For example, when the sender 302 sends data to the receiver 320 and 326, instead of sending multiple copies of the data, one copy of the data may be sent from the sender 302 to the router 308, and then the router 308 may generate four local copies of the data and send them to the receiver 320 and 326, respectively. Dynamically configuring the tandem network topology 300 according to changes in transmission capacity may save network bandwidth between service nodes, may also automatically repair network congestion in SDNs, and may minimize network transmission delay between edge nodes.

Fig. 4 is a flow diagram depicting an example process 400 for real-time video communication using SDN, in accordance with an embodiment of the invention. The process 400 may be implemented as software and/or hardware modules in the system 100 of fig. 1. For example, flow 400 may be implemented as a software module of a server (e.g., server 124). As another example, software modules for implementing flow 400 may be stored in a memory (e.g., memory of server 124) as instructions and/or data executable by a processor of a server equipped with a general network interface (e.g., processor of server 124). In some implementations, the server may be a control node (such as control node 202 in fig. 2) of the SDN.

Path metrics are received at operation 402 indicating transmission capacity between directly connected service nodes in the SDN. For example, the SDN may be SDN200 in fig. 2. The directly connected service nodes may include a first service node and a second service node. The first and second service nodes may be any two service nodes (e.g., any two directly connected service nodes) on SDN200, such as service node 206 and service node 208, respectively.

The path metric may be received by a processor of a control node, such as control node 202. In some implementations, the path metric may include a load state of at least one of the directly connected service nodes (e.g., the first service node and/or the second service node). The path metrics may also include transmission metrics (e.g., bidirectional transmission metrics) between at least two directly connected service nodes (e.g., a first service node and a second service node).

In some implementations, a transmission metric (e.g., a bidirectional transmission metric) may be determined using at least one of user data (e.g., multimedia data) and test data. User data and test data may be transmitted between directly connected service nodes, such as a first service node and a second service node. For example, an active mode may be employed to determine transmission metrics, i.e., using test data. The passive mode may also be employed to determine the transmission metric, i.e., using user data. The active mode and the passive mode may also be used together to determine a transmission metric. The active mode and the passive mode have been explained in the description related to the SDN200 in fig. 2.

In some implementations, the network interface hardware of the nodes of the SDN (e.g., the first service node and the second service node) may be generic network interface hardware. The universal network interface may be used to access public networks open to the public, such as the internet. For example, the network interface hardware may be the network interfaces 114 and 122 in FIG. 1. In some implementations, the network interface hardware may not support any private (e.g., closed source, proprietary, non-open, or non-public) network protocols. In some implementations, the network interface hardware of all service nodes and control nodes on the SDN may be generic network interface hardware.

At operation 404, a cascaded network topology is determined from the path metrics, and the cascaded network topology includes an optimal path between the first edge node and the second edge node. Among data transmission paths between a first edge node and a second edge node in an SDN, the best path may be the one with the lowest transmission delay (or simply "delay"). The best path may include at least one of the first serving node and the second serving node. For example, when a first edge node transmits user data to a second edge node, the cascaded network topology may be the cascaded network topology 300 of fig. 3. The first terminal and the second terminal may be directly connected to the first edge node and the second edge node, respectively. The first terminal, which may be the terminal 222 in fig. 2, is connected to the serving node 206 (i.e., the first edge node), which may be represented in fig. 3 by the sender 302. The second terminal may be a terminal 224 connected to the serving node 210 (i.e., the second edge node), which may be represented in fig. 3 by a recipient 322. The best path between the first edge node and the second edge node may be 206-208-210 in fig. 2, where the service node 208 may be represented by the router 308 in fig. 3. The optimal paths 206, 208, 210 may be represented by paths 302, 308, 322 in the cascaded network topology 300. Namely, the cascaded network topology 300 includes the optimal path 206-. In some implementations, the best path may be implemented as one or more entries in a routing table. For example, the entries may include IP addresses.

In some implementations, it may be determined whether the path metric is symmetric or asymmetric. If the path metric determined at operation 402 is asymmetric, the best path determined at operation 404 may also be asymmetric. In some implementations, multiple best paths may be determined between a sender and a receiver in a tandem network topology. In some implementations, the multiple best paths between the sender and the receiver may have different delay values.

In some implementations, the cascaded network topology may be a recursive cascaded topology. In a recursive cascade topology, each node may have at most one input (i.e., the location where user data is sent) and at least one output (i.e., the location to which user data is sent). In some implementations, if the path metric determined at operation 402 is asymmetric, the cascaded network topology may also be asymmetric. In some implementations, the tandem network topology may include only one best path (e.g., when the SDN is sending data in unicast mode).

At operation 406, if it is determined that multimedia data is to be transmitted between the first edge node and the second edge node, the multimedia data is transmitted according to the optimal path between the first edge node and the second edge node. For example, the cascaded network topology includes an optimal path 206 along 208 and 210 along which multimedia data may be transmitted from a first edge node (i.e., serving node 206) to a second edge node (i.e., serving node 210). When a first terminal (i.e., terminal 222) attempts to transmit multimedia data to a second terminal (i.e., terminal 224), the multimedia data can be transmitted over the optimal path 206 and 208 and 210. If the cascaded network topology is symmetric, the multimedia data can also be sent from the second edge node to the first edge node using the optimal path 206-. As another example, the cascaded network topology may be asymmetric and include an optimal path 210 along which multimedia data may be sent from the second edge node to the first edge node 204 along the optimal path 206.

In some implementations, a first packet of multimedia data is sent using a first path and a second packet of multimedia data is sent using a second path to achieve fault tolerance. The first packet and the second packet are duplicate packets. The first path and the second path are transmission paths from the first edge node to the second edge node, and the first path is different from the second path.

When the first and second packets arrive at the edge node of the second terminal, the first and second packets may be filtered (e.g., by excluding portions of the packets that are corrupted) and/or combined (e.g., by combining portions of the packets) to obtain a complete packet representing the original content. The complete data packet may then be transmitted to the second terminal.

In some implementations, the cascaded network topology may be dynamically updated based on changes in path metrics received by the control node. Fig. 5 is a flowchart illustrating an example process for updating a tandem network topology according to an embodiment of the present invention. Flow 500 may be implemented as software and/or hardware modules in system 100 in fig. 1. For example, flow 500 may be implemented as a software module in a server (e.g., server 124). As another example, software modules for implementing flow 500 may be stored in a memory (e.g., memory of server 124) as instructions and/or data that are executable by a processor of a server equipped with a general network interface (e.g., processor of server 124). In some implementations, the server may be a control node (such as control node 202 in fig. 2) of the SDN.

At operation 502, path metrics may be received in an iterative manner. The first serving node and the second serving node may measure and update the path metrics in an iterative manner. The updated path metrics may then be sent to the processor of the control node. In some implementations, the iterative manner may be a periodic manner. The period may be a fixed period (i.e., having a fixed time interval) or a variable period (i.e., having a non-fixed time interval). For example, the processor of the control node may receive the path metrics periodically. In some implementations, path metrics may be periodically determined between any two service nodes of the SDN and sent to a processor of a control node to monitor network traffic between the two points.

At operation 504, the cascaded network topology may be updated in an iterative manner according to the received updated path metrics. For example, the tandem network topology may be updated by updating the best path between the first edge node and the second edge node. The updated best path may have more routing nodes, fewer routing nodes, or be replaced with other routing nodes. If the path metrics are updated and received in a periodic manner, the time period for updating the cascaded network topology may be the same as the time period for updating the path metrics. The time period for updating the tandem network topology may also be different (e.g., twice as long) as the time period for updating the path metrics. It should be noted that the path metrics and the tandem network topology may be updated in different iterative ways, and are not limited to the above examples.

In some implementations, the SDN may determine the service node as an edge node for connecting a terminal (e.g., a first terminal) to the SDN. An edge node may be selected from a plurality of serving nodes that serve as candidate edge nodes. Selecting an edge node for a terminal may be based on one or more of the following conditions: the best path that the first terminal has used (e.g., the best path including a service node previously serving as an edge node of the first terminal), the network operator's rules associated with the SDN, the geographic location of the first terminal, the geographic location of the candidate edge node, and the path metrics associated with the candidate edge node.

When a terminal is determined to be an edge node, a connection (e.g., a direct connection) between the terminal and the edge node may be established. The best path and multimedia data may be sent to the serving nodes (i.e., routing nodes and edge nodes) as follows. Fig. 6 is an exemplary flow diagram depicting a flow 600 for multimedia data transmission in accordance with an embodiment of the invention. Flow 600 may be implemented as operation 504 in flow 500. Flow 600 may be implemented as software and/or hardware modules in system 100 in fig. 1. For example, flow 600 may be implemented as a software module in a server (e.g., server 124). As another example, software modules for implementing flow 600 may be stored in a memory (e.g., memory of server 124) as instructions and/or data that are executable by a processor of a server equipped with a general network interface (e.g., processor of server 124). In some implementations, the server may be a control node (such as control node 202 in fig. 2) of the SDN.

At operation 602, if it is determined that multimedia data is to be transmitted from a first edge node to a second edge node and the first edge node of the first terminal has been determined, path data is transmitted to the first edge node. The path data may be generated by the control node and sent to the first edge node. The path data may include an optimal path between the first edge node and the second edge node as determined by the control node. The best path may be asymmetric and stored in the first edge node. For example, the control node may determine the best path in a periodic manner. After determining the best path including the first edge node, the control node may then send path data to the first edge node in a periodic manner. The path data may include a routing table. The routing table may include the best path stored as an entry of the routing table. The path data may be stored in the first edge node (e.g., in a memory of the first edge node).

At operation 604, path data is appended in a packet header of the multimedia data. For example, a first edge node receives multimedia data from a first terminal in the form of packets. Path data (e.g., routing tables) may be encoded and added to fields of the header of each packet.

At operation 606, the data packet is sent to the next serving node of the best path. For example, in fig. 2, the first terminal may be terminal 224, the second terminal may be terminal 226, and the optimal path may be 210-. In the best path 210, 212, 216, 218, the next service node may be the service node 212. At operation 604, service node 210 may add the path data to a header of the data packet.

At operation 608, an optimal path is determined from the path data (e.g., path data that may be used by the next service node) and path data is determined from the data packet. The next service node (e.g., service node 212) may determine path data from the data packet. For example, when the next serving node receives a data packet, the serving node may extract and decode path data from the header of the data packet. The next serving node may then process the path data (e.g., by reading and locating an entry of the routing table) to determine the best path. For example, the next service node may determine the IP address of the subsequent service node (e.g., service node 216 in optimal path 210 and 212 and 216 and 218) according to the optimal path in order to forward the data packet. The next serving node may then restore (e.g., store in memory) the best path for future use.

It will be determined at operation 610 whether the next serving node is the end of the best path. The end of the best path may be the second edge node of the second terminal. For example, for the best path 210, 212, 216, 218, the end of the best path is the service node 218. If the next serving node is the end of the best path, then the process 600 ends. Otherwise, flow 600 will return to operation 606. That is, operation 606 and 610 may be repeated until the data packet is sent to the end of the optimal path, and then the second edge node may send the data packet to the second terminal.

In some implementations, the SDN may authenticate the terminal before the terminal connects to the SDN. The authentication may be performed, for example, by an edge node of the terminal. Fig. 7 is a flowchart illustrating an example process for authenticating a terminal in an SDN according to an embodiment of the present invention. Flow 700 may be performed prior to operation 402 in flow 400. Flow 700 may be implemented as software and/or hardware modules in system 100 in fig. 1. For example, flow 700 may be implemented as a software module in a server (e.g., server 124). As another example, software modules for implementing flow 700 may be stored in a memory (e.g., memory of server 124) as instructions and/or data that are executable by a processor of a server equipped with a general network interface (e.g., processor of server 124). In some implementations, the server may be a control node (such as control node 202 in fig. 2) of the SDN.

At operation 702, it is determined to use an edge node of an SDN as a node connecting a terminal to the SDN. The verification may be based on one or more of the following conditions: a permission to connect the terminal to the SDN, a time limit to connect the terminal to the SDN, a permission for the terminal to send data, and a permission for the terminal to receive data.

At operation 704, the terminal is authenticated to determine that it is connectable to the edge node. For example, the edge node may perform authentication based on credentials (e.g., username and password) sent by the terminal.

A system for SDN-based real-time multimedia communication is also disclosed. For example, the SDN may be SDN200 in fig. 2. The system may include a first service node (e.g., service node 206) in the SDN, a second service node (e.g., service node 210) in the SDN, and a control node (e.g., control node 202) in the SDN. The control node may include a processor (e.g., processor 116) and a memory (e.g., memory 118) coupled to the processor. The configurable memory is used to store instructions that when executed by the processor may be used to implement the operations in flow 400 in fig. 4.

In some implementations, the network interface hardware of the control node, the first service node, and the second service node may be general network interface hardware. The generic network interface hardware may be any network interface hardware for accessing a public network.

In some implementations, the path metric between the first serving node and the second serving node may be determined in an iterative manner (e.g., a periodic manner), and the cascaded network topology may be updated in an iterative manner upon receiving the path metric.

In some implementations, the cascaded network topology determined by the control node based on the path metrics may include at least two transmission paths between a first edge node and a second edge node to achieve fault tolerance. For example, the routing nodes of the two or more transmission paths may be different from each other. For another example, as shown in fig. 2, the tandem network topology may also be a topology between service clusters. Each serving cluster may include a plurality of serving nodes. In some implementations, the two or more transmission paths may be transmitted through the same serving cluster. For example, the first transmission path may include a first serving node and a second serving node in a first serving cluster and a second serving cluster, respectively. The second transmission path may include a third serving node and a fourth serving node in the first serving cluster and the second serving cluster, respectively. The first, second, third and fourth serving nodes are different from each other. Both the first and second transmission paths may be connected from the first edge node to the second edge node. It should be noted that the two or more transmission paths may also be transmitted through different service clusters.

In some implementations, the two or more transmission paths may include a first path from a first edge node to a second edge node and a second path from the second edge node to the first edge node. The service nodes of the first path may be different from the service nodes of the second path. In other words, the first path and the second path are asymmetric between the first edge node and the second edge node.

In some implementations, a system in an SDN may include multiple communication channels to support multi-channel communication. For example, each communication channel may include a set of service nodes in the SDN. At least one of the serving nodes in the group may be associated with a different communication channel.

Fig. 8 is a diagram depicting an example of an apparatus for real-time video communication in accordance with an embodiment of the invention. For example, the device may be a service node in an SDN, which may be SDN200 in fig. 2. The service node may be any one of service nodes 204-218.

Service node 800 may include a number of software modules for performing the functions described in fig. 2-7. These software modules include at least a verification module 802, a probe module 804, a routing module 806, and a channel module 808. Service node 800 may be connected to one or more of a terminal 810, a service node 812, and a control node 814 in an SDN, and the connection is a bidirectional connection.

The authentication module 802 may be used to authenticate the terminal 810 when selecting the serving node 800 as an edge node for the terminal 810. The probing module 804 may be used to determine path metrics such as load states of the service node 800 and transport metrics between the service node 800 and other directly connected service nodes in the SDN. For example, other directly connected service nodes may include service node 812. The detector module 804 can be configured to determine a transmission metric using an active mode and/or a passive mode, as described in relation to fig. 2. The path metrics determined by the detector module 804 may be sent to a control node 814. Control node 814 may determine the best path including serving node 800 based on the path metrics. Control node 814 may send path data back to serving node 800, where the path data may include the best path.

The routing module 806 may be used to send and receive user data (e.g., multimedia data) according to the best path. The best path may be obtained from path data sent by control node 814 when serving node 800 is used as an edge node, or from another serving node (e.g., serving node 812) when serving node 800 is used as a router. Path data (e.g., routing tables) may be extracted from headers of user data packets received from routing module 806. The best path may be used as an entry in the routing table. The entry of the routing table may include a plurality of IP addresses. For example, the best path may be a series of ordered IP addresses, including the IP address of serving node 800. The routing module 806 may determine a target serving node to forward the user data by identifying the next IP address in the best path.

Channel module 808 may be used to support multi-channel communications for serving node 800. Serving node 800 may be simultaneously used in different frequency channels for data transmission, wherein user data in different frequency channels may be independently received and/or forwarded by serving node 800. For example, the channel module 808 may maintain a record of the channel ID. The channel ID may be associated with the best path and user data packet. In some implementations, a unique channel ID may be included in the header of the user data packet, and the best path may also include a field for storing the channel ID. When the routing module 806 receives the user data packet, the channel module 808 may determine a unique channel ID from the header of the user data packet and compare it to the channel ID in the path data. If the two match, the user data containing the unique channel ID may be forwarded to the next serving node with the best path for the same unique channel ID.

Also disclosed herein is an apparatus for a Software Defined Network (SDN) for real-time multimedia communications. For example, the device may be a control node (such as control node 202) in an SDN. The device may include a processor (e.g., processor 116) and a memory (e.g., memory 118) coupled to the processor. The configurable memory is configured to store instructions that when executed by the processor are operable to perform the following O1 and O2 operations.

At operation O1, the processor receives path metrics associated with a first service node in the SDN and a second service node in the SDN in an iterative manner. The path metrics include load states of the first and second serving nodes and transmission metrics (e.g., bidirectional transmission metrics) between the first and second serving nodes.

At operation O2, the cascaded network topology is updated upon receiving the path metrics. The tandem network topology includes an optimal path for transmitting multimedia data between a first terminal connected to a first service node and a second terminal connected to a second service node.

In some implementations, a device may allow or block communication channels of the SDN according to predetermined rules. For example, the predetermined rules may include determining whether user data in the communication channel includes illegal, or inappropriate content specified by an administrator of the SDN.

In some implementations, a transmission mode for transmitting multimedia data may be determined for a communication channel, such as determining that a number of terminals in the communication channel exceeds a threshold. For example, the transmission mode includes at least one of a multicast mode, a broadcast mode, and a unicast mode.

Fig. 9 is a drawing of another example of an apparatus for real-time video communication, according to an embodiment of the present invention. For example, the device may be a control node 900 in an SDN, and the SDN may be SDN200 in fig. 2. Control node 900 may be control node 814 in fig. 8 or control node 202 in fig. 2.

Control node 900 may include a number of software modules for performing the functions described in fig. 2-7. These software modules include at least an authentication controller 902, a probe controller 904, a routing controller 906, a channel controller 908, and an edge node selector 910. Control node 900 may be connected to multiple service nodes in an SDN, such as service nodes 800 and 812 in fig. 8.

The authentication controller 902 is operable to perform content control in a communication channel and access control of a connection terminal. For example, verification controller 902 may monitor the transmitted data content by analyzing the sample data. Sample data may be generated by the service node and sent to the control node 900. When the verification controller 902 considers a channel content violating a rule preset by an SDN administrator, data communication for the channel may be blocked. As another example, the authentication controller 902 may also monitor the behavior of the connection terminal. When authentication controller 902 considers the behavior of connecting a terminal to be malicious (e.g., unauthorized dissemination of copyrighted content), authentication controller 902 may terminate the connection of the terminal to the SDN.

The probe controller 904 may be used to determine the best path. For example, probe controller 904 may receive path metrics from a service node (e.g., from probe module 804 of service node 800). The probe controller 904 may determine the best path based on the path metrics and/or previous best paths. Different best paths may be generated based on different path metrics received from different serving nodes. In some implementations, multiple best paths (e.g., K best paths) may be determined by the probe controller 904 for two edge nodes of the SDN. For example, the multiple best paths may be ordered according to delay time, and each may serve as an alternate path to each other.

The routing controller 906 may be used to determine and propagate the tandem network topology to the serving node. In some implementations, the routing controller 906 may determine the tandem network topology by setting the edge nodes as senders (e.g., sender 302 in fig. 3) to synthesize the best path according to the best path determined by the probe controller 904 associated with the edge nodes connected to the data sending terminal. In some implementations, routing controller 906 may send path data containing the determined tandem network topology to a routing module (e.g., routing module 806) of an associated service node (e.g., service node 800).

Channel controller 908 may be used to support multi-channel communication for SDN. For example, channel controller 908 may assign, maintain, and destroy channel IDs to communication channels of the SDN. When a channel is newly established for a multimedia communication event, the channel may be registered at the control node and the channel controller 908 may assign a channel ID to the channel. In some implementations, the channel controller 908 may cooperate with the channel module of the service node to synchronize information of the sender (e.g., the sender 302 in fig. 3) and the receiver (e.g., the receiver 310 and 326) in different channels. In some implementations, the channel controller 908 may dynamically select transmission modes (e.g., unicast, broadcast, and multicast) for data transmission in different channels.

An edge node selector 910 may be used to select an edge node for a terminal. For example, the edge node selector 910 may receive statistics on parameters (such as data transmission quotas, load status, and health status) from candidate service nodes of the terminal. The edge node selector 910 may then determine an edge node based on various considerations. In some implementations, the edge node selector 910 may dynamically change the edge node of the same terminal during data transmission according to parameter changes of the candidate serving node.

Fig. 10 is an exemplary diagram of a communication channel 1000 for real-time video communication, rendered in accordance with an embodiment of the present invention. Two-way communication may be established between any two connected terminals of channel 1000. Channel 1000 may be considered a group of serving nodes serving the same channel. The serving nodes for channel 1000 may be divided into different layers. Layering may be based on one or more of the following factors: the geographical location of the service node, the ISP to which the service node is connected, the topology of the local network of the service node, and the Autonomous System (AS) to which the service node belongs, etc.

In some implementations, the service nodes in channel 1000 may be divided into edge node set 1002 and 1012 layers, service cluster set 1004 and 1010 layers, and AS 1006 and 1008 layers. A first terminal connected to a first edge node in the set of edge nodes 1002 may establish a bi-directional transmission path with a second terminal connected to a second edge node in the set of edge nodes 1012. The bi-directional transmission path may pass through the edge node set 1002, the service cluster 1004, the AS 1006, the AS1008, the service cluster 1010, and the edge node set 1012 in transmission. For ease of explanation and without causing ambiguity, we assume, by way of example, that multimedia data is hereinafter transmitted from a first terminal to a second terminal.

The edge node set 1002 contains a plurality of edge nodes. Each edge node may be responsible for connecting terminals within a certain geographical area, such as a city. Multiple edge nodes may be provided to cover a geographic area (e.g., a metropolitan area including multiple cities).

Service cluster set 1004 includes a plurality of service clusters. Each service cluster may represent a group of service nodes that have similar hardware configurations and are located under the same physical network. For example, a service cluster may include service nodes in the same server room, within the same building, sharing the same gateway, or interconnected by the same ISP. Each serving cluster may be connected to a plurality of edge nodes. The service cluster may aggregate or replicate user data received from the edge nodes to which it is connected.

AS 1006 includes a plurality of AS nodes. AS nodes within the same AS may share the same physical network characteristics, and the quality of the transmission between AS nodes may be highly reliable. For example, the AS node may be the primary node of an international network connection. Each AS node may be connected to multiple serving clusters. And the AS node may aggregate the user data received from the edge nodes connected thereto.

In each layer in channel 1000, one or more nodes of that layer may be selected as routing nodes for forwarding user data within the nodes of that layer. The routing node may be selected based on conditions such as system load and transmission quality.

For example, channel 1000 may be used for an international conference event in which a first terminal transmits multimedia data to a second terminal in another country. The first terminal in city C1 may be connected to the first edge node in edge node set 1002. The first edge node forwards and/or transmits the received user data to a first one of the service clusters 1004. The first serving cluster may receive data from an edge node connected to the first ISP P. The first serving cluster may forward and/or transmit the received user data to a first AS node in AS 1006. The first AS node may receive data from a serving cluster within the national CR 1.

User data sent by the first terminal may be transmitted to the second AS node (e.g., trans-country transmission) via the first AS node in the AS 1008. The second AS node may receive user data destined for a terminal within the national CR 2. User data transmitted by the first terminal may be forwarded and/or transmitted to a second one of the serving clusters 1010. The second cluster of services may receive user data destined for state (or province) S of country CR 2. The user data sent by the first end may be forwarded and/or sent to a second edge node in edge node set 1012. The second edge node may serve city C2 in state (or province) S, while the second terminal is located at city C2. The second terminal may receive user data sent by the first terminal from the second edge node, thereby completing the data transmission.

As can be seen from the above description, by dividing the channel 1000 into layers having similar characteristics and aggregating user data in each layer, potential network bandwidth can be maximally utilized and transmission delay between terminals can be greatly reduced.

As described above, those skilled in the art will note that all or part of the present invention described herein may be implemented using a general purpose computer or processor with a computer program that, when executed, performs any of the corresponding techniques, algorithms, and/or instructions described herein.

The computing devices described herein (and the algorithms, methods, instructions, etc. stored thereon and/or executed thereby) may be implemented by hardware, software, or any combination thereof. The hardware may include a computer, Intellectual Property (IP) core, Application Specific Integrated Circuit (ASIC), Field Programmable Gate Array (FPGA), programmable logic array, optical processor, programmable logic controller, microcode, microcontroller, server, microprocessor, digital signal processor, or any other suitable circuit. In the claims, the term "processor" should be understood to encompass one or more combinations of any of the above.

Aspects described herein may be described by functional block components and various processing operations. The flows and sequences herein may be performed alone or in any combination. Functional blocks may be implemented by hardware and/or software components that perform any number of specific functions. For example, the described aspects may employ various integrated circuit components, e.g., memory elements, processing elements, logic elements, look-up tables, or the like, to carry out various functions under the control of one or more microprocessors or other control devices. Similarly, software programming or software elements, if desired, for implementing the various functions of the described content may be implemented using any programming or scripting language, such as C, C + +, Java, assembler, or the like, and any combination of data structures, objects, processes, routines or other programming elements may be used to implement the various algorithms. Various functions may be implemented by executing algorithms on one or more processors. Further, the various functions described herein may be electronically configured, signal processed and/or controlled, data processed, etc., using any number of conventional techniques. The terms "mechanism" and "element" are used broadly herein and are not limited to mechanical or physical implementations, but may include software routines or the like in conjunction with a processor.

Embodiments or portions of embodiments of the above invention can take the form of a computer program product accessible from or used by a computer or a computer-readable medium. A computer-usable or computer-readable medium may be any apparatus that may contain, store, communicate, or transport the program or data structure for use by or in connection with any processor. The medium may be an electronic, magnetic, optical, electromagnetic or semiconductor device, or the like. Other suitable mediums may also be included. The computer-usable or computer-readable medium may be referred to as non-transitory memory or medium, and may include RAM or other volatile memory or storage, which may change over time. The device memory described herein need not be physically embodied in the device, but rather can be accessed remotely from the device and need not be contiguous with other physically embodied memory in the device, unless specifically stated otherwise.

One or more of the functions described herein as being performed by examples of the invention may be implemented using machine readable instructions for operating the hardware in one or more combinations of the preceding. The computing code may be embodied in one or more modules by which one or more combined functions may be performed as a computing utility, with input and output data being communicated between each module and one or more other modules when executing the methods and systems described herein.

The terms "signal" and "data" may be used interchangeably herein. Moreover, the various portions of the computing device functionality need not be implemented in the same manner. Information, data, and signals may be represented using any of a variety of different technologies and techniques. For example, any data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by one or more combinations of voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, and so forth.

The term "example" is used herein to mean exemplary, instance, or illustration. Any feature or design described herein as "exemplary" is not necessarily indicative of any advantage or advantage over other features or designs. Rather, the term "example" is used to present concepts in a concrete fashion. Furthermore, the use of the phrases "a function" or "an function" in various places throughout the specification is not intended to imply the same embodiment or function.

The word "or" as used herein is intended to mean an inclusive "or" rather than an exclusive "or" of two or more elements referred to. That is, the word "X" includes A or B "is intended to mean any of the natural inclusive permutations, unless otherwise indicated herein or otherwise clearly contradicted by context. In other words, if X comprises a, X comprises B, or X comprises a and B, then "X comprises a or B" holds true under any of the foregoing instances. By analogy, "X includes one of A and B" means "X includes A or B". The term "and/or" as used in this disclosure is intended to mean "and" or a non-exclusive "or". That is, "X includes A, B and/or C" is intended to mean that X can include A, B and any combination of C, unless otherwise indicated or clearly indicated by context. In other words, if X includes a, X includes B, X includes C, X includes a and B, X includes B and C, X includes a and C, or X includes all of A, B and C, then each or more of the foregoing corresponds to the description of "X includes A, B and/or C". By analogy, "X includes at least one of A, B and C" means "X includes A, B and/or C".

The use of "including" or "having" and its equivalents herein is meant to encompass the items listed thereafter and equivalents thereof as well as additional items. The term "if" herein can be interpreted as meaning "when," "when … …," or "assuming," etc., depending on the context.

In the context of the present invention (and in particular in the claims below), the words "a", "an" and "the" and similar referents are to be construed to cover both the singular and the plural of one or more. Further, recitation of ranges of values herein are merely intended to serve as a shorthand method of referring individually to each separate value falling within the range, and each separate value is incorporated into the specification as if it were individually recited herein. Finally, the steps of all methods described herein can be performed in any suitable order unless otherwise indicated herein or otherwise clearly contradicted by context. The use of examples or exemplary language (e.g., "such as") provided herein is intended better to illuminate the invention and is not intended to limit the scope of the invention unless otherwise claimed.

Various headings and sub-headings are used herein to list listed items. These are included to enhance readability and to simplify the process of finding and referencing material. These headings and sub-headings are not intended to, nor are they intended to, affect the interpretation of the claims or limit the scope of the claims in any way. The specific implementations shown and described herein are illustrative examples of the invention and are not intended to limit the scope of the invention in any way.

All references, including publications, patent applications, and patents, cited herein are hereby incorporated by reference to the same extent as if each reference were individually and specifically indicated to be incorporated by reference and were set forth in its entirety herein.

While the invention has been described in connection with certain embodiments and examples, it is to be understood that the invention is not limited to the disclosed embodiments, but, on the contrary, is intended to cover various modifications and equivalent arrangements included within the spirit and scope of the appended claims, which scope is to be accorded the broadest interpretation so as to encompass all such modifications and equivalent arrangements as is permitted under the law.

32页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:通过已注册用户的认证来注册新用户的电子设备和方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类