양방향 전송 감지(BFD) 개요

이 페이지에서는 Cloud Router의 양방향 전송 감지(BFD)를 설명합니다.

BFD(RFC 5880, RFC 5881)는 대부분의 상용 라우터에서 지원하는 전달 경로 중단 감지 프로토콜입니다. Cloud Router에서 BFD를 사용하면 BGP 세션 내에서 BFD 기능을 사용 설정하여 링크 다운 이벤트와 같은 전달 경로 중단을 감지할 수 있습니다. 이 기능은 하이브리드 네트워크의 복원력을 높여줍니다.

Dedicated Interconnect 또는 Partner Interconnect를 사용하여 온프레미스 네트워크에서 Google Cloud와 피어링하는 경우 BFD를 사용 설정하면 링크 장애를 빠르게 감지하고 백업 BGP 세션이 포함된 대체 링크로의 트래픽 장애 조치가 가능합니다. 이러한 방식으로 BFD는 링크 결함에 신속하게 대응할 수 있는 고가용성 네트워크 연결 경로를 제공합니다.

BFD 이점

BGP 기반 장애 감지는 60초가 걸리는 것과 달리 기본 설정으로 구성된 BFD에서는 5초 내에 장애를 감지합니다. Cloud Router에 BFD를 구현하면 엔드 투 엔드 감지 시간이 5초 밖에 안 걸립니다.

BFD는 연결의 각 끝에서 전달 경로를 통해 주기적으로 패킷을 전송하는 고정 길이 hello 프로토콜입니다.

BFD는 UDP 기반 감지 프로토콜로, 인접한 두 라우터 간의 전달 경로에서 장애를 감지하는 오버헤드가 낮은 방법을 제공합니다. 여기에는 인터페이스, 데이터 링크, 전달 영역의 장애 감지가 포함됩니다. 라우팅 프로토콜 수준에서 BFD를 사용 설정할 수 있습니다.

BFD 제한사항

Dedicated Interconnect 또는 Partner Interconnect의 VLAN 연결에 구성하는 BGP 세션에서만 BFD를 사용하도록 설정할 수 있습니다. BFD는 HA VPN 터널 또는 Network Connectivity Center의 일부인 라우터 어플라이언스용으로 구성된 BGP 세션에서 지원되지 않습니다.

BFD 세션 설정

BFD 세션을 설정하려면 두 BGP 피어(Cloud Router와 BFD를 실행하는 온프레미스 라우터)에서 BFD를 구성합니다. 라우터에서 BGP 라우팅 프로토콜에 BFD를 사용 설정하면 BFD 세션이 생성되고, BFD 타이머가 협상되며, BFD 피어가 협상 간격으로 BFD 제어 패킷을 서로에게 보내기 시작합니다.

BFD는 로컬 라우터의 BGP에 빠른 장애 감지 알림을 보내 라우팅 테이블 재계산 프로세스를 시작하여 전체 네트워크 수렴 시간을 크게 단축합니다.

다음 다이어그램은 BGP 및 BFD를 실행하는 라우터 2개가 있는 간단한 네트워크를 보여줍니다. 숫자는 BFD 세션 설정 프로세스를 나타냅니다.

  1. BGP 인접 항목이 설정되었습니다.
  2. BGP는 로컬 BFD 프로세스에 요청을 보내 BGP 피어/인근 라우터를 사용한 BFD 인접 세션을 시작합니다.
  3. BGP 인접 라우터를 사용한 BFD 인접 세션이 설정됩니다.
BFD 세션 설정
BFD 세션 설정(확대하려면 클릭)

실패 이벤트 중 BFD

다음 그림은 네트워크에서 장애가 발생할 때의 상황을 보여줍니다.

BFD 제어 전용 모드에서 Cloud Router와 온프레미스 라우터는 주기적으로 BFD 제어 패킷을 서로 전송합니다. Cloud Router의 bfd multiplier 설정에 구성된 행의 제어 패킷 수가 다른 라우터에서 수신되지 않으면 세션은 다운으로 선언됩니다. 그러면 다음과 같은 결과가 발생합니다.

  1. Google Cloud와 온프레미스 라우터 간에 링크 장애가 발생합니다.
  2. BGP 인접 라우터를 사용한 BFD 인접 세션은 해제됩니다.
  3. BFD가 로컬 BGP 프로세스에 더 이상 BFD 인접 항목에 연결할 수 없다고 알립니다.
  4. 로컬 BGP 프로세스가 BGP 인접 관계를 해제합니다.

대체 경로를 사용할 수 있으면 라우터에서 즉시 수렴을 시작합니다.

실패 이벤트 중 BFD
실패 이벤트 중 BFD(확대하려면 클릭)

BFD 감쇠

Cloud Router는 빈번한 BFD 세션 플랩이 BGP에 미치는 부정적인 영향을 방지하기 위해 BFD 감쇠를 내부적으로 구현합니다. BFD 감쇠는 사용자가 수정할 수 없는 기본 매개변수를 사용합니다.

BFD 감쇠는 페널티 시스템을 사용합니다. 페널티 값은 0에서 시작하여 첫 번째 플랩 시 1로 증가합니다. 첫 번째 플랩 이후에 BFD 플랩이 발생할 때마다 페널티가 두 배로 증가합니다. 페널티가 임곗값인 4를 초과하면 BFD에서 BGP에 대한 알림을 표시하지 않도록 합니다. 이 기간 동안 플랩이 발생하지 않으면 10분마다 페널티가 반으로 줄어듭니다.

페널티가 임곗값 기준인 4 미만으로 떨어지면 BFD는 BGP에 다시 알림을 사용 설정합니다.

BGP에 대한 BFD 알림의 최대 억제 간격은 1시간입니다. 이렇게 하면 BFD 세션 다운 알림이 영구적으로 줄어들지 않습니다.

BFD 비동기 모드

Cloud Router에서는 시스템이 BFD 제어 패킷을 주기적으로 서로에게 전송하는 비동기 작업 모드를 지원합니다. 행에 구성된 패킷 수가 다른 시스템에서 수신되지 않으면 세션이 다운된 것으로 선언됩니다.

BFD 작업 수요 모드는 지원되지 않습니다. 패킷 모드의 경우 BFD는 제어 전용 모드를 지원하지만 에코 모드를 지원하지는 않습니다.

제어 전용 패킷 모드가 포함된 비동기 작업 모드에서는 BFD가 제어 영역에서 실행되며 약간의 오버헤드와 CPU 처리 시간이 추가될 수 있습니다.

기본적으로 BFD는 Cloud Router BGP 세션에서 중지되어 있습니다. BFD를 사용하려면 사용 설정해야 합니다.

다음 장애 시나리오의 라우터는 다음과 같이 설정됩니다.

  • Cloud Router의 BFD 수신 간격은 감지 타이머를 5,000밀리초(ms)로 설정한 경우 1,000ms에 BFD 배수 5를 곱한 값으로 설정됩니다.
  • 피어 라우터의 BFD 전송 간격은 감지 타이머를 5,000ms로 설정한 경우 1,000ms에 BFD 배수 5를 곱한 값으로 설정됩니다.

Cloud Router는 피어 라우터와 협상하고 피어 라우터에서 1,000ms마다 제어 패킷을 수신할 것으로 예상합니다. Cloud Router가 제어 패킷을 수신하지 않고 5,000ms가 지나면 감지 타이머가 만료되고 BFD 세션이 다운된 것으로 선언합니다.

에코 패킷 없는 BFD
에코 패킷 없는 BFD(확대하려면 클릭)

단계적 재시작 및 BFD

Cloud Router 소프트웨어 유지보수 이벤트 중에 트래픽에 미치는 영향을 최소화하려면 BGP 단계적 재시작을 사용 설정하는 것이 좋습니다.

BGP 단계적 재시작과 BFD가 모두 사용 설정된 경우 Cloud Router가 다시 시작될 때 AdminDown 메시지를 온프레미스 라우터에 전송하여 BFD를 사용 중지하려고 시도합니다. 이 때 BGP 세션은 온프레미스 측에 유지되고 온프레미스 라우터는 단계적 재시작 모드로 전환됩니다. 온프레미스 라우터가 단계적 재시작 모드인 경우 Cloud Router는 데이터 영역 트래픽에 영향을 주지 않고 다시 시작할 수 있습니다.

마찬가지로, 제어 영역이 다시 시작되기 전에 온프레미스 라우터가 AdminDown 메시지를 전송하면 Cloud Router가 단계적 재시작 모드로 전환됩니다. Cloud Router가 단계적 재시작 모드인 경우 온프레미스 라우터는 데이터 영역 트래픽에 영향을 주지 않고 다시 시작할 수 있습니다.

Cloud Router는 피어 라우터로 BFD를 설정할 때 제어 영역 독립 비트를 0으로 설정하여 BFD 구현이 제어 영역에 종속된다는 것을 알립니다. 인터페이스 오류가 발생하면 피어 라우터가 제어 영역 장애 또는 데이터 영역 오류로 인해 발생한 BFD 장애를 구분하지 못할 수 있습니다. 예를 들어 인터페이스 오류로 인해 온프레미스 라우터가 단계적 재시작 모드로 전환되어 영향을 받는 링크로부터 트래픽 장애 조치가 불필요하게 지연될 수 있습니다.

BFD 장애 모호성으로 인해 공급업체마다 이 특정 시나리오를 다르게 처리하고 기본 동작을 변경하기 위한 구성 설정을 제공합니다. 제어 영역 종속 BFD 피어가 있는 BFD 인터페이스 장애 이벤트가 BGP 단계적 재시작과 함께 사용되면 즉시 장애 조치를 트리거하도록 라우터 공급업체의 문서를 검토하고 온프레미스 라우터를 구성하는 것이 좋습니다.

BFD 설정 및 타이머

이 섹션에서는 Cloud Router에서 구성할 수 있는 BFD 설정을 설명합니다.

BFD 세션 초기화 모드

설명 이 BGP 피어의 BFD 세션 초기화 모드입니다.
gcloud 명령어 --bfd-session-initialization-mode
API 필드 bgpPeers[].bfd.sessionInitializationMode
기본 설정 Disabled

BFD 모드 설정에는 Active, Passive, Disabled와 같은 3가지 설정이 있습니다. 이 모드를 설정하지 않은 경우 기본값은 Disabled 설정이며 에코 모드 외의 모드(제어 패킷만)가 사용됩니다.

  • Disabled(기본값): 이 BGP 피어에 BFD가 중지됩니다.
  • Passive: Cloud Router에서 피어 라우터가 이 BGP 피어의 BFD 세션을 시작하기를 기다립니다.
  • Active: Cloud Router에서 이 BGP 피어의 BFD 세션을 시작합니다.

적어도 한쪽 연결(Cloud Router 또는 피어 라우터)에서 라우터를 Active로 설정해야 합니다. 두 Cloud Router 간에 BGP 세션을 구성할 때는 한 라우터의 BFD 세션 초기화 모드를 Active로 설정합니다.

양측을 Active로 설정하면 양측에서 초기 제어 패킷을 보내 매개변수를 협상하여 결국에는 세션이 설정됩니다.

BFD 세션 초기화 모드를 Disabled로 설정하면 나머지 BFD 설정을 선택적으로 구성할 수 있습니다. 이 설정은 BFD를 다시 사용 설정할 때 적용됩니다.

BFD 최소 전송 간격(BFD 패킷을 피어로 전송)

설명 BGP 피어로 전송되는 BFD 제어 패킷 간의 최소 간격입니다.
gcloud 명령어 --bfd-min-transmit-interval
API 필드 bgpPeers[].bfd.minTransmitInterval
기본 설정

1000ms입니다. 1,000ms~30,000ms 사이의 설정을 지정할 수 있습니다.

BFD 최소 수신 간격(피어에서 BFD 패킷을 전송)

설명 BGP 피어에서 수신한 BFD 제어 패킷 간의 최소 간격입니다.
gcloud 명령어 --bfd-min-receive-interval
API 필드 bgpPeers[].bfd.minReceiveInterval
기본 설정

1000ms입니다. 1,000ms~30,000ms 사이의 설정을 지정할 수 있습니다.

BFD 배수

설명 BFD에서 피어를 사용할 수 없다고 선언하기 전에 누락되어야 하는 연속 BFD 제어 패킷 수입니다.
gcloud 명령어 --bfd-multiplier
API 필드 bgpPeers[].bfd.multiplier
기본 설정

패킷 5개입니다. 패킷 5~16개 사이의 설정을 지정할 수 있습니다.

다음 단계