Abstract:
A network service method based Software Defined Networking (SDN) assigns forwarding devices according to network addresses and identification of a client and provides the client with an optimum route according to user requirements and current network states. A continuous monitoring process is continuously performed for route optimization based on network states, topology variations, and user feedbacks.

Description:
FIELD 
       [0001]    The subject matter herein generally relates to network service optimization. 
       BACKGROUND 
       [0002]    Software Defined Networking (SDN) is an approach to computer networking that allows network administrators to manage network services through higher-level functionality. This is done by decoupling the system that makes decisions about where traffic is sent (the control plane) from the underlying systems that forward traffic to the selected destination (the data plane). The control plane communicates with the data plane via the OpenFlow protocol. 
         [0003]    A hybrid SDN network utilizes both legacy hardwired switches and software programmable switches that use SDN protocols. This mixed mode of operation is found as service providers migrate from legacy networks to SDN technology. However, optimum routes cannot be offered by a global view under the hybrid SDN network that cannot manage new types of applications, such as high definition video conferences. 
         [0004]    With respect to existing routing methods, managers have to manually configure settings of each of routers via complicated user interfaces. Thus, a method of automatically generating optimum routes is required. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0005]    Implementations of the present technology will now be described, by way of example only, with reference to the attached figures, wherein: 
           [0006]      FIG. 1  illustrates a diagrammatic view of an embodiment of an SDN network service system; 
           [0007]      FIG. 2  illustrates a block diagram of an embodiment of functional modules of an SDN controller; 
           [0008]      FIG. 3  illustrates a flowchart of an embodiment of an SDN network service method which is applied to a hybrid network including a traditional network architecture and an SDN network architecture; 
           [0009]      FIG. 4  illustrates a flowchart of another embodiment of an SDN network service method, which ensures transmission quality according to user identities and routing authorization; 
           [0010]      FIG. 5  illustrates a flowchart of another embodiment of an SDN network service method, which dynamically detects states of network topologies according to video data streams of users; 
           [0011]      FIG. 6  illustrates a flowchart of another embodiment of an SDN network service method, which, as Real-time Transport Protocol (RTP) service is implemented, dynamically changes routes or adjusts quality of video data streams according to returned Real-time Transport Control Protocol (RTCP) packets; 
           [0012]      FIG. 7  illustrates an embodiment of a router-link matrix table. 
       
    
    
     DETAILED DESCRIPTION 
       [0013]    It will be appreciated that for simplicity and clarity of illustration, where appropriate, reference numerals have been repeated among the different figures to indicate corresponding or analogous elements. In addition, numerous specific details are set forth in order to provide a thorough understanding of the embodiments described herein. However, it will be understood by those of ordinary skill in the art that the embodiments described herein can be practiced without these specific details. In other instances, methods, procedures, and components have not been described in detail so as not to obscure the related relevant feature being described. Also, the description is not to be considered as limiting the scope of the embodiments described herein. The drawings are not necessarily to scale and the proportions of certain parts may be exaggerated to better illustrate details and features of the present disclosure. 
         [0014]    References to “an” or “one” embodiment in this disclosure are not necessarily to the same embodiment, and such references mean “at least one.” 
         [0015]    In general, the word “module” as used hereinafter, refers to logic embodied in computing or firmware, or to a collection of software instructions, written in a programming language, such as, Java, C, or assembly. One or more software instructions in the modules may be embedded in firmware, such as in an erasable programmable read only memory (EPROM). The modules described herein may be implemented as either software and/or computing modules and may be stored in any type of non-transitory computer-readable medium or other storage device. Some non-limiting examples of non-transitory computer-readable media include CDs, DVDs, BLU-RAY, flash memory, and hard disk drives. The term “comprising”, when utilized, means “including, but not necessarily limited to”; it specifically indicates open-ended inclusion or membership in a so-described combination, group, series and the like. 
         [0016]      FIG. 1  illustrates an embodiment of an SDN network service system  100 . 
         [0017]    The system  100  comprises an SDN controller  110 , a conference manager  120 , multiple forwarding devices  131 - 136  complying with an OpenFlow protocol, and at least client A and client B. The multiple forwarding devices  131 - 136  are network appliances. 
         [0018]      FIG. 2  illustrates an embodiment of function modules of the SDN controller  110 . The SDN controller  110  comprises a network manager  210 , a routing engine  230 , and an SDN control transponder  250 . The network manager  210  comprises a network monitoring module  211 , a relay-router managing module  213 , and a router-link keeping module  215 . The routing engine  230  comprises a policy handling module  231  and a backup route finding module  233 . 
         [0019]    The network monitoring module  211  establishes network topologies information and monitors a status of the network to update the information and the status to a router-link matrix table at all times. The router-link matrix table is shown in  FIG. 0.7 . 
         [0020]    The relay-router managing module  213  processes information of a set of forwarding devices and transmits the information of the set of forwarding devices to the routing engine  230 . A forwarding device is returned to the clients. The relay-router managing module  213  also dynamically changes a route or adjusts quality of video data streams according to returned RTCP packets. 
         [0021]    The routing engine  230  calculates the route according to priorities of different clients. That is to say, the routing engine  230  calculates corresponding router-link (RL) values according to identities of the clients, and a packet flow redirection mechanism is triggered accordingly. The backup route finding module  233  periodically calculates backup routes, continuously updates the backup routes through combinations of different relay routers, and triggers the packet flow redirection mechanism when a better route is found. 
         [0022]      FIG. 3  illustrates an embodiment of an SDN network service method which is applied to a hybrid network with a traditional architecture and an SDN architecture. 
         [0023]    At block  302 , a client A and a client B are registered to a conference manager. 
         [0024]    At block  304 , Internet Protocol (IP) addresses of the client A and the client B, the addresses of video receivers, and service requirements of the client A and the client B are transmitted to an SDN controller via the conference manager. 
         [0025]    At block  306 , the clients A and B IP addresses, and the IP addresses of the video receivers and the service requirements are received via the SDN controller. This information is and processed via a policy handling module  231  for providing currently available forwarding information, for example, a first forwarding information and a second forwarding information respectively relevant to the client A and the client B. 
         [0026]    Referring to  FIG. 7 , forwarding devices  131 ,  132 ,  133 , and  134  are represented by T 1 , T 2 , T 3 , and T 4 . T 1 (30) for example indicates that resource quantity of the forwarding device  131  is equal to 30, the others ( 132 , 133 , and  134 ) can be represented in the same way. 
         [0027]    At block  308 , the first forwarding information and the second forwarding information are transmitted via the SDN controller to the client A, the client B, and the conference manager. 
         [0028]    At block  310 , a first optimum route is generated according the first forwarding information and the second forwarding information via the SDN controller. First routing rules corresponding to the first optimum route are deployed to multiple forwarding devices ( 131 - 136 ) via an SDN control transponder. 
         [0029]    When the client A needs to transmit designated data streams to the client B, a routing engine  230  generates an optimum route for the client A. The optimum route is generated according to the first forwarding information of the client A and the router-link values (e.g. the resource quantity), recorded in a router-link matrix table of the forwarding devices ( 131 - 136 ). 
         [0030]    At block  312 , IP addresses of deployed forwarding devices and a conference start notification are transmitted to the client A and the client B via the conference manager. 
         [0031]    At block  314 , data streams of the client A and data streams of the client B are directed to deployed forwarding devices via their own network video receivers, while data streams from the other clients are retrieved by the client A and the client B. 
         [0032]    At block  316 , a set of source and destination forwarding devices are obtained according to the first forwarding information and the second forwarding information via a relay-router management module and a backup route finding module, and route combinations for the set of source and destination forwarding devices are calculated to discover a second optimum route and a backup route between the client A and the client B. The backup route is a current backup route between the client A and the client B. 
         [0033]    A network monitoring module  211  maintains and updates contents of the router-link matrix table. The routing engine  230  regularly obtains router-link values of the forwarding devices ( 131 - 136 ) to calculate and update backup routes and optimum routes between each of the forwarding devices. 
         [0034]    At block  318 , the first optimum route is compared with the second optimum route via the SDN controller to determine whether a result of comparison corresponds to a preset routing switch value. 
         [0035]    The preset routing switch values are set based on the RL values and can be manually changed by configurations of the SDN controller. The RL values initially configured include a minimum recommended value. The minimum recommended value prevents the user from setting a very low value that causes over frequent replacements of the routes. 
         [0036]    At block  320 , the first optimum route is replaced by the second optimum route when the result of comparison corresponds to the preset routing switch value. The process then proceeds to the block  316 . 
         [0037]    When the result of comparison corresponds to the preset routing switch value, the SDN controller assigns the second optimum route as a current transmission route. That is to say, the first optimum route is replaced by the second optimum route. The first optimum route is preserved via a router-link keeping module  215  and is used to replace the previous backup route to become a current backup route. 
         [0038]      FIG. 4  illustrates another embodiment of an SDN network service method, which ensures transmission quality according to user identities and routing authorization. 
         [0039]    At block  402 , optimum routes of known clients, for example, the client A and the client B, are calculated via the SDN controller. 
         [0040]    At block  404 , a determination is made as to whether a forwarding device is able to be shared when that forwarding device is assigned to both the client A and client B. 
         [0041]    At block  406 , the optimum routes of the client A and the client B are maintained and deployed when it is determined that the forwarding device is able to be shared. 
         [0042]    At block  408 , a determination is made as to whether routing authority of the client A is greater than routing authority of the client B when the forwarding device is unable to be shared. 
         [0043]    At block  410 , when the routing authority of the client A is greater than the routing authority of the client B, the optimum route of the client B is replaced by its backup route, while the optimum route of the client A is maintained and deployed. 
         [0044]    At block  412 , IP addresses of the forwarding devices deployed in the first optimum route and the second optimum route and a conference start notification are transmitted to the client A and the client B via the conference manager to begin transmission of data streams. 
         [0045]    At block  414 , when the routing authority of the client A is not greater than the routing authority of the client B, the optimum route of the client A is replaced by its backup route, while the optimum route of the client B is maintained and deployed. The process then proceeds to the block  412 . 
         [0046]      FIG. 5  illustrates a flowchart of another embodiment of an SDN network service method, which dynamically detects states of network topologies according to video data streams of users. 
         [0047]    At block  502 , video streaming packets are continuously sent via a sender client A after an optimum route is established and deployed. 
         [0048]    At block  504 , when a video streaming packet from the client A reaches a first forwarding device (for example, the first forwarding device  132 ), the first optimum route transmitting the video streaming packets is compared with routes recorded in a first routing table of the first forwarding device to determine whether there are corresponding routes. 
         [0049]    At block  506 , an error message is returned to the SDN controller via the first forwarding device to redeploy routes, if there is no corresponding route. 
         [0050]    At block  508 , if there is at least one corresponding route, a fixed value (for example, 1) is added to a first packet counter (Packet Count=Packet Count+1) of the first optimum route and a first timeout value of the first optimum route is reset to zero, while the video streaming packet is forwarded to a second forwarding device. 
         [0051]    At block  510 , a determination is made as to whether the value of the first packet counter is equal to a preset value. 
         [0052]    At block  512 , a packet count event is sent to the SDN controller if the value of the first packet counter is equal to the preset value; 
         [0053]    At block  514 , a determination is made as to whether the video streaming packet is received by the second forwarding device. 
         [0054]    At block  516 , if the video streaming packet is received by the second forwarding device, a determination is made as to whether video streaming packets transmitted from the sender client A to a receiver client B have been transmitted completely. If there are video stream packets need to be transmitted, the process then proceeds to the block  508 , or is terminated. 
         [0055]    At block  518 , if the video streaming packets are not transmitted to the second forwarding device within a first preset time (due to broken link or other factors), a router timeout event is sent to the SDN controller by the second forwarding device. 
         [0056]    At block  520 , when the router timeout event is received, the routing engine is notified via the SDN controller to recalculate routes and to replace the route currently in use with the backup route. 
         [0057]    In addition, when the packet counter event is received, the SDN controller calculates an average time for transmission of the video streaming packets from the first forwarding device to the second forwarding device and updates the average time to the router-link matrix table. 
         [0058]      FIG. 6  illustrates another embodiment of an SDN network service method, which, as RTP service is implemented, dynamically changes routes or adjusts quality of video data streams according to returned RTCP packets. 
         [0059]    Traditional RTCP packets comprise the number of received packets, lost packets, and other statistical information. However, RTCP packets only have the function of being transmitted between endpoints to provide traffic controls and congestion controls, routing controls cannot be implement by the packets themselves. When the SDN controller is introduced, if a service is provided through transmitting RTCP packets, the forwarding devices can forward the RTCP packets transmitted from a receiver to the SDN controller via SDN routes. 
         [0060]    At block  602 , video streaming packets are continuously sent to the receiver client B by the sender client A, after the route is established and deployed. 
         [0061]    At block  604 , RTCP packets are periodically returned to the client A via the client B. 
         [0062]    At block  606 , if an RTCP route is created for a forwarding device between the client A and the client B, the RTCP packets are forwarded to the SDN controller by the forwarding device when the RTCP packets are received. 
         [0063]    At block  608 , statistical information relating to the RTCP packets is analyzed via the SDN controller to determine whether a continuous time for abnormal situations exceeds a second preset time. For example, a determination is made as to whether a packet loss ratio is greater than a critical value and, if greater than the critical value, whether a continuous time for the packet loss ratio exceeds a second preset time. 
         [0064]    At block  610 , when the continuous time for abnormal situations exceeds the second preset time to indicate poor routing quality of a current route, (for example, a current route between the client A and the client B), the router-link matrix is updated via the SDN controller and the routing engine is asked to recalculate an optimum route between the client A and the client B according to the updated router-link matrix. 
         [0065]    At block  612 , the calculated optimum route is converted to an SDN route by the SDN controller and the SDN route is deployed on the forwarding devices which reside in the SDN route. The video streaming packets can be sent constantly with good transmission quality to the client B. 
         [0066]    It should be emphasized that the above-described embodiments of the present disclosure, including any particular embodiments, are merely possible examples of implementations, set forth for a clear understanding of the principles of the disclosure. Many variations and modifications can be made to the above-described embodiment(s) of the disclosure without departing substantially from the spirit and principles of the disclosure. All such modifications and variations are intended to be included herein within the scope of this disclosure and be protected by the following claims.