나는 리눅스가 라우팅 선택을 할 때 목적지로 가는 가장 구체적인 경로 를 선택한다는 것을 이해한다 . 그러나 경로의 메트릭은 어떻습니까? 경로의 특이성보다 우선 순위가 높은가요?
리눅스에 의해 사용되는 라우팅 선택 알고리즘의 세부 사항에 대한 참조도 인정 될 것이다.
답변
경로 메트릭은 동일한 특이성을 가진 경로 중에서 선호도를 설정하는 것입니다. 일반적으로 라우팅 (예 : Cisco, Windows 등)의 경우에 해당합니다. 따라서 모델은 다음과 같이 작동합니다.
- 가장 구체적인 경로 찾기 (일명 가장 긴 접두사 일치 * )
- 고유성이 동일한 경로가 여러 개있는 경우 관리 거리 가 가장 낮은 경로를 선택하십시오 (직접 연결된 경로, 고정 경로 및 다양한 라우팅 프로토콜 등을 구분).
- 해당 라우팅 프로토콜과 특정 경로 (경로 특이 도와 관리 거리가 동일한 경우)에서 메트릭 이 가장 낮은 경로를 선택하십시오.
소스 IP 주소를 기반으로 경로 지정과 같은 작업을 수행 할 수 있는 정책 기반 경로 지정 을 수행 할 수있는 다른 사항이 있습니다 . 그러나 경로의 특이성, 행정 거리, 그리고 메트릭스가 제가 가장 중요하게 생각하는 것은 세 가지입니다.
* 바이너리 (예 : / 24)의 서브넷이 다음과 같기 때문에 가장 긴 접두사 일치라고합니다 11111111.11111111.11111111.00000000
. 따라서 라우터는 이진 1에 대한 접두사를 검색하고 0에 도달하면 중지하고 접두사와 일치합니다.
답변
Linux는 유연한 라우팅 선택을위한 다양한 도구를 제공합니다.
단일 라우팅 테이블
가장 간단한 경우에는 커널 라우팅 테이블이 하나만 있고 SRC 속성이있는 경로는 없습니다. 이 테이블에는 여러 경로가 있으며,이 경로는 수동 ( ip route add
), DHCP 데몬 또는 라우팅 데몬에 의해 배치됩니다. 이 경우 커널은 다음을 선택합니다.
- 가장 구체적인 경로;
- 동일한 특정 경로가 여러 개있는 경우 커널 메트릭이 가장 작은 경로입니다.
커널 메트릭 (로 표시 ip route show
)은 라우팅 데몬에 의해 선택되며 반드시 특정 라우팅 프로토콜의 메트릭과 관련이있는 것은 아닙니다. 예를 들어, Quagga는 프로토콜 메트릭과 상관없이 커널에 설치하는 모든 경로에 동일한 메트릭을 사용합니다.
소스 별 경로
Linux는 또한 주어진 소스 주소를 가진 패킷 만 일치시키는 SRC 속성을 가진 경로를 지원합니다. SRC는 IPv6에서만 작동하며 최근까지 (메모리가 제공되는 경우 3.11) 버그가있었습니다. 당신이하고있는 일을 모른다면 사용하지 않는 것이 좋습니다.
여러 라우팅 테이블
위에서 제공 한 것보다 더 많은 유연성이 필요한 경우 여러 라우팅 테이블을 사용하여 각 패킷에 대해 하나의 특정 라우팅 테이블을 선택하는 규칙을 작성해야합니다. 일반적인 기술은 소스 별 경로를 시뮬레이트하기 위해 소스 주소를 디스패치하는 것입니다. 다른 기술은 각 라우팅 데몬을 자체 라우팅 테이블에서 실행하고 Cisco의 “관리 거리”를 시뮬레이션하는 것입니다. 이 모든 것은 LARTC의 4 장 에 자세히 설명되어 있습니다.