SDN이란?
SDN(Software Defined Network)이란 소프트웨어를 통해 네트워크 리소스를 가상화하고 추상화하는 네트워크 인프라에 대한 접근 방식을 의미한다. 조금 더 쉽게 설명하자면, 소프트웨어 애플리케이션과 API를 이용하여 네트워크를 프로그래밍하고, 중앙에서 전체 네트워크를 제어하고 관리하는 것이다.
작동 방식
SDN에서 가장 핵심은 네트워크 장비의 Control Plane(제어부)와 Data Plane(전송부)의 분리이다.
Control Plane은 네트워크 장비를 제어하는 뇌에 해당하고, Data Plane은 데이터를 전송하는 역할을 하는 것이다.
기존의 라우터(Router)라는 네트워크 장비에는 제어부와 전송부가 같이 존재한다. 제어부에서 최적의 경로를 계산하고 전송부가 데이터를 전송하는 방식이다. 따라서 네트워크 운영자는 각각의 네트워크 장비를 수동으로 관리해야 했으며, 전체 기능이 필요하지 않은 경우에도 비싼라우터를 구매하여 사용하는 수밖에 없었다. SDN을 적용하면 제어부와 전송부를 분리한다. 제어부를 별도의 컴퓨팅 서버로 분리하고, 네트워크 장비는 데이터 전송 기능만 담당하도록 하는 것이다.
장점
1. 비용 절감
제어부는 여러 네트워크 장비를 제어할 수 있기 때문에 관리가 관소화 되고 운영에 들어가는 비용을 줄일 수 있다. 또한, 각 장비의 사양을 각각의 기능에 최적화시킬 수 있으므로 더 이상 눈물을 머금고 리소스의 낭비를 보고 있을 필요가 없다.
2. 확장성 및 유연성
"가상화"라는 기술을 설명할 때 항상 따라오는 장점이다. SDN 또한 네트워크를 가상화한다는 점에서 마찬가지이다. 하드웨어를 소프트웨어로 전환하며, 더 이상 물리적인 리소스의 한계에 구애받지 않아도 된다. 원하는 시기에 필요한 만큼 네트워크 리소스를 확장하거나 축소할 수 있다. 벤더 별로 각각의 장치를 프로그래밍하고 그 한계에 타협하는 상황에서 벗어나, 네트워크 장비를 선택할 때 더 높은 유연성을 확보할 수 있게 된다.
역사
컴퓨터와 통신에 있어 네트워크는 정말 중요한 분야이다.
Legacy 네트워크와 별개로 우리는 네트워크를 Software화 시키는 것이 왜 중요한지, 이를 위해 역사상 어떤 노력들이 진행되어 왔는지 살펴볼 필요가 있다. 논문(The Road to SDN: An Intellectual History of Programmable Networks)에서 이를 확인할 수 있다.
SDN의 창시자로 불리는 Scott Shenker(UC버클리 교수)과 Nick Mckeown(스탠포드 대학 교수) 2명은 알아두도록 하자. 이들을 비롯한 SDN 창시자들은 ONF(Open Networking Foundation)라는 비영리 단체를 만들고, OpenFlow와 SDN Controller ONOS(Open Network Operating System)를 개발하였다.
구글 G-scale 발표
실제로 SDN이 현업에 적용되며 빠르게 발전한 계기는 2012년 4월 구글에서 G-scale SDN 적용 사례를 발표하고 나서부터가 아닌가 싶다. G-Scale은 구글이 2010년에 시작한 OpenFlow 프로젝트로 전 세계에 흩어져있는 구글 데이터센터 백본(Backbone) 구간을 SDN 기반으로 전환하는 프로젝트이다.
백본(Backbone) 네트워크는 사용자 네트워크와 다르게 한번에 대용량 데이터가 전송된다.
(참고 : 백본 네트워크 - 데이터센터 간 연결망, 사용자 네트워크 - 사용자와 구글 서비스의 연결망)
이에 구글은 자체적으로 네트워크 장비를 제작하고 Openflow를 도입하여 SDN을 구현하고 이를 해결하였다.
SDN 적용으로 구글은 크게 3가지 이득을 볼 수 있었다.
1. 50% → 100%
기존의 Legacy Network 인프라의 경우 리소스 활용률이 평균 50%가 채 되지 못한다고 한다. 각각의 네트워크 장비들이 벤더에 종속되어 있어 호환성 문제로 기능을 100% 활용할 수 없을 뿐만 아니라 전체 네트워크 스위치들에 대한 컨트롤이 불가능하기 때문이다. 다양한 네트워크 상황에 딱맞는 장비를 구할 수도 없기 때문에 오버스펙의 장비를 구매해야 하지만 구글은 SDN을 구현하여 거의 100%에 가까운 인프라 리소스 활용률을 만들어냈다.
2. WAN(Wide Area Network) 분야에서의 경로 최적화
WAN대역에서 가장 빠른 경로를 계산하여 데이터 전송 속도를 높이고, 사용자에게는 빠르고 고품질의 서비스를 제공하게 되었다. 구글은 전 세계를 대상으로 하는 서비스이기 때문에 WAN 대역에서의 데이터 전송 성능 향상은 더욱 중요하였다.
3. 비용 절감
SDN 컨트롤러와 화이트박스 스위치의 조합을 통해 데이터센터 내의 네트워크 구축 비용을 획기적으로 낮췄다. 화이트박스 스위치(WhiteBox Switch)란 SDN에서 나온 개념으로 기존 레거시 장비의 제어 방식이 공개가 안 돼서 ‘블랙박스’라고 불리는 것과 반대의 개념이다. 네트워크 장비의 동작 방식을 사용자가 결정하고 투명하게 공개되어 있다는 의미이다. 또한 동시에 데이터센터 내의 서비스 트래픽 특성을 전체적으로 파악하여 최적의 네트워크를 구성하고, 비용 또한 최적화시킬 수 있었다.
이후 세계의 통신사들은 주도적으로 SDN을 도입하고 네트워크를 가상화하기 시작하였으며, 네트워크 장비 제조사들 또한 SDN의 주도권을 가지기 위해 적극적으로 뛰어들게 된다. 참고로 오래되고 대표적인 SDN업체 Nicira가 2012년 VMware에 인수되었다. Cisco는 2014년 Tail-f와 Insieme을 인수하고, 오픈 커뮤니티를 이끌며 오픈 데이라이트(Open Daylight)라는 SDN Controller를 개발하였다.
SDN Architecture
SDN 아키텍처는 Application Layer, Control Plane(SDN 컨트롤러), Data Plane(SDN 전송 장비) 으로 구성되는 3 계층 구조로 표현할 수 있고 계층 간 연동을 위해서 Southbound Interface(ex. OpenFlow)와 Northbound Interface가 존재한다.
Application Layer
Routing, Loadbalance, ACL 등 네트워크를 제어하는 데 사용되는 소프트웨어 애플리케이션들이다. SDN 컨트롤러에서 제공받은 API와 여러 서비스들을 이용하여 Control 기능을 구현한다.
SDN Controller
SDN 컨트롤러는 전체 네트워크 자원에 대한 중앙 집중적 제어를 담당하는 네트워크 운영체제 역할을 담당한다. 중앙 집중적 네트워크 제어를 위해 글로벌 뷰를 기반으로 포워딩을 제어하고 토폴로지 및 자원의 상태를 관리하는 기본 기능을 수행한다. 또한 여러 네트워크 장비와 통신할 수 있도록 South-bound API를 제공하거나 추가할 수 있으며, 여러 가지 기능의 애플리케이션을 개발하고 다른 운영 도구과 통신할 수 있게 해주는 North-bound API도 제공한다.
대표적인 SDN Controller에는 위에서 언급했듯이 ONF의 주도로 만들어진 ONOS가 있으며, 이 외에도 Floodlight, Trema, Maestro, Opendaylight 등이 있다.
Data Plane
Data Plane의 SDN 디바이스는 SDN 컨트롤러의 지시에 따라 패킷 전송을 수행하는 네트워크 장치를 통칭한다. 앞서 구글의 사례에서 보았듯이 SDN의 개념과 화이트박스 스위치와를 이용하여 레거시 장비 대비 획기적으로 낮은 가격으로 데이터센터의 네트워크를 구축할 수 있다.
OpenFlow
기존 레거시 장비에서는 Control Planer과 Data Plane이 하나의 장비 내에 같이 탑재되었기 때문에 통신이 필요 없었지만 SDN에서는 Control Planer과 Data Plane이 구분되며, SDN 컨트롤러는 Data Plane 계층에 대한 포워딩을 제어(Match & Action)하고 정보를 수집하기 위해 Southbound 인터페이스를 사용한다. 이 표준 통신(RPC) 규격 중 하나가 바로 ONF에서 정의하고있는 OpenFlow Protocol이다.
즉, OpenFlow는 이론으로만 가능했던 SDN을 구현하기 위해 처음으로 제정된 최초의 표준 통신 인터페이스이다.
OpenFlow는 OpenFlow 스위치, OpenFlow 컨트롤러로 구성되며, 흐름(flow) 정보를 제어하여 패킷의 전달 경로 및 방식을 결정한다. OpenFlow 스위치 내부에는 패킷 전달 경로와 방식에 대한 정보를 가지고 있는 FlowTable이라는 것이 존재한다.
패킷이 발생하면 제일 먼저 FlowTable이 해당 패킷에 대한 정보를 가지고 있는지 확인하고, 없다면 패킷에 대한 제어 정보를 OpenFlow 컨트롤러에 요청하는 것이다. OpenFlow 컨트롤러 내의 패킷 제어 정보는 외부에서 API를 통해 입력할 수 있다.
'CS > 네트워크' 카테고리의 다른 글
스위치 라우터의 차이 (0) | 2024.08.09 |
---|---|
IPsec의 개념 (0) | 2024.07.30 |
[네트워크] 호스트 (host), 클라이언트 (Client), 서버 (Server) (0) | 2024.05.27 |
[네트워크] 접근 통제 정책 (MAC, DAC, RBAC) (0) | 2024.05.27 |
맵 방식 설정 심리스(Seamless), 존(Zone), 룸(Room) (0) | 2024.03.21 |