RIFT 개요 및 설정
요약 RIFT(Routing in Fat Tree)는 CLOS 기반 및 지방 트리 네트워크 토폴로지의 변형으로 패킷을 라우팅하는 데 사용할 수 있는 제로 OpEx 라우팅 프로토콜입니다. 링크 상태 및 거리 벡터 기술의 하이브리드이며, IP 패브릭에 용이한 관리, 네트워크에 복원력 추가 등의 여러 이점을 제공합니다.
fat tree(RIFT) 프로토콜에서 라우팅 구현에 Junos 이해
RIFT 프로토콜의 이점
RIFT 프로토콜은 다음과 같은 기능을 지원하는 제로 OpEx 라우팅 프로토콜입니다.
IP 패브릭 관리를 단순화하는 데 필요한 구성이 거의 제로에 가미되어 있습니다.
광범위한 추적 및 로깅 기능을 통해 IP 패브릭의 확장 이점을 제공합니다.
IP 패브릭에 복원력을 추가하여 루프 없이 최대 경로 활용.
거리 벡터 및 링크 상태 프로토콜의 하이브리드로서 RIFT 프로토콜은 두 프로토콜 유형의 이점을 모두 상속하여 다음과 같은 추가적인 이점을 제공합니다.
가장 빠른 컨버전스.
토폴로지 자동 탐지.
TOS(Top of Rack) 디바이스에서 최소의 경로.
높은 수준의 ECMP(equal-cost multipath).
RIFT 프로토콜 개요
CLOS 및 Fat-Tree 아키텍처(스파인 및 리프 모델이라고도 함)에서 IP 포워딩 기반 데이터센터 구축이 증가함에 따라 현재 필요한 라우팅 결정을 처리하는 데 IGP(Interior Gateway Protocol) 및 BGP가 사용됩니다. 이러한 프로토콜이 사용하는 접근 방식은 이러한 IP 패브릭의 요구 사항을 충족하지 못하는 복잡하고 비용이 많이 드는 운영 확장에 의존합니다. IGP 및 BGP 프로토콜은 원래 일반 및 희소 네트워크 토폴로지를 위해 구축되었기 때문입니다. FAT Trees(Routing in Fat Trees)는 이러한 문제를 극복하고 진화하는 IP 패브릭의 요구 사항을 충족합니다.
RIFT 프로토콜은 개방형 표준 프로토콜입니다. 이것은 리프에 확산된 계산을 사용하는 거리 벡터 프로토콜의 하이브리드 버전이며, 스파인으로의 분산 계산 및 플러딩을 사용하는 링크 상태 프로토콜입니다. 즉, RIFT 프로토콜이 활성화된 상태에서 디바이스는 북쪽 방향으로 link-state 정보를 플러드하는 반면, 리프를 제외한 모든 스위치는 기본 경로(정상 조건에서)를 생성하며, 이는 남쪽 방향으로 플러드됩니다.
RIFT 프로토콜의 주요 기능은 다음과 같이 표시됩니다.
지방 트리 토폴로지의 자동 구성.
IP 패브릭의 잘못된 링크 자동 탐지.
데이터센터 네트워크의 각 수준에서 보유하는 라우팅 상태 정보의 양을 최소화합니다.
플러딩 양을 자동으로 최소화합니다.
링크 및 노드 실패 시 접두사의 자동 세분화를 통해 블랙 홀링 및 최적화되지 않은 라우팅을 방지합니다.
비 ECMP 포워딩을 허용합니다.
사용 가능한 대역폭을 기반으로 트래픽의 균형을 자동으로 스파인으로 재조정합니다.
프로토콜 컨버전스 후 사용할 수 있는 제한된 키-값 데이터 저장소를 동기화합니다. 예를 들어, 노드에서 더 높은 수준의 기능을 부트스트랩합니다.
자세한 내용은 인터넷 초안 draft-ietf-rift-09(2020년 5월 7일 만료) RIFT: 지방 나무의 라우팅을 참조하십시오.
Junos RIFT 프로토콜 구현이 네트워크 성능에 미치는 영향
RIFT 프로토콜을 Junos OS 통합하면 공통 데이터센터 아키텍처의 경로 로드 및 메모리 활용도에 어느 정도 영향을 미칩니다. RIFT 프로토콜은 프로토콜 성능을 개선하기 위해 사용 가능한 모든 코어를 사용할 수 있기 때문입니다.
RIFT의 동적 구성이 완전히 지원되지 않습니다. Junos OS CLI의 구성 변경은 프로토콜이 트래픽 손실로 다시 연결되는 RIFT 프로토콜을 다시 시작할 수 있습니다.
RIFT 프로토콜을 통한 지원되지 않는 기능
RIFT의 Junos OS 구현은 https://datatracker.ietf.org/doc/draft-ietf-rift-rift/ RIFT Internet 초안에 설명된 표준을 준수하지만 다음 기능을 지원하지 않습니다.
논리적 시스템
Snmp
ISSU(In-Service Software Upgrade) 및 무상 소프트웨어 업그레이드
GRES(Graceful 라우팅 엔진 Switchover)
원격
RIFT의 Junos OS 구현은 구현되지 않습니다.
키-밸류 스토어
수평 링크
리프 2-리프 지원
부정적인 세분화
접두사의 모빌리티 속성
인터페이스의 레이블 바인딩
RIFT 프로토콜 활성화
RIFT 소프트웨어 패키지는 독립형 패키지이며 프로토콜의 Juniper 구현은 멀티코어 프로세서 아키텍처의 최적 활용을 위해 설계된 최신 메모리 및 스레드 안전 프로그래밍 언어로 실행됩니다.
RIFT 프로토콜은 관련 RIFT 프로세스를 초기화하고 제로 터치 구성 기본 값은 구성을 통해 적용됩니다. 또한 모든 이더넷 인터페이스에서 RIFT를 자동으로 활성화합니다. 은 system-id
(는) MAC 주소 시스템에서 자동으로 파생되며 level
, 은(는) 프로토콜 작업의 검색 부분을 통해 자동으로 결정됩니다.
요약 RIFT 프로토콜은 필요한 구성 0에 가까운 구성을 필요로 합니다. RIFT 프로토콜을 활성화하면 패키지 기본값에서 필요한 구성을 junos-rift
자동으로 상속하여 IP 패브릭 관리를 더 간단하게 만듭니다.
시작하기 전에
프로토콜을 활성화하기 전에 디바이스에 RIFT 소프트웨어 패키지를 다운로드하여 설치해야 합니다.
RIFT 프로토콜을 설치하려면:
기본 Junos OS 소프트웨어와 함께 실행해야 하는 소프트웨어 패키지에서 특별
junos-rift
패키지를 다운로드합니다.참고:패키지가 구축된
junos-rift
소프트웨어의 기본 Junos OS 64비트 버전이어야 하며 Junos OS 릴리스 19.4R1부터 시작되어야 합니다.패키지를 설치하는
junos-rift
동안 디바이스는 CLOS 아키텍처에서 케이블링되어야 합니다.junos-rift
별도의 패키지이므로 Junos OS 기준 패키지와 별도로 라이선스를 부여할 수 있습니다.패키지 라이선스
junos-rift
는 15조, 16조 및 17조에 중점을 두고 최종 사용자 라이선스 계약에 따라 부여됩니다.
소프트웨어 패키지에서 패키지를 추출하고
junos-rift
호스트 디바이스의/var/tmp
디렉터리로 다운로드합니다.소프트웨어 패키지를 성공적으로 다운로드한 후 다음 명령을 실행합니다.
user@host> request system software add package-name
예를 들어:
user@host> request system software add /var/tmp/junos-rift.tgz
RIFT 프로토콜을 활성화하려면 디바이스에서 RIFT 소프트웨어 패키지를 활성화해야 합니다. 명령을 사용하여 RIFT를 request rift package activate
활성화하거나 수동으로 로드하고 지정된 파일의 RIFT 구성을 CLI의 현재 구성과 결합할 수 있습니다.
Enabling RIFT Using Activate Command
명령을 사용하여 request rift package activate
RIFT 소프트웨어 패키지를 활성화하려면:
junos-rift
후 다음 명령을 실행합니다.
user@host >request rift package activate
활성화 명령은 RIFT 구성을 자동으로 커밋합니다.
Enabling RIFT Using Load Command
RIFT 구성을 수동으로 로드하려면,
패키지를 성공적으로 설치한
junos-rift
후 다음 명령을 실행하여 로드하고 지정된 파일의 RIFT 구성을 CLI의 현재 구성과 결합합니다.user@host# load merge /etc/config/junos-rift/package-defaults.conf user@host# load merge /etc/config/junos-rift/platform/platform-defaults.conf
platform 여기에 호스트 디바이스가 있으며 다음 값 중 하나가 될 수 있습니다.mxqfxvmx
구성을 커밋합니다.
user@host> commit
Enabling RIFT in CLOS-based Topology (ZTP Mode)
CLOS 토폴로지에서 RIFT 소프트웨어 패키지를 활성화하려면 추가 구성이 필요합니다. 토폴로지에서 패브릭의 최상위 노드를 식별하고 모든 패브릭 최상위 디바이스를 구성하여 기본 구성의 수준을 재정 auto
의해야 합니다.
CLOS 기반 토폴로지에서 RIFT 소프트웨어 패키지를 활성화하려면,
기본 구성의 자동 수준을 재정의하고 선택적으로 수준을 수동으로 지정합니다.
[edit protocols rift] user@host# set level top-of-fabric
추가 구성을 커밋합니다.
user@host> commit
Traceoptions for RIFT
RIFT 프로토콜을 활성화하면 필요한 구성이 자동으로 상속되지만, 최소 추적을 선택적 구성으로 추가로 구성할 수 있습니다.
RIFT에 대한 traceoptions 구성:
균열 문에서 traceoptions 및 프록시 프로세스 매개 변수를 지정합니다.
[edit protocols rift] user@host# set traceoptions file size size user@host# set traceoptions file files number user@host# set traceoptions level level user@host# set traceoptions flag flag user@host# set proxy-process traceoptions file size size user@host# set proxy-process traceoptions level level user@host# set proxy-process traceoptions file files number user@host# set proxy-process traceoptions flag flag
예를 들어:
[edit protocols rift] user@host# set traceoptions file size 1000000 user@host# set traceoptions file files 4 user@host# set traceoptions level info user@host# set traceoptions flag node user@host# set proxy-process traceoptions file size 1000000 user@host# set proxy-process traceoptions level info user@host# set proxy-process traceoptions file files 4 user@host# set proxy-process traceoptions flag if-events
Verifying RIFT Configuration
다음 계층 수준에서 RIFT 프로토콜 구성을 확인할 수 있습니다.
[groups rift-defaults]
[interfaces interface-range rift-interfaces]
[protocols rift]
[edit] user@host# show groups rift-defaults protocols { rift { node-id auto; level auto; lie-receive-address { family { inet 224.0.0.120; inet6 ff02::a1f7; } } interface <*> { lie-transmit-address { family { inet 224.0.0.120; inet6 ff02::a1f7; } } bfd-liveness-detection minimum-interval 1000; } } }
[edit] user@host# show interfaces interface-range rift-interfaces member ge-0/0/*; description "Match interfaces that RIFT could use.";
[edit] user@host# show protocols rift apply-groups rift-defaults; interface rift-interfaces;
패키지에서 junos-rift
적용되는 기본값을 보고 RIFT 구성을 확인할 수도 있습니다. 이를 위해 명령을 실행합니다 show configuration protocols rift | display inherited
.
예를 들어:
user@host> show configuration protocols rift | display inherited ## ## 'auto' was inherited from group 'rift-defaults' ## node-id auto; level auto; ## ## 'lie-receive-address' was inherited from group 'rift-defaults' ## lie-receive-address { ## ## 'family' was inherited from group 'rift-defaults' ## family { ## ## '224.0.0.120' was inherited from group 'rift-defaults' ## inet 224.0.0.120; ## ## 'ff02::a1f7' was inherited from group 'rift-defaults' ## inet6 ff02::a1f7; } } interface ge-0/0/0.1 { ## ## 'lie-transmit-address' was inherited from group 'rift-defaults' ## lie-transmit-address { ## ## 'family' was inherited from group 'rift-defaults' ## family { ## ## '224.0.0.120' was inherited from group 'rift-defaults' ## inet 224.0.0.120; ## ## 'ff02::a1f7' was inherited from group 'rift-defaults' ## inet6 ff02::a1f7; } } ## ## 'bfd-liveness-detection' was inherited from group 'rift-defaults' ## ‘400’ was inherited from group 'rift-defaults' ## bfd-liveness-detection minimum-interval 400; }
표 1 에는 RIFT 프로토콜 구성 및 상태를 확인하는 데 사용할 수 있는 명령이 나열되어 있습니다.
명령 |
설명 |
|
RIFT 프로토콜의 런타임 상태를 검사합니다. |
|
RIFT 프로토콜은 다른 프로토콜이 수락되는 정책 및 명령에 사용할 수 있습니다. |
|
자세한 RIFT 설치 경로를 봅니다. |
|
RIFT 데이터베이스를 삭제합니다. |
|
RIFT 프로토콜을 다시 시작합니다. |
자세한 내용은 소프트웨어 패키지 배포의 FAQ 파일을 참조하십시오.
Troubleshooting the RIFT Protocol
RIFT 프로토콜은 매우 극단적인 경우를 제외하고 코어 파일을 생성하지 않습니다. 광범위한 로깅을 통해 모든 장애를 보고하고 때로는 출구에서 백트랙을 실행합니다. RIFT 프로세스는 traceoptions 구성을 사용하여 수집할 수 있는 구성 가능한 추적 이벤트를 제공합니다.
RIFT 구현 문제를 해결하려면 다음을 참조하십시오.
Forming Adjacency
Problem
RIFT 인접성 플랩핑 및 다운, 또는
Remote Uses Our Own SystemID
오류 거부 표시Multiple Neighbors
.Solution
RIFT 프로토콜은 포인트 투 포인트 인접성을 형성하는 이더넷 링크에서 두 개 이상의 이웃 또는 노드의 자체 인터페이스가 다시 루프되는 것을 지원하지 않습니다. 케이블 케이블을 확인하고 수정합니다.
Undefined Level
Problem
모든 스위치는 정의되지 않은 수준을 보여주며 3방향 인접 항목을 형성하지 않지만 링크 정보 요소(LI)는 송수신되고 있습니다.
Solution
패브릭 수준 최상위 구성이 없을 가능성이 있습니다. ZTP에 대한 앵커를 제공하려면 모든 패브릭 최상위 디바이스를 최고 패브릭 수준으로 구성해야 합니다.
Loopback Address
Problem
RIFT 내 노드에 루프백 주소를 가져올 수 없습니다.
Solution
모든 루프백 주소를 패브릭 최상위에 두는 가장 간단한 방법은 필요한 모든 노드에서 루프백 주소를 구성하고 노스바운드 방향으로 RIFT로 재배포하는 것입니다. 이렇게 하려면 다음과 같은 구성이 필요합니다.
[edit policy-options] policy-statement lo0-rift { term 0 { from { protocol direct; route-filter loopback-address exact; } then accept; } term default { then reject; } }
[edit protocols rift] export { northbound { lo0-rift; } }
이 구성을 통해 패브릭 최상위 디바이스를 제외한 모든 리프가 다른 모든 노드의 루프백 주소를 ping할 수 있습니다.
패브릭의 최상위 디바이스도 리프 디바이스에서 연결할 수 있어야 하거나 그 반대의 경우도 마찬가지인 경우, 패브릭 최상위 루프백 주소는 아래(즉, 사우스바운드) 아래의 한 수준에 노출되어야 합니다. 이렇게 하려면 다음과 같은 구성이 필요합니다.
[edit protocols rift] export { southbound { lo0-rift; } }
참고:패브릭 최상위 주소를 모든 리프 노드로 전파할 수 있도록 하려면 계층 수준에서 옵션을
[edit protocols rift export southbound]
구성allow-rift-routes
합니다.System Log Error Messages
RIFT 프로세스는 시스템 로그 메시지를 생성하여 RIFT 프로토콜을 Junos OS 통합과 관련된 오류를 기록합니다. 시스템 로그 메시지를 해석하려면 다음을 참조하십시오.
RIFT_PROXYD_ALREADY_RUNNING
—RIFT 프로세스의 또 다른 인스턴스가 이미 실행 중입니다.RIFT_PROXYD_CONNECT_RIFT
- 로컬 RIFT 프로세스에 연결하려는 시도가 실패했습니다.
시스템 로그 오류 메시지에 대한 자세한 내용은 시스템 로그 탐색기를 참조하십시오.