라우팅은 오래된 기술인데 1. 아주 단순함 2. 라우팅 프로토콜이 간단하고 확장성이 좋음 이 장점이 아주 뛰어남. 아주 안정적이어서 지구 전체를 연결하는 네트워크가 한 번도 죽은 적이 없을 정도임. 프로토콜이 간단하고 안정적임.
라우팅은 패킷을 목적지까지 전달하는 빠른 경로를 찾아주는 작업임. 이때 경로란 중간에 거치는 노드(라우터)의 연속적인 집합임. 빠른지를 판단하기 위해서는 시간 등을 보지 않고 중간에 건너는 라우터 즉 홉 수를 봄. (=왜? 이동(통신) 속도는 너무 빨라져서 문제가 안됨, 라우터에서 컴퓨팅을 해주는 속도(프로세싱 딜레이)만이 관건임(보틀넥이 됨))
라우팅의 동작은 원래 아이디어는 코스트(물리적 거리가 길거나 통신장치가 오래되었거나 트래픽이 몰려서 나눠쓰거나)를 계산해서 동작하는 것임. 어떻게 빨리 갈까 연구 많이 함. 하지만 망이 복잡해지고 자꾸 바뀌어서 계속해서 계산해야 함. 또한 모든 경우의 수를 따져야 하는데 이는 천문학적인 계산이고 완벽하고 최적인 길을 찾지 못함. -> 다른 아이디어가 필요했음.
이때 C에서 F로 가고 싶을 때 길을 미리 알고 가는 것이 아님. C에서는 일단 B로 가는 것이 최적의 선택이라는 것만을 알고 가는 것임. B에서는 E로 가는 것이 F로 가기 위한 최적의 선택이라는 것을 알고 E로 감. 이런 식으로 자신이 패킷을 넘겨주는 최적의 인접 노드만을 알면 됨.
라우터에 패킷이 올 때 마다 매번 계산을 해서 보내는 것이 아니라 미리 어느 경로가 최적일지를 준비해 둠. 즉 라우팅 알고리즘에 의해 라우팅 테이블을 만들어 놓음. 이런 라우팅 테이블을 참고해서 패킷을 인접 노드에 보내는 동작을 포워딩(내보낸다는 뜻)이라 함. 라우팅은 포워딩의 연속임. 라우팅 테이블에 없으면 걍 디폴트 라우터로 포워딩 해버림.
1.0.0.0/24 여기서 /24은 network prefix로 목적지 주소의 앞부분 24비트만을 봐서(루트라고 부름) 이것이 일치하면 이루트로 포워딩함. 예를 들어 host1이 host2 즉 1.0.0.2 에 패킷을 보낸다면 이는 1.0.0과 일치하므로 인터페이스 a를 통해 정해진 next hop으로 가면 됨. "direct"라 나와있는데 같은 네트워크 안에 연결되어 있음을 알 수 있음. 만약 host3로 패킷을 보내고 싶다면 이는 0.0.0.0/0에서 /0으로 아무것도 비교하지 않으니 이와 동일함. 그럼 인터페잇 a를 통해 1.0.0.254로 가게 되고 인터페이스 c를 통해 라우터 2로 올 것임. 라우터 2의 라우팅 테이블에 2.0.0.0/24와 일치하니 인터페이스 b를 통해 2.0.0.1에 도착할 수 있음.
보통 한 라우터에 2,3개가 물려있어서 이를 찾기만 하면 됨. 테이블 사이즈가 클 필요x. 테이블은 작을수록 좋음. 루트 정보에서 netid 부분만 저장하고 hostid는 다루지 않음. 네트워크까지만 가면 ARP 등을 사용해 도착할 수 있고 테이블도 작아져서 좋음.
만약 일치하는 것이 여러 개라면 prefix-length가 가장 큰 값을 갖는 루트를 선택함. 이것을 largest matching prefix rule이라고 함. 예를 들어 10.0.0.0/24 이 아니라 10.0.0.100/32 을 선택함.
하지만 실제로 포워딩을 할 때는 라우팅 테이블에 접속하지 않고 포워딩 테이블을 사용함. 라우팅 테이블은 상세한 모든 정보를 가지고 있는 반면 포워딩 테이블은 어떤 패킷을 어떤 인터페이스로 내보내는 지만을 알려주는 단순하고 간단한 정보만을 가짐.
cmd > netstat -r 로 라우팅 테이블을 볼 수 있음
'aws, 컴퓨터 네트워크' 카테고리의 다른 글
서브넷/network-prefix (0) | 2022.05.17 |
---|---|
wireshark 설치/사용 정리 (0) | 2022.05.16 |
MAC/ARP/ICMP (0) | 2022.05.16 |
ip 주소 (0) | 2022.05.14 |
IP (0) | 2022.05.14 |
댓글