본문 바로가기

tech/carrier ethernet

OSPF 분석

반응형

일단, OSPF도 버전이 1, 2, 3 이 있는데, 내가 분석한 버전은 2 이고, 요즘은 IPv6(16바이트 주소체계)를 위한 버전3 이 나오고있다.

먼저, OSPF 는 Hello 패킷을 라우터 간에만 주고 받는다. 224.0.0.5 와 224.0.0.6 이라는 두개의 멀티캐스트 주소가 있는데, 전자의 경우 DR 들만 수신하는 멀티캐스트 주소이고 후자는 DR 외의 라우터들이 수신한다.

아직 DR 의 구체적인 역할은 잘 모르겠지만, 일단 이 DR 은(designated router) 은 네트워크를 대표하는 라우터로서 네트워크 주소 대신 이 DR 의 IP 주소를 사용한다. 즉, OSPF 에서는 네트워크를 대표하는 ID (DR 의 IP주소)와 라우터 자체를 대표하는 ID(여러 인터페이스 IP중, 하나 택.)가 둘다 IP 주소의 형태로 사용된다. 이게 햇갈리는 주 이유이다.

네트워크마다 DR 이 모두 선정되어있다고 가정하고, (DR 선정과정은 Hello 패킷을 통해서 이루어짐) 일단 새로운 라우터가 특정 네트웍에 참가하면 네트웍을 대표하는 DR 라우터에게 기존의 망정보를 받게된다. (master/slave 관계가 되어)

이것이 DB Description 패킷인데, 이것은 옵션 비트에 따라 시작패킷, 실제 데이터, 종료패킷 이렇게 3가지로 분류된다. 실제 데이터를 보면 DBD 패킷 위에 LSA 헤더들이 존재하는것을 볼 수 있는데, 이 헤더들은 라우터ID, 네트워크ID(DR)만 포함하고 자세한 정보(라우터가 가진 인터페이스와 어디에 연결되어 있는지, 네트워크에 어떤 라우터가 Attach 되있는지)가 없다.

이것은 LSA 본체가 가지고 있는데, 일단 LSA 헤더만을 주고받음으로서 자기가 이미 가지고있는 LSA에 대한 정보는 제외하고 없는거만 LS Request 로 요청하기 위한것이다.
LS Request 로 요청을 할때는 LSA 타입(라우터인가? 네트웍인가?)과 그 각각의 ID(라우터라면 라우터ID, 네트웍이면 DR IP주소), 그리고 Advertising Router 정보(이 정보의 최초 근원지) 가 들어가는 엔트리로 구성된다. 이 엔트리를 7개를 물어본다면 LS Update의 응답도 똑같이 각각에 대하여 7개가 온다. 이제 LS Update 를 분석하면 AREA 내의 전체 토폴로지를 얻을 수 있다.

새로 참가하는 라우터는 기존의 LSA 정보가 없다고 한다면, DBD 를 받고 거기있는 모든 LSA 에 대한것을 요청할 것이므로
LS Update 를 받는것에 전체 망정보가 있다고 보면된다.
이때 여기서는 간단하게 2가지 LSA(라우터, 네트웍) 만을 볼건데, 라우터의 경우 링크ID 가 곧 라우터의 ID 를 의미한다.
그리고 아래에는 해당 라우터가 어떤 인터페이스(IP) 를 통해서 어떤 네트워크에 연결되는지를 알려주는데
Stub 네트워크의 경우 그곳에 추가적인 라우터가 없는것이다.

Transit 의 경우 ID 가 DR 의 IP 를 의미하고 Data 는 해당 라우터(자기자신)이 그곳에 연결되는 인터페이스 IP 를 나타낸다.
네트워크 LSA의 경우는 먼저 링크ID 가 DR 의 IP 가 되는것이고, 아래를 보면 넷마스크와 해당 네트워크에 붙어있는 라우터의
ID 리스트가 나타난다. 이 네트워크 LSA 는 DR 이 생성해서 뿌린다고 한다.

아무튼 LSA 를 분석해서 토폴로지를 생성할때의 핵심은 링크ID, 그리고 아래에 딸려오는 2개의 정보(ID, Data 또는 Netmask, Attatched Router) 가 된다. 이것들을 조합하면 토폴로지를 그릴 수 있다.
Age 나 기타 다른것들은 아직 알아봐야한다 -_- Age 가 뭔지 알것같다..
어떤 라우터의 네트워크 망에 추가적인 라우터가 붙었을때, 새로 갱신된 LSA 패킷의 Age 가 1 인걸로 보아 이건 LSA 가 생겨난지 얼마나 됬는가를 의미하는 것으로 보인다. 이걸 기준으로 어떤 LSA 가 더 오래되고 더 최근인지를 판단해서 RDB 를 갱신하는것 같다.

링크를 끊어버렸을때 이 값이 3600 으로 세팅된적이 있었는데 아마 LSA 가 생성된지 3600초가 지나면 폐기하는거 같은데...음?? 그러면 3600초 이하의 Age 를 가지고있는놈한테 3600초가된 LSA 를 보내면 그냥 무시할텐데..(자기게 최근거라 판단해서) 그럼 어떻게 링크정보를 삭제하는거지...? ㅡㅡ;;

추가*
멀티캐스트 중복방지를 위해 Sequence 번호를 사용하고 Sequence 번호가 잘못되거나 라우터를 재부팅했을때 번호가 초기화되는 문제를 해결하기위해 Age를 사용함 이 두값은 각각의 LSA 마다 따로따로 존재하는것임.

출처 : http://blog.naver.com/declspec?Redirect=Log&logNo=10127443441
반응형