Routing table
라우팅 테이블(영어: routing table)은 컴퓨터 네트워크에서 목적지 주소를 목적지에 도달하기 위한 네트워크 노선으로 변환시키는 목적으로 사용된다. 라우팅 프로토콜의 가장 중요한 목적이 바로 이러한 라우팅 테이블의 구성이다.
가장 단순한 모델인 hop-by-hop 라우팅 방식에서, 각 라우터의 라우팅 테이블은 모든 목적지 정보에 대해 해당 목적지에 도달하기 위해서 거쳐야 할 다음 라우터의 정보를 가지고 있다. 라우팅 테이블이 일관적이라고 가정하면, 패킷을 받은 다음, 라우팅 테이블을 검사해서 다음 라우터를 찾은 뒤, 해당 라우터로 패킷을 넘겨주는 이러한 단순한 알고리즘만으로 네트워크상의 어느곳으로라도 데이터를 전송할 수 있다. 하지만 실제로는, hop-by-hop 라우팅 방식은 MPLS와 같은 계층적 아키텍처에 밀려나서 급격히 사라지는 추세이다. 계층적 아키텍처에서는 한번의 테이블 검사로 몇 번의 전달과정을 대체할 수 있으며, 이는 테이블 검사시간을 감소시키며 따라서 네트워크의 성능을 증가시킨다.
제한된 저장공간에 수많은 목적지로의 노선을 저장해야하는 요구사항은 라우팅 테이블 구성에서 큰 어려움으로 다가온다. 라우팅에서 하나의 중요한 기본 가정은 유사한 주소는 비슷한 주소의 목적지는 인접해있으리라는 것이며, 이는 다수의 목적지 주소를 하나의 라우팅 테이블 항목에 관리할 수 있게 해준다. 다수의 목적지를 하나의 항목에 넣는 이러한 그룹 방법은 이제까지 많이 바뀌어 왔으며, 아직도 활발한 연구 과제로 남아 있다. 인터넷에서 현재 가장 널리 사용되는 그룹 기법은 사이더(Classless Inter-Domain Routing, CIDR)라고 불리는 비트단위 접두어 비교방식이다.
네트워크상의 각 라우터에서는 일관된 라우팅 테이블 정보를 가지고 있어야 하며, 그렇지 않을 경우 루프가 발생할 수 있다. 이는 특히 hop-by-hop 라우팅 방식에서 크게 문제가 되는데, 이는 각 라우터가 올바른 라우팅 테이블을 가지고 있는 것처럼 보여도 서로 패킷을 무한히 주고받게 되기 때문이다. 라우팅 루프를 피하는 것은 라우팅 프로토콜을 설계할 때 중요한 문제의 하나이다.
Categories
Tools
- network-manager (linux) - include route
- tracert (windows)
- traceroute (linux)
- iproute2 (ip)
라우팅 프로토콜
라우팅 알고리즘은 크게 세 가지가 있다.
- 디스턴스 벡터 알고리즘(Distance Vector Routing Algorithm)
- 링크 스테이트 알고리즘(Link State Routing Algorithm)
- 패스 벡터 알고리즘(Path Vector Algorithm)
Example
내 PC 의 라우팅 테이블을 확인
TCP/IP 설정확인은 ipconfig 을 이용하고, 라우팅 테이블을 보기 위해서는 netstat -r
이나 route print
명령어를 사용한다.
위의 내용중 라우팅 테이블에 관련된 부분만 제목과 함께 재구성하였다.
Name | Network Destination | Netmask | Gateway | Interface | Metric |
default route | 0.0.0.0 | 0.0.0.0 | 203.255.113.254 | 203.255.113.34 | 1 |
loopback | 127.0.0.0 | 255.0.0.0 | 127.0.0.1 | 127.0.0.1 | 1 |
subnet network | 203.255.113.0 | 255.255.255.0 | 203.255.113.34 | 203.255.113.34 | 1 |
LAN card | 203.255.113.34 | 255.255.255.255 | 127.0.0.1 | 127.0.0.1 | 1 |
subnet broadcast | 203.255.113.255 | 255.255.255.255 | 203.255.113.34 | 203.255.113.34 | 1 |
multicast | 224.0.0.0 | 224.0.0.0 | 203.255.113.34 | 203.255.113.34 | 1 |
limited broadcast | 255.255.255.255 | 255.255.255.255 | 203.255.113.34 | 203.255.113.34 | 1 |
라우팅 테이블 설명 (열)
5개의 열로 구성이 되어 있으며, 내 PC 의 패킷들이 어디로 나가야할지를 정해준다. 패킷의 Destination 주소를 Netmask 을 적용하여 Network Destination 을 결정한후 적당한 Interface 로 보낸다.
- Netmask
- 패킷의 Destination 주소에 Netmask 를 AND 연산한다.
- 어떤 Network Destination 으로 갈지를 netmask에서 결정하게 된다
- Network Destination
- AND 연산을 하게된후 패킷의 Destination 주소와 Network Destination 을 비교한다.
- Interface ( 패킷을 밖으로 보낼 랜카드의 주소 )
- Network Destination 이 일치한 Interface 로 패킷을 보낸다
- Gateway
- Interface 를 빠져 나간 패킷이 가야할곳이다.
- 자신의 랜카드 주소 또는 로컬 서브넷의 게이트웨이(일반적으로, 라우터)이다.
- Metric
- destination 까지의 hop 수를 말한다.
- local LAN 은 하나의 hop 으로 구성
- Metric 은 가장 좋은 라우터경로를 결정할때 사용
라우팅 테이블 설명 (행)
7개의 행으로 되어 있으며, 각 행이 라우팅 테이블을 구성하여 Network Destination 에 해당하는 패킷을 각 Interface 로 보낸다.
- default route
- 여러 라우팅 테이블을 확인해서 일치하지 않을경우, default route 의 Gateway 로 보낸다.
- 위에서는
203.255.113.254
로 가게되며, 일반적으로 라우터의 주소이다.
- loopback
-
127.0.0.1
은 software loopback 주소이다. - 자기 자신을 가리킨다.
- subnet network
- IP 주소의 subnet network 주소를 가리킨다.
- IP 주소가
203.255.113.34
이고 Subnet Mask 가255.255.255.0
이므로 AND 연산을 통해203.255.113.0
이 network 주소가 된다.
- LAN card
- 자신의 IP 주소를 의미한다.
- subnet broadcast
- 위의
203.255.113.0
의 마지막 주소인203.255.113.255
는 broadcast 로 사용된다.
- multicast
- D Class 의 multicast 를 나타내는 행이다.
- 특정한 그룹에게 메세지를 전달할때 사용되는 주소이다.
- limited broadcast
- 라우터를 통과하지 못하는 broadcast 주소이다.
- 같은 subnet 상의 모든 host 에 전달된다.
라우팅 테이블 검색 순서
Microsoft 사의 문서(Q140859) 에 의하면 각 라우팅 테이블행의 검색순서는 다음과 같다:
From the most unique route(host address) to most generic(default gateway)
- host address
- Subnet address
- Network address
- Default gateway
예를 들어, ping 207.46.131.137
명령을 보낼 경우,
-
207.46.131.137
과 LAN card 행의 Netmask 열(255.255.255.255
)과 AND 연산 :207.46.131.137
- 위의 결과값인 207.46.131.137 과 LAN card 행의 Network Destination 과 비교
- 같으면, LAN card 행의 Interface 로 패킷을 보낸다.
- 다르면, 검색순서에 따라 다른 라우팅 테이블 비교
- 일치되는 Network Destination 을 찾지못하면 default route(
0.0.0.0
)의 Gateway 로 패킷을 보낸다. - 다음 패킷을 보내기 위해 첫 번째 부터 반복한다.
Linux 의 Routing Table
NetworkManager#Linux 의 Routing Table 항목 참조.
서로 다른 대역의 IP끼리 통신하도록 설정하는 방법
Internet Protocol#서로 다른 대역의 IP끼리 통신하도록 설정하는 방법 항목 참조.