3 Replies Latest reply: Feb 5, 2019 2:00 AM by Juan RSS

    TCP starvation UDP Dominance

    Anne

      Hi all,

       

           I've recently tried to solve a problem of TCP starvation by UDP dominance.

           I can think of some possible solutions but, are there any best practices or design recommendations that I should follow to solve this problem?

       

      Thanks for replying

      Anne

        • 1. Re: TCP starvation UDP Dominance
          Juan

          Hi Anne

           

          TCP starvation can happen every-time you mix TCP and UDP table in the same queue (no queue is a queue). In the case the UDP traffic grows, it can eat all the available egress BW, because TCP uses a windowing mechanism sensitive to packet drops.

           

          There are easy and not-so-easy solutions to deal with that kind of issue:

          • Easy answer: use two queues, with BW allocation and don't mix TCP and UDP traffic.
          • Not-so-easy: in the case you can't separate TCP and UDP be aware of that kind of problem.

           

          There are several reasons to not being able to isolate the two kinds of traffic:

          • App requirements
          • HW restrictions
          • Software restrictions / Implementation / Technology related limiting factors (limited number of queues).

           

          So, the best practice will depend on your app and environment. If you don't have restrictions... don't mix them

           

          Best regards!

          • 2. Re: TCP starvation UDP Dominance
            Anne

            Thanks Juan for your reply

               

                So If I can separate UPD and TCP traffic the best way is keeping a dedicated queue with an allocated bandwidth.  And should WRED be applied to this UPD dedicated queue?

               

                I suppose that applying WRED over this UDP dedicated queue can be more effective to avoid TCP starvation not only when the UDP and TCP traffic can’t be separated.

             

                Thanks

            • 3. Re: TCP starvation UDP Dominance
              Juan

              Hi Anne

                  So If I can separate UPD and TCP traffic the best way is keeping a dedicated queue with an allocated bandwidth.  And should WRED be applied to this UPD dedicated queue?

               

              If in your environment (app/infrastructure requirements) you can separate both, you'll avoid TCP starvation by UDP dominance, because UDP will be contained to the maximum BW allocated to their queue unless congestion is not experienced in your network.

               

                  I suppose that applying WRED over this UDP dedicated queue can be more effective to avoid TCP starvation not only when the UDP and TCP traffic can’t be separated.

               

              About WRED: WRED is used to avoid full TCP synchronisation. If you find that TCP sessions are frequently experimenting that event, then dropping some traffic is better than applying Tail Drop and resynchronise all the flows. You don't need to use WRED in the UDP dedicated queue.

               

              Best regards!