검수요청.png검수요청.png

강화 내부 게이트웨이 라우팅 프로토콜

해시넷
이동: 둘러보기, 검색

강화 내부 게이트웨이 라우팅 프로토콜(Enhanced Interior Gateway Routing Protocol)은 시스코(Cisco) 사에서 개발한 라우팅 프로토콜로, 내부 게이트웨이 라우팅 프로토콜(Interior Gateway Routing Protocol)을 발전시켜서 만든 것이다.

개요

강화 내부 게이트웨이 라우팅 프로토콜은 기존의 내부 게이트웨이 라우팅 프로토콜이 발전된 것이다. 시스코에서 개발한 전용 프로토콜이 2016년 5월에 RFC 7868로 표준으로 제정되면서 다른 벤더 사의 장비에서도 합법적으로 구동시킬 수 있게 되었다. 거리 벡터 방식의 라우팅 프로토콜로, 주 네트워크(Major Network) 경계에서 자동 축약(Auto summary) 된다. 내부 게이트웨이 라우팅 프로토콜의 매트릭 방식을 그대로 사용하여 최적 경로를 선택한다. 링크 상태 라우팅 프로토콜과 같이 네트워크 변화에 즉시 업데이트를 해준다. 라우팅 정보 전송을 위해 포트 번호 88번을 사용하고, 확장 업데이트 알고리즘(Diffusing Update Algoritjm)을 사용하여 최적 경로와 후속 경로를 선출한다. 관리 거리(Administrative Distance, AD) 값은 내부 90, 외부 170이다. 클래스풀(Classful) 방식과 클래스리스(Classless) 방식을 모두 지원하여 자동 축약과 수동 축약 두 가지를 다 지원한다.

특징

거리 벡터 방식으로 경로를 학습하기 때문에 링크 상태 알고리즘을 사용할 때 보다 비교적 리소스 발생이 적다. 네트워크 변화에 즉시 반응하고, 최적 경로에 문제가 생기면 대체 경로를 설정하여 바로 변경이 가능해, 수렴 시간이 빠르다. 라우팅 정보 프로토콜과 마찬가지로 스플릿 호라이즌이 적용되고, 동일한 값의 최적 경로만을 사용하여 부하 분산을 지원하는 라우팅 정보 프로토콜이나 최단경로 우선 프로토콜과는 달리 메트릭 값이 다른 경로에도 부하를 분산 시킬 수 있다. 또한 최단경로 우선 프로토콜에 비해 설정이 간단하다는 장점이 있다. 다만, 중소규모 네트워크에서는 사용 가능하지만 대규모 네트워크에서 사용할 경우 SIA(Stuck In Active) 현상이 발생할 수도 있다.[1] 표준으로 제정되기 전까지는 시스코 전용 프로토콜로, 시스코 장비에서만 돌아간다는 단점이 있었지만, 이 문제는 표준이 되면서 해결 되었다.

동작

패킷

강화 내부 게이트웨이 라우팅 프로토콜은 헬로 패킷. 쿼리 패킷, 업데이트 패킷, 응답 패킷, ACK 패킷 5가지를 사용하여 이웃 관계를 형성하고, 정보를 교환한다.

  1. 헬로 패킷(Hello Packet): 강화 내부 게이트웨이 라우팅 프로토콜 형성 및 유지를 위해서 교환되는 패킷으로, 이웃 관계를 형성한 인접 라우터는 강화 내부 게이트웨이 라우팅 프로토콜의 이웃 테이블에 등록된다. 강화 내부게이트웨이 라우팅 프로토콜 라우터는 헬로 패킷을 교환한 후, 자율 시스템 번호(Autonomous System Number, ASN), K-값, 인증(Authentication), 서브넷 대역과 같은 조건들이 일치하는 경우에만 이웃 관계를 형성할 수 있다. 헬로 패킷은 이웃 관계를 형성한 후 주기적으로 교환되면서 상대방 장비에 대한 킵얼라이브(Keepalive)를 확인한다. 이더넷이나 점 대 점(HDLC, PPP), T1(1544Kbps) 이상의 비브로드캐스트 다중 액세스(Non-Broadcast Multi-Access, NBMA) 구간에서는 헬로 주기와 홀드 타이머가 각각 5초, 15초이고, T1 미만의 비브로드캐스트 다중 액세스 구간에서는 헬로 주기와 홀드 타이머가 각각 60초와 180초이다. 이웃 관계에 있는 라우터가 일정 시간 동안 헬로 패킷에 대한 응답을 하지 않으면 장애로 판단하여 이웃 관계를 끊는다.
  2. 쿼리 패킷: 라우팅 정보를 요청하는 패킷으로, 특정 목적지 네트워크에 대한 최선 경로에 장애가 발생되었고, 해당 목적지에 대한 차선 경로가 없는 경우 사용한다. 인접한 라우터에게 쿼리 패킷을 전송하여 목적지로 향하는 다른 대체 경로가 있는지 확인하고, 해당 경로가 있다는 응답을 받게 되면 해당 경로를 새롭게 테이블에 등록하게 된다.
  3. 업데이트 패킷: 강화 내부 게이트웨이 라우팅 프로토콜의 이웃 관계 형성 후 자신의 토폴로지 테이블 정보를 이웃 장비에게 알려주기 위한 목적으로 사용된다. 이 외에도 망에 변화가 생겼을 경우 해당 정보를 알려주기 위한 목적으로도 사용된다.
  4. 응답 패킷: 수신한 쿼리 패킷에 대한 응답 메시지로, 쿼리 패킷과 응답 패킷의 개수는 동일해야 한다. 새로운 대체 경로 정보가 없는 경우에도 응답 메시지를 보내어 응답을 해야 한다. 쿼리 패킷을 전송한 라우터가 3분 이내로 인접 라우터에게 응답을 수신하지 못하는 경우 해당 라우터와 강화 내부 게이트웨이 라우팅 프로토콜의 이웃관계를 단절한다. 그런데 이는 SIA 현상의 원인이 된다.
  5. ACK 패킷: 강화 내부 게이트웨이 라우팅 프로토콜은 IP 기반으로 동작하기 때문에 신뢰성이 없다. 이웃 장비에게 전송한 업데이트 패킷, 쿼리 패킷, 응답 패킷이 정상적으로 수신되었는지 확인이 불가능하기 때문에 이를 해결하기 위해 별도의 Ack 패킷을 만들어 각 패킷에 대한 수신 여부를 상대방 장비에게 확인시켜준다. 즉, 신뢰성 있는 전송이 가능하다. 만약 업데이트, 쿼리, 응답 전송 후 일정 시간 동안 강화 내부 게이트웨이 라우팅 프로토콜의 Ack 패킷을 수신하지 못할 경우 최대 16회 재전송을 수행하고, 그 안에 상대방 장비로부터 강화 내부 게이트웨이 라우팅 프로토콜의 Ack를 수신하지 못하는 경우 이웃 관계를 단절한다.[2] 헬로 패킷과 Ack 패킷에 대해서는 수신을 확인하지 않는다.[3]

절차

강화 내부 게이트웨이 라우팅 프로토콜이 라우팅 경로를 계산하는 절차는 다음과 같다. 인접 라우터가 서로 헬로 패킷을 교환한 후, 이웃 관계를 맺고, 이웃 테이블을 생성한다. 업데이트 패킷을 통해 라우팅 정보를 교환하여 토폴로지 테이블을 생성하고, 만들어진 토폴로지 테이블의 정보를 종합하여 라우팅 경로를 계산하고 최적 경로를 라우팅 테이블에 저장한다. 특정 네트워크로 가는 경로 또는 인접 라우터가 다운되었을 때는 앞의 방법에 쿼리 패킷과 응답 패킷을 사용하여야 한다. 토폴로지 테이블에 차선 경로가 있는 경우에는 바로 라우팅 테이블에 최적 경로를 저장하면 된다. 그렇지 않은 경우, 쿼리 패킷으로 다운된 네트워크의 라우팅 정보 요청 및 응답 상태 테이블을 생성한다. 응답 패킷을 사용하여 라우팅 정보 수신 및 토폴로지 테이블을 생성하고, 수신한 라우팅 정보들을 사용하여 경로를 계산하고 최적 경로를 라우팅 테이블에 저장한다.[1]

메트릭

단순히 홉 카운트를 메트릭 요소로 사용했던 라우팅 정보 프로토콜과는 다르게, 강화 내부 게이트웨이 라우팅 프로토콜은 여러 요소들을 복합적으로 사용한다. 대역폭, 부하, 지연, 신뢰성, MTU를 각각 K1, K2, K3, K4, K5로 가정하고, 특정 공식에 대입 하여 구한 결과 값을 메트릭으로 사용한다.[2] 대역폭은 라우터의 경로에서 목적지 망에 이르는 최소 대역폭으로 kbit/s 단위를 사용한다. 부하는 1~255까지의 수를 사용하고, 신뢰성은 1/255~255/255 사이의 숫자로 표시한다. 지연은 라우터의 경로에서 목적지 망에 이르는 최대 지연 수를 의미하고, MTU는 최대 전송 단위로, 최적 경로의 최대 전송 단위를 의미한다.[4] 부하와 신뢰성은 고정된 값을 사용하는 것이 아니고, 5분마다 평균값을 계산하여 사용하는 것이기 때문에 이로 인한 망의 안전성 문제가 발생할 수 도 있다. 오늘날에는 대역폭(K1)과 지연(K3)만을 사용한다. 대역폭과 지연에 대한 기본 값은 1이고, 나머지는 모두 0으로 본다. 물론 관리자가 명령어를 이용하여 부하나 신뢰성을 메트릭 공식에 사용할 수 있지만 거의 변경하지 않는다. 메트릭을 구할 때 주의할 점은 모든 라우터가 동일한 K값을 사용해야 하기 때문에 동일 자율 시스템 내의 모든 라우터의 K값을 변경해야 한다. 현재 실제로 사용하고 있는 공식은 (10^7/가장 느린 대역폭 + 모든 지연의 합/10) * 256으로, 대역폭과 지연을 제외한 나머지 값은 0으로 보기 때문에 생략한다. 대역폭과 지연의 값은 상황에 맞게 관리자가 명령어로 변경해주어야 하고, 인터페이스의 대역폭과 지연 값이 실제 대역폭과 지연 값에 영향을 주지 않아야 한다.[2]

확산 업데이트 알고리즘

확산 업데이트 알고리즘(Diffusing Update Algorithm)은 지정된 경로가 라우팅 루프를 발생시킬 때마다 전역적으로 재계산되도록 하기 위해 강화 내부 게이트웨이 라우팅 프로토콜에서 사용되는 알고리즘이다. SRI 인터내셔널의 J.J 가르시아-루나-에이스베스(Garcia-Luna-Aceves)가 개발한 것으로, 라우팅 토폴로지의 변화에 대응하고, 라우터의 라우팅 테이블을 동적으로 조정하는 역할을 한다. 목적지에 대해 실현 가능한 경로가 없으면, 확산 업데이트 알고리즘은 확산 연산을 수행하여 문제 경로의 모든 추적을 네트워크에서 제거하고, 벨만 포드(Bellman Ford) 알고리즘을 사용하여 새 경로를 복구한다. 확산 업데이트 알고리즘은 토폴로지 테이블이 다른 라우터에서 수신한 데이터를 평가하고, 최적 경로와 차선 경로를 계산한다.[5]

테이블

강화 내부 게이트웨이 라우팅 프로토콜은 이웃 테이블, 토폴로지 테이블, 라우팅 테이블 3가지의 테이블을 가진다. 이웃 테이블은 직접 연결된 인터페이스를 통해 직접 접근할 수 있는 데이터를 가진 이웃 라우터들에 대한 데이터를 저장한다. 토폴로지 테이블은 이름과는 다르게 완전한 네트워크 토폴로지의 개요를 저장하지는 않는다. 이 테이블에는 개별 매트릭과 더불어 강화 내부 게이트웨이 라우팅 프로토콜 라우티드 네트워크의 목적지 네트워크의 목록을 포함한다. 또, 모든 목적지에 대해 최선 경로와 차선 경로가 식별되며, 이들이 존재하면 테이블에 저장된다. 토폴로지 테이블 내의 모든 목적지는 라우팅이 안정적이고, 라우터가 모든 목적지에 대한 경로를 알고 있는 패시브(Passive)와 토폴로지가 변경되어 라우터가 목적지에 대한 경로를 업데이트하는 과정에 있는 액티브(Active) 두 가지로 표시된다. 라우팅 테이블은 모든 목적지에 대한 실제 경로를 저장하는 테이블로[4], 최적 경로에 대한 정보만을 가지고 있다가, 최적 경로에 문제가 생기면 대체 경로가 최적 경로로 선택되어 라우팅 테이블에 올라오게 된다.[3]

경로

최적 경로(Successor)와 차선경로(Feasible Successor)를 선택해야 한다. 최적 경로는 어느 특정한 목적지에 대한 최적의 경로로, 다음의 두 조건을 만족하는 홉 라우터를 가리킨다. 목적지에 대한 최소 거리를 제공해야 하고, 라우팅 루프의 일부가 아님이 확실해야 한다. 목적지에 대한 최적 경로는 토폴로지 테이블에 기록되고, 해당 목적지에 대한 다음 홉으로서 라우팅 테이블을 상주시키는 데 사용된다. 차선 경로는 특정 라우팅 루프의 일부가 아님이 확실한 라우터 중 선택된다. 모든 최적 경로는 차선 경로이기도 하다. 그러나 대부분의 참조에서 차선 경로는 최적 경로가 아닌 루프에서 자유로운 경로를 제공하는 라우터들로 한정되어 사용한다. 이러한 관점에서 보면 도달 가능한 목적지의 경우, 적어도 하나의 석세서가 존재하지만 차선 경로는 존재할 수도, 존재하지 않을 수도 있다.[4] 차선 경로가 되기 위해서는 해당 경로의 리포티드 디스턴스(Reported Distance, RD)가 최적 경로의 피저블 디스턴스(Feasible Distance, FD) 보다 작아야 한다. 리포티드 디스턴스는 AD(Advertised distance)라고도 하는데, 출발지의 넥스트 홉 라우터에서 목적지 네트워크까지의 메트릭 값을 의미한다. 리포티드 디스턴스를 사용하여 경로가 실현성이 있는지 여부를 확인한다. 피저블 디스턴스는 실현 가능한 거리를 나타내는 것으로, 출발지 라우터에서 목적지 네트워크까지 최적 경로의 메트릭 값을 계산한 것이다.[5]

문제

대규모 네트워크에서 사용할 경우 SIA(Stuck In Active) 현상이 발생할 수 있다. 이 현상은 쿼리 패킷을 보냈을 때 응답 패킷이 디폴트 값인 3분 안에 도달하지 못할 때 발생하는 것으로, 응답을 보내지 않은 라우터와 이웃 관계를 끊게 된다. 문제는 이에 대한 원인을 발견하는 데 오랜 시간이 걸릴 수도 있다는 것이다. 또한 이웃 관계가 해지된 후에 다시 헬로 패킷을 통해 이웃 관계가 성립되고, 라우팅 업데이트가 진행되더라도 다시 SIA 현상이 발생하여 관계가 끊어지는 과정이 반복적으로 일어나 네트워크가 불안정해지고, 장비 부하가 발생하게 된다. SIA 현상이 발생하는 원인은 대규모 네트워크 사용, 네트워크 혼잡, 인터페이스의 업, 다운이 반복되는 플래핑이 발생한 네트워크 사용, 패킷 손실이 발생하는 네트워크 사용 등이 있다.

해결 방안

  • SIA 타이머 조정: SIA 현상이 되기까지 걸리는 시간인 기본 시간 3분을 명령어를 통해서 수동으로 조정하는 방법이다. 응답받을 시간을 조금 더 벌어주는 것 뿐, 궁극적인 해결방법은 아니다.
  • 축약을 통한 SIA 방지: 강화 내부 게이트웨이 라우팅 프로토콜의 라우터는 수신한 쿼리 패킷이 자신의 토폴로지 테이블에 존재하지 않으면 쿼리 패킷을 보낸 라우터에게는 존재하지 않는다는 응답을 전송하고, 이웃에게 쿼리 패킷을 전송하지 않는데, 이 경우 SIA 현상이 발생하지 않는다. 이를 이용하여 전체 강화 내부 게이트웨이 라우팅 프로토콜 네트워크의 적당한 위치에 있는 라우터에 수동 요약을 실시하면 SIA 현상이 일어나는 것을 방지할 수 있다.[6] 수동 요약을 실시하면, 네트워크를 축약하여 보내 정보를 받은 라우터에서는 상세 네트워크가 없고, 축약된 네트워크만이 존재한다. 그러면 축약된 상세 네트워크가 다운되었을 때 상대방 라우터가 상세 네트워크가 없기 때문에 바로 응답 패킷을 보낸다.
  • 스텁(Stub) 네트워크를 이용한 SIA 방지: 라우터를 스텁 네트워크라 지정한다는 것은, 해당 라우터를 종단 라우터라고 여기는 것과 마찬가지다. 따라서 스텁 라우터는 이웃에게 강화 내부 게이트웨이 라우팅 프로토콜의 정보를 축약하여 보내고, 스텁 라우터와 이웃 관계인 라우터는 스텁 라우터에게 어떤 정보를 보내지 않는다.
  • 재분배를 통한 SIA 방지: SIA 현상이 자주 발생하는 네트워크를 라우팅 정보 프로토콜이나 최단경로 우선 프로토콜과 같은 다른 라우팅 프로토콜과 재분배함으로써, 강화 내부 게이트웨이 라우팅 프로토콜의 네트워크 크기가 감소하고, SIA 현상이 일어날 확률을 줄이는 것이다. 강화 내부 게이트웨이 라우팅 프로토콜 네트워크의 크기가 감소하면 쿼리 패킷의 전파 범위가 감소하기 때문에, SIA 현상이 발생할 확률이 감소하게 된다.[7]
  • 경로 필터링(Prefix-List): 특정 주소 대역을 이웃 라우터에 업데이트 되는 것을 차단하여 이웃 토폴로지 테이블에 등록되는 것을 방지하여 SIA 현상을 막을 수 있다. 단 특정 네트워크 정보가 라우팅 업데이트에 차단되는 문제점이 있으므로 정적 경로 설정이 추가적으로 필요하다.[6]

각주

  1. 1.0 1.1 EIGRP의 개요〉, 《티스토리》, 2014-05-28
  2. 2.0 2.1 2.2 피망IT, 〈EIGRP 개념, 특징, Metric, Packet〉, 《티스토리》
  3. 3.0 3.1 Nirsa, 〈(Network) 동적 라우팅 EIGRP(Enhanced Interior Gateway Routing Protocol) 개념 및 설정 방법〉, 《티스토리》, 2020-01-10
  4. 4.0 4.1 4.2 EIGRP〉, 《위키백과》
  5. 5.0 5.1 Diffusing update algorithm〉, 《위키백과》
  6. 6.0 6.1 0x00 JoGeun, 〈15 EIGRP SIA 및 방지법]〉, 《티스토리》, 2018-10-21
  7. 오닐, 〈EIGRP (5) _ SIA 방지 대책〉, 《네이버 블로그》, 2007-11-20

참고자료

같이 보기


  검수요청.png검수요청.png 이 강화 내부 게이트웨이 라우팅 프로토콜 문서는 인터넷에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.