Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

주니퍼 클라우드 네이티브 라우터 구성 요소

주니퍼 클라우드 네이티브 라우터 솔루션은 클라우드 네이티브 라우터 컨트롤러, 클라우드 네이티브 라우터 vRouter, JCNR-CNI를 비롯한 여러 구성 요소로 구성됩니다. 이 주제에서는 주니퍼 클라우드 네이티브 라우터의 구성 요소에 대해 간략한 개요를 설명합니다.

클라우드 네이티브 라우터 구성 요소

주니퍼 클라우드 네이티브 라우터는 주로 클라우드 네이티브 라우터 컨트롤러 컨트롤 플레인, 클라우드 네이티브 라우터 vRouter DPDK 포워딩 플레인 및 Kubernetes 통합을 위한 JCNR-CNI의 세 가지 구성 요소로 구성됩니다. 모든 클라우드 네이티브 라우터 구성 요소는 컨테이너로 배포됩니다.

그림 1은 Kubernetes 클러스터 내부의 주니퍼 클라우드 네이티브 라우터 구성 요소를 보여줍니다

그림 1: 주니퍼 클라우드 네이티브 라우터 Components of Juniper Cloud-Native Router 의 구성 요소

클라우드 네이티브 라우터 컨트롤러

클라우드 네이티브 라우터 컨트롤러는 Junos cRPD(Containerized Routing Protocol Daemon)를 실행하는 클라우드 네이티브 라우터 솔루션의 컨트롤 플레인입니다. 스테이트풀셋(statefulset)으로 구현된다. 컨트롤러는 클라우드 네이티브 라우터의 다른 요소와 통신합니다. 구축 시 컨트롤러에 설정한 구성, 정책 및 규칙은 구현을 위해 다른 구성 요소(주로 클라우드 네이티브 라우터 vRouter)에 전달됩니다.

예를 들어, 거부 규칙으로 L2 액세스 목록을 구성하기 위해 컨트롤러에서 방화벽 필터(ACL)가 지원됩니다. 컨트롤러는 vRouter 에이전트를 통해 클라우드 네이티브 라우터 vRouter로 구성 정보를 전송합니다.

주니퍼 클라우드 네이티브 라우터 컨트롤러 기능:

  • NETCONF 프로토콜을 사용하여 외부 자동화 및 오케스트레이션 시스템에 액세스할 수 있는 Junos OS 호환 CLI 구성 및 운영 명령을 노출합니다.

  • 고속 포워딩 플레인으로 vRouter를 지원합니다. 이를 통해 DPDK 프레임워크를 사용하여 구축된 애플리케이션이 커널을 통과하지 않고 애플리케이션 및 vRouter로 직접 패킷을 보내고 받을 수 있습니다.

  • DPDK 지원 vRouter에서 관리하는 물리적 기능(PF), 가상 기능(VF), virtio, 액세스 및 트렁크 인터페이스에서 VLAN 태그가 지정된 하위 인터페이스의 구성을 지원합니다.

  • 브리지 도메인, VLAN 및 가상 스위치의 구성을 지원합니다.

  • 주로 BGP, IS-IS 및 OSPF와 함께 라우팅 프로토콜을 사용하여 코어 네트워크에 DPDK 애플리케이션 연결성을 보급합니다.

  • 클러스터 내부 및 외부에 Pod의 L3 네트워크 연결성 정보를 배포합니다.

  • L2 방화벽에 대한 구성을 유지합니다.

  • vRouter-agent를 통해 구성 정보를 vRouter에 전달합니다.

  • 라이센스 키 정보를 저장합니다.

  • 릴리스 23.2부터 BGP 스피커로 작동하며, 다른 BGP 스피커와 피어 관계를 설정하여 라우팅 정보를 교환합니다.

구성 옵션

구축하는 동안 클라우드 네이티브 라우터 구성을 사용자 지정할 수 있습니다 .

구축 후에는 PyEZ와 함께 NETCONF 프로토콜을 사용하여 컨트롤러를 구성하는 것이 좋습니다. NETCONF를 통해 SSH를 이용하거나 연결할 수 있습니다. 마지막으로, Kubernetes 명령을 사용하여 JCNR 컨트롤러 CLI에 액세스하여 클라우드 네이티브 라우터를 구성할 수도 있습니다.

클라우드 네이티브 라우터 vRouter

클라우드 네이티브 라우터 vRouter는 고성능 데이터 경로 구성 요소입니다. Linux 커널의 Linux 브리지 또는 OVS(Open vSwitch) 모듈의 대안입니다. 사용자 공간 프로세스로 실행되며 DPDK(Data Plane Development Kit) 라이브러리와 통합됩니다. vRouter 포드는 vrouter-agent, vrouter-agent-dpdk 및 vrouter-telemetry-exporter의 세 가지 컨테이너로 구성됩니다.

클라우드 네이티브 라우터 vRouter 기능:

  • 계층 3 가상 개인 네트워크를 사용하여 라우팅을 수행합니다.

  • L2 전달을 수행합니다.

  • 고성능 DPDK 기반 포워딩을 지원합니다.

vRouter의 이점:
  • DPDK를 JCNR-vRouter에 통합합니다.

  • 포워딩 플레인은 커널 기반 포워딩보다 더 빠른 포워딩 기능을 제공합니다.

  • 포워딩 플레인은 커널 기반 포워딩보다 확장성이 뛰어납니다.

  • 다음 NIC에 대한 지원:

    • Intel E810(Columbiaville) 제품군

    • Intel XL710(Fortville) 제품군

JCNR-CNI(영문)

JCNR-CNI는 주니퍼가 개발한 새로운 컨테이너 네트워크 인터페이스(CNI)입니다. JCNR-CNI는 애플리케이션 Pod에 대한 네트워크 인터페이스를 프로비저닝하기 위해 각 노드에 설치되는 Kubernetes CNI 플러그인입니다. 팟(Pod)을 생성하는 동안 Kubernetes는 팟(Pod) 인터페이스 생성 및 구성을 JCNR-CNI에 위임합니다. JCNR-CNI는 클라우드 네이티브 라우터 컨트롤러 및 vRouter와 상호 작용하여 DPDK 인터페이스를 설정합니다. 포드가 제거되면 JCNR-CNI가 호출되어 Kubernetes 및 클라우드 네이티브 라우터 구성 요소에서 포드 인터페이스, 구성 및 관련 상태를 프로비저닝 해제합니다. JCNR-CNI는 Multus CNI와 함께 보조 CNI로 작동하여 포드 인터페이스를 추가 및 구성합니다.

JCNR-CNI 기능:

  • 다음과 같은 Kubernetes Pod의 네트워킹 작업을 관리합니다.

    • IP 주소 할당.

    • MAC 주소 할당.

    • Kubernetes 클러스터에서 포드와 vRouter 간에 태그 처리되지 않은 인터페이스, 액세스 인터페이스 및 기타 인터페이스를 설정합니다.

    • VLAN 하위 인터페이스 생성.

    • L3 인터페이스 생성.

  • 추가 및 삭제와 같은 Pod 이벤트에 대해 작동합니다.

  • cRPD 구성을 생성합니다.

JCNR-CNI는 팟(Pod)이 사용하는 보조 인터페이스를 관리합니다. YAML 형식의 NAD(Network Attachment Definition) 파일의 구성을 기반으로 필요한 인터페이스를 생성합니다. JCNR-CNI는 최종 위치 또는 연결 지점으로 전달하기 전에 일부 인터페이스를 구성하고 다음과 같은 추가 인터페이스 구성 옵션을 위한 API를 제공합니다.

  • 다양한 종류의 Pod 인터페이스를 인스턴스화합니다.

  • DPDK 데이터 플레인을 활용하는 Pod를 위한 virtio 기반 고성능 인터페이스를 생성합니다.

  • Linux 커널 네트워킹 스택을 사용하여 Pod가 통신할 수 있도록 하는 veth 쌍 인터페이스를 생성합니다.

  • 액세스 또는 트렁크 모드에서 Pod 인터페이스를 생성합니다.

  • 브리지 도메인과 가상 라우터에 Pod 인터페이스를 연결합니다.

  • 동적 IP 주소 할당을 위한 IPAM 플러그인을 지원합니다.

  • virtio 인터페이스에 고유한 소켓 인터페이스 할당.

  • Pod의 네트워킹 작업 관리(예: IP 주소 할당 및 Kubernetes 클러스터에서 Pod와 vRouter 간의 인터페이스 설정).

  • Pod-to-Pod 및 Pod-to-Network를 포함한 네트워크에 Pod 인터페이스를 연결합니다.

  • 패킷 처리 오프로딩을 위해 vRouter와 통합

JCNR-CNI의 이점:

  • 향상된 포드 인터페이스 관리

  • 사용자 정의 가능한 관리 및 모니터링 기능

  • 컨트롤러 및 vRouter 구성 요소와의 긴밀한 통합을 통한 성능 향상

포드 생성에서 JCNR-CNI의 역할:

클라우드 네이티브 라우터에서 사용할 Pod를 생성할 때 kubelet 이라고 하는 Kubernetes 구성 요소는 Multus CNI를 호출하여 Pod 네트워킹 및 인터페이스를 설정합니다. Multus는 pod.yaml 파일의 주석 섹션을 읽어 NAD를 찾습니다. NAD가 JCNR-CNI를 CNI 플러그인으로 가리키는 경우 Multus는 JCNR-CNI를 호출하여 포드 인터페이스를 설정합니다. JCNR-CNI는 NAD에 지정된 대로 인터페이스를 생성합니다. 그런 다음 JCNR-CNI는 구성을 생성하여 컨트롤러로 푸시합니다.

Syslog-NG

주니퍼 클라우드 네이티브 라우터는 syslog-ng 포드를 사용하여 cRPD 및 vRouter에서 이벤트 로그를 수집하고 로그를 JSON 기반 알림으로 변환합니다. 알림은 파일에 기록됩니다. Syslog-ng는 데몬셋으로 실행됩니다.