BGP

youp·2024년 9월 3일
0

IGP(Interior Gateway Protocol)

  • RIP, EIGRP, ISIS, OSP
  • 하나의 조직이 IGP 전체를 관리
  • 라우팅 정책이 다른 조직에 영향을 받지 않음
  • 최적의 경로 선택
    -> 가장 빠른 경로가 최적의 경로
    -> Metric값
  • 사설 Network

EGP(Exterior Gateway Protocol)

  • BGP
  • 수많은 AS로 구성
  • 조직간 계약된 정책에 따라 최적의 경로 선택
    -> 가장 빠른 경로가 아님
    • 11가지 BGP 속성
  • 장애 발생 시 국가 혹은 전 세계적으로 영향(ISP 기준)
  • 공인 Network

  • IGP는 모두 최단 경로가 목표
    • OSPF: Cost
    • EIGRP: Bandwidth, Delay...
    • RIP: Hop Count
  • BGP는 AS간 연결에 사용
  • 인터넷은 최단 경로를 신경 쓰지 않고, 교통 경로를 조작할 수 있는 것이 더 중요
  • 인터넷에서 사용하는 라우팅 프로토콜은 BGP가 유일

iBGP

  • 외부 AS로부터 받은 경로를 다른 AS로 전달하기 위해 AS 내부에서 사용
  • IGP와 같이 동작
  • Full-Mesh 권장
  • AD 200
  • Loopback interface를 통해 Neighbor 성립 권장

eBGP

  • AS와 AS 사이에서 경로 전달 용도로 사용
  • AS-Path 확인하여 Loop 방지
  • AD 20
  • AS 경로 뒤에 AS번호를 붙여 루프 방지
    • AS번호는 unique(중복 불가)


AS2는 Transit AS

  • Transit AS: 경로를 받아서 전달해주는 AS
    = 1개 이상의 다른 AS와 연결되어 지나가는 트래픽 있음
    = ISP

AS1, AS3= Non Transit AS

  • 1개 이상의 다른 AS와 연결이 되지만 지나가는 트래픽이 있는게 아니라 Local 정보만 전달하는 AS

AS1과 AS2는 서로 다른 AS이기 때문에 EBGP가 필요
또한 AS2와 AS3 사이에도 EBGP가 필요

  • R2가 R1에게 배운 경로를 R5에게 전달해야 함
    -> R2와 R4는 IBGP를 구성해야 R4가 R5게 광고

  • IBGP가 필요한 첫 번째 이유

R2에서 R4로 전달은 iBGP로 하지만 도달가능성 보장받기 위해 IGP구성이 필요한거임

  • AS내부에 IGP: OSPF 등...
  • 경로전달 Protocol: BGP(iBGP,eBGP)
  • OSPF: AS내부에 BGP를 맺기 위한 도달가능성 보장

IGP는 인접장비와 neighbor 가능
BGP는 인접장비가 아니어도 neighbor 가능(iBGP, eBGP 둘다)

BGp Neighbor State

  • Neighbor는 수동으로 구성하고, BGP는 TCP 179번 사용
  • 유니캐스트 사용

Idle

  • BGP가 아무런 동작을 하지 않은 상태
  • 인접 장비를 기다리는 상태
    -> 인접 장비는 직접연결 상관 없음(BGP는 리모트도 연결 가능)
  • 원격 BGP 장비에 대한 TCP 연결 시작 / 대기

Connect

  • 3WAY-handshake 완료를 기다리는 상태
  • TCP 연결의 시도가 이루어진 상태

Active

  • TCP연결이 되지 않은 상태(ACK가 안오는 등 연결 완성이 안된 상태)
    -> Retransmission 시도
  • 30Sec 유지
  • BGP 재설정 등의 이유로 Idle 상태 진입 가능
  • TCP SYN 패킷을 막고있거나, 방화벽 등의 이유가 있을 수 있음

연결 성공한 상태

OpenSent

  • TCP 연결이 이루어지고 Open Message를 보내거나 기다리는 상태
  • iBGP, eBGP 결정되는 순간(AS 번호 확인)
    ->AS번호가 동일하면 iBGP, 다르면 eBGP
  • Keepalive 타이머 재설정 / 송신(낮은값으로)
  • Active상태에서 30Sec 기다리다가 연결되어도 OpenSent상태로 됨

OpenConfirm

  • 원격 BGP keepalive 메시지를 기다리는 상태
  • keepalive를 수신하면 Neighbor 관계 완성

Established

  • BGP Neighbor 완료되고 BGP 라우터가 업데이트 패킷을 전송해 라우팅 정보를 교환
  • keepalive 또는 update 메시지를 받을 때마다 hold 타이머 재설정
  • Notification 메시지를 수신하면 다시 Idle 상태로 이동

BGP

  • 개별 라우터에 도달하는 경로가 아닌 각 AS에 도달하는 경로를 선택하는 방식

  • Load-Balancing 지원 XX

  • 반드시 하나의 경로만 선택

  • Neighbor는 수동 설정을 통해 성립

  • 신뢰성 있는 경로 전달을 위해 TCP 179 사용

  • TCP 세션 성립 후 Neighbor 맺음
    -최초 Neighbor 성립 직후 BGP Table 전체 update

  • 최초 전체 Update 후 Triggered update
    iBGP 5초, eBGP 30초

    BGP config

    config#router bgp as-number

  • 사설 AS 넘버: 64512~65535

config-router#neighbor ip-address remote-as as-number

  • ip 주소와 as-number는 remote 라우터의 정보들

R2
#router bgp 2
#neighbor 1.1.1.1 remote-as 1

옵션

설명 넣을 때

config-router#neighbor ip-address description ~~~

summary 확인

#show ip bgp summary

PfxRcd에 2: 2개의 네트워크를 광고받고 있다

패스워드 설정

config-router# neighbor ip-address password string

잠시 neighbor 끊을 때

config-router#neighbor ip-address shutdown

이웃맺은 장비 상세 정보

#show ip bgp neighbors ip-address

iBGP Config

config-router#neighbor ip-address remote-as as-number

물리적 링크 이용한 iBGP

R1
router bgp 1
neighbor 10.10.10.2 remote-as 1
R2
router bgp 2
neighbor 10.10.10.1 remote-as 1

Loopback 이용한 iBGP

R1
neighbor 2.2.2.2 remote-as 1
neighbor 2.2.2.2 update-source loopback 1
R2
neighbor 1.1.1.1 remote-as 1
neighbor 1.1.1.1 update-source loopback 1

loopback으로 neighbor 권장!!
이유: 물리적 링크로 neighbor를 맺게 되면 그 포트에 이상이 생겼을 경우 neighbor가 끊김. 하지만 loopback으로 neighbor을 맺었을 경우 그 라우터가 죽기 전까지 항상 loopback 인터페이스가 활성화되어 있기 때문에 다른 경로로 찾아갈 수 있음

BGP Table

  • BGP가 학습하는 모든 경로는 BGP 테이블에 저장
    • *: 유효한 경로이며 BGP에서 사용 가능한 경로를 의미
    • >:이 경로가 최상의 경로로 선택됨
  • Next-Hop이 0.0.0.0
    -> 자신이 이 네트워크 광고했음을 의미
    = 자신의 네트워크

  • Metric, LcoPrf, Weight 등은 경로의 우선순위 비교하는 항목들의 일부
    • 총 옵션 11개정도 됨
  • Path에 AS 경로가 표시
    • 이 경로는 자신의 라우터에서 광고되었기 때문에 AS 경로가 없음
  • 'i'는 오리진 코드이며 이 경로가 네트워크 명령을 사용해 BGP에 보급되었음을 의미

  • R2는 Next-Hop으로 192.168.24.4에서 이 네트워크 학습
  • *와 >로 표시되었기 때문에 이 경로가 라우팅 테이블에 올라갈 것을 의미
  • Path에 AS가 4라고 표시되어 있음

  • eBGP -> Connected 구간
    • 문제 없음
  • iBGP -> Remote 구간
    • BGP는 AS를 Router로 인식
    • eBGP는 라우터와 라우터의 경로 전달
    • iBGP는 라우터 내부동작 -> 관심없음
      -> bgp 테이블 그대로 갖고오기 때문에 Next Hop도 그대로 갖고와서 찾아갈 수 없음

해결방법

  • Static 설정
  • OSPF로 경로 알려주기
  • 더 근본적인 문제 해결
    • BGP 테이블 공유할 때 Next Hop을 바꿔주자
      -> Next Hop을 자기 자신으로 변경해서 전달해주자
    • neighbor ip address next-hop-self
    • loopback으로 iBGP neighbor를 맺었으면 ip address 부분에 loopback ip주소 작성

2번째 문제
iBGP로 전달받은 경로는 iBGP로 또 전달해주지 않음

R1 -> R2 -> R3 순서로 iBGP를 받을 수 없음

-> R1이랑 R3를 neighbor 맺어줘야 함

BGP Attributes

  • BGP 라우터는 일반적으로 동일한 대상에 대한 여러 경로 수신

  • IGP는 메트릭이 가장 낮은 경로 선택

    • RIP: Hop Count
    • OSPF: Cost
  • BGP는 특성 목록을 기반으로 최적의 경로 선택

  • 주로 1,2,4번까지의 값을 조절해서 우선순위 변경

  • Weight

    • Cisco에만 있는 값으로, Cisco장비끼리 통신할 때만 사용 가능
    • Highest Weight 경로 선호
    • eBGP Neighbor로 광고하는 경로 기본값은 0
    • 자신이 광고하는 경로는 32768 붙여 등록(최댓값) (show bgp로 확인 가능)
    • OUTBOUND Traffic 조정 용도로 INBOUND 적용
      • neighbor 1.1.1.1 weight 100
        -> 1.1.1.1로부터 받는 경로는 weight값 100으로 받음
        -> 다른 경로보다 우선순위
  • Local Preference

    • AS 내에서 사용되며 iBGP 라우터 간에 교환
    • Highest Local Preference 경로 선호
    • iBGP로 광고하는 경우 기본값은 100
    • eBGP로 광고 시 붙지 않음
    • Weight와 다르게 iBGP Neighbor로 전파 가능
    • OUTBOUND Traffic 조정 용도로 INBOUND 적용
  • AS Path length

    • Shortest AS path 경로 선호
      • AS 1 2 3 4 5 보다 AS 1 2 3 선호
    • AS Path는 eBGP로 전파되는 경우, 자신의 AS를 붙임
    • Inbound Traffic 조정 용도로 OUTBOUND 적용
      -> 광고 할 때 AS를 1 1 1 1 1 와 같이 광고하여 AS Path를 길게 만듦
  • MED

    • Lowest MED 경로 선호
    • MED는 AS 간에 교환
    • As-path랑 같은 역할이라 잘 사용하진 않음
    • EBGP로 전파되는 경우 Default 0, iBGP로 전파되는 경우 변경 없이 전달
    • 다른 AS로 전달되는 경우, MED가 삭제되어 비교하지 않음

Weight 값 변경

특정 라우터에서 들어오는 일부 대역 weight 값 변경

config#access-list 1 permit 22.22.22.0 0.0.0.255
config#route-map SETWEIGHT permit 10
config-route-map#match ip address 1
config-route-map#set weight 400
config-route-map#exit
config#route-map SETWEIGHT permit 20
config-route-map#set weight 0
config-route-map#exit

  • 적용

neighbor 192.168.13.3 route-map SETWEIGHT in

192.168.13.3에게서 받아오는 경로(인바운드)에 Weight값 적용


특정 라우터에서 들어오는 모든 경로 Weight값 변경

config#router bgp 1
config-router#neighbor 192.168.13.3 weight 500

Local Preference 값 변경

config#route-map LOCAL permit 10
config-route-map#set local-preference 700
config#route bgp 2
config-router#neighbor 192.168.13.1 route-map LOCAL in

혹은

config#router bgp 2
config-router#bgp default local-preference 600

AS Path 값 변경

config#route-map PREPEND permit 10
config-route-map#set as-path prepend 1 1 1 1 1(자신의 AS값)
config#router bgp 1
config-router#neighbor 192.168.12.2 route-map PREPEND out

MED 값 변경

config#route-map MED permit 10
config-route-map#set mertric 700
config#router bgp 1
config-router#neighbor 192.168.12.2 route-map MED out

0개의 댓글

관련 채용 정보