This article describes the limitations of sendmsg, the current system call responsible for sending network messages in Linux. It is shown that this system call performance is not good enough, mainly when it needs to send a batch of similar data to many destinations in the network, as commonly experienced in IPTV servers. In order to prove that, a new system call has been implemented, sendmmsg, which acts similarly to the original one, but presenting some performance advantages, specially when sending similar data to peers. This new call needs only an extra parameter, when compared to the original one.Resumo-Este artigo descreve as limitações da chamada de sistema sendmsg responsável por enviar mensagens de rede no sistema operacional Linux.É mostrado que tal chamada não possui um bom desempenho quando se necessita enviar vários pacotes em lote, contendo dados similares, para vários destinatários remotos -caso comum em servidores de IPTV. Para tanto,é implementada uma nova função, sendmmsg, parecida com a original, porém, mais eficiente, apenas com o acréscimo de um parâmetro.
I. INTRODUÇÃOCom a popularização dos serviços sobre Internet Protocol (IP) e a recente onda de TV sobre Internet (IPTV), muitos estudos estão surgindo com foco naárea de protocolos e codificação de vídeo. Em paralelo a esses estudos, este artigo vai além, com a finalidade de focar os métodos de implementação do subsistema de comunicação especialmente no sistema operacional Linux.Sabe-se que a tecnologia IPTVé fortemente baseada Realtime Transport Protocol (RTP), que, por sua vez,é baseado no User Datagram Protocol (UDP) [Silverston et al. 2009]. Essa pilha de protocolos tem como "porta de saída" a chamada de sistema denominada sendmsg, queé vastamente utiliza no Linux por software de transmissão de conteúdo [Mukherjee and Brecht 2000]. Tal chamadaé executada todas as vezes que um pacote precisa ser enviado para um destino, mesmo quando vários pacotes possuem os mesmos dados, istoé, dado um lote de pacotes idênticos, estes precisam ser enviados um a um para todos os destinatários [Lahav et al. 2008]. Tal problema não acontece em pequenas redes, uma vez que existe a tecnologia de multicast, que permite a transmissão de um pacote para um grupo de destinatários. Embora a tecnologia de multicast seja madura e facilmente configurável, ela nãoé amplamente utilizada nos servidores e roteadores da Internet comercial[Levine and Garcia-Luna-Aceves 1997], implicando que os sistemas de software de transmissão de conteúdo, principalmente os de IPTV, ainda se baseiem na tecnologia unicast. Essa implicação reflete diretamente ná area de sistemas operacionais, uma vez que a chamada de sistema implementada para enviar mensagens unicast passa a ser utilizada para enviar múltiplas mensagens unicast, aqui chamadas de multiunicast.Assumindo que o multiunicasté um padrão de facto no envio de vídeo, torna-se fácil calcular a dimensão da quantidade de vezes em que a chamada sendmsgé executada para a transmissão de um vídeo de alta resolução. Supondo que cada quadro ...