티스토리 뷰

Network/Architecture&Tech

Open Virtual Network (OVN)

jacobbaek Jacob_baek 2018. 7. 20. 14:10

Open Virtual Network (OVN) 이란?

OVN(Open Virtual Network)은 가상 네트워크 추상화를 제공하는 시스템이다. (wikipedia)

 

OVN은 기존 Open vSwitch의 기능을 보완하는 컨셉으로 가상의 L2,L3 오버레이와 security group과 같은 가상 네트워크 추상화를 제공하게 된다. 좀더 쉽게 풀어보자면 기존에 Open vSwitch는 이름대로 switch라는 하나의 장비개념이라면 Open Virtual Network은 Network이라는 이름에 걸맞게 switch, router와 같은 장비들이 속한 전체 네트워크를 OVN을 이용해 구성할수있다는 개념이 된다.

 

그렇다고 OVS가 상위개념이라보기는 애매하고 OVS는 OVN을 이용한 network 구성이 가능하고 실제 OVN은 Open vSwitch의 일종의 데몬이라 본다.


좀더 기술적으로 보자면 OVN은 Open vSwitch보다 상위의 추상화 계층을 제공한다. 즉 네트워크의 flows 보다 논리적 스위치/라우터로 사용된다. 다음은 OVN이 제공하는 주요 기능이다.

  • 분산 가상 라우터들
  • 분산 논리 스위치들
  • 접근 제어
  • DHCP
  • DNS 서버

Open vSwitch와 같이 C로 만들어졌으며 OVN은 완전히 userspace에서 동작된다.
이말은 별도의 설치되어야 하는 커널 모듈을 요구하지 않는다는것이다.

Architecture

먼저 알아두어야할 내용

  • 물리 네트워크 : hypervisor 에 각 VM이 연결되어 있고 이를 연결한 네트워크
  • 논리 네트워크 : 실제 VM 입장에서 논리 스위치 나 논리 라우터들을 통해 연결된 가상의 네트워크
  • CMS (Cloud Management System)
  • OVN Database
  • Hypervisors
  • Gateways : 터널과 물리 이더넷 포트간에 양방향 전달 패킷에 의해 터널 기반의 논리 네트워크를 물리 네트워크로 확장한다.
    비 가상화된 머신을 논리 네트워크에 참여시킬수 있다 gateway는 물리 호스트, 가상머신, ASIC 기반의 하드웨어 스위치가 될수 있다.

OVN Architecture

                                     CMS
                                      |
                                      |
                          +-----------|-----------+
                          |           |           |
                          |     OVN/CMS Plugin    |
                          |           |           |
                          |           |           |
                          |   OVN Northbound DB   |
                          |           |           |
                          |           |           |
                          |       ovn-northd      |
                          |           |           |
                          +-----------|-----------+
                                      |
                                      |
                            +-------------------+
                            | OVN Southbound DB |
                            +-------------------+
                                      |
                                      |
                   +------------------+------------------+
                   |                  |                  |
     HV 1          |                  |    HV n          |
   +---------------|---------------+  .  +---------------|---------------+
   |               |               |  .  |               |               |
   |        ovn-controller         |  .  |        ovn-controller         |
   |         |          |          |  .  |         |          |          |
   |         |          |          |     |         |          |          |
   |  ovs-vswitchd   ovsdb-server  |     |  ovs-vswitchd   ovsdb-server  |
   |                               |     |                               |
   +-------------------------------+     +-------------------------------+

실제 위 그림 중 중요 구성요소를 위에서부터 순서대로 설명한 내용이다.

  1. CMS : OVN의 궁긍적인 Client이다. (쉽게 풀이하자면, OVN은 OpenStack을 CMS로 시작되었다.)
  2. OVN/CMS plugin : 중요 목적은 CMS의 논리 네트워크 설정에 대한 개념과 CMS에 특화된 포맷으로 저장된 CMS의 설정 Database
  3. ovn-northbound DB: OVN/CMS plugin에 의해 전달된 논리 네트워크 설정이 전달한다.
    • 요구되는 상태 (논리 포트들 -> 논리 스위치들 -> 논리 라우터들)
  4. ovn-northd(데몬)
    • OVN-NB DB와 OVN-SB DB를 연결 (상위레벨 northbound DB로 부터 실시간 southbound DB로 변환)
    • 상위 레벨 설정에 기반한 논리 흐름(flows)을 생성한다.
  5. ovn-southbound DB : 실시간 상태 정보(논리포트위치, 물리endpoint들의 위치, 논리 pipeline)
    • PN(물리 네트워크) tables (논리 네트워크 논리 dataapath flows)
    • LN(논리 네트워크) tables
    • Bindig Tables(논리 네트워크 구성요소들의 위치와 물리네트워크를 link한)
  6. ovn-controller(데몬) : 각 Hypervisor나 소프트웨어 gateway에서 동작되는 OVN 에이전트이다.
    • chassis와 VIF들을 southbound DB에 등록
    • 논리 flows들을 물리 flows로 변환(VIF UUID들을 openflow port로)
    • OVSDB와 OpenFlow를 통한 local OVS 인스턴스를 위한 물리 설정을 푸쉬한다.
    • DHCP 기능 포함 (dhcp packet은 속한 hypervisor를 떠나지 않는다.)
    • IPAM 지원
    • 보너스 : ovn-trace 도구를 통한 디버깅 가능
  7. ovs-vswitchd/ovsdb-server : 전통적인 Open vSwithc의 구성요소들

출처

생각해볼것
여기서 중요 포인트를 볼수 있을것이다.
계속적으로 언급되고 있는 물리 네트워크와 논리네트워크를 연결시켜주는것.
아래 표를 통해 좀더 쉽게 이해할수 있을것이라 판단된다.

OVN 특징

  • OVS와 동일한 community에서 개발되고 있다.
  • OVS에 대한 OpenSource Virtual Networking이다.
  • L2/L3 가상 네트워킹을 제공 (논리스위치나 라우터, Security Groups, L2/L3/L4 ACLs, Geneve,STT혹은 VxLAN과 같은 다양한 tunnel overlay 지원, TOR기반의 소프트웨어 기반의 논리 물리 gateway 지원 등)
  • Linux Platform, Container, DPDK 에서 동작
  • 별도의 Agent를 요구하기 않고
    커널에 존재하는 conntrack을 통합하여 사용하는 secuirty group (with conntrack) 사용가능
    DPDK 기반 그리고 하드웨어 가속 gateway 사용가능
  • 벤더 중립
  • OpenSource로 공개된 메일링 리스트내에서 아키텍처링, 개발이 이루어지고 있다.
  • Apache lincese아래서 개발되고 있다.
  • OVSDB(Open vSwitch Database) protocol 사용 (RFC 7047)
  • http://www.openvswitch.org/support/slides/OVN-Vancouver.pdf

why OVN?

OVS랑 OVN이랑의 차이와 OVN 이 왜 필요하게 되었는지를 알아보자.

우선 OVS 정의 부터 알아보면 Multi Layer Virtual Switch 이다. 먼저 OpenvSwitch의 기능을 살펴보면

  • NetFlow, sFlow, IPFix, SPAN, RSPAN, GRE tunneled mirror 을 통한 VM간 통신에 대한 가시성 제공
  • LACP
  • 802.1q vlan trunking
  • multicast snooping
  • LLDP
  • STP, RSTP
  • QoS
  • IPv6
  • Multi Tunneling Protocol (GRE, VXLAN, STT 및 Geneve, IPSec 등)지원
  • VM interface 별 Traffic policy

즉, 하나의 스위치로서의 기능들을 제공하고 있고 만약 전체적인 네트워크 환경을 만들고자 한다면 다수의 openvswitch를 모아서 openflow와 같은 SDN protocol을 통해 관리해야 할것이다. 결국 하나씩 쓰는게 아닌 전체 환경을 관리하기 위한 프로젝트라 보면 된다.

OVN은 OVS의 기존 기능을 보완하고 가상 L2, L3 Overlay 및 Security Group 등과 같은 가상 네트워크 추상화에 대한 지원을 한다.

동작원리중 참고할것

  • gateway 노드들의 healthcheck을 BFD(Bidirectional Forwarding Detection) 프로토콜을 사용하여 수행한다.
    해당 protocol은 node간 Geneve 터널이 맺어진 상황위에서 캡슐화되어진다.

중요참고내용

OpenStack and OVN

why geneve?

blog.russellbryant.net/2017/05/30/ovn-geneve-vs-vxlan-does-it-matter/

그외

BPF Datapath

kubernetes

참고사이트

'Network > Architecture&Tech' 카테고리의 다른 글

Open Virtual Network (OVN)  (0) 2018.07.20
댓글
댓글쓰기 폼