SDN(소프트웨어 정의 네트워킹) - OpenFlow의 아키텍처 및 역할


이전 기사에서는 기술로서의 SDN, SDN이 필요한 이유, IT 업계에서 SDN을 채택하는 방법에 대해 잘 살펴보았습니다. 이제 계층을 더 깊이 살펴보고 기술 구현에서 SDN의 아키텍처와 Openflow 프로토콜의 역할을 이해해 보겠습니다.

SDN은 크게 세 가지 계층으로 구성됩니다.

  1. 응용 프로그램 계층\n
  2. 컨트롤 레이어
  3. 인프라 레이어\n

상향식 접근 방식으로 이러한 계층을 시도하고 이해해 봅시다.

인프라 레이어는 네트워크 트래픽을 전달하기 위해 기본 네트워크를 형성하는 다양한 네트워킹 장비로 구성됩니다. 데이터 센터의 네트워크 스위치 및 라우터 세트일 수 있습니다. 이 계층은 네트워크 가상화가 제어 계층(SDN 컨트롤러가 배치되어 기본 물리적 네트워크를 관리함)을 통해 배치되는 물리적 계층입니다.

제어 계층은 네트워크 인프라를 제어하기 위해 SDN 컨트롤러의 지능형 로직이 상주하는 제어 영역의 영역입니다. 이것은 모든 네트워크 공급업체가 SDN 컨트롤러 및 프레임워크를 위한 자체 제품을 내놓기 위해 노력하는 영역입니다. 여기 이 계층에서는 다양한 유형의 네트워크 정보, 상태 세부 정보, 토폴로지 세부 정보, 통계 세부 정보 등을 가져오고 유지하기 위해 많은 비즈니스 로직이 컨트롤러에 작성되고 있습니다.

SDN 컨트롤러는 네트워크 관리용이므로 스위칭, 라우팅, L2 VPN, L3 VPN, 방화벽 보안 규칙, DNS, DHCP 및 클러스터링과 같은 실제 네트워크 사용 사례에 대한 제어 논리가 있어야 합니다. 여러 네트워킹 공급업체와 심지어 오픈 소스 커뮤니티도 SDN 컨트롤러에서 이러한 사용 사례를 구현하기 위해 노력하고 있습니다. 일단 구현되면 이러한 서비스는 API(일반적으로 REST 기반)를 상위 계층(애플리케이션 계층)에 노출합니다. 그러면 SDN 컨트롤러 위에 앱을 사용하여 기본 네트워크를 구성, 관리 및 모니터링하는 네트워크 관리자의 작업이 쉬워집니다. 제어 계층은 중간에 있으며 Northbound 및 Southbound의 두 가지 유형의 인터페이스를 노출합니다.

  • Northbound 인터페이스: 상위 애플리케이션 계층과의 통신을 위한 것으로 일반적으로 SDN 컨트롤러의 REST API를 통해 실현됩니다. S아웃바운드 인터페이스: 네트워크 요소의 하위 인프라 계층과의 통신을 위한 것으로 일반적으로 사우스바운드 프로토콜(Openflow, Netconf, Ovsdb 등)을 통해 실현됩니다.\n

애플리케이션 레이어는 네트워크 토폴로지, 네트워크 상태, 네트워크 통계 등에 대한 모든 네트워크 정보를 활용하여 가능한 한 많은 혁신적인 애플리케이션을 개발할 수 있는 열린 영역입니다. 다음과 같이 개발할 수 있는 여러 유형의 애플리케이션이 있을 수 있습니다. 네트워크 자동화, 네트워크 구성 및 관리, 네트워크 모니터링, 네트워크 문제 해결, 네트워크 정책 및 보안과 관련된 것입니다. 이러한 SDN 애플리케이션은 실제 엔터프라이즈 및 데이터 센터 네트워크를 위한 다양한 종단 간 솔루션을 제공할 수 있습니다. 네트워크 공급업체는 SDN 애플리케이션 세트를 내놓고 있습니다. 예를 들어 Brocade에는 다음과 같은 매우 유용한 애플리케이션이 있습니다.

  • Brocade Flow Optimizer

  • Brocade 가상 라우터

  • Brocade 네트워크 고문

HPE는 또한 다른 회사의 많은 SDN 앱을 포함하는 SDN 앱 스토어를 보유한 공급업체 중 하나입니다. 예를 들어:

  • HPE 네트워크 옵티마이저

  • HPE 네트워크 보호기\n

  • HPE 네트워크 비주얼라이저

  • HP SDN VAN 컨트롤러용 NEC UNC

  • Aricent SDN 부하 분산기\n

  • TechM 스마트 플로우 스티어링\n

  • TechM 서버 로드 밸런서

이전 기사에서 Openflow를 간략히 다루었듯이 이제 Openflow 프로토콜을 통해 제어 계층에서 인프라 계층(네트워크 스위치)까지의 사우스바운드 통신에 대해 자세히 다룰 것입니다.

Openflow는 데이터 영역에서 제어 영역을 분리하는 쇼케이스의 핵심이라는 점에서 SDN의 혁명에 중요한 역할을 했습니다. Openflow는 ONF(Open Networking Foundation)에서 제공하는 표준 사양이며 현재 전 세계 네트워킹의 다양한 요구사항을 지원하여 시간이 지남에 따라 발전하고 있습니다. Openflow 프로토콜의 현재 버전은 1.5.1입니다.

Openflow는 SDN 컨트롤러와 네트워크 장비(일반적으로 스위치) 간의 통신을 위한 표준 사양을 제공하는 프로토콜입니다. 이를 통해 SDN 컨트롤러가 라우팅 결정을 내리고 전달 규칙, 보안 규칙이 기본 네트워크의 스위치에 푸시되도록 할 수 있습니다.

SDN 컨트롤러 및 스위치는 Openflow 메시지의 공통 언어를 이해할 수 있도록 Openflow 사양을 구현해야 합니다. 네트워크 스위치를 제어하기 위해 SDN 컨트롤러는 네트워크 트래픽이 적중할 때 결정을 내릴 수 있도록 스위치에 규칙을 푸시합니다. 스위치는 Openflow 테이블에서 이러한 규칙을 유지해야 합니다. Openflow에 따라 이러한 규칙을 '흐름'이라고 하며 '흐름 테이블'에 저장됩니다.

일반적으로 흐름은 세 가지 유형의 정보를 전달합니다.

  1. 일치 필드: 헤더 필드(L2(소스 대상 이더넷 주소, VLAN ID, VLAN 우선순위 등), L3(IPv4/IPv6 소스 대상 등)를 기반으로 패킷을 일치시키는 기준을 정의합니다. 주소, 프로토콜 유형, DSCP 등), L4 필드(TCP/UDP/SCTP 소스 대상 포트), ARP 필드, ICMP 필드, MPLS 필드 등\n
  2. 액션: 패킷이 기준과 일치하는 경우 패킷으로 수행할 작업을 정의합니다. 작업은 드롭, 스위치의 일부 포트에서 전달, 패킷 수정(VLAN ID 푸시/팝, MPLS 레이블 푸시/팝, IP TTL 증가/감소), 포트의 특정 큐로 전달 등과 같습니다.\n
  3. 카운터: 흐름과 일치하는 패킷 수를 추적합니다.\n

구체적으로 흐름에는 Openflow 사양에서 추가로 확인할 수 있는 몇 가지 추가 정보가 포함되어 있습니다.

Openflow 채널 또는 연결은 컨트롤러가 스위치와 통신하여 구성, 관리 및 모니터링할 수 있도록 스위치와 컨트롤러 간의 설정입니다. Openflow 사양에 따라 Openflow는 TCP 또는 TLS 연결에서 실행되며 컨트롤러는 6653 포트에서 연결을 수신 대기합니다. 스위치는 연결을 시작할 것으로 예상되며 컨트롤러에 연결 요청을 보내야 합니다.

선택적으로 컨트롤러 측에서도 연결을 시작할 수 있으며, 이 경우 스위치는 연결을 수신하기 위해 패시브 모드가 됩니다. 어느 쪽에서든 일반적인 TCP 또는 TLS 연결 설정이 될 것입니다. 일단 설정되면 Openflow 메시지는 TCP 또는 TLS 연결을 통해 교환됩니다. 예를 들어 아래는 컨트롤러와 TCP 연결을 시작하기 위한 오픈 소스 Openflow 가상 스위치(OpenVswitch)의 명령입니다.

ovs-vsctl set-controller <sampleBridgeName> tcp:192.168.56.101:6653

여기서 192.168.56.101은 컨트롤러 IP이고 6653은 연결을 수신할 컨트롤러 포트입니다.

Openflow는 연결 설정 메시지, 구성 메시지, 스위치 통계 가져오기 메시지, 연결 유지 메시지, 비동기 이벤트 메시지, 오류 메시지, 실험자 메시지 등 스위치와 컨트롤러 간의 통신을 가능하게 하는 다양한 메시지를 정의합니다.

Openflow 메시지에 대해 간단히 알아보겠습니다.

  • TCP 연결이 이루어지면 Openflow HELLO 메시지가 두 엔티티 간에 교환되어 추가 통신이 이루어질 Openflow 버전을 협상합니다. 스위치와 컨트롤러가 다른 Openflow 버전에서 실행될 수 있으므로 필요합니다. 둘 다 지원되는 가장 높은 버전에 동의합니다.\n
  • 버전 협상이 완료된 후 컨트롤러는 먼저 Openflow 기능 요청 메시지를 전송하여 주로 스위치 응답 메시지의 데이터 경로 ID를 얻고 스위치가 지원하는 기능을 결정합니다.\n
  • 네트워크 트래픽을 처리하도록 스위치를 구성하기 위해 흐름 항목과 같은 Openflow 메시지를 컨트롤러에서 보낼 수 있습니다. 이들은 스위치 내부의 흐름 테이블에서 유지 관리됩니다.\n
  • 흐름 항목을 그룹화하려면 스위치 내부의 그룹 테이블에 저장할 수 있는 그룹 메시지를 통해 컨트롤러에서 그룹을 구성할 수 있습니다.\n
  • 스위치에서 통계 세부정보를 가져오려면 흐름 통계, 포트 통계, 대기열 통계, 그룹 통계, 테이블 통계 등과 같은 Openflow 메시지를 컨트롤러에서 보낼 수 있습니다.\n
  • 연결 활성 상태를 확인하기 위해 컨트롤러 또는 스위치에서 에코 요청 및 회신 Openflow 메시지를 보낼 수 있습니다.\n
  • 스위치에서 흐름 규칙 제거, 스위치에서 구성 적용 실패 오류, 스위치에서 포트 업/다운 상태 등과 같은 비동기 Openflow 메시지는 스위치에서 업데이트 컨트롤러로 보낼 수 있습니다.\n

지금까지 제어 영역을 데이터 영역과 분리하는 SDN 핵심 원칙을 실현하기 위해 SDN 아키텍처, 계층 및 Openflow의 역할을 살펴보았습니다. 이제 컨트롤러가 Openflow를 사용하여 기본 네트워크를 구성하고 관리하는 방법을 확인해야 합니다.

기본적으로 컨트롤러는 기본 네트워크의 Openflow 스위치와 Openflow 메시지를 보내고 받고 이해할 수 있는 Openflow의 일부 플러그인 코드를 구현해야 합니다.

Openflow 스위치를 구성하려면 컨트롤러가 스위치에 도달하는 네트워크 트래픽을 처리할 수 있는 Openflow 스위치 테이블에 흐름 규칙을 푸시해야 합니다. 흐름 항목에 대한 Openflow 메시지에는 네트워크에서 오는 패킷의 일치 기준(L2, L3, L4 필드 등)에 대한 많은 튜플 필드 세트가 있으며, 이는 모두 ACL 규칙, 보안 정책 규칙, QoS 속도 제한 대역폭 규칙을 구성하는 데 도움이 됩니다. 라우팅 규칙, 포트 미러링 규칙 및 패킷 수정 규칙.

Openflow 스위치를 모니터링하기 위해 Openflow는 스위치 및 네트워크 통계 정보를 가져오기 위한 다양한 요청 및 응답 메시지와 흐름 제거 이벤트, 포트 상태 UP/DOWN 변경 등을 포함하여 스위치 측에서 발생한 수동 변경 또는 오류에 대해 컨트롤러를 업데이트하기 위한 이벤트 메시지를 제공합니다.

Openflow 스위치에서 일부 공급업체별 작업을 수행하기 위해 Openflow는 공급업체가 자유롭게 메시지 본문을 정의하고 컨트롤러와 스위치 간에 맞춤 정보를 교환할 수 있는 실험적인 메시지를 제공합니다. 이것이 많은 SDN 애플리케이션에서 Openflow를 사용하여 손쉬운 네트워크 제어 및 관리를 위한 솔루션을 제공하는 방식입니다.

This article is co-authored by Tarun Thakur.

참조:

  • https://www.sdxcentral.com/sdn/definitions/inside-sdn-architecture/
  • https://www.opennetworking.org/images/stories/downloads/sdn-resources/technical-reports/TR_SDN_ARCH_1.0_06062014.pdf
  • http://noviflow.com/the-basics-of-sdn-and-the-openflow-network-architecture/