본문 바로가기
C++ 200제/코딩 IT 정보

[IP 라우팅] 라우팅 테이블, ICMP Redirect에 대해서

by vicddory 2017. 9. 7.

[IP 라우팅] 라우팅 테이블, ICMP Redirect에 대해서


More Details

아래 그림은 ICMP redirect message의 형식을 보여주고 있다.


ICMP redirect message


네 가지의 서로 다른 redirect message가 있다. 그것들은 다음 그림에서와같이 code로 구별된다.


Different code values for ICMP redirectDifferent code values for ICMP redirect


ICMP redirect가 보아야 하는 세 개의 IP 주소가 있다.


(1) redirect를 유발한 IP 주소(그것은 ICMP redirect의 데이터 부분에 있는 IP 헤더에 있다.)

(2) redirect를 보내는 라우터의 IP 주소(그것은 redirect를 포함하고 있는 IP datagram의 source IP address이다.)

(3) 사용될 라우터의 IP 주소(그것은 ICMP message의 4-7바이트에 있다.)

ICMP redirect에 대한 많은 규칙이 있다.


라우팅 테이블


첫째, redirect는 라우터에 의해서만 생성된다. 또한, redirect는 라우터가 아니라 호스트에 의해서 사용될 것이다. 그리고 라우팅 프로토콜은 분명히 redirect를 위해 필요하다. (이것은 맨 위의 그림에 있는 라우팅 테이블이 routing daemon 또는 redirect 중 하나에 의해 갱신될 수 있다는 뜻이다.)


라우터로 동작할 때 4.4BSD는 다음과 같은 체크를 수행한다. 그리고 ICMP redirect가 생성되기 전에 다음의 사실이 모두 참이 되어야 한다.


1. outgoing interface는 incoming interface와 같아야 한다.

2. outgoing datagram을 위해 사용될 route는 ICMP redirect에 의해 생성되거나 변경되지 않았다.

3. datagram은 source route 되지 않았다.

4. 커널은 redirect를 보내도록 구성되어 있다.


추가로, ICMP redirect를 수신한 4.4BSD 호스트는 라우팅 테이블을 갱신하기 전에 다음의 내용을 체크한다.


1. 새로운 라우터는 directly connected network에 있어야 한다.

2. redirect는 그 목적지를 위해 현재의 라우터로부터 되어야 한다.

3. redirect는 그 자신이 라우터로 사용되기 위해 호스트로 알리지 않을 것이다.

4. 갱신된 route는 indirect route가 되어야 한다.


redirect에 대해 마지막으로 살펴보아야 할 것은, 라우터는 network redirect가 아닌 host redirect(위 그림의 code 1 또는 3)만을 보내야 한다는 점이다.


ICMP Redirect에 대해서


network redirect가 호스트 redirect 대신에 보내질 수 있을 때 subnetting은 정확히 기술하는 것을 어렵게 한다. 어떤 호스트는 수신된 network redirect를 라우터가 타입이 틀린 것을 보낸 것으로 하여 host redirect로 취급한다.


ICMP Router Discovery Messages

우리는 이장의 앞부분에서 routing table을 초기화하는 한 가지 방법이 configuration file에 static route를 기술하는 것이라고 언급하였다. 이것은 종종 default entry를 세트하기 위해 사용된다.

새로운 방법으로는 ICMP 라우터 advertisement message를 이용하는 것이다.

일반적인 개념은 bootstrapping 이후에, host가 router solicitation message를 broadcast하거나 multicast하는 것이다.


하나 이상의 라우터가 라우터 advertisement message로 응답할 것이다. 추가로, 라우터들은 응답을 기다리며 주기적으로 라우터 advertisement를 broadcast하거나 멀티캐스트한다.


RFC 1256[Deering 1991]은 이러한 두 개의 ICMP message의 형식을 기술하고 있다. 아래 그림은 ICMP 라우터 solicitation message의 형식을 보여주고 있다. 그 아래 라우터에 의해 전송된 ICMP 라우터 advertisement message의 형식을 보여주고 있다.


라우터에 의해 multiple address가 하나의 message로 advertise 될 수도 있다. number of address가 그 개수이다. address entry size는 각 router address의 32비트의 값이다. 그 값은 항상 2이다.


lifetime은 advertise 된 주소가 바르다고 생각되는 초이다.


Format of ICMP router solicitation messageFormat of ICMP router solicitation message


Format of ICMP router advertisement messageFormat of ICMP router advertisement message


하나 이상의 IP 주소의 쌍이 있고 그것은 다음과 같이 선택된다.


IP 주소는 송신 측 라우터의 IP 주소 중 하나가 되어야 한다. preference level은 signed 32비트 정수값이다. 그 값은 같은 subnet에 있는 다른 라우터 주소와 관계된 default 라우터 주소로써 선택되는 것을 의미한다. 큰 값이 선택된다.


preference level이 0x800000000인 것은 그 주소가 수신 측에 의해 default router address로 사용되지 않음을 의미한다. preference의 default value는 0이다.


Router Operation

라우터가 기동할 때 broadcasting 또는 multicasting 할 수 있는 모든 인터페이스에 주기적인 advertisement를 전송한다. 이러한 advertisement는 정확하게 주기적인 것은 아니고 랜덤하다.


[IP 라우팅] 라우팅 테이블


그것은 같은 network에 있는 다른 라우터들과의 sync의 가능성을 줄이기 위해서이다. advertisement의 일반적인 시간 간격은 450-600초 사이이다. 주어진 advertisement에 대한 default lifetime은 30분이다.


lifetime 항목의 다른 용도는 라우터에 있는 인터페이스가 disable 될 때 발생한다. 그러한 경우에서 라우터는 인터페이스에 lifetime을 0으로 세트 하여 final advertisement를 전송할 수 있다.


주기 이외에 unsolicited advertisement에 대해서는 라우터는 호스트로부터의 solicitation을 듣고 있어야 한다. 이러한 solicitation에 대하여 라우터 advertisement로 응답한다.

만일 subnet multiple 라우터가 있으면, 시스템 관리자에 의해 각 라우터의 preference level이 적절히 설정된다. 예를 들면, primary default router는 backup보다 더 높은 preference를 가질 것이다.


Host Operation

bootstrap 시에 호스트는 일반적으로 3초 간격으로 세 개의 라우터 solicitation을 전송한다.


그리고 올바른 advertisement가 수신되자마자 solicitation은 중단된다. 또한, 호스트는 인접한 라우터로부터의 advertisement에 귀를 기울이고 있다. 이러한 advertisement는 호스트의 default router를 변경하도록 한다. 또한 만일 현재의 default에 대한 advertisement가 수신되지 않으면, default은 timeout 될 수 있다.


[IP 라우팅] 라우팅 테이블 ICMP 리다이렉트


normal default router가 설정된 한 라우터는 10분마다 30분의 lifetime으로 advertisement를 송신할 것이다. 이것은 한두 개의 advertisement가 분실되더라도 호스트의 default entry가 타임아웃 되지 않을 것을 의미한다.


Implementation

outer discovery message는 일반적으로 user process(daemon)에 의해 생성되고 처리된다.


단지 default entry만을 추가 또는 삭제할 것이지만 맨 위의 그림에 있는 routing table을 갱신하는 다른 프로그램을 추가한다. daemon은 라우터 또는 호스트로 동작하도록 설정될 것이다.

댓글