다른 대역의 네트워크 간의 통신
패킷(Network 계층에서 통신되는 실질적인 데이터 영역, payload) 포워딩이 이루어지며, 다른 대역의 네트워크 간 라우터를 통해 라우팅을 진행하는 계층입니다.
Network 계층에서의 통신은 IP(Internet Protocol) 주소를 사용하여 통신하며, 최근엔 라우터 장비보다는 방화벽에서 라우팅을 같이 수행하는 경향으로 이루어집니다.
Network 계층에서 통신 시 사용하는 주요 프로토콜
인터넷(네트워크 간 연결을 통해 구축되는 환경)의 기반이라 할 수 있습니다.
최초 전송제어 프로그램의 비연결 데이터 그램에서(IP, Packet 전송으로 비연결 형태) 현재의 연결지향서비스(TCP, port 통로를 기반으로 통신하는 것, 연결지향 형태)로 연결 형태가 발전하였습니다(모두 사용 중).
현재 사용 중인 프로토콜 버전은 IPv4이며, 추가적인 IP할당을 위해 IPv6이 release 되었습니다.
참고로 L3 계층에서 통신되는 data 영역과 함께, Header 영역도 추가되어 목적지/출발지 IP주소가 같이 송수신 됩니다.
목적지 IP주소를 확인하여 여러 네트워크 간 패킷 경로를 선택하여
선별적으로 전송하는 기기입니다.
라우터의 인터페이스는 포트입니다.
즉 포트 지정을 통해 라우터 접속을 할 수 있고, UTP 및 무선 등으로 연결하거나 console로 연결을 관리할 수 도 있습니다.
이때 데이터를 통신하기 위해 그 체계를 구성해야 하는데, 서브넷마스크를 통한 서브넷팅이 이루어집니다. IP주소는 네트워크 주소와 호스트 주소로 구분되어 있습니다.
이 의미는 동일한 네트워크 영역에서 IP주소는 사용 호스트에 따라 여러 주소로 할당(분류)할 수 있습니다.
즉 하나의 큰 네트워크 영역을 작은 부분망으로 잘게 나누어 효율적인 관리 및 사용을 하는데, 이를 서브넷이라 합니다.
이때 서브넷으로 구성하기 위해 필요한 선별 기준이 서브넷 마스크이며, 이러한 선별 과정을 서브넷팅이라 합니다.
각 Router 마다 IP주소 및 해당 포트들이 모두 설정되어 있어야 라우터 통신이 가능합니다.
보통 많이 사용하는 라우팅 방식으로 Static 라우팅 방식이 있으며, 사람이 수동으로 경로를 라우터에 설정하여 패킷처리를 하는 방식이 있습니다.
IP그룹을 나누어(서브넷 구성) 각 PC와 라우터 간 포트, 연결링크 간 IP주소를 할당한 후 각 PC에서 자신의 대역(switch 통신)을 제외한, 다른 대역(라우터 통신)에 대한 라우팅 테이블을 작성(인접한 라우터를 게이트웨이로 설정)합니다.
정적 라우팅 테이블 작성이 완료되었을 때, 패킷이 경로별 네트워크 대역 및 경로 등을 확인할 수 있습니다.
라우팅 테이블이 완료된 이후 다른 대역의 PC 간 데이터 통신이 가능한 상태가 됩니다.
※ 각 Router, PC 별 포트 및 IP주소 할당과정은 별도 작성
IP주소 및 Port 설정 완료 후, Kim이 Linda에게 데이터를 전달할 경우
Kim과 Linda는 동일한 네트워크가 아니므로 Kim은 데이터를 R2에 전달합니다(R2는 Kim의 디폴트 게이트웨이).
R2도 Linda의 IP주소가 자신의 Connected 대역이 아니므로, R1에 전달합니다(R1은 R2의 디폴트 게이트웨이).
R1이 자신의 정적 라우팅 테이블을 참조하여, 131.240/28 via 131.160/27 임을 확인합니다.
이 정보를 참조하여 R1은 R3에 데이터를 전송하고, R3는 전송받은 데이터의 목적지 IP주소가 자신의 Connected 대역임을 인지하여 해당 포트(241)에 전달합니다.
포트를 통해 최종적으로 패킷이 Linda에게 전달됩니다.
Linda가 Kim에게 받은 데이터를 구글에 접속하여 전달할 경우
Linda가 자신의 데이터를 인터넷으로 통신을 시도하는데, R3는 해당 목적지 IP 주소가 자신의 대역이 아님을 인지하고 R3에 전달합니다.
R3도 역시 R1에 전달하고, R1은 정적 라우팅 테이블을 참조하였으나 없는 대역임을 확인합니다.
R1은 자신의 Hop(통신사, 디폴트 게이트웨이)에게 전달하여 0.0.0.0/0 via 131.0/25 의 IP라우팅을 진행하고, 해당 IP주소로 데이터를 전달하게 됩니다.
해당 IP에는 전 세계 네트워킹을 위한 수많은 라우터들이 존재하고, 이 중 구글에 해당되는 라우터에게 데이터가 전달되어 최종적으로 data 전달이 이루어집니다.
※ 전세계 네트워크 호스트(ex. 구글)는 IP라우팅을 통해 연결하는데, 이 IP라우팅은 정적 라우팅 테이블 방식을 통해 진행하지 않습니다.
※ IP라우팅을 진행하는 주체가 각 라우터들의 통신사(Hob)이며, Client가 인터넷을 통해 전세계 네트워크 호스트에 접근하고자 할때, Hob으로 데이터가 전달되어 IP라우팅이 진행됩니다.
동적라우팅
사람이 직접 라우팅 테이블을 작성하는 정적 라우팅과 달리, 경로정보가 네트워크 상황에 따라 동적으로 변화하고 이 중 빠르게 정보를 얻을 수 있는 경로로 변경하여 패킷을 전송하는 라우팅 방식을 의미합니다.
※ 동적NAT : 사설IP를 공인IP로 변환해주면서, 외부 인터넷에 접속할 수 있도록 도와주는 기술입니다.
※ 동적라우팅 : 라우팅 정보가 네트워크 상황에 따라 변경되는 체계에서, 가장 빠르게 정보를 얻을 수 있는 경로로 라우팅을 해주는 기술입니다.
동적라우팅은 EGP(Exterior Gateway Protocol, 다른 그룹에서 라우팅 정보교환)과 IGP(Interior Gateway Protocol, 동일 그룹에서 라우팅 정보교환), 두가지 방식이 있습니다.
기본적으로 동적 라우팅의 알고리즘은 목적지 IP주소까지 최적의 경로를 계산하고, 이를 라우팅 테이블에 업데이트하여 향후 라우팅에 반영하는 것입니다.
이러한 업데이트 방식은 인접한 라우터 간의 정보를 반영하는 분산형 업데이트, 하나의 topology에서 네트워크 정책변경 시 전체 topology에 대해 변경을 반영하는 중앙집중형 업데이트가 있습니다.
Distance Vector 라우팅
분산업데이트 방식의 동적 라우팅이며, 각 라우터 간 최소비용 경로를 계산하는 알고리즘입니다.
목적지 IP(라우터 간)까지의 거리(Hop count) 및 방향을 모두 고려하여 IP를 처리하고, 인접 라우터들과 주기적으로 라우팅테이블을 관리하고 교환하는 방식입니다.
분산업데이트이므로, 인접한 라우팅테이블만 고려하여 메모리를 절약할 수 있습니다.
비교적 구성이 간단한 방식이지만, 변경이 안된 상태에서도 주기적으로 라우팅테이블이 업데이트되어 무의미한 트래픽(looping) 이슈가 발생할 수 있고, 업데이트를 반영하는 시간이 느립니다.
Bellman-ford 라우팅
Distance Vector 알고리즘 기반의 라우팅 방식이며, 소규모 네트워크에 적합한 방법입니다.
연결링크의 최단거리 및 경로를 모두 고려하며, 이 역시 주기적으로 라우팅테이블을 업데이트합니다.
다익스트라(Dijstra’s Algorithm)와 달리 2중 반복을 통해 최단 경로를 구하며, 음수 가중치까지 반영할 수 있습니다.
업데이트 완료 후 인접 노드들에게 해당 정보를 공유합니다.
모든 라우팅테이블의 업데이트가 완료될 때까지 소요되는 시간을 Convergence time이라 합니다.
라우팅테이블 업데이트 과정
각 테이블의 column과 row들은 각 항목의 노드들끼리 접근하기 위해 필요한 최단경로를 나타냅니다.
이때 dx(y)는 노드 x에서 노드 y로의 최단 경로를 나타내며, 이는 노드 간 비용인 c(x,y)를 누적하여 계산하면 구할 수 있습니다.
한번에 갈 수 있는 경우와 여러 노드를 거쳐 가야 하는 경우를 모두 고려해야 하므로, c(x,x1) + c(x1, x2) + .. + c(xn,y)의 형태로 계산하여 구합니다.
node q에서 node e까지의 최단 경로를 라우팅 테이블에 update 할 경우
※ 음수 간선이 없으므로 최소 비용이 곧 최단 경로입니다.
1. listening : 최초 경로 탐색
q에서 갈 수 있는 노드 중 t를 통한 경로를 계산한다고 할 때, 인접노드인 t는 e에게 갈 수 있는 최소 경로 비용인 1을 q에게 알려줍니다.
이때 q는 이를 이용하여 경로비용을 5(4 + 1)로 계산하여 라우팅테이블에 적재합니다.
2. Change : 이중반복
q→e의 최단경로 dq(e)는, min{ 1 + dw(e), 5 + dr(e), 4+dt(e) } = .. = min{4, 8, 5} = 4입니다.
라우팅테이블에서 q > e 에 해당하는 항목이 4로 Change 되며, 이후 최소값이 변화할 경우 그에 맞게 갱신됩니다(다른 항목들도 동일한 원리로 구성).
3. Estimate, Notify : 라우팅테이블을 업데이트 하는 과정
4. Update : 라우팅테이블 업데이트 후 인접 노드들에게 전달
해당 정보들을 인접 노드에게 전달하여 라우팅테이블을 업데이트할 수 있도록 합니다.
최종적으로 Update한 라우팅 테이블