제 9 장 IP 라우팅
목차 1. 개요 2. 라우터의 기본 원칙 3. ICMP 호스트 및 네트워크 도달불가 에러 4. 전송 또는 전송하지 않음 7. 요약
1. 개 요 IP층이 어떻게 라우팅을 결정하는가 라우팅은 IP 기능 중 가장 중요한 기능들증의 하나 1. 개 요 IP층이 어떻게 라우팅을 결정하는가 라우팅은 IP 기능 중 가장 중요한 기능들증의 하나 일반적인 사용자 프로세스는 라우팅 데몬 UNIX 시스템은 일반적으로 routed와 gated라는 프로그램 사용 라우팅 테이블은 IP가 수시로 액세스하여 경로에 대한 정보를 조회시 사용하며 라우팅 데몬이 주기적으로 라우팅 테이블을 개정 ICMP redirect 메시지와 route 명령어에 의해 갱신 라우팅 테이블 출력을 위해 netstat 명령어 사용
IP계층에서 수행되는 처리과정 라우팅 데몬 Route 명령어 Netstat 명령어 UDP TCP 인접 라우터로부터 라우팅 테이블 갱신 ICMP yes ICMP 재지정 no 우리의 패킷인가? (IP 주소가 우리 것 인가? 아니면 브로드 캐스트 주소인가?) 데이터그램을 전송 (만약 전송 가능하면) IP 출력: 다음 홉 라우터를 계산(만약 필요하 다면) 라우팅 테이블 IP 옵션 처리 소스 라우팅 IP 입력 큐 IP 층 네트워크 인터페이스
2. 라우터의 기본원칙 IP가 행하는 라우팅 결정은 라우팅 테이불에 있는 정보에 의존 - 일치되는 호스트 어드레스가 있는지를 조사. - 일치되는 네트워크 어드레스가 있는지를 조사. - default entry가 있는지 조사. ( default entry는 네트워크 ID가 0인 네트워크 엔트리 ) routing mechanism : IP가 라우팅 테이블을 검색해서, 어느 인터페이스로 패킷을 보낼 것인가를 결정하는 동작 routing policy : 어떤 경로를 라우팅테이블에 저장할 것인가 IP는 routing mechanism 실행 라우팅 데몬은 보통 routing policy 제공.
All the hosts are in the tuc.noao.edu domain Portion of the class B network 140.252 used for all the examples in the text All the hosts are in the tuc.noao.edu domain aix gemini gateway netb svr4 sun bsdi slip solaris modem AIX3.2.2 Solaris2.2 SunOS4.1.1 인터넷 .104.1 시스코 라우터 .1.4 Telebit NetBlazer BSD/386 1.0 SunOS 4.1.3 SVR4 .13.34 .13.33 .13.35 .13.66 .13.65 SLIP (dialup) .1.92 .1.32 .1.11 .1.183 .1.29 이더넷
간단한 라우팅 테이블 Flag. - U : 로컬 네트워크를 표현. - G : 경로가 라우터를 향함. svr4 % netstat -rn Routing tables Destination Gateway Flags Refcnt Use Interface 140.252.13.65 140.252.13.35 UGH 0 0 emd0 127.0.0.1 127.0.0.1 UH 1 0 lo0 default 140.252.13.33 UG 0 0 emd0 140.252.13.32 140.252.13.34 U 4 25043 emd0 Flag. - U : 로컬 네트워크를 표현. - G : 경로가 라우터를 향함. - H : 호스트에 대한 경로 정보 나타냄. 목적지는 완전한 호스트 주소임 - D : 경로가 redirect에 의해서 생성. - M : 경로가 redirect에 의해서 수정.
간단한 라우팅 테이블 Refcnt ( reference count ): TCP와 같은 연결 지향 프로토콜에서 유지하고 있는 연결의 수. Use : 해당 경로로 보내진 패킷의 수. Interface: local interface 의 이름. 첫째줄 : 목적지로 보내기 위해 게이트 웨이로 보냄 둘째줄 : 루프 백 인터페이스 셋째줄 : 디폴트 경로 지정 넷째줄 : 같은 이더넷 상에 있는 호스트에대한 라우팅
라우팅 테이블 초기화 인터페이가 초기화 될때 (ifconfig 명령어로 설정) 자동으로 초기화됨. (점대점 링크,루프백 인터페이스 에 대해서 그 경로는 호스트가 됨 - 즉 H flag 설정) route 명령어를 사용하여 라우팅 테이블을 초기화. 호스트 svr4의 경우 route add default sun 1 route add slip bsdi 1 default router를 /etc/defaultrouter 와 같은 화일에 표기하기도 함. 라우팅 테이블의 복잡성 네트워크 토폴로지(topology)에 의존.
복잡한 라우팅 테이블 sun % netstat -rn Routing tables Destination Gateway Flags Refcnt Use Interface 140.252.13.65 140.252.13.35 UGH 0 171 le0 127.0.0.1 127.0.0.1 UH 1 766 lo0 140.252.1.183 140.252.1.29 UH 0 0 sl0 default 140.252.1.183 UG 1 2955 sl0 140.252.13.32 140.252.13.33 U 8 99551 le0 Sun % ifconfig sl0 sl0 : flags=1051<UP, POINTPOINT, RUNNING> inet 140.252.1.29 --> 140.252.1.183 netmask ffffff00
목적지로 가는 경로가 없는 경우 default 경로가 없고 목적지 경로에 대한 정보가 없을 때 호스트에서 생성된 것이라면 송신자에게 host unreachable 또는 network unreachable 에러 메시지가 돌아옴 데이터 그램이 전송된 것이라면 ICMP 호스트 도달불가 에러 메시지를 돌려보냄
3. ICMP 호스트 및 네트워크 도달불가 에러 Svr4에서 절단되어 있는 다이얼업 SLIP링크의 반대쪽에 있는 호스트에 대해서 ping을 실행 svr4 % ping gemini ICMP host unreachable from gateway sun (140.252.13.33) ^? 종료하기 위해 인터럽트 키를 누름 1. 0.0 svr4 > gemini : icmp : echo request 2. 0.00 ( 0.00 ) sun > svr4 : icmp : host gemini unrechable 3. 0.99 ( 0.99 ) svr4 > gemini : icmp : echo request 4. 0.99 ( 0.00 ) sun > svr4 : icmp : host gemini unrechable Ping에 응답한 ICMP 호스트 도달불가
3. ICMP 호스트 및 네트워크 도달불가 에러 인터넷에 연결되어 있지 않은 IP주소에 ping을 실행하면 에러가 생기며 에러가 돌아오기 전에 패킷이 인터넷을 통해 어디까지 갔는지를 알수 있다. sun % ping 192.82.148.1 이 Ip주소는 인터넷에 연결되어 있지 않다. PING 192.82.148.1 : 56 data bytes ICMP host unrechable from gateway enss142.UT.westnet.net (192.31.39.21 ) for icmp from sun ( 140.252.1.29 ) to 192.82.148.1 a top-level routing domain : default 처리 없이 모든 인터넷 경로 정보 유지: NSFNet, CIX, NSI, Sprintlink, EBONE (1995. 4 기준)
4. 전송 또는 전송하지 않음 호스트는 라우터로 구성할 경우를 제외하고는 IP forwarding 또는 이와 유사한 이름을 갖는 커널 변수를 이용해 IP데이터 그램을 전송하지 않도록 구성할 수 있다. 5. ICMP 재지정 에러 host (1) IP datagram (3) ICMP redirect (2) IP datagram R1 R2 ICMP 재지정 예
ICMP 재지정의 예 Ping을 실행하기 전의 라우팅 테이블 solaris % netstat -rn Routing tables Destination Gateway Flags Refcnt Use Interface 127.0.0.1 127.0.0.1 UH 0 848 lo0 140.252.1.0 140.252.1.32 U 3 15042 le0 224.0.0.0 140.252.1.32 U 3 0 le0 default 140.252.1.4 UG 0 5747 le0 V 옵션을 사용하면 호스트에 의해 수신되는 ICMP메시지를 볼 수 있다. Solaris % ping -sv bsdi PING bsdi: 56 data bytes ICMP Host redirect from gateway gateway (140.252.1.4) to netb ( 140.252.1.183) for bsdi (140.252.13.35) 64bytes from bsdi ( 140.252.13.35) : icmp_seq=0. time=383. ms 64bytes from bsdi ( 140.252.13.35) : icmp_seq=0. time=383. Ms ^? type interrupt key to stop ------------------bsdi PING statistics -------- 4 packets transmitted, 3 packets received, 25 % packet loss round-trip (ms) min/avg/max = 353/366/383
ICMP 재지정의 예 solaris % netstat -rn Routing tables Destination Gateway Flags Refcnt Use Interface 127.0.0.1 127.0.0.1 UH 0 848 lo0 140.252.13.35 140.252.1.183 UGHD 0 2 le0 140.252.1.0 140.252.1.32 U 3 15045 le0 224.0.0.0 140.252.1.32 U 3 0 le0 default 140.252.1.4 UG 0 5749 le0 ICMP 재지정에 의해 새로운 경로가 추가되었음을 알수 있다. D 옵션은 ICMP재지정에 의해 설정되어졌다는 것을 의미한다.
그 밖의 자세한 정보 ICMP 재지정 메시지 ICMP 재지정 메시지의 서로다른 코드값 7 8 15 16 31 유형 (5) 7 8 15 16 31 유형 (5) 코드 (0) 검사합 8 bytes 라우터의 인터넷 주소 IP header (including options) + first 8 bytes of original IP datagram data ICMP 재지정 메시지 코드 설 명 1 2 3 네트워크에 대한 재지정 호스트에 대한 재지정 서비스 유형과 네트워크에 대한 재지정 서비스 유형과 호스트에 대한 재지정 ICMP 재지정 메시지의 서로다른 코드값
그 밖의 자세한 정보 4.4BSD는 라우터로 작동될 때 다음 사항을 점검한다. 1. 송신 인터페이스는 수신 인터페이스와 같아야 한다. 2. 송신 데이터 그램의 경로는 ICMP 재지정에 의해 생성, 수정되지 않아야 하고, 또 라우터의 디폴트 경로가 되어서는 안된다. 3. 데이터그램은 소스 라우트가 되어서는 않된다. 4. 커널은 재지정을 송신하도록 설정되어야 한다. 4.4BSD호스트는 라우팅테이블을 갱신하기전 다음 사항을 점검한다. 1. 새로운 라우터는 직접 연결된 네트워크 상에 있어야 한다. 2. 재지정은 그 목적지에 대해 현재의 라우터로 된 것이어야 한다. 3. 재지정은 호스트에 대해서 자신을 라우터로 이용하도록 지시해서는 안된다. 4. 수정된 경로는 간접경로이어야 한다.
6. ICMP 라우터 발견 메시지 라우팅 테이블을 초기화하기위한 새로운 방법으로 ICMP router advertisement 와 solicitation 메시지 규정 (RFC1256 ) 부팅후 호스트가 라우터 청원 메시지를 브로드 캐스트 또는 멀티 캐스트 한다. 하나 또는 그 이상의 라우터가 광고 메시지로 응답한다. 추가적으로 라우터는 정기적으로 라우터 광고를 브로드 캐스트 또는 멀티 캐스트 하므로 이를 수신한 호스트가 라우팅 테이블을 갱신한다.
ICMP 라우터 청원 메시지 형식 ICMP 라우터 광고 메시지 형식 유형 (10) 코드 (0) 검사합 사용하지 않음 (0으로 보냄) 8 bytes 7 8 15 16 31 유형(9) 주소의 개수 주소 엔트리 길이 생존시간 라우터 주소 [1] 우선권 레벨 [1] 라우터 주소 [2] 우선권 레벨 [2] . . . ICMP 라우터 청원 메시지 형식 ICMP 라우터 광고 메시지 형식
라우터 동작 - 450 ~ 600 초 간격으로 라우터 주소 광고(advertisement) - 라우터 청원(solicitation) 패킷에 응답 - 30분이 기본 유효 시간 ( 만약 0분으로 설정시 인터페이스 down 통보임 ) 호스트 동작 - 부트시 3초간격으로 3번 라우터 청원(solicitation) 패킷 전송 - 인접 라우터의 공표 주소 인식 - default 라우터는 보통 10분 간격으로 공표하며 이때 유효시간을 30분으로 공표하기때문에 호스트의 default 정보가 누락되는 경우가 발생하지않음 구 현 - 사용자 발견 메시지는 사용자 프로세스에 의해서 생성 ( solaris 2.X 시스템만 지원, 다른 시스템은 지원하지않음 )
7. 요 약 IP 라우팅 동작은 TCP/IP가 동작하는 시스템에 대해 기본적인 것이다. 7. 요 약 IP 라우팅 동작은 TCP/IP가 동작하는 시스템에 대해 기본적인 것이다. 라우팅 테이블 엔트리는 최대 5개의 플래그 비트, 목적지 IP주소, 다음 홉 라우터 IP 주소(간접 경로의 경우) 또는 로컬 인터페이스 IP 주소(직접 경로의 경우), 그리고 사용되는 로컬 인터페이스의 포이터로 구성된다. 라우팅 테이블 검색은 IP 데이터 그램을 생성, 또는 전송할때에 행하며 라우팅 데몬 또는 ICMP 재지정에 의해 갱신된다. 이장에서는 한대의 시스템이 라우팅 테이블을 어떻게 이용하는가에 중점을 두었다.