11주차-1

Chooooo·2023년 1월 20일
0

컴퓨터네트워크

목록 보기
4/11
post-thumbnail

컴퓨터네트워크 수업 내용 복습!


‏‏‎ ‎

11주차 -1 image

이런 것들 지금부터 공부할꺼야.


네트워크 계층의 중요한 기능들

  • forwarding :

  • routing

입력포트란 패킷이 들어온 포트를 말하고, 출력 포트란 패킷이 나가는 포트를 말한다.

라우팅과 포워딩을 얘기하기 위해서는 포워딩 테이블 or 라우팅 테이블이라고 부르는 표에 대해서 알아야한다.

라우팅 테이블이라고 불리는 이유는 라우팅 알고리즘을 통해 이 테이블이 만들어지기 때문이며, 포워팅 테이블이라고 불리는 이유는 이 테이블을 참조하여 포워딩이 이뤄지기 때문이다.

인터넷으로 대표되는 네트워크에서 출발지 부터 목적지까지 데이터를 보낼 수 있는 경로는 무수히 많다. 거쳐서 갈 수 있는 라우터의 갯수가 많다는 얘기다.

이렇게 많은 경로중에서 한 경로를 선택하는 것이 라우팅 알고리즘이다.

보통은 비용이 가장 적게 드는(가장 빨리 전송할수 있는) 경로가 선택된다.

그 선택된 경로를 저장해 둔 것이 포워딩 테이블이다.

어떤 포트로 패킷을 내보냈을때 목적지까지 가장 빨리 도달하는가를 계산해서 저장해둔 표라고 볼 수 있다.

라우팅 알고리즘은 RIP, OSPF와 같은 라우팅 테이블을 만드는 방법(protocol)을 말한다.

라우팅이란 이렇게 라우팅 알고리즘을 이용하여 포워딩 테이블을 만드는 작업이라고 볼 수 있다.

라우팅 테이블을 만드는 과정이 곧 출발지로부터 목적지까지 경로를 찾는(결정하는) 일이 된다.

‏‏‎ ‎

포워딩은 포워딩 테이블에 적힌 목적지 주소에 대응된 출력 포트로 패킷을 이동시키는 작업을 말한다.

다시말해서 라우터의 기능인 라우팅과 포워딩은 라우팅 알고리즘을 통해 만들어진 포워딩 테이블을 참조하여 패킷의 목적지에 맞게 적당한 포트로 패킷을 이동시키는 것이라고 할 수 있다.



포워딩은 데이터 평면, 라우팅은 제어 평면.

‏‏‎ ‎

이제 네트워크 계층의 제어 평면에 대해서 알아보자.

라우터의 동작 원리나 패킷의 이동 방식을 알아보았던 데이터 평면과는 달리 네트워크 계층의 제어 평면 장에서는 패킷의 라우팅 이동 경로를 설정하는 라우팅 알고리즘과 소프트웨어 정의 네트워크가 어떻게 네트워크 계층을 데이터와 제어 평면으로 분리할 수 있었는지 자세히 알아볼 수 있다. 또 IP 네트워크의 관리에 사용되는 프로토콜인 ICMP, SNMP에 대해서도 알아보자.


1. 제어 평면의 개요

라우터는 입력 포트로 들어온 패킷의 헤더를 조사해 가공하거나 올바른 출력 포트로 내보내는 역할을 한다. 이 역할을 수행하기 위해서 필요한 것이 포워딩 테이블이나 플로우 테이블이다.

이 포워딩, 플로우 테이블이 설정되고 유지되는 방법에는 두 가지가 있다.

‏‏‎ ‎

  • 라우터별 제어(Per-router control plane):

포워딩과 라우팅 기능이 개별 라우터에 포함되어 있어 라우팅 알고리즘이 라우터 각각에서 동작하는 경우.

11주차 -1 image

‏‏‎ ‎

  • 논리적으로 중앙 집중된 제어(SDN) : 논리적으로 집중된 단일 컨트롤러가 포워딩 테이블을 작성하고 이를 개별 라우터가 사용할 수 있도록 배포하는 경우를 말한다.

--> 속도가 매우 빠름.

11주차 -1 image

‏‏‎ ‎

‏‏‎ ‎


라우팅 알고리즘 중에 link state, distance vector에 대해서만 알아보자.

라우팅 프로토콜의 목적은 좋은 경로를 결정하는 것! (가장 빠른 길 딜레이 시간이 가장 짧은 것...) path(경로)는 라우터를 통해서 전달되기 때문에 라우터들의 "연속"적인 길이 될꺼야

"좋은" 경로에서 좋은은 비용, 가장 빠른 것, 가장 혼잡하지 않은 것 등이 될 수 있어

11주차 -1 image

11주차 -1 image

라우팅 알고리즘 분류

링크 state 알고리즘은 모든 global한 방법. 모든 정보를 다 가지고 있음.

- 링크 상태 알고리즘

링크 상태(link state) 알고리즘은 모든 링크의 비용을 알고 있다. 이는 각 노드가 자신과 연결된 링크의 비용을 다른 노드로 브로드캐스트함으로써 가능하다.대표적인 링크 상태 알고리즘은 다익스트라 알고리즘을 통해 수행된다. 다익스트라 알고리즘은 출발노드에서 k개의 노드로 향하는 최소 비용 경로를 k번째의 반복을 통해 얻을 수 있다. 이 알고리즘은 출발 노드와 연결된 링크의 비용만을 파악한 상태에서 시작된다. (연결되지 않은 링크의 비용은 무한대로 설정) 그 후 비용이 최소인 링크로 연결된 노드를 출발지 노드와 같은 집합 N'에 넣는다. 집합 N'이 갱신된 후에는 다시 이웃 링크와의 비용을 계산한다. 이 과정에서 집합 N'이 갱신되기 전과 후의 링크 비용은 달라진다. 이렇게 k번의 알고리즘 수행을 마치고 나면 각각의 노드에서 다른 노드로 가는 최소비용경로가 형성된다. 이 알고리즘의 시간복잡도는 O(n^2)이다. 더 효율적 구현을 했을 경우O(nlogn)까지 가능.

한번 브로드 캐스팅 역시 시간 복잡도 O(N)

여기서 나온 결과를 포워딩 테이블에 준다.

- 거리 벡터 라우팅 알고리즘

거리 벡터 라우팅 알고리즘은 모든 링크의 비용을 알고 있는 링크 상태 알고리즘과 달리 모든 링크의 비용을 파악하지 않은 상태로 시작하는 반복적, 비동기적, 분산적 알고리즘이다. 각 노드는 이웃의 노드로부터 링크 비용에 관한 정보를 받고 계산을 수행하며, 수행 결과를 이웃 노드에게 전파한다는 점에서 분산적이며 이 계산이 더 이상 교환할 정보가 없을 때까지 반복된다는 점에서 반복적이다. 또 모든 노드가 정확히 맞물려 떨어질 필요가 없다는 점에서 비동기적이기도 하다. 거리 벡터 라우팅 알고리즘은 다음의 벨만-포드 식에 의해서 계산된 최소 비용을 계산한다

11주차 -1 image

주변 노드에만 ! 알려주는거지.

11주차 -1 image

LS : link state

DV : distance vector

모두 안전.

11주차 -1 image

‏‏‎ ‎

위에서 살펴본 두 알고리즘을 비교해보자. 우선 두 알고리즘 모두 최소 비용 경로를 계산하는 알고리즘이다. 하지만 거리 벡터 알고리즘(DS)은 직접 연결된 링크의 비용만을 알고 있지만 링크 상태 알고리즘(LS)은 모든 링크의 비용을 파악해야 한다.

링크 상태 알고리즘은 어느 한 노드가 고장나거나 잘못된 정보를 전달해도 포워딩 테이블을 안정적으로 유지할 수 있지만, 거리 벡터 알고리즘은 위와 같은 상황에서 잘못된 결과가 전체로 확산되는 문제가 나타난다.(링크 상태 알고리즘이 더 안정적??_ )

하지만 링크 상태 알고리즘이 라우팅 테이블을 수정하려면 전체 노드에게서 메세지를 받아야 하는데 비해 거리 벡터 알고리즘은 수정된 노드의 메시지만 반영하면 되기에 거리 벡터 알고리즘의 복잡성이 더 낮다고 볼 수 있다. 그래도 DV가 좀 더 쉽다.

profile
back-end, 지속 성장 가능한 개발자를 향하여

0개의 댓글