이 페이지의 내용
타사 응용 프로그램 관리
인터셉트 라이브러리 사용
Junos OS Evolved는 네이티브 Linux에서 실행되므로 타사 애플리케이션을 실행할 수 있습니다. Linux가 인터페이스 및 경로 데이터와 같은 요청된 네트워크 토폴로지 정보를 표시하는 방식과 Junos OS가 이 정보를 표시하는 방식 사이에는 몇 가지 차이점이 있습니다. CLI는 이러한 차이를 극복하도록 설계되었습니다. 그러나 일반적으로 네이티브 Linux에서 실행되는 타사 애플리케이션은 셸 명령을 사용하여 네이티브 Linux 소스에서 직접 이 정보를 얻습니다.
Junos OS Evolved는 네트워크 토폴로지 정보에 대한 셸 요청을 Junos OS에서 정보를 얻을 수 있는 공간으로 리디렉션하는 인터셉트 메커니즘을 사용합니다. 이 인터셉트 메커니즘은 미리 로드한 인터셉트 라이브러리 libsi.so
와 libnli.so
를 통해 수행됩니다. 인터셉트 라이브러리를 미리 로드하면 특정 유형의 요청이 인터셉트되어 Junos OS 정보를 표시합니다.
인터셉트 라이브러리는 선택 사항입니다. 애플리케이션에 표 1에 언급된 API가 필요한 경우에만 필요합니다.
Api |
설명 |
---|---|
패킷 IO 및 Linux 소켓 API |
관리 및/또는 데이터 인터페이스를 통해 패킷을 보내고 받는 기능. 표준 libc(예: 보내기, 받기, 듣기). |
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
명령에 대해 이 두 인터페이스만 표시합니다.
[vrf:none] user@host_RE0:~# LD_PRELOAD=libnli.so ifconfig lo0_0 Link encap:Ethernet HWaddr 00:00:00:00:00:00 inet addr:128.102.224.244 Mask:255.255.255.255 inet6 addr: abcd::128:102:224:244/128 Scope:Global inet6 addr: fe80::5668:a6f0:6e:b79/128 Scope:Link UP LOOPBACK RUNNING MTU:65535 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) mgmt-0-00-0000 Link encap:Ethernet HWaddr 56:68:a6:6e:0b:79 inet addr:10.102.224.244 Bcast:10.102.239.255 Mask:255.255.240.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1103938 errors:0 dropped:0 overruns:0 frame:0 TX packets:1905 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:85166899 (81.2 MiB) TX bytes:243066 (237.3 KiB)
기본적으로 Junos OS Evolved libnli.so
libsi.so
와 함께 제공되는 셸인 jbash를 실행하여 동일한 결과를 얻을 수 있습니다.
네트워크 상태 정보를 가져오는 데는 jbash만 사용합니다. jbash를 기본 셸로 사용하지 마십시오.
인터셉트 라이브러리와 함께 명령을 미리 로드하지 않고 명령을 실행하면 Linux에서 출력이 표시됩니다. 다음 출력은 Junos OS의 출력보다 깁니다. Linux는 Junos CLI처럼 물리적 인터페이스와 논리적 인터페이스를 구분하지 않습니다.
[vrf:none] user@host_RE0:~# ifconfig -a eth0 Link encap:Ethernet HWaddr 56:68:a6:6e:0b:79 UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:1608443 errors:44 dropped:0 overruns:0 frame:44 TX packets:2652 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:150837081 (143.8 MiB) TX bytes:341675 (333.6 KiB) eth1 Link encap:Ethernet HWaddr 56:68:a6:6e:0b:7e UP BROADCAST RUNNING PROMISC MULTICAST MTU:9600 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:5 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:418 (418.0 B) eth2 Link encap:Ethernet HWaddr 56:68:a6:6e:0b:83 UP BROADCAST RUNNING PROMISC MULTICAST MTU:9600 Metric:1 RX packets:907046 errors:0 dropped:0 overruns:0 frame:0 TX packets:926156 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:70342248 (67.0 MiB) TX bytes:119965968 (114.4 MiB) eth3 Link encap:Ethernet HWaddr 56:68:a6:6e:0b:8d BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) eth4 Link encap:Ethernet HWaddr 56:68:a6:6e:0b:9d UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:1607983 errors:44 dropped:0 overruns:0 frame:44 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:150335380 (143.3 MiB) TX bytes:0 (0.0 B) ingvrf Link encap:Ethernet HWaddr 12:6e:39:d6:5a:64 UP RUNNING NOARP MASTER MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) iri Link encap:Ethernet HWaddr 4e:a2:93:c0:ac:67 inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP RUNNING NOARP MASTER MTU:65536 Metric:1 RX packets:2199380 errors:0 dropped:0 overruns:0 frame:0 TX packets:2216726 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:674308465 (643.0 MiB) TX bytes:735412009 (701.3 MiB) jtd0 Link encap:Ethernet HWaddr 06:50:4e:19:c6:c5 inet6 addr: fe80::450:4eff:fe19:c6c5/64 Scope:Link UP BROADCAST RUNNING NOARP MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:3 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:0 (0.0 B) TX bytes:210 (210.0 B) jtdrop Link encap:Ethernet HWaddr ba:d0:d0:72:7e:eb inet6 addr: fe80::b8d0:d0ff:fe72:7eeb/64 Scope:Link UP BROADCAST RUNNING NOARP MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:3 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:0 (0.0 B) TX bytes:210 (210.0 B) jtdv0 Link encap:Ethernet HWaddr 56:2a:0c:39:f1:5d inet6 addr: fe80::542a:cff:fe39:f15d/64 Scope:Link UP BROADCAST RUNNING NOARP MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:4 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:0 (0.0 B) TX bytes:280 (280.0 B) jtdv50 Link encap:Ethernet HWaddr 56:5e:67:d6:e2:d2 inet6 addr: fe80::545e:67ff:fed6:e2d2/64 Scope:Link UP BROADCAST RUNNING NOARP MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:4 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:0 (0.0 B) TX bytes:280 (280.0 B) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:32 errors:0 dropped:0 overruns:0 frame:0 TX packets:32 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:2144 (2.0 KiB) TX bytes:2144 (2.0 KiB) mgmt_junos Link encap:Ethernet HWaddr 6a:75:4b:20:d0:4e inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP RUNNING NOARP MASTER MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) sit0 Link encap:UNSPEC HWaddr 00-00-00-00-30-30-30-00-00-00-00-00-00-00-00-00 NOARP MTU:1480 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) tunl0 Link encap:IPIP Tunnel HWaddr NOARP MTU:1480 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) vcb Link encap:Ethernet HWaddr 56:68:a6:6e:0b:83 inet addr:176.1.1.1 Bcast:0.0.0.0 Mask:255.255.255.252 UP BROADCAST RUNNING PROMISC MULTICAST MTU:9600 Metric:1 RX packets:907043 errors:0 dropped:0 overruns:0 frame:0 TX packets:924347 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:57643466 (54.9 MiB) TX bytes:118743890 (113.2 MiB) vfb Link encap:Ethernet HWaddr 56:68:a6:6e:0b:7e UP BROADCAST RUNNING PROMISC MULTICAST MTU:9600 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) vib Link encap:Ethernet HWaddr 3e:fb:67:87:16:1a inet addr:128.0.0.4 Bcast:0.0.0.0 Mask:255.0.0.0 inet6 addr: fe80::3cfb:67ff:fe87:161a/64 Scope:Link UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:74 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:3420 (3.3 KiB) vmb0 Link encap:Ethernet HWaddr 56:68:a6:6e:0b:79 inet addr:10.102.224.244 Bcast:0.0.0.0 Mask:255.255.240.0 UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:1602504 errors:0 dropped:0 overruns:0 frame:0 TX packets:2645 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:124666750 (118.8 MiB) TX bytes:340201 (332.2 KiB) vmb1 Link encap:Ethernet HWaddr 56:68:a6:6e:0b:9d UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:1602784 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:124008554 (118.2 MiB) TX bytes:0 (0.0 B) vrf0 Link encap:Ethernet HWaddr ca:12:9e:40:a8:01 inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP RUNNING NOARP MASTER MTU:65536 Metric:1 RX packets:124413 errors:0 dropped:0 overruns:0 frame:0 TX packets:2597 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:19087613 (18.2 MiB) TX bytes:338185 (330.2 KiB) vrf50 Link encap:Ethernet HWaddr 06:de:d7:3d:18:be UP RUNNING NOARP MASTER MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
인터페이스 이름 변환
이 인터셉트 메커니즘을 사용하는 데 있어 한 가지 제한 요소는 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에서 토폴로지 정보를 효과적으로 가져올 수 있습니다.
논리적 인터페이스 이름의 변환만 지원되며, 채널화 및 비채널화 논리적 인터페이스 이름의 변환이 모두 지원됩니다.
값 |
설명 |
할당된 공간(단위: 바이트) |
범위 |
---|---|---|---|
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 |
관리 인터페이스를 제외하고, 논리 인터페이스 이름에 하이픈(-)이 없으면 이름의 점(.)이 밑줄(_)로 변경됩니다. 예를 들면 |
|||
관리 인터페이스의 경우, 은(는) , 로 변환되며, 여기서 x, yy, |
Junos 논리 인터페이스 이름 및 Linux 호환 양식의 예는 표 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
된 인터페이스 이름은 다음 예제에서 인수로 사용됩니다.
[vrf:none] user@host_RE0:~# LD_PRELOAD=libnli.so ifconfig et-01000000000 et-01000000000 Link encap:Ethernet HWaddr 5c:31:b0:35:01:ff inet addr:20.20.20.24 Bcast:20.20.20.255 Mask:255.255.255.0 inet6 addr: 2000:200:20::2/64 Scope:Global inet6 addr: fe80::5e31:b0ff:fe35:1ff/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1514 Metric:1 RX packets:312 errors:0 dropped:0 overruns:0 frame:0 TX packets:156 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:31004 (30.2 KiB) TX bytes:21346 (20.8 KiB)
인터셉트 기능에 대한 주의 사항
이 인터셉트 기능은 읽기 전용 요청을 지원합니다. 모든 쓰기 요청은 오류를 반환합니다.
특정 Junos 네트워크 상태 표현은 Linux에 매핑하지 못할 수 있습니다. 이러한 경우 데이터를 생략하거나 유사한 Linux 모델로 다시 매핑합니다. 예를 들어, Junos OS Evolved는 네이티브 Linux에서 유사한 구현이 없는 또는 unilist
와 같은 composite
다양한 넥스트 홉 유형 제품군을 지원합니다.
정적으로 연결된 타사 응용 프로그램은 가로챌 수 없으므로 이 기능에서 지원되지 않습니다.
타사 응용 프로그램 제거
타사 응용 프로그램을 제거하는 방법에는 여러 가지가 있습니다. 사용해야 하는 방법은 응용 프로그램을 설치한 방법에 따라 다릅니다.
-
타사 응용 프로그램이 명령과 함께
request system software add
설치된 경우 명령을 사용하여 동일한 응용 프로그램을 제거할 수 있습니다request system software delete
.user@host> request system software delete ima-test Removing version 'ima-test'. Software ... done. Data ... done. Version 'ima-test' removed successfully.
-
이러한 응용 프로그램을 제거하는 첫 번째 단계는 명령과 키의 연결을 해제하는 것입니다
request security system-keystore unlink key
.user@host> request security system-keystore unlink key
그런 다음 셸 명령을 사용하여
rm -f /path/to/binary1 /path/to/binary2
응용 프로그램에 대해 설치한 모든 이진 파일을 제거합니다.user@host:~# rm -f /path/to/binary1 /path/to/binary2
-
Docker 컨테이너를 통해 타사 애플리케이션을 설치한 경우 다음 Docker 명령을 사용하여 컨테이너를 제거합니다.
docker rm container-name