• Nenhum resultado encontrado

Redes definidas por software

No documento Rodrigo Soares e Silva (páginas 31-34)

Recapitulando o que foi abordado na Subsec¸˜ao 2.1.1, uma arquitetura de rede tradicional ´e composta, em princ´ıpio, por dispositivos de encaminhamento pr´e- configurados e interligados fisicamente por meio de enlaces de comunicac¸˜ao. Esses dispositivos operam de acordo com as configurac¸ ˜oes definidas pelo ad- ministrador da rede, o que faz com que tenham autonomia na hora de realizar o encaminhamento de um fluxo de pacotes ou executem algoritmos espec´ıficos que determinam como o fluxo ser´a tratado. Com isso, cada dispositivo opera de maneira independente em relac¸˜ao aos demais e, na maioria das vezes, requerem configurac¸˜ao manual e individualizada. Cada dispositivo possui as suas pr ´oprias camadas de controle e de dados, fortemente acopladas, sendo na primeira onde as decis ˜oes de encaminhamento s˜ao tomadas e na ´ultima onde o ato do repasse dos pacotes de fato ocorre.

Do momento da popularizac¸˜ao da Internet at´e meados dos anos 2000, esse tipo de arquitetura com dispositivos independentes entre si era suficiente para o modo de navegar do usu´ario, em uma ´epoca onde o uso da rede era centrado na localizac¸˜ao dos recursos. No entanto, esse tipo de arquitetura tornou-se in- suficiente para suprir as demandas de um modo de uso orientado a conte ´udo,

abstraindo-se de sua localizac¸˜ao. Mais ainda, a configurac¸˜ao manual e distribu´ıda dos dispositivos de encaminhamento n˜ao ´e escal´avel, sendo extremamente dif´ıcil e suscet´ıvel a erros realizar a configurac¸˜ao individual dos dispositivos de forma que sejam independentes, mas operem em harmonia com os SLAs da rede. O acoplamento entre as camadas de controle e de dados dos dispositivos acaba se tornando um obst´aculo para a obtenc¸˜ao de um comportamento flex´ıvel e mais trivialmente program´avel da rede.

O conceito de rede definida por software, comumente referenciada pela si- gla SDN (Software-Defined Networking) [18] e tamb´em conhecida como rede pro- gram´avel, separa as camadas de controle e de dados dos dispositivos da rede, submetendo a regˆencia do repasse de pacotes da camada de dados a um disposi- tivo controlador logicamente centralizado. Este implementa handlers para eventos da rede, como quando um dispositivo se conecta ou quando um pacote novo ´e recebido e requer tratamento. Esse controlador orquestra o comportamento da rede como um todo e atua como uma ponte entre a rede f´ısica subjacente e as aplicac¸ ˜oes que fazem uso dela. Para tanto, o controlador fornece uma API (Ap- plication Programming Interface) norte para comunicac¸˜ao com as aplicac¸ ˜oes de alto n´ıvel e uma API sul para orquestrac¸˜ao da camada de dados [19]. As camadas de aplicac¸˜ao, de controle e de dados tˆem uma organizac¸˜ao l ´ogica em pilha, conforme mostra a Figura 2.1.

Figura 2.1: Pilha de camadas em SDN.

A API norte ´e um conjunto de m´etodos, func¸ ˜oes ou endpoints que o controlador implementa e exp ˜oe `as aplicac¸ ˜oes de rede. Estas, por sua vez, executam conforme

suas implementac¸ ˜oes e consomem servic¸os do controlador, seja fazendo leitura do estado da rede subjacente ou enviando instruc¸ ˜oes para modificar o comporta- mento dos dispositivos.

Por seu turno, a API sul ´e um conjunto de instruc¸ ˜oes leg´ıveis pelos dispositivos da camada de dados. Geralmente, a comunicac¸˜ao entre as camadas de controle e de dados se d´a pelo protocolo OpenFlow [20], descrito na sec¸˜ao seguinte, pois ´e o protocolo padr˜ao aceito pela ONF (Open Networking Foundation) e ´e tamb´em o mais utilizado nas pesquisas em SDN, incluindo este trabalho. No entanto, existem outras propostas de API sul na literatura, como o NETCONF [21], OVSDB [22], LISP [23], POF [24] e OpFlex [25].

A desvinculac¸˜ao de hardware e software nas redes definidas por software trazem v´arias vantagens no gerenciamento da rede. O controlador pode ser implemen- tado em uma m´aquina convencional com hardware de prop ´osito geral, em uma m´aquina virtual ou at´e mesmo em uma m´aquina remota, n˜ao necessariamente sendo um dispositivo espec´ıfico de rede, podendo inclusive ser escalada com mais recursos computacionais conforme a demanda. Os dispositivos da camada de dados tamb´em necessitam apenas implementar o protocolo de comunicac¸˜ao com o controlador, n˜ao necessitando mais que sejam utilizados sistemas fechados e propriet´arios. Com isso, a rede como um todo se torna escal´avel, flex´ıvel e mais f´acil de passar por manutenc¸ ˜oes por conta da l ´ogica de controle centralizado, sendo, por fim, tamb´em menos custosa economicamente.

As vantagens de redes definidas por software reduzem a propens˜ao a er- ros decorrentes da configurac¸˜ao manual e individual dos dispositivos. Essa configurac¸˜ao passa a ser realizada pelo dispositivo controlador, que executa um algoritmo programado pelo operador e que deve prever como lidar com os pa- cotes passantes. Isso acaba por incorporar a propens˜ao a outros tipos de falhas, como o encaminhamento ou o descarte err ˆoneo de pacotes e o pr ´oprio controla- dor se tornar um ponto de falha. Por isso, h´a esforc¸os de pesquisas que visam elevar o n´ıvel de abstrac¸˜ao da rede com o intuito de facilitar a programac¸˜ao do seu comportamento [7, 10, 26, 27]. Este trabalho est´a inserido nesse escopo, pois fornece como uma de suas contribuic¸ ˜oes uma DSL para a orquestrac¸˜ao do com- portamento da rede sob a regˆencia da arquitetura proposta. O conceito de DSL ser´a abordado mais adiante neste cap´ıtulo.

Na literatura, um dispositivo da camada de dados ´e tamb´em chamado de comutador OpenFlow, switch ou datapath. Para fins de padronizac¸˜ao, deste ponto

em diante este trabalho tratar´a esses dispositivos pela denominac¸˜ao ”switch”.

No documento Rodrigo Soares e Silva (páginas 31-34)