10. 네트워크 계층 제어 평면 (소프트웨어 정의 네트워크(SDN) 제어 평면)

a. SDN

img

a-1. SDN 구조의 특징

  1. 플로우 기반 포워딩 : 스위치들에서 패킷 포워딩은 전송 계층, 네트워크 계층, 링크 계층 헤더의 어떤 값을 기반으로도 가능하다.
    IP 데이터그램의 포워딩이 온전히 목적지 주소만으로 이뤄지는 전통적 라우터 기반과는 매우 대조적.
  2. 데이터 평면과 제어 평면의 분리 : 데이터 평면은 네트워크 스위치로 구성. 이들은 자신의 플로우 테이블의 내용을 기반으로 비교와 실행을 수행. 제어 평면은 서버와 스위치의 플로우 테이블을 결정, 관리하는 소프트웨어로 이뤄진다.
  3. SDN의 제어 평면은 SDN 컨트롤러와 네트워크 제어 응용들의 집합으로 이뤄짐
  4. 데이터 평면 스위치, 컨트롤러, 네트워크 제어 응용들이 서로 다른 제조사나 기관에서 제공하는 분리된 개체이다.

a-2. SDN 컨트롤러와 SDN 네트워크 제어 응용

컨트롤러는 크게 세개의 계층으로 구성된다.

img

  • 통신 계층 : SDN 컨트롤러와 제어받는 네트워크 장치들 사이의 통신
    컨트롤러와 장치들 사이에 정보를 전달하는 프로토콜.
    사우스바운드라는 컨트롤러 인터페이스(API)를 넘나는다.
  • 네트워크 전역 상태 관리 계층 : SDN 제어 평면의 궁극적인 제어 결정
    제어 장치들의 플로우 테이블을 결정.
  • 네트워크 제어 응용 계층과의 인터페이스 : 컨트롤러와 네트워크 제어 응용들과의 상호 작용
    노스바운드라는 인터페이스를 통해 네트워크 제어 응용들이 네트워크 상태 정보와 플로우테이블을 읽도록 함

논리적으로는 중앙 집중화된 것으로 보이지만, 실제로는 분산된 서버의 집합으로 구현된다.

a-2-1. 오픈플로우 프로토콜

통신 계층에서 동작하는 프로토콜.

컨트롤러와 스위치(혹은 오픈플로우 api를 구현한 다른 장치)와의 사이에서 동작.

TPC 상에서 포트번호 6653을 사용.

a-2-1-1. 오픈플로우에서 자주 사용되는 메시지

컨트롤러에서 스위치로 전달 되는 주요 메시지

  • 설정 : 스위치의 설정 파라미터를 문의하거나 설정
  • 상태 수정 : 스위치 플로우 테이블의 엔트리를 추가/제거/수정 하거나 스위치 포트의 특성을 설정
  • 상태 읽기 : 스위치 플로우 테이블과 포트로부터 통계 정보와 카운터 값을 요청
  • 패킷 전송 : 스위치의 지정된 포트에서 특정 패킷을 내보내기 위해 사용

스위치에서 컨트롤러로 전달 되는 주요 메시지

  • 플로우 제거 : 어떤 플로우 테이블 엔트리가 시간이 만료 되었거나, 상태 수정 메시지에 대한 결과로 삭제됨을 알림
  • 포트 상태 : 포트의 상태 변화를 알리기 위해 사용
  • 패킷 전달 : 플로우 테이블의 어떤 엔트리와도 일치하지 않는 패킷이나, 작업을 위해 컨트롤러로 패킷을 전달.

a-3. 데이터 평면과 제어 평면의 상호 작용 예제

img

위 예제는 다익스트라 알고리즘이 최단 경로를 위해 사용되는 SDN 예시이다.

라우터별 제어 시나리오와는 두가지 차이점을 가진다.

  • 다익스트라 알고리즘이 패킷 스위치 외부에서 별도의 어플리케이션으로 실행
  • 링크 업데이트 정보를 서로 간이 아닌 SDN 컨트롤러에게 전송한다.

본 예시에서 s1, s2 사이의 링크가 단절되어 플로우 테이블을 수정해야 하는 상황이다.

  1. 링크 단절을 감지한 s1이 오픈 플로우의 포트 상태 메시지를 통해 SDN 컨트롤러에 링크 상태 변화를 알린다.
  2. SDN 컨트롤러는 링크 상태 관리자에게 알려 링크 상태 데이터베이스를 갱신한다.
  3. 다익스트라 링크 상태 라우틍을 담당하는 네트워크 제어 응용은 링크 상태 변화가 있을 경우 알려받도록 이전에 등록해두었다. 이 응용은 링크 상태의 변화를 알게 된다.
  4. 링크 상태 라우팅 응용이 링크 상태 관리자와 접촉해 갱신된 링크 상태를 가져와 새로운 최소 비용 경로를 계산한다.
  5. 컨트롤러의 플로우 테이블 관리자가 오픈플로우 프로토콜을 사용해 링크 상태 변화에 영향을 받는 스위치들의 플로우 테이블을 갱신한다.
Share