다양한 Cisco 라우터 및 Cisco IOS® 릴리스에 사용할 수 있는 수많은 스위칭 경로가 있습니다.네트워크에 가장 적합한 것은 무엇이며, 이러한 모든 것이 어떻게 작동합니까?이 백서에서는 다음 각 스위칭 경로를 설명하여 네트워크에 맞는 스위칭 경로를 가장 잘 결정할 수 있도록 합니다.
먼저 전달 프로세스 자체를 검토합니다.라우터를 통해 패킷을 전달하는 3단계는 다음과 같습니다.
패킷의 대상에 연결할 수 있는지 확인합니다.
목적지로 향하는 다음 홉과 해당 next hop이 도달할 수 있는 인터페이스를 결정합니다.
패킷이 다음 홉에 성공적으로 도달할 수 있도록 패킷에서 MAC(Media Access Control) 헤더를 다시 작성합니다.
이러한 각 단계는 패킷이 대상에 도달하는 데 중요합니다.
참고: 이 문서에서 IP 스위칭 경로는 예제로 사용됩니다.실제로 여기에 제공된 모든 정보는 다른 프로토콜의 동일한 스위칭 경로에 적용됩니다(있는 경우).
프로세스 스위칭은 스위칭 경로의 가장 낮은 공통 분모입니다.모든 IOS 버전, 모든 플랫폼, 스위칭되는 모든 유형의 트래픽에서 사용할 수 있습니다.프로세스 스위칭은 두 가지 기본 개념으로 정의됩니다.
패킷의 MAC 헤더를 재작성하는 데 사용되는 전달 결정 및 정보는 라우팅 테이블(라우팅 정보 베이스 또는 RIB) 및 ARP(Address Resolution Protocol) 캐시에서 또는 라우터에 직접 연결된 각 호스트의 IP 주소에 매핑된 MAC 헤더 정보가 포함된 다른 테이블에서 가져옵니다.
패킷은 IOS 내에서 실행되는 일반 프로세스에 의해 스위칭됩니다.즉, 전달 결정은 IOS 스케줄러를 통해 예약되고 라우팅 프로토콜과 같은 라우터의 다른 프로세스에 대한 피어로서 실행되는 프로세스에 의해 결정됩니다.일반적으로 라우터에서 실행되는 프로세스는 패킷 스위치를 처리하기 위해 중단되지 않습니다.
아래 그림에는 프로세스 전환 경로가 나와 있습니다.
이 다이어그램을 자세히 살펴보십시오.
인터페이스 프로세서는 먼저 네트워크 미디어에 패킷이 있음을 감지하고 이 패킷을 라우터의 입력/출력 메모리로 전송합니다.
인터페이스 프로세서는 수신 인터럽트를 생성합니다.이 인터럽트 중에 중앙 프로세서는 이 패킷이 어떤 유형인지(IP 패킷이라고 가정) 결정하고 필요한 경우 프로세서 메모리에 복사합니다(이 결정은 플랫폼에 따라 다름). 마지막으로, 프로세서는 해당 프로세스의 입력 대기열에 패킷을 배치하며 인터럽트가 해제됩니다.
다음 번에 스케줄러가 실행되면 ip_input의 입력 대기열에 패킷을 기록하고 이 프로세스를 실행하도록 일정을 잡습니다.
ip_input이 실행될 때 RIB를 호출하여 다음 홉과 출력 인터페이스를 확인한 다음 ARP 캐시를 검토하여 이 다음 홉에 대한 올바른 물리적 레이어 주소를 결정합니다.
ip_input은 패킷의 MAC 헤더를 재작성하고 올바른 아웃바운드 인터페이스의 출력 대기열에 패킷을 배치합니다.
패킷은 아웃바운드 인터페이스의 출력 대기열에서 아웃바운드 인터페이스의 전송 대기열로 복사됩니다.이 두 대기열 사이에 어떤 아웃바운드 QoS(Quality of Service)도 발생합니다.
출력 인터페이스 프로세서는 전송 대기열에서 패킷을 탐지하고 네트워크 미디어로 패킷을 전송합니다.
NAT(Network Address Translation) 및 Policy Routing과 같이 패킷 스위칭에 영향을 주는 거의 모든 기능이 프로세스 스위칭 경로에 처음 도입되었습니다.이러한 기능이 검증되고 최적화되면 인터럽트 컨텍스트 스위칭에 표시되거나 표시되지 않을 수 있습니다.
인터럽트 컨텍스트 스위칭은 Cisco 라우터에서 사용하는 기본 스위칭 방법 중 두 번째입니다.인터럽트 컨텍스트 스위칭과 프로세스 스위칭의 주요 차이점은 다음과 같습니다.
프로세서에서 현재 실행 중인 프로세스가 중단되어 패킷을 전환합니다.패킷은 ip_input 프로세스를 예약할 수 있는 경우에만 스위칭되지 않고 온디맨드 방식으로 전환됩니다.
프로세서는 패킷 전환에 필요한 모든 정보를 찾기 위해 어떤 형식의 경로 캐시를 사용합니다.
다음 그림은 인터럽트 컨텍스트 스위칭을 보여줍니다.
이 다이어그램을 자세히 살펴보십시오.
인터페이스 프로세서는 먼저 네트워크 미디어에 패킷이 있음을 감지하고 이 패킷을 라우터의 입력/출력 메모리로 전송합니다.
인터페이스 프로세서는 수신 인터럽트를 생성합니다.이 인터럽트 중에 중앙 프로세서는 이 패킷이 어떤 유형인지(IP 패킷이라고 가정) 확인한 다음 패킷을 전환하기 시작합니다.
프로세서는 경로 캐시를 검색하여 패킷의 목적지에 도달할 수 있는지, 출력 인터페이스가 무엇인지, 이 목적지로 향하는 다음 홉이 무엇인지, 마지막으로 패킷이 성공적으로 다음 홉에 도달하기 위해 갖춰야 할 MAC 헤더를 확인합니다.프로세서는 이 정보를 사용하여 패킷의 MAC 헤더를 재작성합니다.
이제 패킷이 아웃바운드 인터페이스의 전송 또는 출력 대기열에 복사됩니다(다양한 요인에 따라 다름). 이제 수신 인터럽트가 반환되고 인터럽트가 발생하기 전에 프로세서에서 실행 중이던 프로세스가 계속 실행됩니다.
출력 인터페이스 프로세서는 전송 대기열에서 패킷을 탐지하고 네트워크 미디어로 패킷을 전송합니다.
이 설명을 읽은 후 가장 먼저 떠오르는 질문은 "캐시에 무엇이 있습니까?"입니다. 인터럽트 컨텍스트 전환 유형에 따라 세 가지 가능한 대답이 있습니다.
빠른 스위칭은 빠른 조회 및 참조를 위해 이진 트리를 사용하여 포워딩 정보 및 MAC 헤더 재작성 문자열을 저장합니다.다음 그림은 이진 트리를 보여줍니다.
Fast Switching에서 연결 가능성 정보는 패킷의 대상에 대한 이진 트리에 노드가 있음을 나타냅니다.각 대상에 대한 MAC 헤더 및 아웃바운드 인터페이스는 트리 내 노드 정보의 일부로 저장됩니다.이진 트리에는 실제로 32개의 레벨이 있을 수 있습니다(위의 트리는 그림 용도로 매우 약어로 사용됨).
이진 트리를 검색하려면 찾고자 하는 (이진수) 번호의 왼쪽(가장 큰 숫자)에서 시작하고 그 번호를 기반으로 트리의 오른쪽 또는 왼쪽으로 분기하면 됩니다.예를 들어, 이 트리의 번호 4와 관련된 정보를 찾는 경우 첫 번째 이진수는 1이므로 우측으로 분기하는 것으로 시작합니다. 트리 아래쪽의 (이진수) 숫자를 비교하여 끝에 도달할 때까지 다음 숫자를 비교합니다.
Fast Switching에는 이진 트리 구조 및 MAC 헤더 재작성 정보를 트리 노드의 일부로 저장하는 데 따르는 몇 가지 특성이 있습니다.
라우팅 테이블과 고속 캐시 콘텐츠(예: MAC 헤더 재작성) 간에는 상관관계가 없으므로, 캐시 항목 작성에는 프로세스 스위칭 경로에서 수행해야 하는 모든 처리가 포함됩니다.따라서 빠른 캐시 엔트리는 패킷이 프로세스 스위칭될 때 구축됩니다.
ARP 캐시의 MAC 헤더(재쓰기에 사용)와 고속 캐시의 구조 간에는 상관관계가 없으므로, ARP 테이블이 변경될 때 빠른 캐시의 일부 부분은 무효화되어야 합니다(그리고 패킷의 프로세스 스위칭을 통해 재생성되어야 함).
빠른 캐시는 라우팅 테이블 내의 특정 대상에 대해 하나의 깊이(하나의 접두사 길이)로만 엔트리를 작성할 수 있습니다.
빠른 캐시 내에서 한 엔트리에서 다른 엔트리로 가리킬 방법이 없으므로(MAC 헤더 및 아웃바운드 인터페이스 정보는 노드 내에 있어야 함) 빠른 캐시 엔트리를 구축하는 동안 모든 라우팅 재귀를 해결해야 합니다.즉, 빠른 캐시 자체 내에서 재귀 경로를 확인할 수 없습니다.
빠른 스위칭 엔트리가 라우팅 테이블 및 ARP 캐시와의 동기화를 잃지 않도록 하고, 빠른 캐시에서 사용되지 않는 엔트리가 라우터에서 과도하게 메모리를 소모하지 않도록 하기 위해 빠른 캐시의 1/20은 1분마다 임의로 무효화됩니다.라우터 메모리가 매우 낮은 워터마크 아래로 떨어지면 빠른 캐시 항목의 1/5가 1분마다 무효화됩니다.
각 목적지에 대해 하나의 접두사 길이로만 빌드할 수 있는 경우 빠른 스위칭 빌드 항목은 어떤 접두사 길이입니까?고속 스위칭의 관점에서 목적지는 라우팅 테이블 내에서 연결 가능한 단일 목적지 또는 주요 네트워크입니다.지정된 캐시 엔트리를 작성할 접두사 길이를 결정하는 규칙은 다음과 같습니다.
빠른 정책 엔트리를 작성하는 경우 항상 /32에 캐시합니다.
MPOA VC(Multiprotocol over ATM Virtual Circuit)에 대해 엔트리를 작성하는 경우 항상 /32에 캐시합니다.
네트워크가 서브네팅되지 않은 경우(주요 네트워크 항목임):
직접 연결된 경우 /32를 사용합니다.
그렇지 않으면 주 네트 마스크를 사용합니다.
슈퍼넷인 경우 슈퍼넷의 마스크를 사용합니다.
네트워크가 서브네팅된 경우
직접 연결된 경우 /32;
이 서브넷에 대한 경로가 여러 개인 경우 /32;를 사용하십시오.
다른 모든 경우에는 이 주 네트에서 가장 긴 접두사 길이를 사용합니다.
고속 스위칭은 전적으로 목적지에 기반합니다.로드 공유는 대상별로 이루어집니다.특정 대상 네트워크에 대해 동일한 비용 경로가 여러 개 있는 경우 빠른 캐시는 해당 네트워크 내에서 연결할 수 있는 각 호스트에 대해 하나의 항목을 가지지만, 특정 호스트로 향하는 모든 트래픽은 하나의 링크를 따릅니다.
최적의 스위칭은 256 way multiway 트리(256 way mtree)에 전달 정보 및 MAC 헤더 재작성 정보를 저장합니다. mtree를 사용하면 다음 그림과 같이 접두사를 조회할 때 수행해야 하는 단계 수가 줄어듭니다.
각 8진수는 256개 분기에서 트리의 각 레벨에서 취할 항목을 결정하는 데 사용됩니다. 즉, 대상을 찾는 데 4개의 조회가 포함된다는 의미입니다.접두사 길이를 짧게 하려면 1-3개의 조회만 필요할 수 있습니다.MAC 헤더 재작성 및 출력 인터페이스 정보는 트리 노드의 일부로 저장되므로 빠른 스위칭에서와 같이 캐시 무효화와 에이징이 계속 발생합니다.
또한 Optimizal Switching은 빠른 스위칭과 동일한 방법으로 각 캐시 엔트리의 접두사 길이를 결정합니다.
또한 Cisco Express Forwarding은 256방향 데이터 구조를 사용하여 포워딩 및 MAC 헤더 재작성 정보를 저장하지만 트리는 사용하지 않습니다.Cisco Express Forwarding은 트리거를 사용합니다. 즉, 검색되는 실제 정보가 데이터 구조에 없습니다.대신 데이터는 별도의 데이터 구조에 저장되고, 트리에는 단순히 데이터를 가리킵니다.즉, Cisco Express Forwarding은 아웃바운드 인터페이스와 MAC 헤더 재작성을 트리 자체에 저장하는 대신 이 정보를 인접성 테이블이라는 별도의 데이터 구조에 저장합니다.
연결 정보(Cisco Express Forwarding 테이블)와 전달 정보(인접성 테이블)를 분리하면 다음과 같은 여러 가지 이점이 있습니다.
인접성 테이블은 Cisco Express Forwarding 테이블과 별도로 구축할 수 있으므로, 두 가지 모두 패킷을 전환하지 않고 구축할 수 있습니다.
패킷을 전달하는 데 사용되는 MAC 헤더 재작성은 캐시 항목에 저장되지 않으므로 MAC 헤더 재작성 문자열의 변경 사항에는 캐시 엔트리의 무효화가 필요하지 않습니다.
재귀적 경로를 확인하기 위해 재귀된 다음 홉이 아닌 전달 정보를 직접 가리킬 수 있습니다.
기본적으로 모든 캐시 에이징이 제거되며, 캐시는 라우팅 테이블 및 ARP 캐시에 포함된 정보를 기반으로 사전 구축됩니다.캐시 엔트리를 구축하기 위해 어떤 패킷도 전환하지 않아도 됩니다.
인접성 테이블에는 MAC 헤더 재작성 문자열 및 아웃바운드 인터페이스 정보 이외의 항목이 포함될 수 있습니다.인접성 테이블에 배치할 수 있는 다양한 유형의 항목은 다음과 같습니다.
cache - 특정 인접 호스트 또는 라우터에 도달하는 데 사용되는 MAC 헤더 재작성 문자열 및 아웃바운드 인터페이스입니다.
receive - 이 IP 주소로 향하는 패킷은 라우터에서 수신해야 합니다.여기에는 라우터 자체에 구성된 브로드캐스트 주소와 주소가 포함됩니다.
drop - 이 IP 주소로 향하는 패킷은 삭제해야 합니다.이는 액세스 목록에 의해 거부되거나 NULL 인터페이스로 라우팅되는 트래픽에 사용할 수 있습니다.
punt—Cisco Express Forwarding에서 이 패킷을 전환할 수 없습니다.처리를 위한 다음 최상의 스위칭 방법(일반적으로 빠른 스위칭)으로 전달합니다.
glean—다음 홉이 직접 연결되지만 현재 사용 가능한 MAC 헤더 재작성 문자열이 없습니다.
인접 항목은 특정 다음 홉이 직접 연결되어야 하지만 사용 가능한 MAC 헤더 재작성 정보가 없음을 나타냅니다.어떻게 구축하고 사용합니까?아래 그림과 같이 Cisco Express Forwarding을 실행하고 브로드캐스트 네트워크에 연결된 라우터는 기본적으로 여러 인접성 테이블 항목을 구축합니다.
기본적으로 빌드되는 네 개의 인접성 테이블 항목은 다음과 같습니다.
10.1.1.0/24, version 17, attached, connected 0 packets, 0 bytes via Ethernet2/0, 0 dependencies valid glean adjacency 10.1.1.0/32, version 4, receive 10.1.1.1/32, version 3, receive 10.1.1.255/32, version 5, receive
다음 네 가지 항목이 있습니다.3개, 1개각 수신 항목은 라우터에 구성된 브로드캐스트 주소 또는 주소를 나타내며, glean 항목은 연결된 네트워크에 있는 나머지 주소 공간을 나타냅니다.호스트 10.1.1.50에 대해 패킷이 수신되면 라우터가 패킷을 전환하려고 시도하고 이 인접 디바이스로 해결된 것을 찾습니다.그런 다음 Cisco Express Forwarding은 10.1.1.50에 대한 ARP 캐시 엔트리가 필요하고, ARP 프로세스가 ARP 패킷을 전송하며, 적절한 인접성 테이블 엔트리가 새 ARP 캐시 정보에서 구축됨을 알립니다.이 단계가 완료되면 인접성 테이블에 10.1.1.50 항목이 있습니다.
10.1.1.0/24, version 17, attached, connected 0 packets, 0 bytes via Ethernet2/0, 0 dependencies valid glean adjacency 10.1.1.0/32, version 4, receive 10.1.1.1/32, version 3, receive 10.1.1.50/32, version 12, cached adjacency 208.0.3.2 0 packets, 0 bytes via 208.0.3.2, Ethernet2/0, 1 dependency next hop 208.0.3.2, Ethernet2/0 valid cached adjacency 10.1.1.255/32, version 5, receive
라우터가 10.1.1.50으로 향하는 다음 패킷은 이 새로운 인접성을 통해 전환됩니다.
Cisco Express Forwarding은 Cisco Express Forwarding 테이블과 인접성 테이블 간의 분리를 활용하여 다른 인터럽트 컨텍스트 스위칭 모드보다 더 나은 형태의 로드 공유를 제공합니다.로드 공유 테이블은 다음 그림과 같이 Cisco Express Forwarding 테이블과 인접성 테이블 사이에 삽입됩니다.
Cisco Express Forwarding 테이블은 사용 가능한 병렬 경로에 대한 다양한 인접성 테이블 항목에 대한 포인터를 포함하는 이 loadshare 테이블을 가리킵니다.소스 및 대상 주소는 해시 알고리즘을 통해 전달되어 각 패킷에 사용할 로드 공유 테이블 항목을 결정합니다.각 패킷 로드 공유를 구성할 수 있습니다. 이 경우 각 패킷은 다른 로드 공유 테이블 항목을 사용합니다.
각 loadshare 테이블에는 라우팅 테이블의 트래픽 공유 카운터를 기준으로 사용 가능한 경로가 구분되는 16개의 항목이 있습니다.라우팅 테이블의 트래픽 공유 카운터가 모두 1인 경우(여러 개의 동일 비용 경로의 경우) 각 가능한 다음 홉은 loadshare 테이블에서 동일한 수의 포인터를 받습니다.사용 가능한 경로 수가 16개로 균일하게 표시되지 않으면(16개의 로드 공유 테이블 항목이 있기 때문에) 일부 경로의 항목이 다른 경로보다 많습니다.
Cisco IOS Software Release 12.0부터 각 경로에 로드 공유 테이블 항목 수가 비례하여 포함되도록 로드 공유 테이블의 항목 수가 감소됩니다.예를 들어 라우팅 테이블에 세 개의 동일 비용 경로가 있는 경우 로드 공유 테이블 항목은 15개만 사용됩니다.
가능하면 라우터가 인터럽트 컨텍스트에서 스위칭되도록 해야 합니다. 이는 프로세스 수준 스위칭보다 최소 1배 빠른 속도이기 때문입니다.Cisco Express Forwarding 스위칭은 다른 스위칭 모드보다 훨씬 빠르고 뛰어납니다.실행 중인 프로토콜과 IOS에서 지원하는 경우 Cisco Express Forwarding을 사용하는 것이 좋습니다.트래픽을 공유해야 하는 여러 병렬 링크가 있는 경우 특히 그렇습니다.Cisco Feature Navigator(등록된 고객만 해당) 페이지에 액세스하여 CEF 지원에 필요한 IOS를 결정합니다.