OSPF 라우팅 프로토콜
OSPF는 IP패킷 안에 프로토콜 넘버 89(10진수)로 들어가게 된다.
RIP와 비교해보면
- 컨버전스 타임 : 정보를 주고 받는 시간. RIP는 30초에 한 번씩 업데이트가 일어나고 홀드다운 타임, 에이징 등 컨버전스에 많은 시간이 걸린다. OSPF는 Area라는 개념을 사용해서 전체 OSPF 네트워크에 변화가 생기면 바로 전달할 수 있기 때문에 훨씬 빠르다. 또한 이 개념으로 네트워크를 작은 영역으로 나누어 관리하기 떄문에 빠른 업데이트가 가능하다.
- VLSM을 지원한다. IP주소를 효과적으로 사용할 수 있다는 장점뿐만 아니라 라우팅 테이블을 줄이는 부수적인 효과 부여. 이를 위해 OSPF는 Route Summarization을 지원하기 때문에 여러 개의 라우팅 경로를 하나로 묶어주는 기능을 한다.
- RIP 같은 경우 최대 15개의 홉 카운트밖에 넘어가지 못했지만 OSPF는 제한이 없다.
- RIP는 30초마다 브로드캐스트가 발생하기 때문에 대역폭 낭비가 많지만, OSPF는 네트워크 변화가 있을 때만 정보가 날아가고 그것도 멀티캐스트로 날아간다.
- 경로 결정에 있어서 많은 관련 요소를 합쳐서 경로를 선택한다.
- 토폴로지
- 멀티액세스 토폴로지 : 네트워크 모든 녀석들이 정보를 받아볼 수 있는 구조.
- 투 포인트 포인트 토폴로지 : 한 쌍의 네트워크, 전용선
- NBMA : 네트워크 2개 이상 브로드캐스트 능력은 없으며 프레임릴레이나 X.25 네트워크가 이에 해당.
- OSPF에서 라우터는 주위에 있는 OSPF 라우터들을 찾아서 자신의 데이터베이스 안에 저장하는데, 이런 주위의 라우터들을 'Neighbor'이라 한다. 주변에 어떤 이웃들이 사는지에 대한 정보를 관리하는 것이다. 이렇게 이웃을 찾아내기 위해 Hello 패킷을 내보낸다.
첫 번째 상자에 들어있는 화살표에 라우터 A가 켜지면서 헬로 메시지를 보낸다. 이때 라우터 ID가 같이 나가게 되는데, 라우터 ID는 쉽게 말하면 OSPF에서 서로 구분하는 이름이라고 보면된다. 라우터 ID는 이 라우터의 IP주소 중에서 제일 높은 주소를 사용한다.
두번째 화살표는 헬로를 보내는데 브로드캐스트가 아닌 멀티캐스트 주소 224.0.0.5를 이용해서 보낸다. 헬로를 받은 B라우터를 이웃목록에 넣는다. 이 과정을 'init 과정'이라 한다.
세번째 화살표는 A에서 헬로 메시지를 받은 OSPF 라우터들이 A에 유니캐스트로 자신들의 정보를 보내게 된다.
헬로 패킷안에는…
Router ID
Hello/dead intervals*
Neighbors
Area-ID*
DR IP address
BDR IP address
Authentication
password*
stub area flag*
이 들어있다. (*은 중요)
이런 Neighbor 관계가 형성되어야 비로소 통신을 시작할 수 있다는 것.
- 라우터ID를 이용해서 OSPF에서는 서로를 식별하기 때문에 굉장히 중요한 의미를 갖는다.
ethernet 0
ip address 150.100.1.1 255.255.255.0
ethernet 1
ip address 150.200.1.1 255.255.255.0
serial 0
ip address 203.240.100.1 255.255.255.0
라우터ID로 사용할 인터페이스는 가장 안정된 인터페이스를 사용해야 한다. 따라서 보통 Loopback 인터페이스를 사용한다. IP주소 높낮이에 상관없이 루프백 주소가 리우터ID가 된다. 루프백 인터페이스를 만들고 나서 라우터 재부팅이나 OSPF 라우팅 프로토콜을 내렸다가 다시 올려야 한다는 것을 잊지 말자.
- DR(Designated Router) / BDR(Backup Designated Router)
한 반에 있는 반장과 부반장이라 생각하면 쉽다. 선거로 뽑힌다는 점이다.
OSPF 세그먼트에서는 각 라우터들이 OSPF에 참여하게 되면 DR과 BDR에 자신의 Link State를 알리게 된다. 이렇게 DR, BDR에만 자신의 링크 정보를 알리는 이유는 모든 라우터들과 Link State를 교환할 경우 발생하는 트래픽을 줄이고 Link State의 Sync(일치성)을 제대로 관리하기 위해서이다. 이 정보를 전달받은 DR(반장)은 이 정보를 모두 관리하면서 링크의 상태를 항상 일치시키는 역할을 하게 된다.
그럼 BDR(부반장)은 뭘할까? 반장이 업무를 제대로 수행하는지를 관찰한다. 그러다 반장이 업무 수행 능력이 사라지면 대신하여 업무를 수행한다.
OSPF에서는 모든 라우터가 반드시 DR, BDR이 일치해야한다. 이것을 Adjacency라고 한다. DR과 BDR은 라우터 ID와 라우터의 priority를 가지고 선출된다는 것도 알아둘점.
- 선출과정을 알아보자
OSPF에서 DR이 되기 위해서는 Priority가 높아야 한다. OSPF로 동작하는 라우터들은 모두 Priority를 갖는데, 이 값은 디폴트로는 1이다. 이 보다 높은 priority 2가 있다면 이 라우터가 DR이 된다. 만약 같은 priority가 존재하고 그 우선순위가 가장 큰 값일 경우 라우터 ID가 높은 것이 DR이 된다.
여기서 새로운 priority 3가 들어와도 DR 이나 DBR이 될 수 없다. 그 이유는 반장선거가 끝났기 때문이다. DR이 죽어서 BDR이 되거나 라우터를 껏다 켠다거나 OSPF를 전부 죽였다가 살릴경우에는 가능하다.
DR, BDR에 영원히 입후보 못하기 위해서는 Priority를 0으로 세팅하면 된다.