본 내용은 Computer networking : a top-down approach 책을 바탕으로 정리하였습니다.
Index
- 1. 링크 가상화 : MPLS
- 2. 데이터 센터 네트워킹
- 3. 총정리
드디어 프로토콜 스택의 마지막 포스팅이다!
이 다음 포스팅부터는 1~15까지 배운 내용을 토대로 예시 문제를 통해 복습해볼 예정이다.
1. 다중 프로토콜 레이블 스위칭 : MPLS
다중 프로토콜 레이블 스위칭(Multiprotocol Label Switching, MPLS)은 가상회선 네트워크의 주요 개념인 고정 길이 레이블을 도입함으로써 라우터의 전달속도를 향상시키기 위해 발전해왔다.
MPLS의 목표는 고정 길이 레이블과 가상회선을 기반으로 데이터그램을 전달하기 위해서
데이터그램을 선택적으로 레이블링해서 라우터로 하여금 고정 길이 레이블 기반의 데이터그램을 전달할 수 있도록 구조를 확장시키는 것이다.
1.1 MPLS capable router
MPLS 가능 라우터에 의해 처리되는 링크 계층 프레임의 형식에 대해 살펴보자.
MPLS 헤더에는 레이블과 3개의 예약 비트, 끝을 나타내는 비트, ttl 필드가 존재한다.
- Lable : 레이블에는 MPLS 라우터에서 패킷을 포워딩해야할 위치를 결정하기 위한 정보가 포함된다.
- exp : exp 비트는 우선순위를 결정한다.
- s : MPLS 라우터에 여기가 마지막 레이블인지 알려준다.
- ttl : 패킷을 버리기 전까지 가능한 홉 횟수를 식별한다.
MPLS 가능 라우터는 MPLS 레이블을 포워딩 테이블에서 찾아 적당한 출력 인터페이스로 데이터그램을 전달하여 MPLS 프레임을 전달하므로 종종 레이블 스위치 라우터라고 부른다.
1.2 MPLS 과정
그림과 같이 테이블이 만들어지는 과정을 설명하자면
- 1. R1은 자신이 목적지 A까지 라우팅할 수 있고, MPLS 레이블 6을 포함하는 프레임을 목적지 A로 전달할 수 있음을 R2,R3에게 광고한다.
- 2. R3은 자신이 목적지 A,D까지 라우팅할 수 있고, MPLS 레이블 10, 12를 포함하는 입력 프레임을 각각 이들 목적지를 향해 스위칭할 수 있음을 라우터 R4에게 광고한다.
- 3. R2는 목적지 A에 도달할 수 있고 MPLS 레이블 8을 포함하는 수신 프레임을 A로 스위칭할 수 있음을 라우터 R4에게 광고한다.
- 4. R4는 이제 3개의 테이블 요소들을 갖게 된다.
이들은 link-state flooding protocol을 사용해 모두 전달받는것임을 알아두자!
2. 데이터 센터 네트워킹
최근 구글, 페이스북, 아마존과 같은 거대한 인터넷 기업들은 대규모 데이터 센터를 구축하고 있다.
데이터 센터는 호스트들 간 상호연결 및 데이터 센터와 인터넷 간 상호연결을 위해 자체 데이터 센터 네트워크를 갖고 있다.
데이터 센터에서 작업을 수행하는 것은 호스트들인데,
데이터 센터의 호스트는 피자 박스 모양의 블레이드(blade)라고 불리는 호스트로 CPU, memory, 디스크 저장장치를 가진다.
이 호스트들은 20~40대의 블레이드를 적재할 수 있는 랙(rack)에 적재된다.
랙의 맨 위에는 TOR 스위치라 불리는 스위치가 있으며, TOR 스위치는 랙에 있는 호스트들을 연결해 주고
데이터 센터의 다른 스위치들과 연결된다.
해당 그림은 다음과 같다.
그림에서 스위치들 위에는 Load balancer 라는 부하 균등화기가 존재하는데,
이 장치는 요청을 호스트로 분배하고, 호스트의 현재 부하 상태에 따라서 호스트 간의 부하를 균등하게 조절한다.
3. 총정리
이번에는 우리가 지금까지 배웠던 네트워크 용어들, 알고리즘, 체계들을 모두 통합해 하나의 예시로 설명하려 한다.
3.1 총 과정 : 학교 네트워크의 laptop으로 구글까지
위 그림은 학생 suhwan이 학교의 이더넷 스위치에 laptop을 연결하고, 웹 페이지를 다운로드하는 것을 보여준다.
1) suhwan은 laptop을 키고, 학교 이더넷 스위치에 연결되어 있는 이더넷 케이블에 연결한다.
하지만 suhwan은 처음 연결 시 IP 주소 없이는 아무것도 할 수 없다.
따라서 처음으로 취하는 행동은 로컬 DHCP 서버로부터 IP 주소를 획득하기 위해 DHCP 프로토콜을 실행할 것이다.
2) suhwan의 laptop의 운영체제는 DHCP 요청 메시지를 만들어서 이 메시지를 목적지 포트(DHCP 서버), 출발지 포트(DHCP 클라이언트)를 갖는 UDP 세그먼트에 넣는다. 이 UDP 세그먼트는 IP 목적지 주소와 출발지 IP 주소를 갖는 IP 데이터그램에 들어간다.
3) DHCP 요청 메시지를 포함한 IP 데이터그램은 이더넷 프레임에 들어간다. 이때, 스위치에 연결된 모든 장치에 이 프레임이 브로드캐스트될 수 있도록 이더넷 프레임의 목적지 MAC 주소는 FF: x 6으로 설정되고, 이 프레임의 출발지 MAC주소는 suhwan의 laptop MAC 주소가 될 것이다.
4) DHCP 요청 메시지를 포함한 브로드캐스트 이더넷 프레임은 suhwan의 laptop이 처음으로 이더넷 스위치에 전송한 프레임이고, 스위치는 프레임을 자신의 모든 출력 포트로 브로드캐스트한다.
5) 라우터는 목적지의 MAC 주소로 향하는 인터페이스로 DHCP 요청 메시지가 포함된 브로드캐스트 이더넷 프레임을 수신하고, 이더넷 프레임으로부터 IP 데이터그램을 추출한다.
데이터그램의 브로드캐스트 IP 목적지 주소는 이 IP 데이터그램이 노드의 상위 계층 프로토콜에 의해 처리되어야 함을 의미한다. 따라서 데이터그램의 payload가 UDP로 역다중화되고, UDP 세그먼트로부터 DHCP 요청 메시지가 추출될 수 있다.
이제 DHCP 서버는 DHCP 요청 메시지를 갖게 된다.
6) 이제 DHCP 서버는 suhwan의 laptop주소, DHCP 자체의 IP 주소, 디폴트 게이트웨이 라우터(first-hop)의 IP 주소, 서브넷 블록(네트워크 마스크)을 포함하는 DHCP ACK 메시지를 만든다.
DHCP ACK 메시지는 UDP 세그먼트에 들어가고, UDP 세그먼트는 IP 데이터그램에 들어가며, IP 데이터그램은 이더넷 프레임에 들어간다.(메시지 -> UDP segment -> ip datagram -> ethernet frame 순서)
따라서 이더넷 프레임은 이제 출발지 MAC 주소, 라우터 인터페이스의 MAC 주소, 목적지 MAC주소를 갖는다.
7) DHCP ACK 메시지를 포함한 이더넷 프레임은 라우터에 의해서 스위치로 전송되고,
스위치는 자가학습을 통해서 출발지 -> 목적지 사이 전달되는 포트를 알게된다.
8) suhwan의 laptop은 DHCP ACK를 포함하는 이더넷 프레임을 수신한 후 IP 포워딩 테이블에 디폴트 게이트웨이의 주소를 저장한다.
이제 suhwan의 laptop은 자신의 네트워킹 구성요소를 초기화하고, 웹 페이지를 가져올 준비를 한다.
지금까지의 과정이 suhwan의 laptop이 네트워크에 연결되기까지의 과정이다.
이제 suhwan은 웹 브라우저에 URL로 www.google.com 을 입력하면 웹 웹 브라우저에 구글 홈페이지가 출력되도록 하는 긴 이벤트들이 시작된다.
suhwan의 웹 브라우저는 구글로 HTTP 요청 메시지를 보내기 위해 TCP 소켓을 생성하는 절차를 시작한다.
그러기 위해서는 구글의 IP 주소를 알아야하고, 우린 앞서 DNS 프로토콜이 이름을 IP 주소로 변환해 주는 서비스를 제공하는 데 사용된다는 것을 배웠다.
9) suhwan의 laptop 운영체제는 DNS 질의 메시지를 생성하고, 이 메시지의 질문 부분에 구글 url을 넣는다.
이후 메시지는 UDP 세그먼트에 들어가고, UDP 세그먼트는 목적지 IP 주소와 출발지 IP 주소 (아까 DHCP ACK 메시지에 들어있던 DNS 서버 주소) IP 데이터그램에 들어간다.
10) suhwan의 laptop은 DNS 질의 메시지가 포함된 데이터그램을 이더넷 프레임에 넣는다.
이 프레임은 게이트웨이 라우터로 보내지지만, 게이트웨이 라우터의 MAC 주소는 알 수 없다.
따라서 suhwan의 laptop은 ARP 프로토콜을 사용하여 게이트웨이 라우터의 MAC 주소를 알게된다.
11) suhwan의 laptop은 목표 IP 주소를 포함한 ARP 질의 메시지를 생성하고,
ARP 메시지는 브로드캐스트 목적지 주소(FF x 6)를 같은 이더넷 프레임에 포함되어 스위치로 전송된다.
스위치는 flooding을 통해 프레임을 전달한다.
12) 게이트웨이 라우터는 학교 네트워크로의 인터페이스를 통해 ARP 질의 메시지를 포함하고 있는 프레임을 수신하고,
ARP 메시지로부터 목표 IP 주소를 찾아 자신의 인터페이스 IP 주소와 비교해 일치 여부를 검사한다.
이후 게이트웨이 라우터는 IP 주소에 대응하는 MAC 주소를 포함해 ARP 응답 메시지를 suhwan의 laptop에 전달한다.
13) suhwan의 laptop은 ARP 질의 메시지가 포함된 프레임을 수신해서 게이트웨이 라우터의 MAC 주소를 추출한다.
14) 이제 suhwan의 laptop은 게이트웨이 라우터의 MAC 주소로 DNS 질의 메시지가 포함된 이더넷 프레임을 보낼 수 있다!!
suhwan의 laptop은 프레임을 스위치로, 스위치는 프레임을 게이트웨이 라우터로 전달하게 된다.
15) 게이트웨이 라우터는 프레임을 받아 DNS 질의가 포함된 IP 데이터그램을 추출한다.
이후 데이터그램의 목적지 주소를 포워딩 테이블에서 찾아 프레임을 해당 링크로 전송한다.
16) intra-domain 라우팅 프로토콜에 의해 데이터그램을 DNS 서버로 전달할 출력 인터페이스를 결정한다.
17) DNS 질의가 포함된 IP 데이터그램이 DNS 서버에 도착한다.
DNS 서버는 구글 DNS 데이터페이스에서 구글 URL을 찾아 해당하는 IP 주소를 찾고 돌려준다.
18) 마침내 suhwan의 laptop은 DNS 메시지로부터 구글 url의 IP 주소를 추출한다.
이제 suhwan은 구글 서버에 접속할 준비가 되었다.
19) 이제 suhwan의 laptop은 구글 url로 보내는데 사용할 TCP 소켓을 생성할 수 있다.
먼저 suhwan의 laptop의 TCP는 구글 url에 있는 TCP와 3-way handshake를 수행해야 한다.
따라서 suhwan의 laptop은 TCP SYN 세그먼트를 생성 -> IP 데이터그램에 넣고 ->
해당 MAC주소의 프레임에 넣어 스위치로 전송한다.
20) 학교 -> 구글 까지 가는 과정에 속한 네트워크에 있는 라우터들은 TCP SYN 세그먼트를 포함하고 있는 데이터그램을 각 라우터의 포워딩 테이블을 사용하여 구글 url로 전달한다.
이때 BGP 프로토콜을 사용하여 라우터의 포워딩 테이블 엔트리를 결정한다.
21) 마침내 TCP SYN 세그먼트를 포함하고 있는 데이터그램이 구글 url에 도착한다.
이후에는 3 way handshake 과정이 정상적으로 되면서, suhwan의 laptop은 구글 url에게 소켓을 보낼 수 있게 된다.
'Computer Network' 카테고리의 다른 글
14. 스위치 근거리 네트워크 : LANs (0) | 2020.06.16 |
---|---|
13. Link layer (0) | 2020.06.15 |
12. SDN이란? (0) | 2020.06.14 |
11. 인터넷에서의 라우팅 (1) | 2020.06.14 |
10. 라우팅 알고리즘 (2) | 2020.06.09 |