NETWORK

[네트워크] BGP와 SDN

ch010104 2026. 5. 27. 21:01

1. BGP (Border Gateway Protocol)

1) BGP의 정의 및 역할

  • 인터넷의 GPS: 독립적인 네트워크 자치 시스템인 AS(Autonomous System)와 AS 사이에서 데이터를 목적지까지 보내기 위한 최적의 경로를 설정해 주는 대규모 외관문 라우팅 프로토콜(EGP)입니다.
  • 신뢰성 우선: 라우팅 정보를 정확하고 안전하게 주고받기 위해 TCP 포트 $179$을 기반으로 동작합니다.
  • 경로 벡터(Path Vector) 프로토콜: 목적지 AS까지 도달하기 위해 거쳐야 하는 AS 경로 목록(AS-PATH)을 직접 확인하여 패킷이 무한 루프에 도달하는 현상을 원천 차단합니다.

2) BGP 최적 경로 선택 메커니즘 (Route Selection)

BGP 라우터가 동일 목적지로 가는 다중 경로를 학습했을 때, 다음 우선순위에 따라 단 하나의 '최적 경로'를 도출해 냅니다.

  1. Local Preference (지역 선호도) [정책 결정]: 우리 AS 내부에서 외부로 나갈 때 어떤 경로를 더 선호할지 결정하는 속성으로, 값이 높을수록 우선합니다. (통신사 간 비용 계약이나 정책에 따라 수동 조작하는 제1의 제어 도구입니다.)
  2. Shortest AS-PATH (최단 AS 경로): Local Preference가 같다면, 목적지까지 거쳐가는 AS의 개수가 가장 적은 경로를 선택합니다.
  3. Closest NEXT-HOP router (뜨거운 감자 라우팅): AS-PATH 길이마저 같다면, 우리 AS 내부의 자원(IGP 코스트) 소모를 최소화하기 위해 가장 가까운 게이트웨이(Next-Hop 라우터) 밖으로 패킷을 가장 빠르게 던져버릴 수 있는 경로를 선택합니다.
  4. Additional Criteria (추가 필터링 기준): 모든 조건이 동률일 때 eBGP를 iBGP보다 선호하거나, 최종적으로 가장 낮은 고유의 Router ID(IP 주소) 값을 가진 경로를 낙점합니다.

2. 전통적인 라우팅 (Per-Router) vs. SDN (Software Defined Networking)

1) 기존 Per-Router Control (분산형 제어 방식)

  • Monolithic & Distributed: 각각의 개별 라우터 장비 내부에 Data Plane(하드웨어)과 Control Plane(경로 계산용 소프트웨어)이 일체형으로 통합되어 돌아가는 폐쇄적 수직 구조입니다.
  • 동작 원리: 라우터들이 주변 장비와 복잡한 분산 라우팅 알고리즘(OSPF, BGP 등)을 돌려 서로 눈치를 보며 각자 독립적으로 로컬 포워딩 테이블을 연산하고 구축합니다.
  • 장단점:
    • 장점: 중앙 사령탑이 없기 때문에 특정 라우터가 죽어도 알아서 우회하는 등 생존력(Fault-Tolerance)이 강합니다.
    • 단점: 장비 설정을 바꾸려면 수천 대의 장비에 일일이 CLI로 원격 접속해야 하여 오설정(Misconfiguration) 발생 위험이 크며, 하드웨어 벤더(Cisco, Juniper 등)의 독점 OS에 종속되어 새로운 네트워크 기술을 프로그래밍하는 식의 유연한 혁신이 불가능합니다.

2) 왜 SDN(소프트웨어 정의 네트워킹)인가? (중앙 집중화의 이점)

  • 메인프레임에서 PC 혁명으로의 비유:
    • 전통 방식(수직 계통): 전용 하드웨어, 전용 OS, 전용 앱이 묶여 팔리던 옛날의 IBM 메인프레임과 같습니다.
    • SDN 방식(수평 분리): 인텔 칩 하드웨어 위에 Windows/Linux OS를 깔고 다양한 서드파티 소프트웨어를 실행하듯, 껍데기 하드웨어 스위치와 중앙 소프트웨어 제어 장치를 분리하여 개방형 생태계를 구축합니다.
  • 트래픽 엔지니어링(Traffic Engineering)의 한계 극복:
    • 전통 방식의 한계: 오직 목적지 주소 기반의 최단 경로(Dijkstra)만 계산하기 때문에, 링크 가중치(Link Weight)를 인위적으로 조절해도 트래픽을 정교하게 다중 경로로 찢는 로드 밸런싱(Load Balancing)이나, 들어오는 입력 포트에 따라 갈래를 다르게 찢어 보내는 소스 기반 경로 제어가 원천적으로 불가능했습니다.
    • SDN의 해결책: 중앙에서 전체 네트워크 맵을 실시간으로 내려다보며 라우팅 규칙을 코드 수준에서 직접 프로그래밍할 수 있기 때문에 제어의 정교함이 대폭 향상됩니다.

3. SDN 아키텍처 및 동작 시나리오

1) SDN의 3대 계층 구조

SDN은 네트워크 제어 및 관리를 수평 구조로 삼등분합니다.

  1. Network-Control Applications (최상위 앱 계층 - "Brains")
    • 실질적인 정책 및 제어 로직을 수행합니다. (예: 최단 경로 알고리즘, 침입 방지, 부하 분산 로직 등)
    • 기존 하드웨어 장비 벤더나 컨트롤러 자체와 완전히 분리(Unbundled)되어 있으며, 개발자가 원하는 언어(Java, Python 등)로 독립적으로 코딩할 수 있습니다.
  2. SDN Controller (중앙 제어 계층 - "Network OS")
    • 노스바운드 API (Northbound, 북향): 상단 제어 앱들이 하드웨어의 상세 스펙을 몰라도 되도록, RESTful API나 추상화된 Network Graph 형태의 진입 장벽이 낮은 인터페이스를 열어줍니다.
    • 네트워크 전역 상태 관리 (Network-Wide State Management): 장치 상태 통계, 호스트 목록, 링크 유효성 등의 DB를 쥐고 전체 지도 데이터를 실시간으로 동기화합니다. 성능과 안정성을 위해 분산 데이터베이스 형태로 복제됩니다.
    • 사우스바운드 API (Southbound, 남향): 하단의 실제 물리 장비들과 통신하기 위한 채널로, 주로 OpenFlow 표준 프로토콜을 사용합니다.
  3. Data-Plane Switches (최하단 데이터 계층 - "Simple Switches")
    • 복잡한 지능이나 알고리즘 연산 능력이 없는 단순하고 빠르며 저렴한 범용 스위치(Commodity/White-box Switches)들입니다.
    • 오직 중앙 컨트롤러가 OpenFlow를 통해 주입(Install)해 준 플로우 테이블(Flow/Forwarding Table) 규칙을 하드웨어 칩 레벨에서 매칭하여 패킷을 고속으로 전달(Forwarding)하는 역할만 수행합니다.

2) 컨트롤/데이터 평면 상호작용 시나리오 (링크 단선 발생 예시)

네트워크 상에서 스위치 s1과 s2 사이의 연결선이 끊겼을 때의 실시간 처리 절차는 다음과 같이 정밀하게 맞물려 작동합니다.

[ s1 장치 단선 감지 ]
        │
        ▼ (1 단계)
[ s1이 OpenFlow Port Status Message로 컨트롤러에 통보 ]
        │
        ▼ (2 단계)
[ SDN 컨트롤러가 수신 후 중앙 DB의 Link-state info 업데이트 ]
        │
        ▼ (3 단계)
[ 업데이트 이벤트가 등록된 다익스트라(Dijkstra) 라우팅 제어 앱 호출 ]
        │
        ▼ (4 단계)
[ 라우팅 앱이 컨트롤러의 Network Graph를 참조하여 새로운 우회 경로 계산 ]
        │
        ▼ (5 단계)
[ 계산된 결과 경로가 컨트롤러 내부의 Flow Table 구조 데이터로 정제 및 변환 ]
        │
        ▼ (6 단계)
[ 컨트롤러가 OpenFlow로 업데이트가 필요한 하위 스위치들에게 신규 Flow Table 주입 ]

4. ICMP 및 ICMPv6

1) ICMP (Internet Control Message Protocol)

  • IP의 신호수: 패킷이 유실되어도 보고하지 않는 IP 프로토콜을 보완하기 위해, 호스트와 라우터가 네트워크 장애 상황을 공유하고 진단하기 위해 사용하는 프로토콜입니다.
  • 캡슐화: IP 데이터그램의 데이터(Payload) 영역에 직접 탑재되어 함께 운송됩니다.
  • 메시지 구조: 장애 성격을 담은 Type과 세부 코드를 담은 Code를 기본으로 삼고, 에러를 유발한 오리지널 IP 패킷의 헤더(첫 $8$바이트)를 반송 시 함께 실어 보냅니다.
  • 주요 Type & Code:

2) Traceroute의 동작 메커니즘

Traceroute 명령어는 수명(TTL) 조작 및 목적지 유효 검증이라는 두 가지 지능형 설계를 통해 목적지까지의 구간별 경로를 추적합니다.

  1. TTL 조작을 통한 순차적 탐색:
    • 출발지에서 목적지 포트 번호를 절대 열려있지 않을 법한 임의의 값(예: 33434)으로 세팅하고, TTL = 1 값을 부여한 UDP 패킷 3개를 쏩니다.
    • 첫 번째 라우터에서 TTL이 0이 되면서 패킷을 드롭시키고, 출발지로 ICMP Type 11 (TTL Expired)을 돌려보냅니다. 이 패킷의 헤더에서 첫 번째 라우터의 IP 주소를 획득하고 시간을 측정합니다.
    • 다음으로 TTL = 2, TTL = 3 순서대로 하나씩 숫자를 올려가며 동일 프로세스를 밟으며 구간 내 모든 라우터들의 IP를 차근차근 긁어옵니다.
  2. 종료 조건 (Stopping Criteria):
    • 마침내 패킷이 경로상의 모든 라우터를 건너뛰고 진짜 목적지 서버에 도달합니다.
    • 목적지 서버는 TTL 값과 무관하게 포트 유효성을 살피는데, 일부러 세팅했던 33434 포트가 닫혀있으므로 출발지에 ICMP Type 3, Code 3 (Port Unreachable)을 응답합니다.
    • 출발지는 이 특정 코드를 받으면 마침내 목적지에 안착했다고 판정하고 경로 추적 루프를 최종 종료합니다.

3) ICMPv6의 혁신적 변화 및 기능 통합

IPv6 생태계에 맞춰 ICMPv6는 다수의 주변 프로토콜들을 자기 통제권 안으로 대거 흡수 통합하였습니다.

  • "Packet Too Big" (Type 2): IPv6에서는 라우터가 임의로 패킷 조각화(Fragmentation)를 하지 않습니다. 만약 라우터 자신의 MTU보다 큰 패킷이 들어오면 버리고 이 메시지를 뱉어냄으로써, 송신 호스트가 스스로 최적의 크기를 파악하게 만드는 PMTUD(Path MTU Discovery)의 핵심 수단이 됩니다.
  • MLD (Multicast Listener Discovery): 기존 IPv4에서 쓰던 멀티캐스트 전용 관리 프로토콜(IGMP)의 기능을 ICMPv6가 프로토콜 스택 내부로 병합하였습니다.
  • NDP (Neighbor Discovery Protocol): IP 주소로 맥 주소를 찾아오던 ARP 프로토콜의 영역까지 흡수하여 네트워크 전반의 통일성을 구현했습니다.

5. 네트워크 관리 (Network Management) 아키텍처

1) 네트워크 관리의 4대 요소

  • Managing Server (관리 서버): 관리자(사람)가 네트워크 상태를 수집, 모니터링 및 전체 통제하는 중앙 콘솔 시스템입니다.
  • Managed Device (피관리 장비): 관리를 받는 라우터, 스위치, 호스트 장치들입니다. 내부에서 대리 역할을 수행하는 작은 백그라운드 프로세스인 Agent(에이전트)가 실시간 구동됩니다.
  • Data (상태 데이터): 에이전트가 기록하고 보관하는 장치들의 세부 프로필입니다. 장치의 셋팅 정보(Configuration), 구동 라이브 맵(Operational), 패킷 카운트 등의 Statistics 정보가 담깁니다.
  • Network Management Protocol (네트워크 관리 프로토콜): 관리 서버와 에이전트가 통계 데이터를 수집하고 이상 징후 알림(Trap/Event)을 교환하기 위한 공용 통신 언어입니다.

2) 역사적 제어 접근 방식의 3단계 패러다임 변화

  1. CLI (Command Line Interface)
    • 방식: ssh나 텔넷으로 직접 장비에 붙어 한 줄씩 장비 전용 수동 텍스트 명령어(types)나 작성해 둔 외부 스크립트 파일(scripts)을 실행시킵니다.
    • 평가: 하드웨어 제조사 의존도가 심하고 개별 장치 단위 수동 노가다라 대규모 자동화에 비적합합니다.
  2. SNMP / MIB (Simple Network Management Protocol)
    • 방식: 표준화된 언어를 통해 장치 내부의 정보 저장 체계인 MIB(Management Information Base) 데이터를 주기적으로 읽어오거나(Query), 원격 설정 변경(Set)을 실행합니다.
    • 평가: 모니터링(Read-only) 수단으로는 크게 성공했으나, 여러 라우터들의 복합적인 환경 설정을 일시에 일관되게 동기화하는 도구로는 트랜잭션 안전성 부재로 한계가 드러났습니다.
  3. NETCONF / YANG
    • YANG (데이터 모델링 언어): 네트워크 설정 구조와 변수들이 가져야 할 사양(Schema)을 구조적으로 꼼꼼하게 기술하는 정형화된 약속 언어입니다.
    • NETCONF (네트워크 설정 프로토콜): YANG 모델에 의거해 만들어진 대규모 설정 변경 데이터를 가져다 장치들에 무결하게 동기화하고 적용시킵니다.