플러딩
플러딩(flooding)이란 어떤 노드에서 온 하나의 패킷을 라우터에 접속되어 있는 다른 모든 노드로 전달하는 것이다.
개요
플러딩은 정적 알고리즘으로, 어떤 노드에서 온 하나의 패킷을 라우터에 접속되어 있는 다른 모든 노드로 전달하는 것이다. 이는 대규모 네트워크에서 수정된 라우팅 정보를 모든 노드에 빠르게 배포하는 수단이다. 때로는 하나의 원천 노드로부터 실제 또는 가상 네트워크의 많은 특정 노드로 패킷들을 멀티캐시트하는 용도로 사용되기도 하며, 한 네트워크에서 라우터 정보를 수정하는 인터넷 프로토콜인 개방형 최단 경로 우선 프로토콜(OSPF)에서도 사용하기도 한다.[1]
일반적으로 2개의 타입의 플러딩이 있는데, 언컨트롤 플러딩(uncontrolled flooding)과 컨트롤 플러딩(controlled flooding)이 있다. 언컨트롤 플러딩 방식에서, 모든 노드는 이웃이 가지고 있는 패킷을 무한정 라우팅하며, 두 명 이상의 이웃이 브로드캐스트 스톰(broadcast storm)을 일으킨다. 반대로 컨트롤 플러딩 방식은 신뢰성이 높은 자체 알고리즘인 SNCF(Sequence Number Controlled Flooding)와 RPF(Reverse Path Forwarding)를 사용하고 있다. SNCF에서 모든 노드는 주소와 시퀀스 번호의 메모리를 가지고 있기 때문에, 노드는 자체 주소와 시퀀스 번호를 패킷에 부착한다. 패킷을 수신하면 RPF에 있는 동안 패킷을 즉시 보내 다음 노드에서 수신하면 송신자에게 다시 송신한다.[2]
특징
발생
플러딩이 발생하는 경우는 네 가지가 있다.
- MAC주소 테이블이 완전히 비어있는 경우, MAC주소 테이블을 통해 경로가 지정되지 않은 경우 모든 포트를 통해 전송하게 된다.
- MAC주소 테이블이 가득 차 있는 경우, 스니핑과 같은 공격을 통해 MAC주소 테이블이 가득차게 되는 경우 모든 포트를 통해 전송하게 된다.
- 프레임의 목적지 MAC주소가 MAC주소 테이블에 없는 경우나 다른 경우 모든 포트로 전송하게 된다.
- 보내고자 하는 프레임의 목적지 MAC주소가 브로드캐스트인 경우 모든 포트로 전송하게 된다.
장단점
모든 패킷을 모든 나가는 에지를 통해 보내는라우팅 알고리즘 형식으로 패킷을 전달할 수 있으나 동일한 패킷의 여러 복사본이 전달될 수 있다. 또한 플러딩(Flooding)은 자연스럽게 네트워크의 모든 경로를 사용하기 때문에 패킷 전송을 위한 최단 경로를 찾아 사용하는 것이 보장되며 복잡성이 없어 구현하기가 매우 쉽다는 것이다.[3]
하지만 패킷은 하나의 목적지만 가지지만 모든 링크를 통해 전송되기 때문에 대역폭의 낭비가 크기 때문에 컴퓨터 네트워크의 신뢰성을 떨어 뜨릴 수 있는 단점이 있다. 또한 네트워크에서 복제 사본이 지속적으로 생겨 대역폭에 부하를 증가시키고 이러한 중복 처리를 하기 위해서는 따로 예방 조치를 해주어야한다.[2] 이를 예방하기 위해 다음과 같은 방법들이 제시되고 있다.
- 셀렉티브 플러딩(Selective flooding) : 플러딩을 보다 실용적으로 사용하기 위해 변형된 방식이다. 이 알고리즘에서 라우터는 들어오는 모든 패킷들을 모든 라인에 보내지 않고 올바른, 동일한 방향으로 가는 라인에만 보냄으로써 단점을 부분적으로 해결할 수 있다.[4]
- 홉 카운트(hop count) : 직접 하나의 선을 따라 흐르는 것이 아닌, 데이터가 출발지와 목적지 사이에서 통과해야 하는 중간 장치들의 개수를 가리킨다. 데이터가 레이어 3 네트워크에서 다른 곳으로 이동되면 데이터 경로를 따라 각 라우터는 홉(hop)을 구성한다. 그러므로 홉 카운트(hop count)는 네트워크 내의 거리를 측정하는 기본적인 기준으로 된다.[5]
- 생존 시간(time to live) : 컴퓨터나 네트워크에서 데이터의 유효 기간을 나타내기 위한 방법이다. 생존 시간은 계수기나 타임스탬프의 영향으로 데이터에 포함되며, 정해진 유효기간이 지나면 데이터는 폐기된다. 컴퓨터 네트워크에서 생존 시간은 패킷의 무한 순환을 방지하는 역할을 한다. 또한 컴퓨터 애플리케이션에서 생존 시간은 캐시의 성능이나 프라이버시 수준을 향상시키는 데에도 사용된다.[6]
차이점
플러딩은 주로 브로드캐스팅과 비교되곤 하는데, 브로드 캐스팅은 동시에 모든 호스트에 패킷을 보내며, 플러딩은 모든 호스트에 동시에 패킷을 보내지 않는다는 차이가 있다. 패킷은 결국 플러딩으로 인해 네트워크의 모든 노드에 도달하며, 플러딩은 동일한 패킷을 동일한 링크를 통해 여러 번 전송할 수 있지만 브로드 캐스트는 링크를 따라 패킷을 한 번만 전송한다. 브로드 캐스트가 문제를 일으키지 않는 동안 동일한 패킷의 복사본이 노드에 도달할 수 있으며, 플러딩과 달리 브로드 캐스트는 패킷에 특수 브로드 캐스트 주소를 지정하여 전송된다.[3]
활용
- OSPF(Open Shortest Path First) : 노폴로지(LSA)로 업데이트 전송에 사용한다.
- 데이터 전송률이 낮은 통신에서 플러딩은 Sub-1 GHz 주파수 대역에서 작동하는 베메시(VEmesh)와 2.5GHz 주파수 대역에서 작동하는 블루투스 메시 네트워킹과 같은 전용 프로토콜에서 빠르고 강력한 데이터 통신을 이용할 수 있다. 이 두 프로토콜은 모두 전문 및 상용 조명 제어에 사용되는 디지털 주소 지정 조명 인터페이스의 기초 기술 역할을 해준다.[2]
문제점과 대안
프럴딩은 브로드캐스트이며 PC에서 사용되는 많은 통신용 프로토콜들이 브로드캐스트를 사용하기 때문에 스위치에서 접속된 장비가 많아질수록 브로드캐스트 트래픽도 증가하고, 이로 인한 네트워크의 성능저하가 심각해진다. 이를 해결하기 위해 나온 장비가 바로 라우터인데, 라우터는 스위치의 브로드캐스트 도메인을 해결할 수 있다. 라우터 없이 스위치만으로 해결하기 위한 방법은 바로 VLAN을 도입하는 것이다. 동일한 스위치라 할지라도 VLAN을 통해 네트워크를 나누게 되면 브로드캐스트 도메인이 해결되어 플러딩으로 인한 성능 저하와 보안성 문제를 해결할 수 있다.[7]
각주
- ↑ 〈플러딩〉, 《네이버 지식백과》
- ↑ 2.0 2.1 2.2 "Flooding(computer networking)", WIKIPEDIA
- ↑ 3.0 3.1 BETWEENMATES, 〈플러딩과 브로드 캐스팅의 차이〉, 《나무위키》, 2019-07-18
- ↑ Tigercow.Door, 〈(네트워크) 라우팅 알고리즘(ROUTING ALGORITHM), 다익스트라 알고리즘(DIJKSTRA ALGORITHM)〉, 《티스토리》, 2017-11-14
- ↑ 〈홉 (네트워크)〉, 《위키백과》
- ↑ 〈Time to live〉, 《위키백과》
- ↑ Stein, 〈스위치의 플러딩(Flooding)에 대해 알아보고, 발생하는 상황을 설명하시오〉, 《네이버 블로그》, 2010-11-02
참고자료
- 〈플러딩〉, 《네이버 지식백과》
- BETWEENMATES, 〈플러딩과 브로드 캐스팅의 차이〉, 《나무위키》, 2019-07-18
- "Flooding(computer networking)", WIKIPEDIA
- 〈홉 (네트워크)〉, 《위키백과》
- 〈Time to live〉, 《위키백과》