Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

타사 응용 프로그램 관리

인터셉트 라이브러리 사용

Junos OS Evolved는 네이티브 Linux에서 실행되므로 타사 애플리케이션을 실행할 수 있습니다. Linux가 인터페이스 및 경로 데이터와 같은 요청된 네트워크 토폴로지 정보를 표시하는 방식과 Junos OS가 이 정보를 표시하는 방식 사이에는 몇 가지 차이점이 있습니다. CLI는 이러한 차이를 극복하도록 설계되었습니다. 그러나 일반적으로 네이티브 Linux에서 실행되는 타사 애플리케이션은 셸 명령을 사용하여 네이티브 Linux 소스에서 직접 이 정보를 얻습니다.

Junos OS Evolved는 네트워크 토폴로지 정보에 대한 셸 요청을 Junos OS에서 정보를 얻을 수 있는 공간으로 리디렉션하는 인터셉트 메커니즘을 사용합니다. 이 인터셉트 메커니즘은 미리 로드한 인터셉트 라이브러리 libsi.solibnli.so를 통해 수행됩니다. 인터셉트 라이브러리를 미리 로드하면 특정 유형의 요청이 인터셉트되어 Junos OS 정보를 표시합니다.

인터셉트 라이브러리는 선택 사항입니다. 애플리케이션에 표 1에 언급된 API가 필요한 경우에만 필요합니다.

표 1: 인터셉트 라이브러리가 필요한 API

Api

설명

패킷 IO 및 Linux 소켓 API

관리 및/또는 데이터 인터페이스를 통해 패킷을 보내고 받는 기능. 표준 libc(예: 보내기, 받기, 듣기).

RT넷링크

rtnetlink를 사용하여 인터페이스, 경로와 같은 네트워킹 상태를 쿼리할 수 있습니다.

넷디바이스

네트워크 장치를 구성하는 기능.

프로시저

Linux 커널에서 제공하는 표준 인터페이스를 사용하여 커널 데이터 구조를 쿼리하는 기능.

Junos API

주니퍼 노스 바운드 API - NetConf/JET/Telemetry에 액세스할 수 있습니다.

참고:

주니퍼 노스바운드 API에 대한 자세한 내용은 다음을 참조하십시오.

참고:

Junos OS Evolved 릴리스 20.1R1은 다음과 같은 기능을 지원합니다.

  • set system netlink-async-mode 구성을 사용하여 비동기 알림 NETLINK_ROUTE 활성화합니다. 이 기능은 기본적으로 비활성화되어 있습니다. 현재 넷링크 비동기 모드를 표시하는 데 사용합니다show nsld mode.

  • SIOCETHTOOL ioctl - 다른 애플리케이션에서 사용할 수 있습니다.

  • 넷링크 경로 속성을 통한 다중 경로 다음 홉 경로 정보.

미리 로드된 Linux 명령의 예

preload 지시어의 작동 방식에 대한 예는 인터페이스를 표시하는 명령 ifconfig을 사용하는 것입니다.

인터셉트 라이브러리와 ifconfig 함께 명령을 미리 로드하면 Junos OS 인터페이스 정보가 반환됩니다. 인터셉트 라이브러리는 논리적 인터페이스만 변환합니다. 이 예에서는 lo0 및 re0:mgmt-0.0에만 논리적 인터페이스가 있기 때문에 출력은 미리 로드된 ifconfig 명령에 대해 이 두 인터페이스만 표시합니다.

기본적으로 Junos OS Evolved libnli.so libsi.so 와 함께 제공되는 셸인 jbash를 실행하여 동일한 결과를 얻을 수 있습니다.

주의:

네트워크 상태 정보를 가져오는 데는 jbash만 사용합니다. jbash를 기본 셸로 사용하지 마십시오.

인터셉트 라이브러리와 함께 명령을 미리 로드하지 않고 명령을 실행하면 Linux에서 출력이 표시됩니다. 다음 출력은 Junos OS의 출력보다 깁니다. Linux는 Junos CLI처럼 물리적 인터페이스와 논리적 인터페이스를 구분하지 않습니다.

인터페이스 이름 변환

이 인터셉트 메커니즘을 사용하는 데 있어 한 가지 제한 요소는 Linux 인터페이스 명명이 Junos OS 인터페이스 명명과 호환되지 않는다는 것입니다. 리눅스는 15바이트 인터페이스 이름(15 + null 문자)을 지원합니다. 이 제한을 초과하는 네트워크 인터페이스 이름은 출력에서 잘립니다. Junos OS 논리적 인터페이스 이름은 15바이트보다 길 수 있습니다(예: et-0/0/10:2.32767).

이러한 차이를 해결하기 위해 Junos OS Evolved는 변환 규칙( 표 2 참조)을 사용하여 논리적 인터페이스 이름을 Linux 호환 형식으로 렌더링합니다. 번역은 다음과 같은 name-fpcSlot/picSlot/port:channelId.subUnit 형식을 렌더링합니다 nn-ffpttccssss. 이 규칙에 따라 변환된 인터페이스 이름을 사용하면 타사 애플리케이션이 Junos OS에서 토폴로지 정보를 효과적으로 가져올 수 있습니다.

논리적 인터페이스 이름의 변환만 지원되며, 채널화 및 비채널화 논리적 인터페이스 이름의 변환이 모두 지원됩니다.

표 2: 인터페이스 이름에 대한 변환 규칙

설명

할당된 공간(단위: 바이트)

범위

Nn

매핑된 이름 바이트

2

Ff 로

FPC(16진수)

2

0-255

P

16진수의 그림

1

0-15

Tt

포트 번호(16진수)

2

0-255

Cc

16진수 채널; 없는 경우 "xx"를 사용합니다.

2

0-255

SSSS

16진수의 소단위

4

0-65535

관리 인터페이스를 제외하고, 논리 인터페이스 이름에 하이픈(-)이 없으면 이름의 점(.)이 밑줄(_)로 변경됩니다. 예를 들면 ifdname.subunit 로 변환 ifdname_subunit됩니다.

관리 인터페이스의 경우, 은(는) , 로 변환되며, 여기서 x, yy, reX:mgmt-Y.Z zzzz는 mgmt-x-yy-zzzz고정 길이의 경우 0과 함께 16진수 패딩으로 채워집니다. 그리고 역 번역은 같은 줄에서 발생합니다.

Junos 논리 인터페이스 이름 및 Linux 호환 양식의 예는 표 3 을 참조하십시오.

표 3: 변환된 논리적 인터페이스 이름의 예

Junos 논리적 인터페이스 이름

변환된 Linux 호환 인터페이스 이름

ET-1/2/3.4

ET-01203XX0004〈화이트〉

ge-1/2/3.32

GE-01203XX0020 시리즈

ET-1/15/3.4

ET-01F03XX0004〈화이트〉

et-1/2/255:6.7

ET-012FF060007〈블랙〉

et-1/2/4:5.32767

ET-01204057FFF

RE0:MGMT-1.2

관리 0-01-0002

ae0.1

ae0_1

IRB0.11

irb0_11

사전 로드 libnli.so를 통해 Junos OS 상태에 액세스하면 출력의 인터페이스 이름이 번역된 Linux 호환 인터페이스 이름으로 표시됩니다. 또한 변환된 Linux 호환 인터페이스 이름을 명령에서 인수로 사용할 때 사용해야 합니다. 변환 et-01000000000 된 인터페이스 이름은 다음 예제에서 인수로 사용됩니다.

인터셉트 기능에 대한 주의 사항

이 인터셉트 기능은 읽기 전용 요청을 지원합니다. 모든 쓰기 요청은 오류를 반환합니다.

특정 Junos 네트워크 상태 표현은 Linux에 매핑하지 못할 수 있습니다. 이러한 경우 데이터를 생략하거나 유사한 Linux 모델로 다시 매핑합니다. 예를 들어, Junos OS Evolved는 네이티브 Linux에서 유사한 구현이 없는 또는 unilist 와 같은 composite 다양한 넥스트 홉 유형 제품군을 지원합니다.

정적으로 연결된 타사 응용 프로그램은 가로챌 수 없으므로 이 기능에서 지원되지 않습니다.

타사 응용 프로그램 제거

타사 응용 프로그램을 제거하는 방법에는 여러 가지가 있습니다. 사용해야 하는 방법은 응용 프로그램을 설치한 방법에 따라 다릅니다.

  • 타사 응용 프로그램이 명령과 함께 request system software add 설치된 경우 명령을 사용하여 동일한 응용 프로그램을 제거할 수 있습니다 request system software delete .

  • 이러한 응용 프로그램을 제거하는 첫 번째 단계는 명령과 키의 연결을 해제하는 것입니다 request security system-keystore unlink key .

    그런 다음 셸 명령을 사용하여 rm -f /path/to/binary1 /path/to/binary2 응용 프로그램에 대해 설치한 모든 이진 파일을 제거합니다.

  • Docker 컨테이너를 통해 타사 애플리케이션을 설치한 경우 다음 Docker 명령을 사용하여 컨테이너를 제거합니다.