Link State의 특징
Link State Routing Protocol은 Distance Vector와 다르게 각 Router들이 전체 망 Topology(구성도)를 이해하고 있는 프로토콜을 말한다.
대표적으로는 OSPF와 통합 IS-IS가 있으며, SPF(Shortest Path First = 다익스트라) 알고리즘을 사용한다.
각 Router들은 자신과 연결된 Interface(=Link)의 상태를 LSA(Link State Advertisement)라는 정보로 생성하여 다른 Router들과 교환하게 되며, 다른 Router들을 통해 받은 LSA를 LSDB(Link State DataBase)에 저장하게 된다.
그 후 SPF 알고리즘을 사용하여 Best Path를 결정하고 이를 Routing table에 등록하게 된다.
* SPF 알고리즘은 다음과 같은 순서로 이루어 진다.
1. 만들어진 LSDB를 통해 트리 구조를 형성
2. 층마다 cost를 비교하여 최적경로를 생성
3. 루프 방지를 위해 나머지 경로는 끊어버린다.
Link State는 Distance Vector와 비교했을 때 다음과 같은 특징을 가지고 있다.
1. Periodic Update(주기적 업데이트)를 수행하지 않는다.
-> Periodic Update를 Distance Vector(RIP/IGRP)는 수행 Advaced Distance Vector(EIGRP)는 수행하지 않았다.
-> Link State 또한 수행하지 않으며, EIGRP와 동일하게 flushed/partial update를 수행한다.
-> Hello 메시지로 keep alive를 확인하는 것도 동일.
2. Hop-count 제한이 없다.
3. Loop 발생의 위험이 없다
-> 모든 Router가 전체 망 Topology를 알고있으므로, Loop가 발생하는 경로는 사용하지 않는다.
4. Auto-summary를 수행하지 않는다.
->자동축약 자체가 존재하지 않는다.
OSPF
- Open Shortest Path First의 약어로, 가장 대표적이며 널리 쓰이는 Routing Protocol.
- Link State 계열에 속하는 Routing Protocol.
- AD 값은 110, metric은 cost를 사용.
- EIGRP와 비슷하게 TCP/UDP 사용을 하지 않고 IP 바로 뒤에 정보가 온다. 이때 Protocol Number 필드의 번호는 89번
- OSPF 설정 시 입력하는 Process ID는 EIGRP의 AS와 다르게 서로 다른 번호여도 상관이 없다.
* Process ID는 하나의 Router에 다중 OSPF를 구성할 때 식해주기 위해 사용하므로, 일반적인 경우에는 신경 쓸 필요가 없다.
OSPF-Router ID
- OSPF는 설정면에서 EIGRP와 유사하나 가장 큰 차이점은 Router ID를 따로 준다는 것이다.
- 이 Router ID는 IPv4형태로 입력하지만 실제 IP주소와는 전혀 상관이 없다.
- Router ID는 각 Router를 식별하는 용도로 사용한다. 고로 각각 Router 모두 다 다르게 지정해줄 필요가 있다.
- 만일 복수의 Router가 동일한 Router ID를 사용할 경우 루프로 관주하여 Neighbor 관계를 맺지 않는다.
- Router ID를 설정하는 방법은 다음과 같다.
1. 관리자가 Router-ID를 직접 지정
2. 관리자가 Router-ID를 지정하지 않았을 경우 가상 Interface(loopback)의 IP 주소 중 숫자가 가장 큰 IP 주소를 사용하게 된다.
3. 관리자가 Router-ID를 지정하지 않았고 가상 인터페이스도 존재하지 않을 경우, 물리적 인터페이스에서 가장 큰 IP 주소를 사용하게 된다.
OSPF-DR and BDR
- DR과 BDR은 Desiganated Router와 Back-up Designated Router라는 뜻을 가지고 있다.
- BDR은 이름에서도 알 수 있듯이 DR이 장애가 났을 시 DR로 역할을 변경하는 Router를 뜻한다.
- DR과 BDR은 중복되는 LSA 교환을 방지하고자 선출하며, DR과 BDR이 아닌 Router들은 DROTHER라고 한다.
- OSPF는 switch로 연결된 BMA 네트워크나 NBMA 네트워크 등 각각의 네트워크 구간마다 BR/DBR을 선출한다.
- DROTHER끼리는 LSA 정보를 교환히자않고 Hello 패킷만 교환하는 일반 Neighbor 관계만을 형성한다.
- DROTHER와 DR/BDR은 서로 간의 LSA 정보를 주고 받는 Adjacent Neigbor 관계를 형성한다.
- 즉, DROTHER는 서로 끼리 통신을 하지 않으며 자신의 정보만을 DR/BDR에게 전송하고 DR/BDR은 이 정보를 모아서 다시 다른 Router들에게 전송하는 형식으로 Link State 정보를 교환한다.
- BR/DBR의 선출 조건
1. OSPF priority가 가장 높은 Router를 DR로 선출
-> OSPF priority의 기본값은 1이다. 즉, 특정 Router를 DR로 선출하기를 원할 시 해당 Router의 Priority만 높여주면된다.(255번까지 가능)
2. priority가 동일하다면 Router-ID가 가장 큰 Router가 DR/BDR로 선출된다.
* show ip ospf int f0/0 명령어를 사용하면 해당 interface의 DR/BDR/DROTHER 상태, network type, OSPF Priority 등등을 알 수 있다.
* Multi Access(ex 스위치로 연결된 네트워크)환경에서는 바로 DR/BDR을 선출하는 것이 아니라 wait-time이라는 대기시간을 가지고 난 후 DR/BDR을 선출한다. 여기서 wait time은 dead time과 항상 일치한다.
-> 즉 한번 DR/BDR을 선출한 후에는 조건이 더 좋은 Router가 추가되어도 망의 안전성을 위해 DR/BDR 선출작업을 진행하지 않는다.
만일, 선출작업을 원할 시 Router들을 재부팅하거나 clear ip ospf process 명령어를 사용해 OSPF process를 재시작해야한다.
OSPF의 Network-Type
OSPF는 사용되는 2계층 Network Protocol의 종류에 따라 설정방식과 동작방식의 차이가 있다.
1. Point-to-Point
-> Hello 주기 10초 / Dead 40초
-> DR/BDR 선출 x
-> Neighbor 관계 자동 생성
* Serial 인터페이스 또한 무조건 point to point로 연결되므로 DR/BDR을 선출하지 않는다.
2. BMA(Broadcast Multi Access)
-> LAN 스위치를 사용하는 구간(Ethernet, Token-ring, FDDI)
-> Hello 10초 / Dead 40초
-> DR/BDR 선출
-> Neighbor 관계 자동 생성
3. NBMA(Non-Broadcast Multi Access)
-> WAN 스위치를 사용하는 구간(Frame-Relay, X.25, ATM)
-> Hello 30초 / Dead 120초
-> DR/BDR 선출
-> Neighbor 관계 수동 생성
4. Point to Multipoint
-> 관리자의 명령어로 지정 가능
-> Hello 30초 / Dead 120초
-> DR/BDR 선출
-> Neighbor 관계 자동 생성
OSPF neigbor 패킷 종류
OSPF에는 각각 단계별로 여러가지 패킷 종류가 있다.
1. Hello
-> 서로 연결된 Router들끼리 hello 패킷을 교환하여 neighbor 관계를 형성하거나 유지하는 역할을 수행한다.
-> 기본적으로 multi-cast 방식을 사용한다.
224.0.0.5(모든 OSPF router), 224.0.0.6(DR/BDR Router만 수신)
-> Hello 패킷을 교환 후 다음이 일치하는 경우에만 Neighbor 관계를 형성할 수 있다.
Area ID / Authentication / Hello와 Dead 주기 / subnet mask / Stub Area flag / MTU size / BR,BDR 선출 여부 /.......
* OSPF에는 두가지 Neighbor가 존재한다.
1. 일반 Neighbor : hello 패킷만을 교환.
2. Adjacent Neighbor : hello와 LSA 정보 모두를 교환
* Adjacent Neighbor 형성조건(밑의 경우 중 하나만 만족해도 형성)
1. point-to-point 네트워크로 연결된 경우
2. DR-DROTHER / BDR-DROTHER로 연결된 경우
3. virtual-link로 연결된 경우
2. DBD(Database Description)
-> Link-State 계열의 Routing Protocol이 구성된 모든 Router들이 갖고있는 LSDB 요약본
-> show ip ospf database router 명령어로 확인 가능하다.
-> OSPF의 경우 Adjacent Neighbor 관계를 형성한 후 LSDB의 모든 정보를 받는 것이 아닌 요약된 목차만을 먼저 교환한다.
3. LSR(Link State Request)
-> 상대방이 전송한 DBD 패킷과 자신의 LSDB를 비교하여 자신에게 없는 정보를 요청하는 메시지
4. LSU(Link State Update)
-> 상대방이 요청한 LSR을 수신한 경우 요청받은 정보의 상세 내용을 update하기위한 메시지이다.
-> 상대방이 요청한 경우 외에 망의 변화가 발생한 경우에도 해당 내용을 LSU 패킷을 사용하여 즉시 상대방 장비에게 update하는
경우에도 사용한다.
5. LSAck
->EIGRP와 동일하게 OSPF 경우도 IP 기반으로 동작하기때문에 신뢰성이 없다.
이를 보완하기위해 상대방의 장치가 DBD/LSU/LSR 패킷을 전송한 경우, 해당 패킷의 수신여부를 알려주기위한 목적으로 LSAck 메시지를 사용한다.
OSPF 상태
OSPF는 각각 패킷의 종류에 따라 상태가 나누어진다.
우선 서로 OSPF 설정을 맺으면 hello 패킷을 교환할 것이다. 이때 나는 hello 패킷을 보냈지만 상대방의 hello 패킷을 못받은 상태를 Down이라 한다.
1. Down
- 나는 hello를 보냈지만 상대방은 hello 패킷을 받지 못한 상태
- 이미 Full(완료)상태에서 dead 주기동안 hello 패킷을 받지 못한 상태
반대로 나는 상대방의 hello 패킷을 수신했지만 상대방이 내 hello 패킷을 수신하지 못한 상태를 Init 상태라 한다.
2. Init
- 나는 상대방에게 Hello를 받았지만 상대방이 내 Hello를 받지 못한경우
- 즉, 상대방이 보낸 Hello패킷에 내 Router-ID가 없는 경우 Init 상태가 된다.
서로 간 Hello 패킷을 완전히 교환한 상태를 Two-way 상태라한다.
3. Two-way
- 서로 완벽히 Hello 패킷을 교환한 경우
- 즉, 서로의 Hello 패킷에 수신측의 Router-ID가 존재하는 경우
- 이 단계에서 DR,BDR 선출이 진행된다.
- DROTHER끼리는 서로 Hello 패킷만을 교환하므로 해당 상태를 계속 유지하고 있다.
Hello 패킷 교환 후 서로 간의 Adjacent Neighbor를 맺어서 DBD를 교환하는 준비를 하는 단계를 Exstart 단계라한다.
4. Exstart
- Hello를 교환 후 DBD를 준비하는 단계
- Adjacent Neighbor가 되기위한 첫번째 단계
- 마스터/슬레이브 라우터를 선출한다.(DBD를 누가 먼저 줄것인지를 정하기위해)
- DBD 패킷 순서 번호를 결정한다
실질적으로 DBD를 교환하는 단계를 Exchange 단계라 한다.
5. Exchange
- 실질적인 DBD를 교환하고 자신에게 없는 정보를 확인하는 단계
- 만약 자신에게 부족한 정보가 없을 시 바로 Full 단계로 넘어간다.
DBD 교환 후 없는 것이 있으면 LSR을 통해 요청 후 LSU 패킷을 받을 것이다. 이 상태를 Loading 상태라 한다.
6. Loading
- 자신에게 없는 것을 LSR패킷으로 요청
- 상대방의 LSR을 받아 필요한 정보를 LSU 패킷으로 다시 전송
필요한 정보 교환이 끝나고 LSACK를 통해 수신여부까지 완벽한 라우팅 교환이 끝난 상태를 Full이라고 한다.
7. Full
- 완벽하게 정보교환이 끝난 상태
LSA와 LSDB
-앞서 언급한 것처럼 Link State 계열이 설정된 Routing Protocol이 설정된 모든 Router 장비는 자신의 Link에 대한 상태를 LSA라는 정보로 생성하여
동일 Area의 모든 Router들과 교환을 한다.
-해당 LSA를 수신한 Router들은 자신의 LSDB에 해당 정보들을 추가한 후 SPF 알고리즘을 통해 Best Path를 선출하고 Routing table에 등록한다.
-요약된 LSDB를 보고싶으면 show ip ospf database 명령어를 사용하면 된다.
* Area의 존재 이유: OSPF에는 Area라는 개념이 따로 존재한다. 대형망일 때 LSDB의 크기가 방대해진다는 점과 망에 변화가 발생했을시
SPF 알고리즘을 반복 수행해야한다는 점을 보완하기 위해 사용되는 개념이다.
-LSA에는 데이터 종류에 따른 type이 있다. 모두 1번부터 11번까지 존재하며 IPv4 OSPF에서 사용되는 번호는 1번부터 7번까지이다.
1) LSA Type 1(Router)
-> 모든 Router가 생성하는 상세 정보로 자신과 연결된 Link의 상세한 정보를 담고 있다.
-> Type 1의 전파범위는 동일 Area이다.( 다른 Area로 전송X)
-> 즉, LSA Type1은 동일 Area의 상세 정보라고 할 수 있다.
-> 동일 Area에 포함된 모든 Router들은 같은 LSA Type 1 정보를 가지고 있다.
-> Area의 경계 라우터(ABR)은 양쪽 Area의 정보 모두를 가지고 있다.
-> 명령어: show ip ospf database
2) LSA Type 2(Network)
-> DR Router가 생성하는 정보로 DR과 연결된 Router들의 List를 의미한다.
-> 전파범위는 동일 Area이다.
-> 동일 Area에 포함된 모든 Router들은 같은 LSA Type 2 정보를 가지고 있다.
-> show ip ospf network
3) LSA Type 3(Summary)
-> ABR이 생성하는 정보로 다른 Area의 간략한 정보를 의미한다.
-> ABR이 특정 Area의 상세 정보인 LSA Type 1과 2를 다른 Area로 광고하는 대신 간략한 정보만 Type 3에 담아서 다른 Area로 전달한다.
-> show ip ospf summary
4) LSA Type 4(ASBR-Summary)
-> ABR이 생성하는 정보로 다른 Area에 위치한 ASBR의 정보를 의미한다.
* ASBR: 서로 다른 Routing Protocol의 연결지점이 되는 Router를 뜻한다.
->show ip ospf database asbr-summary
5) LSA Type 5(External)
-> ASBR이 생성하는 정보로 외부에서 재분배되어진 정보를 의미한다.
-> show ip ospf database external
6) LSA Type 6(MOPSF)
-> cisco에서 지원하지않는 LSA Type
-> OSPF를 사용하여 Multicast Routing Protocol을 구성하는 경우에 사용된다.
* Multicast Routing Protocol : class D를 교환하는 Routing Protocol
* Unicast Routin Protocol : 우리가 일반적으로 알고있는 Routing Protocol, class A, B, C, D를 교환
-> Cisco에서 Multicast Routing을 구성할 때는 MOPSF가 아닌 PIM을 사용한다.
7) LSA Type 7(NSSA-External)
-> 특정 Area를 NSSA로 구성했을 때 확인가능한 Type
-> show ip ospf database nssa-external
LSA Type에 따른 OSPF code
- 특정 프로토콜로 광고한 정보가 Routing table에 등록할 때 각각 code가 존재한다.
- RIP은 R, EIGRP는 D, OSPF는 O
- 여기서 OSPF는 LSA Type에 따라 각각 code가 조금씩 변형된다.
1) O -> 동일 Area 정보(LSA Type 1)
2) O IA -> 다른 Area의 정보(LSA Type 3)
3) O E1/E2 -> 재분배되어진 정보(LSA Type 5)
4) O N1/N2 -> NSSA 네트워크 정보(LSA Type 7)
OSPF 메트릭
- OSPF는 metric으로 cost를 쓴다.
- 이 cost는 각 vendor마다 구하는 방법이 다르다.
- cisco의 경우 10^8/경로상 각 출구인터페이스의 Bandwidth의 합 이라는 공식으로 cost를 구함
위와같은 Topology에서 R1에서 Lo 0으로 가는 경로의 metric을 구하는 방법은 다음과 같음.
공식에 대입해보면
10^8 / R1의 출구인터페이스 BandWidth + 10^8 / R2의 출구인터페이스 BandWidth + 10^8 / R3의 출구인터페이스 BandWidth
R1의 출구 인터페이스의 BandWidth -> FastEthernet -> 100000 Kbit -> 100000000 bit
R2의 출구 인터페이스의 BandWidth -> FastEthernet -> 100000 Kbit -> 100000000 bit
R3의 출구 인터페이스의 BandWidth -> Loopback -> 8000000 Kbit -> 8000000000bit
10^8/100000000 + 10^8/100000000 + 10^8/8000000000
=1 + 1 + 0.0125
=1 + 1 + 1(앞에있는 정수가 0 -> 무조건 1로, 앞에있는 정수가 1 이상일 경우 -> 소수점을 무조건 버림)
=3
라우팅 테이블을 확인해보면
3인것을 확인 가능하다.
그러나 해당 방법은 치명적인 단점이 있다.
바로 패스트이더넷과 기가비트이더넷의 metric의 차이가 없다는 점이다.
fastEthernet의 경우 해당 방식으로 구할 시
10^8 / 100000000 -> 1이 나온다.
10^8 / 1000000000 -> 0.1 (앞에 정수가 0이면 무조건 1로 만들어 준다.)->1이 나온다.
즉 metric 값을 구하는 것에 있어 차이가 없는 것이다.
이런 문제는 기준인 10^8을 더 큰 숫자로 만들면 해결이 가능하다.
OSPF 설정에 들어가서 모든 Router에 다음과 같이 입력해주자.
auto-cost reference-bandwidth 1000
1000이라는 값은 1000Mbit, 즉 1000000000 -> 10^9이다
즉 기준값이 10^9으로 바꾸는 명령어이다.
다음과 같이 metric이 변경된 것을 확인가능하다.
OSPF Summary(축약)
- EIGRP처럼 OSPF도 Summary 기능이 존재한다.
-그러나 EIGRP Summary와는 설정에서 차이점이 존재한다.
1. 같은 Area에서는 summary가 불가능하다.
-> 동일 Area의 내부 정보를 LSA Type 1으로 이미 알고있기때문에 동일 Area의 Summary 구성이 불가능하다.
2. ASBR, ABR에서만 설정이 가능하다.
-> EIGRP의 경우 각 Router의 인터페이스 설정모드에서 설정이 가능했다.
-> 그러나 OSPF의 경우 ABR과 ASBR의 Router 설정모드에서 설정이 가능하다.
1) ABR summary 설정법
R1(config-router)# area 1 range 150.100.8.0 255.255.255.252.0
2) ASBR summary 설정법
R1(config-router)# summary-address 180.10.20.0 255.255.252.0
OSPF Default-Route
- EIGRP에서는 재분배를 통해 Default-Route를 광고했었다.
- OSPF에서는 재분배를 통한 광고가 불가능하다.
OSPF Default-Route 명령어
R1(config-router)# default-information originate
다음과 같이 입력시 default Route를 광고한다.
위의 명령어는 만약 자신의 Routing table에 default-route가 없다면 광고하지 않는다.
이때 always 옵션을 사용한다면 자신에게 default-route가 없어도 광고가 가능하다.
R1(config-router)# default-information originate always
Stub Area
Stub은 끝, 토막이라는 뜻.
오고 나가는 경로가 하나뿐인 종단 Network를 흔히 Stub Network라고 부름.
밑의 그림에서 R1에 특정 장비가 연결되어있다면 해당 장비는 나가는 경로가 R2하나이다.
이러한 네트워크가 대표적인 Stub Network의 예시라고 할 수 있다.
Stub Network와 비슷하게 OSPF에서는 Stub Area라는 옵션을 설정해줄 수 있다.
해당 설정은 대규모 OSPF 망을 구성시 망을 안정화시킬 수 있는 방법 중 하나이다.
Stub Area는 종류에 따라 4가지로 나눌 수 있다.
1) Stub Area
- ABR이 Stub Area 내부로 LSA Type 5번 정보(O E1/E2)를 전달하지 않는다.
- 대신 ABR이 Stub Area 내부로 Default-Route를 광고하기때문에 외부에 대한 연결성은 유지가 된다.
- ABR에서 설정을 해준다.
- 위의 그림에서 또한 R2(ABR)에서 설정을 해준다.
2) Totally Stub
- 기본적으로 Stub Area와 동일.
- Stub Area는 재분배되어지는 정보인 Type 5번을 막지만 Totally Stub은 Type 3번(O IA), 즉 다른 Area 정보도 내부 Area로 전달 x
*실행 예시
기본적인 R1의 라우팅 테이블
여기서 Stub Area를 구성한다 명령어는 간단하다 해당 Area의 모든 Router에 다음과 같이 입력해주면 된다.
R1, R2(config-router)#area 1 stub
위와 같이 E2가 사라지고 그 대신 Default Route가 생긴 것을 확인 가능하다.
Totally Stub은 ABR에서 다음과 같은 명령어를 추가하면 사용이 가능하다.
R2(config-router)#area 1 stub no-summary
Default-Route를 제외한 모든 O IA 경로가 사라진 것을 확인 가능하다.
3) NSSA(Not So Stub Area)
- ASBR이 위치한 Router는 Stub Area로 만드는 것이 불가능하다.
- Stub Area는 Type 5번을 ASBR이 Type 5번을 생성하기때문이다.
- 따라서 ASBR이 위치한 Area를 Stub Area처럼 만들어주기위해 NSSA를 사용한다.
- NSSA의 경우 다른 Area에서 재분배되어진 정보는 차단하면 자신의 Area에서 재분배되어진 정보는 E1/E2가 아닌 N1/N2로 바꿔준다.
4) Totally NSSA
- Totally Stub과 똑같이 Type 3번까지 막아주는 NSSA이다.
*실행 예시
기본적인 R5의 라우팅 테이블
기본적인 R6의 라우팅 테이블
이 상태에서 NSSA를 만들어보자.
우선 ABR에 다음과 같이 입력해주자.
R5(config-router)#area 2 nssa default-information-originate
그리고 나머지 Area 2 Router에는 다음과 같이 입력해주자.
R6(config-router)#area 2 nssa
위와 같이 E2가 N2로 바뀐것을 확인할 수 있다.
이제 Totally NSSA를 만들어주기위해 ABR에서 다음과 같이 입력해주자.
R5(config-router)#area 2 nssa default-information-originate no-summary
위와 같이 O IA가 모두 사라진 것을 확인 가능하다.
Virtual Link
특정 Area가 백본 Area(=Area 0)와 떨어져있을 시 다른 Area의 정보를 확인할 수 없다.
즉 어떤 Area든 백본 Area와 직접 연결이 되어있어야한다.
다음과 같은 상황을 보자
R8의 라우팅 테이블
다른 Area 정보를 못받아오는 것을 확인가능하다.
따라서 무조건적으로 OSPF multi-Area를 구성 시, Area들은 백본 Area인 0번 Area와 직접 접촉을 해있어야한다.
그러나 갑작스러운 통합/합병/장애 등의 이유로 백본 Area와 떨어져있는 Area를 구성하는 상황이 생길수도 있다.
이럴 때 사용하는 것이 Virtual-Link이다.
Area 3번과 0번을 연결하기 위해서 가상의 Link를 생성해주는 것이다.
우선 Area 3번과 1번의 ABR인 R1에 다음과 같은 설정을 해주자.
R1(config-router)#area 1 virtual-link 2.2.2.2
변화된 R8의 라우팅 테이블
위와 같이 변화한 것을 확인이 가능하다.
OSPF Authentication
- RIP과 EIGRP의 경우 Key-chain 생성 후 interface에 적용하는 동일한 방식을 사용한다.
- OSPF 경우 조금은 다른 방식을 사용한다.
R1과 R8 서로 인증을 위해서 다음과 같이 입력해주면 된다.
R1, R8(config-if)#ip ospf authentication message-digest
R1, R8(config-if)#ip ospf message-digest-key 1 md5 netdream321
'네트워크 > 네트워크 좀 더 알아보기-라우팅' 카테고리의 다른 글
Path Control (0) | 2019.03.05 |
---|---|
재분배(Redistribution) (0) | 2019.03.04 |
Advanced Distance Vector와 Eigrp (0) | 2019.02.19 |
Router의 Best Path 결정 기준/라우터 스위칭 방식 (0) | 2019.01.31 |
Distance Vector와 RIP (0) | 2019.01.31 |