라우팅 프로토콜
라우팅 프로토콜은 정적(Static) & 동적(Dynamic)으로 구분
- 정적 라우팅 : 경로 정보를 라우터에 미리 저장하여 패킷 전송
- 동적 라우팅 : 경로 정보가 네트워크 상황에 따라 더 빠른 경로로 변경되어 패킷 전송
Static(정적) 라우팅
가장 기본적인 라우팅 방식으로 수동으로 경로를 라우터에 설정하여 패킷을 처리
경로는 라우팅 테이블에 목적지 IP주소 & 인터페이스 정보를 설정
(예시)테스트망 구성
- IP대역 할당 : 211.109.131.0/24
- Router 대수 : 3
- PC 대수 : 3
- 세그먼트(경로) : 6개
- 서브넷 나누기 : 총 6개 네트워크
IP 네트워크 할당 - 서브넷 마스크
211.109.131.0/24를 7개 대역으로 분할
IP 주소 할당
각 서브네팅된 네트워크에 맞춰 IP 설정
각 PC의 정적 라우팅 테이블 작성
각 PC의 경로는 1개, 곧 자신의 대역을 제외하고 전부 인접한 라우터(게이트웨이)로 경로 설정. 보통 디폴트 게이트웨이만 설정
각 라우터들의 정적 라우팅 테이블 구성
경로별 네트워크 대역을 확인하여 커넥티드, 정적, 디폴트 라우팅 설정
커넥티드는 포트에 직접 연결된 네트워크 대역, 설정 필요 없음
예제 - Bob to Linda
- Bob이 목적지 Linda(131.242)로 통신 시도
- 목적지 IP 주소는 자기대역이 아니므로 R2로 전달 - 디폴트 게이트웨이
- R2도 Connected 대역이 아니므로 R1으로 전달
- R1은 정적 라우팅 테이블을 참조하여 R3로 전달
- R3는 Connected 대역인 e2포트로 전달
- Linda 패킷 수신 완료
Hop & TTL
전세계 네트워크 호스트는 IP라우팅을 통해서 연결
- Hop : 소스와 목적지 간의 경로
- TTL(Time to Live) : 패킷이 폐기되기 전 hop 카운트
각 라우터는 패킷이 인입되면 TTL값을 1씩 감소, TTL = 0이 되면 폐기, 부정확한 패킷의 루프를 방지
라우팅 경로 확인 명령어 : Tracert, Traceroute
동적 라우팅
라우팅 알고리즘
목적지까지의 최적 경로를 계산하고 라우팅 테이블에 업데이트
동적으로 라우팅 테이블을 유지, 관리하는 알고리즘
Distance Vector / Link State로 구분
Distance Vector 라우팅
분산 업데이트, 각 라우터들에 의해 최소 비용 경로 계산 -> 인접노드와 교환
소규모 네트워크, 주기적이며 비동기 방식, 거리+방향에 초점
- 목적지 IP까지의 거리 = Hop 카운트 = 라우터와 라우터 사이의 거리 + 인터페이스 방향
- 인접 라우터들과 주기적으로 라우팅 테이블을 교환하여 확인 및 관리
- 인접 라우팅 테이블만 관리 -> 메모리 절약
- 비교적 구성이 간단
- 주기적 라우팅 테이블 업데이트 -> 무의미한 트래픽 발생 가능
- 라우팅 테이블 업데이트 시간(Convergence time)이 느리다
- 소규모 네트워크에 적용
- Bellman-Ford알고리즘(최단 경로 풀어주는 알고리즘)에 기반하여 설계
Link State 라우팅
중앙 집중형 업데이트, 네트워크 전체 정보를 통해서 최소 비용 경로 계산
대규모 네트워크에 적합, 이벤트 기반의 라우팅 테이블 관리, 링크 상태에 초점
- 회선의 대역폭을 고려하여 가중치를 부여
- 네트워크 토폴로지 경로를 모든 라우터들에게 전달
- 라우팅 정보가 변경되는 이벤트 건에 대해서만 전파 -> 네트워크 트래픽 감소
- 전체 네트워크 상의 라우터들의 테이블 정보가 동일하게 유지
- 각 라우터들은 최상의 경로를 계산 - Dijkstra 알고리즘
동적 라우팅 구분
동적 라우팅 프로토콜은 AS(Autonomous System)에 따라 구분됨
- IGP(Interior Gateway Protocol) : AS내에서 동작하는 라우팅 프로토콜
- EGP(Exterior Gateway Protocol) : AS와 AS간의 라우팅 프로토콜
AS
하나의 회사나 단체 안에서 동일한 정책으로 관리되는 라우터들의 집단을 의미
EGP
BGP(Border Gateway Protocol)
현재 인터넷에서 쓰이는 가장 대표적인 EGP 라우팅 프로토콜
- ISP to ISP 연결 간 사용
- Path Vector(경로 벡터 라우팅 프로토콜) 사용 - 루핑 방지
- 속도보다는 조직간 맺어진 정책에 의거하여 최적 경로 결정
BGP 구성
- eBGP : 서로 다른 AS간의 연결 및 라우팅 정보 교환 - external
- iBGP : 동일 AS내에서 BGP 라우팅 정보 교환 - internal
BGP 설정
- Router ID : 라우터 별 식별용 IP 설정
- Neighbor : 자동 탐지 불가, 수동으로 인접 라우터의 AS번호를 설정, Connected 인터페이스로 Next hop 설정
- Network : 전파할 네트워크 대역
BGP 메시지
인접 라우터 관계확인 및 라우팅 정보 교환
- OPEN : 인접 라우터와 연결된 후 보내는 메시지(BGP버전,AS번호,Hold Time, Operation parameter)
- UPDATE : 경로에 대한 속성 값(Unreachable Route, Path Attribute, Network Layer Reachability)
- NOTIFICATION : 에러가 감지되면 에러 코드를 보내고 BGP 연결 종료
- KEEPALIVE : 주기적으로 인접 라우터와의 연결을 확인
BGP FSM(Finite State Machine)
피어(이웃) 라우터와의 동작을 결정하기 위해 6가지 유한 상태 기계 사용
- Idle : 모든 자원을 초기화하고 피어 연결준비 상태
- Connect : 연결이 완료되기를 기다리는 상태
- Active : 연결 실패 이후 다시 연결을 시도하는 상태
- Open Sent : OPEN 메시지를 보내는 상태
- Open Confirm : OPEN 메시지를 받은 상태
- Established : KEEPALIVE 메시지를 받은 상태
- 상태별 처리 과정
-
Idle -> Connect
1-1. 연결 성공 : Open 메시지 보냄
1-2. 연결 실패 : Active 상태로 변경
-
Connect or Active -> Open Sent
2-1. 오류 검출 : NOTIFICATION 메시지를 보냄
2-2. 정상 : KEEPALIVE 메시지를 보냄
-
Open Sent -> Open Confirm
3-1. KEEPALIVE 메시지 받은 상태 : Established
3-2. NOTIFICATION 메시지 받은 상태 : Idle
IGP
Distance Vector 기반의 IGP용 라우팅 프로토콜
속도가 아닌 거리(라우터의 홉)기반 경로 선택
주기적으로 전체 라우팅 테이블 업데이트 - 30초
최대 홉 카운트 15
구성이 간단, 적은 메모리 사용, 소규모 네트워크에서 주로 사용
- RIPv1 : Classful 라우팅, 라우팅 업데이트시 서브넷 마스크 정보 전달x, 브로드캐스팅
- RIPv2 : Classless 라우팅, 라우팅 업데이트시 서브넷 마스크 정보 전달o, 멀티캐시팅, Triggered Update 설정 가능
RIP 메시지 포맷
- Command : 명령 1 Request, 2 Response
- Version : 1 or 2
- Family : 프로토콜 정보
- IP Address : 목적지 주소
- Distance : 홉 카운트
RIP 동작
-
요청 메시지
라우터가 초기화 or 라우팅 테이블의 특정 엔트리 타이머 종료시
특정 네트워크 주소 or 전체 라우팅 정보를 요청
-
응답 메시지
요청 메시지 수신 후 응답 or 주기적(30초)으로 자신의 라우팅 정보를 전파
일정시간(180초)동안 특정 경로에 대한 응답이 없으면 홉 카운트 16으로 설정
- RIP 메시지 수신
신규 목적지 -> 라우팅 테이블에 추가
Next Hop 정보가 수정된 경우 -> Next Hop 정보 변경
Hop Count 비교 -> 숫자가 작으면 변경, 크면 무시
OSPF(Open Shortest Path First)
Link State를 사용하는 IGP용 라우팅 프로토콜
RIPv1의 단점을 보완
- 홉 카운트의 제한이 없음
- VLSM(Valiable-Length Subnet Mask)을 사용하여 효율적 IP 관리
- 변경된 정보만 전파, 적은 량의 라우팅 트래픽 유발
- 단순 라우터의 홉이 아닌 링크의 상태로 경로 설정
- Convergence Time이 빠름
구성
계층적 구조, 여러개의 Area로 나뉘고 각 영역은 독립적으로 라우팅 수행
- ASBR(AS Boundary Router) : 다른 AS에 있는 라우터와 라우팅 정보 교환
- Backbone Router : AS내의 여러 Area를 모두 연결, OSPF 도메인 내에서 모든 링크 상태 정보를 취합하고 분배
- ABR(Area Border Router) : 각 Area와 백본 Area 0을 연결
OSPF 메시지
프로토콜 ID 89, 인접 라우터의 발견 및 관계유지, 멀티캐스트 사용
- Hello : 인접 라우터 및 로컬 링크 상태 검색, 관계를 설정하고 주요 매개변수 전달,
일정 간격으로 인접 라우터들의 상태(KEEPALIVE)를 확인
- LSDB(Link State Database)
각 OSPF Area 내 전체망 정보
링크 상태 및 경로정보
LSA(Link State Advertisement) 패킷들에 의해 구축
LSU & DD 메시지를 통해 전달
LSDB 정보 업데이트 및 관리 메시지
-
DBD(Database Description) : OSPF 정보 구축을 위해 LSDB내용을 전달
-
LSR(Link State Request) : 상대 라우터에게 링크 상태 정보를 요청
-
LSU(Link State Update) : 네트워크 변화 발생시 인접 라우터에게 상태 전달
-
LSAck(Link State Acknowledgment) : 수신 확인, 신뢰성 확보
테이블 종류
-
OSPF Neighbor 테이블
Neighbor을 성립한 인접 라우터 정보 관ㄹ
Neighbor 라우터 ID 확인
-
OSPF DB 테이블
Neighbor에게 수신한 라우팅 업데이트 정보를 관리
LSA 메시지를 이용하여 LSDB 동기화
LSDB 정보를 기반으로 최적 경로를 선출
-
라우팅 테이블
최적 경로 등록
Inter Area 라우팅 정보, 다른 Area 업데이트 정보, 외부 AS 업데이트 정보
Neighbor 테이블의 라우터 상태변화
- Down : Power off
- init : Hello 메시지를 받으면 init 상태, 인식
- 2 way : Hello 메시지로 Neighbor 확인, 확인된 내용을 Neighbor List에 업데이트
- Exstart(선행) : DBD 메시지를 통해 마스터/슬레이브 선출
- Exchange(교환) : DBD 메시지를 통해 링크 상태 정보 교환
- Loading(전송) : LSR을 통해 완전한 정보 요청, LSU를 통해 상대방에게 업데이트를 보냄
- Full : 인접한 Neighbor 라우터들의 정보를 유지
링크 종류
- Point to Point : 라우터와 라우터가 1:1로 직접 연결
- Transient : 여러개의 라우터가 동일한 Area에서 버스를 통해서 연결
- Stub : 하나의 Area에 1개 라우터만 연결
- Virtual : 물리적으로 백본영역과 연결이 어려운 상태에서 가상으로 연결
DR & BDR
-
DR(Designated Router)과 BDR(Back-up Designated Router)은 중복되는 LSA교환을 방지하고자 선출
-
LSA(Link State Advertisement)
라우팅 기초 정보가 담겨진 패킷으로 링크상태, 인접 관계 형성, 요약 정보 등 네트워크/링크의 경로 비용을 포함
-
그 외 라우터들은 LSA 정보를 교환하지 않고 Hello만 교환하고 Neighbor 관계 형성
-
DR/BDR은 다른 라우터들과 LSA 정보를 교환하여 인접 Neighbor 관계를 형성
-
OSPF Priority가 가장 높은 라우터를 DR로 선출
-
Priority가 동일하면 라우터 ID로 선출
동작과정
- R1이 새로 OSPF 라우팅으로 구성
- Hello 메시지로 인접 라우터 확인
- DR & BDR 주소 확인
- LSA 정보를 DR & BDR에게 전달
- BDR은 타이머 세팅, DR 수행 감시
- DR은 LSA 정보를 다른 모든 라우터들에게 전달, 모든 라우터들에게 Ack을 수신
- DR이 BDR 타이머동안 제대로 수행 못하면 BDR이 DR로 선출되고, 추가로 BDR 선출
- 링크 다운시 R2는 DR에게 알리고 DR은 다시 모든 라우터들에게 전달