TECHNOLOGY 24호

Detecting Network Failures
네트워크 오류를 찾아내라

BFD 프로토콜로 오류 감지· 복구 속도 향상
양방향 전송 감지(Bidirectional Forwarding Detection, BFD)는 두 개의 전송 엔진 간 양방향 경로에서 오류를 감지하는데 사용되는 프로토콜이다. 현재 감지 기능은 (SONET 알람처럼) 데이터 링크 하드웨어가 활동하기 시작하면, 특정 환경에서 신속하게 나타난다. 그러나 이더넷 같은 경우 이런 신호를 제공하지 않으며, 경로 상에서 인터페이스나 전송 엔진 컴포넌트의 실행률이 떨어져 특정 종류의 오류를 감지하지 못하는 경우도 있다.

시스코 IOS 소프트웨어 릴리즈 12.0S의 출시와 함께 BFD는 기가비트 이더넷 LAN 인터페이스 및 그 이상에서만 지원된다. 최근 이러한 기능은 시스코 12000(12.0S), 7600(12.2S), 7300(12.4T), 7200(12.2S, 12.4T, 12.0S) 시리즈 플랫폼에서 제공되고 있다.

라우팅 프로토콜은 슬로우 헬로 메커니즘(slow hello mechanism)을 사용해 하드웨어 신호가 지원되지 않을 때 오류를 감지해낸다. 기존 프로토콜에서 이뤄지는 감지 기능이 빠른 편이 아니기 때문에, 어떤 애플리케이션의 경우 아주 오래 걸리기도 한다. 이는 기가비트 비율에서 많은 데이터를 잃는다는 의미가 된다. BFD는 재통합 과정을 실시할 수 있도록 링크가 다운되자마자 이웃 오류 감지 기능을 제공하고, 이 정보를 라우팅 프로토콜에 공급함으로써 결점을 보완하려고 한다. BFD의 또 다른 장점은 프로토콜 계층에서 활발한 감지 기능에 사용될 수 있는 단일 메커니즘을 제공한다는 점이다.

양방향에서 오류 검색
BFD는 데이터 플레인 넥스트 홉(data plane next hop)으로 커뮤니케이션 오류를 감지한다. BFD를 지원하는 프로토콜로는 OSPF(Open Shortest Path First), IS-IS(Intermediate System-to-Intermediate System), EIGRP(Enhanced Interior Gateway Routing Protocol), BGP(Border Gateway Protocol)가 있다. BFD에 어떤 라우팅 프로토콜이 지원되는가를 알고 싶다면, 본 기사 마지막 단락인 '시스코 IOS 소프트웨어 지원' 부분을 참조하라.

BFD가 시작되면, 클라이언트 프로토콜은 BFD 측에 요청해 클라이언트 이웃에게 인접성(adjacencies)을 만들어준다. BFD 프로세스는 이웃을 위해 인접 구조를 만들고, 세션 구성을 시도한다. 초기 헬로 인터벌(hello interval)은 1초다. 세션이 만들어져 상태 변화가 'Up'으로 되면, 설정된 전송 수신 인터벌 값이 사용된다. BFD 컨트롤 패킷을 시기적절하게 전송하기 위해서, BFD 컨트롤 패킷 전송과 링크다운 감지 기능이 모조 선제(pseudo-preemptive) BFD 프로세스에 의해 실행된다. 대부분의 경우, BFD 컨트롤 패킷은 프로세스 단계에서 패킷을 큐잉 업(queuing up) 할 때 나타나는 지연 현상을 방지하기 위해, 시스코 익스프레스 포워딩 스위치 경로로부터 송/수신된다. BFD 패킷은 직접 연결된 두 곳의 이웃 간에 일대일 전송(unicast)을 한다.

BFD는 에코가 수반된 두 가지 모드인 비동기 모드(Asynchronous mode)와 수요 모드(Demand mode)로 작동된다. 시스코 IOS 소프트웨어는 현재 우선 운영 모드(primary operating mode)인 비동기 모드만 지원한다. 비동기 모드에서 시스템은 BFD 컨트롤 패킷을 서로에게 보낸다. 이러한 컨트롤 패킷 중 미리 할당된 수가 다른 시스템 때문에 연속적으로 수신되지 못하면, 그 세션은 실패다. BFD 프로토콜은 로컬디스크리미네이터(localDiscriminator), 리모트디스크리미네이터(remoteDiscriminator), min_TxInterval, min_RxInterval, 디텍트멀티플라이어(DetectMultiplier)를 위해 지정된 값을 포함하고 있다. 이에 따른 정의는 다음과 같다.

로컬디스크리미네이터 - BFD 세션용 로컬 디스크리미네이터. 확인 시 유일하게 사용된다. 이 시스템과 넌제로(nonzero) 만 존재한다.

리모트디스크리미네이터 - BFD 세션용 리모트 디스크리미네이터. 리모트 시스템에 의해 선택된 디스크리미네이터로 로컬 시스템에 투과적이다.

Min_TxInterval - 시스템이 사용하기 위해 전송한 BFD 컨트롤 패킷 사이에 머무는 마이크로초간 최저 인터벌. 실제 인터벌은 두 시스템 사이에서 결정된다.

Min_RxInterval - 시스템에 필요한 수신 BFD 컨트롤 패킷 사이에 머무는 마이크로초간 최저 인터벌.

디텍트멀티플라이어 - 희망 감지 시간 멀티플라이어. 다양하게 증가된 정해진 컨트롤 패킷 전송 인터벌이 (리모트 시스템으로 간주되면서) 이 세션을 위한 감지 시간이 된다.

감지 시간(세션이 실패한 것으로 결정 난 후, BFD 패킷을 수신하지 않는 시간)은 분명 프로토콜에 전해지지 않는다. 대신 결정된 전송 인터벌과 감지 멀티플라이어에 기반한 수신 시스템에 의해 각 방향에서 독립적으로 계산된다. 비동기 모드에서 각 방향의 감지 시간은 서로 다를 수 있다. 비 동기 모드의 경우, 동일한 전송 인터벌로 증가된 로컬 시스템 상에서 계산된 감지 시간은 리모트 시스템에서 수신된 감지 멀트(Mult) 값과 동일하다. (RequiredMinRxInterval이 커질수록, Desired Min TX Interval은 맨 마지막에 수신된다) 즉, 보다 느린 비율을 보고하는 시스템이 전송율을 결정한다는 의미이다. 감지 멀트 값은 (대략적인 지터에 근거해) 세션 다운을 알리기 위해 연속적으로 잃게 되는 패킷 수를 말한다.

맨위로

사례
<그림 1>은 OSPF와 BFD를 실행시키는 두 개의 라우터가 있는 단순한 시스템을 보여준다.

<그림 2>는 네트워크 상에서 오류가 발생했을 때 어떻게 되는지 나타난다. 대안 경로가 사용 가능하다면, 라우터는 즉시 이를 통합하기 시작한다.

이제 라우팅 프로토콜이 BFD을 어떻게 사용하는지, 서로 다른 프로토콜용 BFD를 어떻게 설정하는지 알아보자.

그림1. OSPF가 이웃을 발견하고(1단계) OSPF 이웃 라우터와 BFD 이웃 세션을 초기화하기 위해 로컬 BFD 프로세스 요청을 보낸다(2단계). OSPF 이웃 라우터를 가진 BFD 이웃 세션이 형성된다(3단계).

그림2. 네트워크에서 오류가 발생하면(1단계) OSPF 이웃 라우터를 가진 BFD 이웃 세션이 해체된다 (2단계). BFD는 BFD 이웃에 더 이상 접근할 수 없다는 사실을 로컬 OSPF 프로세스 측에 알린다(3단계). 로컬 OSPF 프로세스는 OSPF 이웃 관계를 파괴한다(4단계).

맨위로

OSPF용 BFD
OSPF는 BFD 프로세스로 BFD를 통해 찾는데 관심 있는 모든 이웃들을 등록한다. 이웃이 등록된 후, (세션이 존재하지 않을 경우) BFD는 이웃과 세션을 초기화 한다. BFD가 이웃의 다운을 감지하면, 그 사실을 알린다. OSPF용 BFD가 이 인터페이스 상에서 가능해지면, 이웃에게 다운을 강요한다. 그러면 이웃의 다운 이벤트가 생기게 되고, 필요한 LSA(Link-state Advertisement)의 새로운 버전이 만들어진다. 이어 최단 경로(Shortest Path First) 계산이 시작되면서, 실행 가능한 경로로 트래픽을 재루팅하게 된다.

라우터 모드 상에서 OSF용 BFD를 설정할 수 있으며, 프로토콜이 실행되고 BFD가 작동되는 모든 인터페이스 상에서 이 설정을 할 수 있다. CLI(Command-line Interface)에서 다음 문장을 입력해보자:

router ospf 1
[no] bfd all-interfaces

특정 인터페이스 상에서 BFD를 작동시킬 수도 있다. 이 경우 OSPF는 그러한 인터페이스용 BFD를 가진 이웃 모두를 등록할 것이다. 인터페이스 레벨 CLI가 모든 라우터 모드 CLI보다 순위가 높다. 다음의 인터페이스 모드 명령을 사용해 BFD를 작동시키거나 정지시킬 수 있다.

[no] ip ospf bfd [disable]

다음 보기는 BFD 상태 지시를 명령할 때의 예다:

RouterA#sh ip ospf int e2/0
Ethernet2/o is up, line protocol is up
Internet Address 172.16.10.1/16, Area 0
Process ID 1, Router ID 172.16.10.1, Network Type
BROADCAST, Cost: 10
Transmit Delay is 1 sec, State BDR, Priority 1,
BFD enabled
Designated Router (ID) 172.16.10.2, Interface
address 172.16.10.2
Backup Designated router (ID) 172.16.10.1,
Interface address 172.17.10.1
Timer intervals configured, Hello 10, Dead 40,
Wait 40, Retransmit 5

OSPF를 사용한 샘플 설정
다음 사례에서 단순한 OSPF 네트워크는 라우터 A와 라우터 B로 구성된다. 라우터 A에서 이더넷 인터페이스 2/0은 라우터 B에서 이더넷 인터페이스 1/0과 동일한 네트워크에 연결된다. 글로벌한 설정 모드로 시작하는 이 사례는 BFD 설정을 보여준다. 라우터 A와 B의 경우, BFD는 전 세계에서 OSPF 프로세스와 결합된 모든 인터페이스를 위해 설정된다.

라우터 A용 설정

interface Ethernet2/0
ip address 172.16.10.1 255.255.0.0
bfd interval 50 min_rx 50 multiplier 3
!
router ospf 1
log-adjacency-changes detail
network 172.16.0.0.0.0.255.255 area 0
bfd all-interfaces

라우터 B용 설정

interface Ethernet1/0
ip address 172.16.10.2 255.255.0.0
bfd interval 50 min_rx 50 multiplier 3
!
router ospf 1
log-adjacency-changes detail
network 172.16.0.0.0.0.255.255 area 0

show bfd neighbors details 명령에서 나온 아웃풋은 BFD 세션이 만들어지고 OSPF가 BFD 지원에 의해 등록되는 것을 확인하는 것이다. 적절한 명령의 결과가 다음 결과에서 볼드(bold)체로 나타난다.

RouterA#sh bfd neighbors details

OurAddr NeighAddr LD/RD RH Holdown(mult)
State Int
172.16.10.1 172.16.10.2 2/2 1 94 (3)
Up Et2/0
Local Diag: 0, Demand mode: 0, Poll bit:0
MinTxInt: 50000, MinRxInt: 50000, Multiplier: 3
Recived MinRxInt: 50000, Received Multiplier: 3
Holdown (hits): 150(0), Hello (hits): 50(8605)
Rx Count: 8607, Rx Interval (ms) min/max/avg:
32/72/49 last: 56 ms ago
Tx Count: 8609, Tx Interval (ms) min/max/avg:
32/72/49 last: 16 ms ago
Registered protocols: OSPF
Uptime: 00:07:08
Last packet: Version: 0
I Hear you bit: - Demand bit:0
Poll bit: 0 - Final bit: 0
Multiplier: 3 - Length: 24
My Discr.: 2 - Your Discr.: 2
Min tx interval: 50000 - Min rx
interval: 50000
Min Echo interval: 0
RouterA#

시스코 IOS 소프트웨어 지원
BFD 기능은 시스코 IOS 소프트웨어 릴리즈 12.2(18)SXE에 탑재돼 있다. 이 버전은 OSPF, EIGRP, IS-IS 프로토콜을 지원한다. 시스코 IOS 소프트웨어 릴리즈 12.0(31)S는 BGP, IS-IS, OSPF 프로토콜을 지원한다. 12.4T용은 2005년 10월부터 지원 가능하며, BGP, IS-IS, OSPF, EIGRP 프로토콜도 지원할 예정이다.

EIGRP, IS-IS, BGP용 BFP 샘플 설정을 자세히 알고 싶다면 cisco.com/packet/173_5c1을 방문하기 바란다.


ASAD FARUQUI,
아사드 파루키(ASAD FARUQUI)는 시스코 인터넷 테크놀러지 부문 코어 IP 라우팅 그룹의 소프트웨어 엔지니어다. 그의 이메일 주소는 afaruqui@cisco.com이다.


추가자료
 
■ IETF BFD 워킹 그룹
    www.ietf.org/html.charters/bfd-charter.html
■ 시스코 IP 라우팅
    cisco.com/packet/173_5c1


맨위로



Packet 지난 호 보기