ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SDN(software defined networking) control plane
    네트워크 2024. 6. 6. 02:23

    트래픽 엔지니어링

    어느 한 쪽으로 트래픽이 몰리는 게 마음에 안들면 분산시키고 싶을 수도 있음 (로드 밸런싱)

    그런데 전통적인 방법으로는(라우터에서 포워딩 테이블 만들기) 어려움이 있음

    예전 방식은 control과 data plane이 분리가 안됨

     

    현재는 네트워크 관리자가 패킷의 흐름을 제어할 수 있도록 관여 -> 소프트웨어를 통해

     

    논리적으로 중앙화된 컨트롤 플레인

    멀리 있는 컨트롤러와 라우터의 CA(control agent)와 상호작용하여 포워딩 테이블을 만듦

    왜 "논리적으로" 중앙화인가

    물리적으로는 보통 분산처리가 되어 있는데, 포워딩 테이블 만드는 기능에선

    그게 중요한게 아니니까 논리적으로 하나의 컨트롤러로 생각하는 것

     

    SDN 방식은 OSPF 같은 개방형 프로토콜처럼 제조회사가 달라도 사용 가능함

     

     

    Generalized Forwarding

    기존에는 오직 IP 주소만 보고 포워딩 테이블을 만들었음

    이제 헤더의 여러 정보를 검토해서 포워딩함 => Flow Table

     

    ----------------------------

    Control applications

    직접 개발할 수도 있고, 상업 SW 사용도 가능

    보안, 로드 밸런싱, 경로 설정 등을 소프트웨어로 제어 가능

    중요한 건 정책

    ---------------------------

    SDN contoller (network OS)

    - 네트워크 상태 정보를 유지

    - northbound API - 네트워크 컨트롤 어플리케이션과 소통

    - southbound API - 네트워크 스위치들과 소통

     

    성능을 위해서 실제론 분리되어 있으나, 논리적으론 통합되어 있음

    ---------------------------

    Data plane switch

    하드웨어로 구현된 데이터 플레인(포워딩)을 가짐

    플로우 테이블은 컨트롤러에 의해 인스톨됨

    컨트롤로와 소통을 위한 프로토콜 사용


    OpenFlow protocol

    컨트롤러와 오픈플로우 스위치 간 메시지 교환

    tcp 사용

    오픈플로우 메시지

    - controller to switch (sync .. 동기적. 컨트롤러는 스위치한테 응답을 받은 이후에 다른 작업이 가능)

    - switch to controller (async .. 비동기적. 제대로 받는지 확인을 하지 않음)

    - symmetric (misc .. 기타 메시지. 테스트 용으로 같은 메시지를 주고 받음, 메아리)

     

    Controller-to-switch messages

    - features: 문제 없냐고 쿼리

    - configure: 세팅에 문제 없냐고 쿼리

    - modify-state: add, delete, modify 등 테이블 내용 모디파이 지시

    - packet-out: 특정 포트로 보내라고 지시

    => 스위치, 라우터로부터 정보를 모으고 지시

     

    Switch-to-controller messages

    - packet-in: 패킷이 왔는데 나갈 수 있는 포트가 없어서 어디로 보낼지 위에 물어보기

    - flow-removed: 포트 없애기

    - port status: 포트 상태 알려주기

     

     

    오픈 플로우 - Flow Table Entries

    오픈 플로우 메시지에 들어가는 내용들임

    [ 룰 | 액션 | 스탯 ]

    룰: 스위치 포트, [ VLAN ID, MAC src, MAC dst, Eth type ] [IP src, IP dst, IP Protocol] [TCP s port, TCP d port]

     

    액션: port6, drop 등 ..

    룰에 일치하는 패킷에 대해 행동할 동작을 정의

    ex)

    - Destination-based forwarding-

    [IP dst]: 51.6.0.8, [Action]: port6 => 51.6.0.8로 향하는 패킷은 포트 6번으로 보내라

     

    -Firewall-

    [TCP dport]: 22, [Action]: drop => 22번 포트로 들어오는 패킷은 버려라

    [IP src]: 128.119.1.1, [Action]: drop => 128.119.1.1 IP에서 오는 패킷은 버려라

     

    match+action => 다양한 종류의 장치를 통합

     

    라우터

    - 매치: longest destination IP prefix

    - 액션: 해당하는 링크로 내보내기

     

    방화벽

    - 매치: IP 주소와 TCP/UDP 포트 번호

    - 액션: 허가 혹은 거부

     

    스위치

    - 매치: 목적지 MAC 주소

    - 액션: 포워드 or 플루드 (거기로만 보내서 전달하거나, 그냥 알아서 받으라고 브로드캐스팅하거나)

     

    NAT

    - 매치: IP 주소와 포트

    - 액션: 주소랑 포트 rewrite

    '네트워크' 카테고리의 다른 글

    네트워크 매니지먼트와 SNMP  (0) 2024.06.07
    ICMP (Internet Control Message Protocol)  (0) 2024.06.06
    Intra-AS / Inter-AS routing  (0) 2024.06.05
    라우팅 프로토콜  (0) 2024.06.05
    IPv6  (0) 2024.06.05
Designed by Tistory.