IGP(Interior Gateway Protocol)
- RIP, EIGRP, ISIS, OSP
- 하나의 조직이 IGP 전체를 관리
- 라우팅 정책이 다른 조직에 영향을 받지 않음
- 최적의 경로 선택
-> 가장 빠른 경로가 최적의 경로
-> Metric값
- 사설 Network
EGP(Exterior Gateway Protocol)
- BGP
- 수많은 AS로 구성
- 조직간 계약된 정책에 따라 최적의 경로 선택
-> 가장 빠른 경로가 아님
- 장애 발생 시 국가 혹은 전 세계적으로 영향(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번호를 붙여 루프 방지

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에서 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 등은 경로의 우선순위 비교하는 항목들의 일부
- 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