998. OpenFlow 프로토콜 - SDN 사우스바운드 인터페이스 표준 매치/액션 플로우 테이블 파이프라인 통신 규약 플로우 룰 배포망
핵심 인사이트: 997번 문서에서 하늘에 띄운 똑똑한 중앙 뇌(컨트롤러)가, 바닥에 깔린 1만 대의 바보 깡통 스위치(근육)들에게 "이쪽으로 꺾어!"라고 무선 지시를 내린다고 했다. 그런데 뇌와 근육 사이에 신경망(언어)이 없으면 대화가 안 통한다. "야! 하늘의 뇌가 바닥의 스위치에게 룰(명령어)을 심어줄 때, 벤더 상관없이 전 세계 100% 동일하게 통하는 절대 표준 기계어(번역기)를 하나 만들어! 컨트롤러가 'Match(이런 패킷 오면) ➜ Action(이렇게 찢어발겨!)' 이라는 단 2줄의 엑셀표만 바닥으로 탁 쏴주면, 스위치가 닥치고 그대로 움직이게 해!" SDN의 영혼을 잇는 절대 핏줄이자 1세대 표준 규약, OpenFlow다.
Ⅰ. 사우스바운드 인터페이스 (Southbound API)의 핵심 🌟
- 위치: 하늘의 중앙 컨트롤러(뇌)와, 밑바닥의 화이트박스 스위치 기계(근육) 사이를 수직으로 이어주는 배꼽 밑의 신경망 연결 통로(API)입니다.
- OpenFlow(오픈플로우): 이 사우스바운드 통신을 지배하기 위해 스탠퍼드 대학(ONF 기구)에서 발명한, 인류 역사상 가장 성공적인 SDN 1세대 통신 프로토콜 헌법입니다.
Ⅱ. OpenFlow의 3대 핵심 뼈대 (플로우 테이블 마법) 🌟
스위치는 뇌가 없으므로 컨트롤러가 떠먹여 주는 **'플로우 테이블(Flow Table)'**이라는 엑셀 장부만 보고 무식하게 움직입니다. 이 엑셀 장부의 가로줄(항목)은 딱 3개로 나뉩니다.
1. Match (조건 매칭) - "누구냐 넌?"
- 깡통 스위치에 택배(패킷)가 들어오면 이 조건표부터 훑어봅니다.
- OpenFlow는 약 40가지가 넘는 조건을 기가 막히게 따질 수 있습니다.
- "출발지 IP가
1.2.3.4인가?" (L3 라우터 흉내) - "목적지 MAC 주소가
AA:BB인가?" (L2 스위치 흉내) - "TCP 포트가
80번(웹)인가?" (L4 방화벽 흉내)
- "출발지 IP가
- 즉, OpenFlow 엑셀 장부 한 줄만 잘 쓰면, 이 깡통 기계를 1초 만에 방화벽으로 둔갑시킬 수도 있고, 라우터로 둔갑시킬 수도 있는 '만능 트랜스포머' 스위치가 됩니다.
2. Action (행동 지침) - "가차 없이 베어라!" 🌟
Match 조건을 통과한 패킷을 어떻게 요리할지 적혀있습니다.
- Forward: "3번 구멍으로 던져버려!" (일반적인 길 안내)
- Drop: "조건에 맞으면 그냥 패킷을 갈기갈기 찢어서 쓰레기통에 버려!" (방화벽 역할 수행)
- Modify: "패킷의 IP 주소를
10.0.0.1로 뜯어고친 뒤에 넘겨!" (NAT 공유기 흉내)
3. Statistics (통계 카운터) - "몇 대나 지나갔니?"
- 이 룰을 타고 지나간 패킷의 개수와 바이트 용량을 묵묵히 숫자로 셉니다. 나중에 컨트롤러가 "트래픽 얼마나 막혔냐?" 물어보면 이 숫자를 보고합니다(모니터링 기반).
Ⅲ. Packet-In 메시지 (길을 모를 때의 당황)
컨트롤러가 장부에 적어주지 않은 완전히 새로운(낯선) 패킷이 스위치에 들어왔습니다.
- 깡통 스위치는 자기 스스로 길을 찾을 지능이 0%입니다.
- 즉시 패킷을 홀드하고, 컨트롤러에게 **
Packet-In메시지(구조 요청)**를 위로 쏴 올립니다. "형님! 장부에 없는 낯선 놈이 왔는데 이거 어디로 쏠까요?" - 컨트롤러는 그 패킷을 1초 만에 분석하고,
Packet-Out(이리로 보내라)과Flow-Mod(장부에 새 규칙 추가해 둬라!) 명령을 밑으로 때려 넣어 스위치에게 새로운 길을 뚫어줍니다.
Ⅳ. 1세대 한계와 P4로의 진화 (997번 연계)
- 오픈플로우는 위대한 혁명이지만, 997번(P4)에서 배웠듯 스위치의 칩셋 구조(파서)가 공장에서 정해준 40가지 조건(Match 필드)밖에 읽지 못하는 맹점이 있었습니다. (새로운 해킹 패킷 조건이 나오면 기계를 바꿔야 함)
- 이 오픈플로우의 닫힌 딱딱함을 무너뜨리고 칩셋 구조 자체를 C언어처럼 갈아엎게 해주는 2세대 흑마법이 바로 데이터 플레인 코딩 언어, P4 프로토콜입니다.
📢 섹션 요약 비유: SDN이 뇌(컨트롤러 사장님)와 손발(깡통 스위치 알바생)을 분리한 햄버거 가게라면, OpenFlow 프로토콜은 사장님이 알바생에게 카톡으로 쏴주는 **'절대 무적의 3칸짜리 엑셀 매뉴얼(플로우 테이블)'**입니다. 알바생은 요리할 지능이 아예 없습니다. 오직 매뉴얼만 봅니다. 1번 칸(Match 조건): "빨간 모자 쓴 진상 손님이 오면?" 2번 칸(Action 행동): "가차 없이 소금을 팍팍 쳐서 쫓아내라(Drop)!" 3번 칸(통계): "오늘 소금 맞고 쫓겨난 손님 15명 카운트 셈". 만약 매뉴얼에 없는 파란 모자 손님이 오면 알바생은 당황해서 사장님께 전화(Packet-In 구조요청)를 겁니다. 사장님이 "파란 모자는 치즈버거 줘라(Flow-Mod 장부 업데이트)!"라고 즉석에서 매뉴얼을 폰으로 업데이트해 주면, 알바생은 다시 기계처럼 치즈버거만 죽어라 찍어내는 완벽한 중앙 통제 톱니바퀴 시스템의 핏줄(신경망) 언어입니다.