본문 바로가기

네트워크/BGP

BGP FSM

BGP FSM은 BGP가 TCP 179를 사용하여 Neighbor와 TCP Session을 맺기 위한 일련의 과정이다

BGP는 Node 간의 Neighbor를 맺을 때 2개의 세션을 맺은 다음 BGP ID 가 높은 쪽을 삭제 한다

BGP FSM(Finite State Machine)

Idle : BGP사용을 선언한 상태로 BGP Process가 구동중이며 TCP 179 port가 listening 상태로 구동중인 형태

        Peer가 끊어지면 어떠한 단계를 진행 중이건 Idle 상태로 돌아오며 Idle hold time을 거처 다시

        FSM 가 진행됨

        Idel hold time의 경우 RFC문서에도 표준으로 정해 놓지 않아 장비마다 제조사 마다 다르기 때문에 필요한경우

        제조사를 통해서 확인 해야 함

 

  Idle -> Connect로 진행되는 경우 BGP가 설정된 라우터가 TCP 179 port가 learning 상태가 되고 설정된 Peer에게

        TCP session 형성을 위한 Syn을 보낸경우 Idle 상태에서 Connect 상태로 이행 됨

  Idle -> Active로 진행되는 경우 BGP가 설정된 라우터가 TCP 179 port가 Learning 상태가 되고 설정된 Peer에게 

        TCP session 형성을 위한 Syn을 수신한경우 Idle 상태에서 Active 상태로 이행 됨

         별도로 BGP Peer 설정시 Passive 모드로 설정 한 경우 또는 BGP Dynamic soulution을 사용한 경우 Idle에서

         Active로 이행 됨

 

Connect TCP Session을 맺기 위한 Syn을 BGP 설정된 Peer에게 보낸 경우

            BGP가 설정된 라우터가 Syn 을 보낸 후 Syn+Ack을 받지 못 한다면 Conection retry timer후 Syn 재송신

 

            Conection retry counter가 있어 재시도 횟수마다 감소 되며 0 이될경우 Idle 상태로 이행

            라우터가 Peer에게 보낸 Syn에 대한 응답으로 Syn+Ack을 수신한 경우 Acitve 상태로 이행

 

 Active TCP Session 을 맺기위한 모든 Process가 진행되는 상태 TCP Session이 모두 맺어저도 active 상태이며 

          Active 상태로 TCP Session과 함께 Peer가 까지 맺어 진 상태

          이 상태에서 BGP 정보 Peer에게 Update를 위한 Open message를 전송하기 위한 Open Sent 로 이행

          open sent로 이행후 Open message를 확인 할때는 다시 Active로 이행 됨

          (Active 상태일때 Timer를 가지는데 해당 타이머는 RFC에서도 정확히 정의 되어 있지 않음 

          해당 타이머는 아마 Peer 같의 연결을 위한 Peer idle time으로 추정됨 TCP는 TCP 자체의 Idle 타임이 존재)

          

Open sent Open Message를 전송한 상태 Open message는 서로 주고 받아서 확인 하는 것이 아니라 상대 Peer에게

           받은 Open message와 지금 BGP 라우터 자신에게 설정된 정보를 확인 후 다음 단계로 이행

            이때 Hold time에 대한 협상도 진행함 (BGP는 OSPF와 달리 Hold time은 Key Parameter가 아님)

           Open message에 Keep Alive time 은 포함 되지 않으며 설정된 Hold Time을 3으로 나눈 후 BGP설정 값이 나눈 값               보다 크거나 같을 경우 설정값을 사용 아닐 경우 Hold time을 3으로 나눈 값을 사용 한다

BGP Open message format

           - BGP version              - AS Number      - 보안 설정

           - source IP address       - BGP ID 

            위 의 항목들을 Active 상태에서 받은 Open message와 자신의 BGP 설정값을 비교 후 일치할경우 Keepalive를 

            전송 후 open confirm으로 이행 일치하지 않을 경우 Open message를 보낸 대상에게 notification 전송 후 

            Idle 상태로 이행

 

Open confirm Open Message를 보낸 이후 상대방에게 Keepalive를 받기위해 대기 하는 상태 Keepalive를 보낸 후

           Keepalive를 수신한다면 Established로 이행  

           Hold time 동안 Keepalive를 수신하지 못 한다면 notification 전송 후 Idle로 이행

 

Established Update message를 통해 network 정보를 교환 할 수 있는 상태 Update message 혹은 Keepalive를 받으면

           Hold time이 갱신됨 

           Hold time 동안 Update messgage 혹은 Keepalive를 받지 못 하면 Peer를 끊어버리고 Idle 상태로 이행

'네트워크 > BGP' 카테고리의 다른 글

ROUTE-MAP  (0) 2021.10.31
BGP Bestpath  (0) 2021.10.22
BGP attribute  (0) 2021.10.18
BGP message & attribute  (0) 2021.10.08
BGP overview  (0) 2021.09.28