854. 노스바운드 인터페이스 (Northbound API) - 컨트롤러와 응용(보안, QoS) 애플리케이션 간 통신/API 연동 규약
핵심 인사이트: SDN 컨트롤러(뇌)가 천재적인 지휘관이라 쳐도, 지휘관 혼자서 "어디서 디도스가 터지는지, 누구한테 요금을 비싸게 받을지" 판단할 수는 없다. 지휘관 위에는 진짜 비즈니스 로직을 짜는 '프로그래머(애플리케이션)'들이 버티고 있다. 프로그래머가 파이썬(Python)으로 "오늘 밤 12시에 유튜브 막아줘"라고 코드를 짜서 넘기면, 컨트롤러가 그걸 찰떡같이 알아듣고 스위치로 내려보낸다. 프로그래머(앱)와 뇌(컨트롤러)를 엮어주는 통역기, 이 위로 향하는 길이 노스바운드 인터페이스다.
Ⅰ. 노스바운드 인터페이스 (Northbound Interface / API)의 개념
- 개념: SDN 아키텍처에서 중간의 **제어 계층(컨트롤러)**과 그 위에서 돌아가는 응용 계층(네트워크 애플리케이션: 방화벽, 로드밸런서, 트래픽 감시 앱 등) 사이를 연결하여 소통하게 해 주는 소프트웨어 통신 규약(API)입니다.
- 아키텍처 다이어그램에서 컨트롤러를 기준으로 **북쪽(위쪽, North)**으로 향하는 선이라 하여 노스바운드라 부릅니다.
Ⅱ. 노스바운드의 2대 핵심 기능 (비즈니스와 인프라의 융합) 🌟
1. 네트워크의 완벽한 추상화 (Abstraction) 제공 🌟
이게 노스바운드가 가져온 혁명입니다.
- 과거의 끔찍함: 1,000만 원짜리 디도스 방어 앱을 만들려면, 개발자가 시스코 스위치 기계어 명령(CLI)을 다 외우고, 주니퍼 스위치 언어도 다 따로 외워서 짜야 했습니다(하드웨어 종속성).
- 노스바운드의 구원: 컨트롤러가 밑바닥의 그 더러운 스위치 기계어 차이를 다 감춰버리고, 앱 개발자에게는 아주 예쁘고 통일된 **RESTful API (HTTP 기반 JSON/XML)**만 딱 제공합니다.
- 개발자는 기계어를 1도 모르지만, 그냥 파이썬으로
POST /api/network/block IP=1.1.1.1한 줄만 쏴주면, 밑에서 컨트롤러가 알아서 시스코 스위치든 화이트박스 스위치든 기계에 맞게 번역해서 디도스를 차단해 줍니다.
2. 비즈니스 '의도(Intent)'의 전달
- 윗단에 있는 앱(App)은 복잡한 네트워크 길 찾기를 알 필요가 없습니다.
- 로드밸런서 앱이 노스바운드 API로 **"이번 트래픽은 보안 1등급(의도)으로 쏴줘!"**라고 대충 툭 던집니다.
- 이 말을 찰떡같이 알아들은 컨트롤러(뇌)가, 알아서 밑바닥 지도를 보고 해킹 위험이 없는 안전한 스위치들로만 쏙쏙 피해서 길(경로)을 다 뚫어줍니다.
Ⅲ. 노스바운드 인터페이스의 대장들 (RESTful API의 천하통일) 🌟
사우스바운드는 기계랑 대화해야 해서 OpenFlow 같은 특수 언어를 썼지만, 노스바운드는 앱 개발자(인간)랑 대화해야 하므로 웹 개발 언어로 통일되었습니다.
- RESTful API (JSON / XML): 전 세계 모든 웹 개발자가 숨 쉬듯 쓰는 HTTP 기반의 표준 API 규격입니다. 노스바운드 인터페이스의 99%는 이 REST API로 만들어집니다. (개발 허들이 극도로 낮아져 SDN 생태계가 폭발했습니다.)
- Frenetic, Nettle, Pyretic: 학계에서 만든 특수 SDN 언어들이지만 지금은 REST API에 밀려 거의 쓰지 않습니다.
Ⅳ. SDN 생태계 빅뱅의 근원지
노스바운드 API 덕분에 네트워크가 **'소프트웨어 산업'**으로 바뀌었습니다. 기존 쇳덩어리 장비 장사만 하던 시스코 대신, 실리콘밸리의 소프트웨어 스타트업들이 파이썬으로 기가 막힌 방화벽 앱, 트래픽 감시 앱을 짜서 컨트롤러 위에 올리기 시작하며 통신 시장의 패러다임이 엎어졌습니다.
📢 섹션 요약 비유: 노스바운드 인터페이스는 식당 주방의 **'주문 단말기(POS)'**입니다. 요리를 하는 건 주방장(컨트롤러)과 보조 요리사들(스위치 기계)입니다. 그런데 홀에 있는 손님이나 웨이터(앱 프로그래머)가 주방장에게 요리를 시킬 때 "가스레인지 불을 300도로 맞추고, 프라이팬을 10도로 돌려서 소금을 쳐라"라고 기계적인 명령을 하지 않습니다. 웨이터는 주문 단말기(노스바운드 API)에 그냥 '짜장면 1개 덜 짜게(비즈니스 의도)'라고 입력(REST API 호출)만 딱 누릅니다. 그러면 단말기 주문서를 본 주방장(컨트롤러)이 찰떡같이 알아듣고, 밑바닥의 온갖 기계(가스레인지, 프라이팬)를 복잡하게 조작하여 완벽한 짜장면을 완성해 냅니다. 웨이터(앱)는 기계 사용법을 평생 몰라도 됩니다.