[ACSA 교육#35] 라우팅 종류

우리는 지난 포스팅에서 이미 라우팅에 대해 다뤄봤습니다.
IP 라우팅 테이블과 함께 실제 패킷이 Layer 3상에서 어떻게 움직이는지 확인해봤죠.

자, 그럼 실제로 라우팅의 종류에는 무엇이 있고, 어떤 프로토콜들이 있는지 살펴보겠습니다.

AOS-CX에서의 라우팅 종류

라우팅 장치는 IP 라우팅 테이블의 최적 경로를 기반으로 Layer 3 포워딩 결정을 내리게 됩니다.
라우팅 테이블의 각 항목들은 수동으로 채워지기도 하고, 라우팅 프로토콜에 의해 채워지기도 합니다.

ArubaOS-CX의 스위치에서 존재할 수 있는 라우팅 종류는 다음과 같습니다.

  • Connected
  • Local
  • Static
  • RIPv2
  • OSPF
  • BGP
Connected & Local 항목

다음 Configuration은..
VLAN 1을 위한 SVI(Switching Virtual Interface)에 IP주소를 설정하고, 포트 1/1/1에 VLAN 1을 할당하는 것입니다.

Switch(config)# interface vlan 1
Switch(config-if)# ip address 10.1.1.1/24
Switch(config)# interface 1/1/1
Switch(config-if)# no routing
Switch(config-if)# vlan access 1

위의 Configuration은 라우팅 테이블에 몇 개 항목(Entry)을 생성합니다.
“show ip route”라는 명령어를 통해 확인할 수 있습니다.

Switch# show ip route
Displaying ipv4 routes selected for forwarding
'[x/y]' denotes [distance/metric]
10.1.1.0/24, vrf default via vlan1, [0/0], connected
10.1.1.1/32, vrf default via vlan1, [0/0], local

위 라우팅 테이블에서 첫번째 항목인 connected는 해당 서브넷 10.1.1.0/24가 스위치와 물리적으로 연결되어 있다 라는 것을 의미합니다. 따라서, 해당 네트워크로 이동하기 위해서 추가적인 Next-hop이 필요 없다 라는 뜻입니다.

두 번째 local 항목은 /32로 되어 있기 때문에 단일 IP주소 1개를 의미합니다. 즉, 해당 IP주소는 일전에 구성된 주소로 스위치 내부의 라우팅 프로세스를 위해 사용될 수 있다는 것을 뜻합니다. 이것은 VLAN 1을 위한 SVI 일 수도 있고 Loopback 인터페이스 일 수도 있습니다.

Static 라우팅

목적지 네트워크가 스위치나 라우터에 직접 또는 물리적으로 연결되어 있지도 않고, OSPF와 같은 라우팅 프로토콜을 통해 해당 경로를 광고(advertising)하지 않는 경우에는 정적 라우팅(Static Routing)이 필요합니다.

정적 라우팅은 목적지 네트워크와 경로상 다음 홉(hop)을 수동으로 직접 정의합니다.
여기서 다음 홉은 정적 라우팅을 적용하는 장치와 직접 연결되어 있어야 합니다.

ArubaOS-CX에서는 ip route 명령어를 사용하여 정적 라우팅을 구축합니다.

Switch(config)# ip route <remote-network/mask> <next-hop> vrf <vrf-id>

위 그림을 한 번 살펴볼까요?

10.1.10.0 네트워크의 엔드포인트가 10.1.20.0 네트워크의 다른 엔드포인트와 통신하고자 한다고 가정해보겠습니다.

Core-1 스위치에는 두 개의 네트워크(10.1.10.0/24, 10.1.12.0/30)가 물리적으로 연결되어 있습니다.
그러나 Core-1 스위치는 10.1.20.0/24 네트워크가 물리적으로 연결되어 있지 않습니다. 따라서 아래와 같이 경로를 수동으로 추가합니다.

Core-1(config)# ip route 10.1.20.0/24 10.1.12.2 vrf table1

통신은 양방향으로 이뤄지기 때문에, 경로를 완성하기 위해서는 Core-2 스위치에도 정적 라우팅이 필요합니다.
Core-2 스위치 관점에서 보면, 10.1.12.0/30과 10.1.20.0/24의 네트워크 경로 항목만 있습니다.
따라서, 아래와 같이 10.1.10.0/24로의 경로를 추가해야 합니다.

Core-2(config)# ip route 10.1.10.0/24 10.1.12.1 vrf table1 

라우팅 테이블에 제대로 경로가 저장되어 있는지 확인하기 위해서 show ip route 라는 명령어를 사용하면 됩니다.

Administrative Distances (관리 거리)

때때로 라우터는 서로 다른 방법으로 경로를 학습합니다. 라우터가 BGP와 OSPF를 실행 중이고, 몇 가지 정적 라우팅(고정 라우팅)을 입력했을 수도 있습니다. 그런데 이 세 가지 방법 모두로부터 10.1.20.0/24 네트워크에 대해 학습했을 수 있습니다. 이럴 때 라우터는 세 가지 방법 중 어떤 라우팅 경로를 가장 신뢰해야 할까요?
바로 Administrative Distances(관리 거리)가 가장 낮은 것을 선택합니다.

이것은 우리가 정보를 배우는 방식과 매우 유사합니다.
우리는 주변에서 우리의 부모님과 매우 가까울 것입니다. 부모님의 말씀을 굉장히 신뢰할 것입니다.
이 때 우리는 부모님과 매우 낮은 Administrative Distances(관리 거리)를 갖고 있다고 말할 수 있을 것입니다.

만약 낯선 사람이 부모님의 말씀과 상충되는 조언을 하면, 우리는 낯선 사람의 말보다는 부모님의 말을 들을 것입니다. 왜냐하면 낯선 사람이 부모님보다 Administrative Distances(관리 거리)가 더 높기 때문입니다.

아래 표는 각 라우팅 프로토콜에 대한 Administrative Distances(관리 거리)를 보여줍니다.

예를 들어 Core-1 스위치가 OSPF와 정적 라우팅 두 가지 방식으로 10.1.20.0 네트워크에 대해 학습했다고 가정했을 때, 스위치는 정적 라우팅이 Administrative Distances 가 가장 낮기 때문에 정적 라우팅 경로를 사용할 것입니다.

Floating Static Routes

Administrative Distances(관리 거리)를 조작하여 기본 및 백업 경로를 생성하여 네트워크 복원력을 향상시킬 수도 있습니다.

서로 다른 ISP를 사용하는 두 개의 인터넷 연결이 있다고 가정해볼까요?

첫 번째 ISP 인터넷 회선은 두 번째 인터넷 회선보다 대역폭이 높기 때문에 네트워크 관리자는 첫 번째 회선을 기본 연결(주 회선)로 사용하려고 할 것입니다. 두 번째 회선은 첫 번째 회선에 장애가 발생할 경우 사용하는 목적으로 대기하는 백업 회선이 됩니다.

이렇게 하려면 두 개의 정적 라우팅을 구성해야 합니다.

하나는 모든 목적지 0.0.0.0에 대해서 ISP-1을 Next-hop으로 지정합니다. 이 때, 기본 Administrative Distances(관리 거리)를 0으로 설정합니다.

Core-1(config)# ip route 0.0.0.0/0 10.1.251.1

또 하나는 똑같이 모든 목적지 0.0.0.0에 대해서 ISP-2를 Next-hop으로 지정합니다. 여기서는 기본 Administrative Distances(관리 거리)를 10으로 변경합니다.

Core-1(config)# ip route 0.0.0.0/0 10.1.252.2 distance 10

ISP-1 경로는 관리 거리가 더 짧기 때문에 회선의 장애로 끊기지 않는 한 이 경로만 사용됩니다.
하지만, ISP-1의 회선 장애로 문제가 생긴 경우에는 백업 회선인 ISP-2 경로가 사용됩니다.
show ip route 명령어를 사용하여 확인할 수 있습니다.

Core-1# show ip route

0.0.0.0/0,  vrf default via   10.1.251.2,[1/0],static
0.0.0.0/0,  vrf default via   10.1.252.2,[10/0],static

※ 참고: 0.0.0.0네트워크는 IPv4 범위에서 가능한 모든 주소를 요약하는 네트워크를 의미합니다.
즉, 모든 주소를 의미합니다.

기본 게이트웨이(Default Gateway)와 기본 경로(Default Route)를 구분해야 합니다.

기본 게이트웨이는 호스트와 같은 엔드포인트 장비나 Layer 2 스위치와 같이 라우팅 기능이 활성화되지 않은 장치를 나타냅니다. 이러한 상황에서 동일한 서브넷이 아닌 곳으로 패킷을 보낼 위치에 대한 정보만 제공합니다.

0.0.0.0/0으로 정의되는 기본 경로는 라우터 및 MultiLayer 스위치와 같이 라우팅 프로세스가 활성화된 장치에서 사용합니다.

Scalability Issue (확장성 문제)

정적 라우팅은 서브넷이 적은 소규모 네트워크에서 사용하기 쉽고 간단합니다.

하지만, 회사 내에 수 백개 또는 수 천개의 서브넷이 있는 경우에 정적 라우팅을 사용하여 서브넷을 관리하는 것은 효율적인 방법은 아닙니다. 자동으로 경로를 광고하지 않는다면, 모든 것을 수동으로 구성해야 합니다.
Floating Static Route와 같은 단순한 방법 외에는 동적인 장애 조치 메커니즘이 없게 됩니다.

인적 요소도 큰 고려사항이 될 것입니다.
관리자가 라우팅 명령어를 잘못된 장치에 구성하거나 경로를 제대로 구성하지 않으면 심각한 장애를 만들 수 있습니다. 이로 인해 Layer 3상에 루프가 발생하거나 트래픽의 블랙홀(Blackholing), 연결이 끊기는 등의 문제가 발생할 수 있습니다.

정적 라우팅을 사용하는 경우에는 라우팅 장치의 장애 복구 속도가 느릴 수가 있습니다. 새로운 대체 경로를 수동으로 구성해야 하기 때문입니다.

정적 라우팅과 다르게 동적 라우팅(Dynamic Route) 프로토콜은 훨씬 더 확장성이 뛰어납니다. 여러 라우팅 장치에서 수 천개 또는 수백만개의 경로를 처리할 수 있습니다. 또한 가동 중지 시간이 거의 또는 전혀 없이 자동으로 대체 경로를 지정하여 장애 조치합니다.
이는 라우터가 서로 메시지를 지속적으로 교환하기 때문에 네트워크를 계속 사용 가능하게 유지해주고, 관리자의 업무 및 작업 부하를 최소화해주도록 합니다.


이렇게 오늘은 라우팅 종류에 대해서 알아보았습니다.
특히나 그 중에서도 물리적으로 연결된 것과 수동으로 설정하는 정적 라우팅에 대해서 알아보았는데요.

그리고 정적 라우팅과 동적 라우팅에 대한 차이점까지 한 번 알아보았습니다.

다음 포스팅에서는 동적 라우팅에 대해서 좀 더 자세히 알아보겠습니다.