[OpenStack] Nova-Network와 Neutron의 차이 그리고 SDN 완벽정리

귀귀재재·2022년 8월 1일
0

Back&Infra

목록 보기
7/7

http://blog.skby.net/sdn%EA%B3%BC-%EC%98%A4%ED%94%88%ED%94%8C%EB%A1%9C%EC%9A%B0openflow/

Introduction

Nova-Network

nova-network는 기존 nova 프로젝트 내에서 네트워크를 관리해 주는 프로세스입니다. 그래서 nova-network를 사용할때 nova-api를 사용하여 네트워크를 관리합니다. 또한, nova-network는 외부 통신을 할때 주어지는 Floating IP 범위가 오픈스택이 설치되는 서버와 같은 IP 대역을 사용하기 때문에 사용 가능한 IP 대역이 상당히 제한적입니다.

SDN을 이용한 문제해결

굉장히 제한적인 IP 대역을 해결하고자 SDN(Software Defined Network)개념을 이용한 서비스 Neutron 를 통해 현재의 문제점들을 해결할 수 있습니다.

Neutron을 사용하면 물리 스위치를 그대로 이용하는 것이 아니라, 인스턴스가 가상이듯이 스위치도 가상으로 만든 스위치를 사용하게 됩니다. 이때 주로 사용하는 스위치가 바로 OpenVSwitch입니다. OpenVSwitch는 인스턴스별로 하나씩 생성되어 할당이 되며, 인스턴스의 통신을 담당합니다. 그런데, 물리적으로 멀리 떨어져 있는 인스턴스끼리 서로 통신을 할려면 길을 알아야만 통신을 할 수 있습니다. 예전에는 이 길을 물리 네트워크 장비가 모두 가지고 있었지만, SDN에서는 별도의 서버에서 모든 네트워크 정보를 가지고서 길을 알려줍니다. 이에 대표적인 것이 바로 OpenFlow 입니다. 그래서, OpenFlow에는 모든 인스턴스의 네트워크 정보를 가지고서 길을 알려주는 컨트롤러와 인스턴스별로 생성되는 가상 스위치가 존재하게 되는 것입니다.

SDN의 필요성

SDN 응용프로그램

– NBI 프로그래밍 방식의 네트워크 동작을 컨트롤러 전달, 추상화

– 각 NBI 에이전트를 통해 다수 상위 NBI 제공(구성도 참조)

SDN 컨트롤러

– SDN 응용 프로그램 계층의 요구 사항을 SDN Datapath로 변환

– SDN 응용 프로그램에 네트워크 추상화 제공, 논리적 중앙화

SDN Datapath

– 전달 및 데이터 처리 기능 가시화와 논리적 네트워크 제어 장치

– CDPI 에이전트와 트래픽 포워딩 엔진 세트 및 트래픽 처리 기능

CDPI

– SDN CDPI(Control to Data-Plane Interface)

– SDN 컨트롤러와 SDN Datapath간에 정의 된 인터페이스

– 프로그래 방식의 포워딩 제어, 기능광고, 통계보고, 이벤트알림

NBI

– SDN NBI(Northbound Interface)

– SDN 응용 프로그램-컨트롤러 간 I/F, 추상 네트워크 가시화

– 벤더 중립적이며, 상호 운용 가능 방식으로 구현

드라이버/에이전트

– 각 인터페이스는 드라이버-에이전트 쌍으로 구성 및 실행

– Southern, Bottom – 인프라, Northern, Top – 응용 프로그램

Open FLow

  • 개방형 API(오픈플로우)를 통해 네트워크의 트래픽 전달 동작을 소프트웨어 기반 컨트롤러에서 제어/관리하는 기술
  • ONF(Open Networking Foundation)의 오픈플로우 프로토콜 표준 존재
  • IETF의 SDN RG 및 I2RS WG, SPRING WG 등의 워킹그룹을 통해 표준화
  • 네트워크 컨트롤러가 스위치망을 통해 네트워크 패킷의 경로를 정의하는 소프트웨어 정의 네트워크(SDN) 프로토콜
  • 오픈플로우 프로토콜은 ONF(Open Networking Foundation, 비영리 국제기구)에서 관리

제어/데이터 평면 분리 기술

– 패킷 제어 기능과 전달 기능을 분리하여 프로그래밍 기반 네트워크 제어

– 제어 및 데이터 평면을 범용 서버에 설치하여 소프트웨어로 구현

– 사용자가 자유롭게 특정 서비스나 애플리케이션 최적화 프로토콜 구현 가능

컨트롤러 스위치 구성 기술

– 스위치에 명령, 스위치는 명령에 따른 패킷 전송, 수정, 폐기 처리

– L2 스위치에 Open Flow 프로토콜 펌웨어 추가, 컨트롤러는 소프트웨어로 구현

– 최단경로(SPF)나 회선 속도 외 사용자 지정 경로 가중치/부하 분산 조건

플로우 테이블 관리 기술

– 오픈플로우 스위치는 다수의 플로우 테이블 및 다수 플로우 엔트리로 구성

– Flow Entry는 Match fields, Actions, Counters(통계)로 구성

– 입력패킷과 매치 엔트리 존재 시 Counter(통계) 값 증가, 지정 명령(Action) 실행

OpenVSwitch

가상 스위치(Virtual Switch)란 가상 네트워크(Virtual Network)에서 VM을 위해서 제공되는 스위치를 의미한다. 이 스위치는 호스트 운영체제에서 소프트웨어 적으로 제공하기 때문에, 가상 스위치라고 부른다. 이 가상 스위치는 물리적 스위치와 연결된다.

1.2. Open vSwitch에 대하여

소프트웨어 기반의 vSwitch다. 클라우드 환경에서 VM들간의 트래픽의 통합, 격리, 보안을 위한 여러가지 기능들을 제공한다. 소프트웨어 기반이기 때문에, 탄력적으로 네트워크 환경을 설정할 수 있다.

1.3. 기능들

  • NetFlow, sFlow, IPFIX, SPAN, RSPAN 등 일반 가상 머신간의 통신을 위한 프로토콜
  • GRE(Generic Routing Encapsulation) 등의 터널링 프로토콜
  • LACP(Link Aggregation Control Protocol, IEEE 802.1AX-2008)
  • 표준 802.1Q Virtual LAN(VLAN)과 [[footnote(하나의 네트워크 링크에 여러 개의 VLAN 트래픽을 수용하는 기술)trunking]] 지원
  • BFD(Bidirectional Forwarding)와 802.1ag link 모니터링
  • STP(Spanning Tree Protocol)
  • 유저, 애플리케이션, 데이터 플로우 별 Fine-grained QoS(Quality of service)제어
  • HFSC(Hierarchical fair-service curve) qdisc(Queuing discipline)
  • 가상 머신 인터페이스의 별 Traffic policing
  • 소스 맥 어드레스 기반의 NIC bonding, active backup, L4 해싱
  • OpenFlow 프로토콜 지원
  • IPv6 지원
  • GRE, VXLAN(Virtual Extensible LAN), IPSec(Internet Protocol Security), VXLAN over IPsec
  • 리모트 콘트롤을 위한 C, Python 바인딩
  • Kernel space와 User space에서의 패킷 포워딩 엔진
profile
오늘 뭐하지///?

0개의 댓글