네트워크_SDN
[SDN]
1. 정의
SDN은 네트워크 장비(라우터, 스위치 등)의 제어(Control Plane)를 장비 자체에서 분리하여, 중앙 집중화된 컨트롤러(Controller)에서 관리하고, 네트워크 장비는 단순히 데이터 전달(Data Plane)만 수행하게 하는 구조입니다.
2. 특징
- 제어와 데이터의 분리: 기존 장비는 제어 + 데이터 처리를 동시에 했지만, SDN은 이 둘을 분리함.
- 중앙 집중형 제어: 네트워크 전체를 통제하는 중앙 컨트롤러 존재.
- 프로그래머블 네트워크: 네트워크 정책을 소프트웨어로 쉽게 수정 가능.
- 표준 인터페이스 사용: OpenFlow 등의 프로토콜로 장비 제어.
3. 장점
- 유연성: 네트워크 구조나 경로 변경이 쉬움.
- 중앙 관리: 여러 장비를 한 곳에서 통합 관리 가능.
- 자동화 가능: 소프트웨어로 정책 변경 및 자동화 구현 용이.
- 빠른 장애 대응: 중앙에서 네트워크 상황 실시간 파악 및 대처.
4. 단점
- 중앙 장애 시 리스크: 컨트롤러 고장 시 전체 네트워크 영향을 줄 수 있음.
- 보안 위협 집중: 중앙화된 컨트롤러는 공격 타겟이 될 수 있음.
- 복잡한 초기 구축: 기존 장비와 연동 시 기술적 난이도 있음.
5. 동작 원리
- 컨트롤러(Control Plane): 네트워크 정책, 라우팅 경로 등을 결정.
- 스위치/라우터(Data Plane): 컨트롤러 지시에 따라 패킷 전달.
- OpenFlow 같은 프로토콜로 컨트롤러가 장비에 명령을 전달함.
- 컨트롤러는 네트워크 상황을 실시간으로 수집하고 최적의 경로를 계산하여, 각 장비의 Flow Table에 반영.
[OpenFlow protocol]
1. 정의
OpenFlow는 SDN 구조에서 컨트롤러가 스위치의 데이터 플레인을 직접 제어할 수 있도록 설계된 프로토콜이다. 즉, 컨트롤러는 OpenFlow를 통해 스위치의 흐름 테이블(Flow Table)을 읽고 수정하며, 패킷이 어떤 경로로 전달될지를 결정한다.
2. 구성 요소
- Controller: 중앙의 지능적인 제어 시스템
- OpenFlow Switch: Flow Table 기반으로 동작하는 장비
- Secure Channel: 컨트롤러와 스위치를 연결하는 통신 경로 (TLS 등으로 암호화)
- OpenFlow Protocol: 컨트롤러가 스위치에게 Flow Table을 설정하거나 상태를 조회하는 데 사용하는 프로토콜
3. Flow Table 항목
각 스위치는 내부에 Flow Table을 가지고 있으며, 다음 정보로 구성됩니다:
- Match 필드: 어떤 패킷에 적용할지 결정 (예: IP, TCP 포트 등)
- Action: 해당 패킷에 어떤 동작을 수행할지 정의 (예: drop, forward, modify 등)
- Counter: 해당 규칙에 일치한 패킷 수 등 통계 정보
4. 동작 원리
- 패킷이 스위치에 도착하면, Flow Table에서 해당 패킷에 맞는 룰이 있는지 확인한다.
- 룰이 있으면, 지정된 동작(Action)을 수행한다.
- 룰이 없으면 패킷을 컨트롤러에게 전송(Packet-In), 컨트롤러가 분석 후 새로운 룰을 스위치에 전송(Packet-Out 또는 Flow-Mod).
- 스위치는 해당 룰을 저장하고 이후 유사한 패킷에 대해 자율적으로 처리.
5. 특징
- 표준화된 프로토콜 (Open Networking Foundation에서 개발)
- 중앙 집중형 제어 실현
- 유연한 트래픽 제어 및 최적화 가능
- 패킷 단위 또는 흐름 단위로 세밀한 제어 가능
[OpenDaylight (ODL)]
1. 정의
OpenDaylight(ODL)는 리눅스 재단(Linux Foundation)이 주도하는 모듈형, 확장형 SDN/NFV 컨트롤러로, OpenFlow를 포함한 여러 프로토콜을 지원하여 멀티벤더 네트워크 장비를 중앙에서 제어할 수 있도록 설계된 플랫폼이다.
2. 특징
- 오픈소스 기반: 누구나 자유롭게 사용, 수정, 확장 가능
- 모듈 구조: 기능별로 번들화되어 필요한 기능만 선택 가능
- 플러그인 방식: 다양한 프로토콜(OpenFlow, NETCONF, BGP, PCEP 등) 지원
- REST API 제공: 네트워크를 쉽게 자동화하고 외부 애플리케이션과 연동 가능
- 서비스 추상화: 네트워크 장비에 종속되지 않도록 추상화된 서비스 인터페이스 제공
3. 장점
- 다양한 네트워크 환경과 호환 (OpenFlow, NETCONF, SNMP 등)
- 유연한 확장성: Java 기반 OSGi 프레임워크로 개발되어 기능 추가 용이
- 강력한 커뮤니티와 지원: OpenStack, Cisco, Huawei 등 기업과 협업
- 표준 API 제공: northbound API로 상위 애플리케이션 개발 가능
4. 단점
- 설정이 복잡함: 초기 구축 및 모듈 선택이 어렵고 설정량이 많음
- 리소스 소비 큼: Java 기반으로 무겁고 메모리 소모가 많음
- 학습 곡선 존재: 다양한 모듈과 설정 파일 구조로 인해 초심자에겐 진입 장벽 있음
5. 동작 원리
- ODL은 OpenFlow, NETCONF 등의 프로토콜을 통해 스위치나 라우터와 통신함.
- Controller Core가 네트워크 상태를 유지하고, 흐름 제어를 관리함.
- Northbound API를 통해 네트워크 애플리케이션(예: 방화벽, 경로 제어)이 ODL을 통해 네트워크를 제어함.
- 사용자는 REST API 또는 GUI를 통해 Flow Rule 설정, 통계 조회 등을 수행함.