853. 사우스바운드 인터페이스 (Southbound API) - 컨트롤러와 데이터 스위치 간 명령 규약
핵심 인사이트: 852번의 뇌(컨트롤러)와 851번의 근육(스위치 기계)은 어떻게 대화할까? 컨트롤러는 중앙 클라우드에 떠 있는 소프트웨어고, 스위치는 바닥에 깔린 삼성, 델, 주니퍼의 쇳덩어리 기계다. 서로 언어가 완전히 다르다. 뇌가 "1번 차선 열어!"라고 지시하면, 기계가 알아먹을 수 있도록 통역해 주고 전달해 주는 뇌와 근육 사이의 척수 신경망 통신선이 필요하다. 아래쪽(바닥) 장비를 향해 뻗어있다고 해서 이를 사우스바운드(Southbound) 인터페이스라 부른다.
Ⅰ. 사우스바운드 인터페이스 (Southbound Interface / API)의 개념
- 개념: SDN 아키텍처에서 중간의 **제어 계층(컨트롤러)**과 맨 밑바닥의 인프라 계층(데이터 평면 스위치/라우터 장비) 사이를 연결하여 제어 신호와 상태 정보를 주고받는 통신 규약(API)입니다.
- 아키텍처 다이어그램을 그릴 때 컨트롤러를 기준으로 **남쪽(아래쪽, South)**으로 향하는 선이라 하여 붙여진 직관적인 이름입니다.
Ⅱ. 사우스바운드의 양방향 핵심 임무 🌟
1. 하향 통신 (명령 하달: Controller ➜ Switch)
- 플로우 테이블(Flow Table) 배포: 컨트롤러가 짠 완벽한 길 찾기 장부(룰)를 밑에 있는 깡통 스위치들에게 "이대로 1번 구멍에서 2번 구멍으로 패킷 던져라!" 라며 강제로 주입시킵니다. (프로비저닝)
2. 상향 통신 (상태 보고: Switch ➜ Controller)
- 장비 상태 보고: 바닥에 있는 스위치가 "저기요, 지금 트래픽이 너무 몰려서 제 구멍이 터질 것 같아요!"라거나 "방금 3번 랜선이 뽑혔습니다!"라는 긴급 물리적 장애 상태(Telemetry)를 위의 컨트롤러에게 실시간으로 꼰지릅니다(보고합니다). 컨트롤러는 이 보고를 듣고 지도를 다시 짭니다.
Ⅲ. 사우스바운드 인터페이스의 대장들 (표준 규약) 🌟
뇌와 기계가 대화하는 언어(프로토콜)에는 여러 종류가 있습니다.
1. OpenFlow (오픈플로우) - 절대적 1대장
- 가장 유명하고 상징적인 사우스바운드 표준 프로토콜입니다.
- 컨트롤러가 스위치의 플로우 테이블을 찰흙 주무르듯 아주 미세하고 정밀하게 마음대로 뜯어고칠 수 있게 해주는 마법의 척수 신경 언어입니다. (다음 855번 문서에서 심층 분석)
2. OVSDB (Open vSwitch Database Protocol)
- 860번에서 배울 가상 스위치(OVS)를 제어할 때 씁니다. OpenFlow가 길을 찾는 룰을 던져준다면, OVSDB는 "스위치 포트 1개 새로 파라, 스위치 껐다 켜라" 같은 가상 스위치 기계 자체의 생성을 조작하는 언어입니다.
3. NETCONF / RESTCONF 🌟 (현대 실무 대세)
- 스위치의 쇳덩어리(ASIC) 칩셋을 직접 조종하는 OpenFlow 대신, 요즘은 스위치에 그냥 XML이나 JSON 형식으로 "IP 주소 이거 써라, OSPF 켜라" 하고 텍스트 문서(환경 설정)를 던져서 세팅을 바꾸는 NETCONF(875번) 규약을 사우스바운드 용도로 엄청나게 많이 씁니다. 인간에게 익숙한 웹 API 느낌이라 확장이 미치도록 편합니다.
📢 섹션 요약 비유: 인체를 비유해 봅시다. 우리의 머리(SDN 컨트롤러)에서 "다리를 굽혀라!"라는 생각을 합니다. 이 생각이 실제 다리 근육(스위치 장비)까지 도달하려면 목을 타고 내려가는 **'척수 신경망(사우스바운드 인터페이스)'**이 필요합니다. 사우스바운드 신경망은 위에서 아래로 뇌의 명령을 근육에 전달하여 발을 차게 만들고(명령 하달), 반대로 발바닥 근육이 "돌부리에 찔려 아프다!"라는 감각을 신경망을 타고 위로(뇌로) 올려보내(상태 보고) 뇌가 발을 피하게 만듭니다. **오픈플로우(OpenFlow)**는 이 수많은 인체 척수 신경 언어 중에서도 가장 빠르고 정밀하게 100% 근육을 내 마음대로 꺾고 조종할 수 있는 최고의 특수 신경 물질입니다.