Redes de computadores são dinâmicas e requerem constante atualização e monitoramento de operações para atender ao crescente volume de dados trafegados. Isso gera diversos problemas de custo, bem como no gerenciamento e ajuste de desempenho para oferecer uma qualidade de serviço (QoS) granular, balancear a carga dos dados e controlar a ocorrência de congestionamentos. Como alternativa, um novo paradigma de rede programáveis vem sendo utilizado sob o nome de Redes Definidas por Software (SDN). A SDN consiste no desacoplamento do plano de dados e controle da rede, onde um controlador programável é responsável por gerenciar regras para o encaminhamento dos dados para diversos dispositivos. Assim, o hardware que fica no fluxo de dados da rede simplesmente endereça o encaminhamento dos pacotes de forma rápida de acordo com essas regras. Nesse contexto, esse artigo conduz um estudo sobre diferentes métodos e abordagens que estão sendo utilizados na literatura para solucionar problemas na otimização do tráfego de dados na rede através do uso de SDN. Em particular, o presente estudo se diferencia de outras revisões sobre SDN pois foca em questões como QoS, balanceamento de carga e controle de congestionamento. Por fim, além da revisão do estrado-da-arte de SDN perante as áreas mencionadas, apresenta-se também um levantamento de desafios futuros e oportunidades de pesquisa na área.