본문 바로가기

네트워크

[네트워크] 4. 브리지, 스위치

이 게시물은 후니의 쉽게 쓴 CISCO 네트워킹 4판을 공부한 내용을 바탕으로 작성됨.

 


브리지 Bridge 

 

스위치의 조상이 브리지이기 때문에 스위치를 이해하기 앞서 브리지에 대해 다루어본다. 

 

허브의 가장 큰 단점을 다시 떠올려보면 Collision domain이 매우 크다는 것이다. (Collision domain을 분할할 수 없다.) 허브를 이용해 구성한 네트워크의 모든 디바이스는 하나의 Collision domain에 속한다. 이 Collision domain을 작게 만들기 위해서는 브리지/스위치를 사용하여야 한다.

 

CCNA / Network+ Tutorial: Bridges, Switches, And Broadcast Domains (thebryantadvantage.com)

 

 

브리지를 사용한 후의 Collision domain은 위와 같다. 왼쪽에 있는 두 PC가 서로 통신할 때, 오른쪽에 있는 두 PC도 서로 통신할 수 있다. 만약 왼쪽 상단의 PC가 왼쪽 하단의 PC와 통신하는 경우에는 Bridge를 통과하지 않고 프레임 전달이 이루어진다.

 

 


브리지와 스위치의 작동원리 

 

브리지와 스위치는 기본적으로 다음과 같은 5개 절차를 따라 동작한다.

 

  1. Learning
  2. Flooding
  3. Forwarding
  4. Filtering
  5. Aging

 

 

 

하나하나 살펴보자.

 

1. Learning - A라는 PC가 누군가에게 프레임을 전송하기 위해 브리지 or 스위치에 프레임을 전달하면 브리지 or 스위치는 A의 MAC address를 자신의 MAC address table에 저장한다. 일단 통신이 발생한 디바이스의 위치를 저장해두는 것이다. 

 

Segment는 그냥 각 Collision domain을 부르는 영역이라고 이해하면 된다. 만약 Segment 1에서 2에 있는 PC로 프레임을 전송하는 경우 : 쉽게 말해서 A에서 C혹은 D로 프레임을 전송하는 경우 A에서 일단 프레임을 쏴 보내는데 Ethernet 성질에 의해 A와 같은 Segment에 있는 디바이스들인 B, Bridge는 A가 전송한 프레임을 받게 된다. 따라서 브리지는 A가 전송한 프레임을 얻게되고, 해당 프레임이 어디서 출발한 것인지를 출발지 MAC address를 통하여 파악한다. 그 후 브리지는 MAC address table에 해당 MAC address를 기록해둔다. (A의 위치를 적어둔다.)

 

 

 

2. Flooding - 브리지의 중요 역할은 어떤 프레임이 브리지에 전송되었을 때, 이것의 목적지 MAC address를 확인한 후 이 프레임을 다리에 통과시킬 것인지 / 아닌지를 판단하는 것이다. 하지만 어떤 프레임의 목적지 MAC address가 도통 처음보는 것인 경우가 있다. (MAC address table에 없는 경우) 이때는 출발지 address를 제외한 모든 디바이스에 프레임을 뿌려야만 하는데, 이것을 Flooding이라고 한다. (브리지 입장에서도 해당 디바이스가 어딨는지 모르니까 별 다른 수가 없다.)

 

뿐만 아니라 목적지가 브로드캐스트, 멀티캐스트인 경우에도 Flooding을 수행한다.

 

 

 

3. Forwarding - Flooding과는 반대로 프레임에 담긴 목적지 MAC address의 디바이스 위치를 아는 경우이다. 이때는 해당 MAC address를 가진 디바이스가 존재하는 segment로만 프레임을 보내주면 되는데, 이것을 Forwarding이라고 한다.

 

 

 

4. Filtering - 위 그림에서 A → B 로 프레임을 전달했다고 생각해보자. A와 B는 같은 Segment 내에 있으므로 브리지를 통과하지 않아도 된다. Ethernet 특성 상 A에서 B 뿐만 아니라 브리지로도 프레임이 전송되는데, 이때 브리지가 Filtering을 수행하여 프레임이 다리를 넘어가는 것을 막는다. 이 과정을 통해 Collision domain이 분할되는 것.

 

 

 

5. Aging - 브리지는 맨 처음 Learning 과정을 통해 MAC address를 table에 저장해둔다. 하지만 table의 공간은 한정되어있기 때문에 주소들을 계속 저장해 둘 수는 없다. 따라서 table에 저장된 주소들을 일정시간 이후 삭제하는데, 디폴트 값은 5분이다. 어떤 디바이스가 프레임을 전달하면 브리지에 해당 디바이스의 MAC address가 저장되는데, 5분이 넘도록 프레임을 재전송하지 않으면 table에서 주소가 지워진다. 

 

 

 

 

 

 

Ethernet 장비?

- 허브, 스위치, 브리지, 라우터, 모뎀 

 

 

 

 


브리지와 스위치의 차이점 

 

브리지와 스위치는 둘 다 L2 장비이고 하는 일이 비슷하기 때문에 같은 장비라고 생각할 수 있지만 그런 와중에도 분명한 차이가 있다.

 

  1. 스위치가 브리지보다 비싸며 요즘엔 스위치만 쓴다.
  2. 스위치는 프레임을 HW 방식으로 처리 / 브리지는 SW 방식으로 처리하기 때문에 스위치의 처리속도가 훨씬 빠르다.
  3. 브리지는 모든 포트들이 같은 속도를 지원하지만 스위치는 서로 다른 속도를 연결할 수 있다 ex) 10M, 100M 포트가 한 장비에 같이 존재할 수 있다.
  4. 브리지는 보통 2-3개의 포트를 지원하지만 스위치는 몇십 몇백 개의 포트를 지원한다.
  5. 스위치는 Cut through, Store and forward을 모두 사용하지만 브리지는 Store and forward 방식만을 사용한다

 

 

 

 

브리지와 스위치의 프레임 처리 방법

 

  • Store and forward  -  프레임을 일단 전부 다 받아들인 후에 해당 프레임에 에러 여부나 출발지, 목적지를 파악하여 처리하는 방식. 프레임 전체를 조사하여 에러 여부를 판단하기 때문에 에러 복구능력이 뛰어나다. 만약 에러가 감지되면 그 프레임을 버리고 재전송을 요구한다. → 에러가 자주 발생하는 경우에 효율이 좋은 방식.

 

  • Cut through  -  프레임의 목적지 주소만 본 후 바로 전송을 처리한다. Store and forward 방식은 프레임이 전부 다 들어온 후 전송을 시작하지만, Cut through는 맨 앞 48 bit (목적지 주소)만 확인한다. 프레임 전체를 확인하는 것은 아니라 에러 복구 능력이 약하지만 전송 속도가 빠르다.

 

  • Fragment free  -  앞선 두 방식을 결합한 방식. 프레임의 앞 512 bit를 확인한다. 적당히 길게 확인해서 에러를 줄이면서도 전체 다 확인하는 것은 아니라 속도도 약간 빠르다.

 

 

→ 최근에는 하드웨어의 발전으로 Store and forward 방식도 속도가 나쁘지 않다고 한다.

 

 

 

 

 

 

 


Looping 

 

회로에서 배웠던 Loop를 떠올리면 쉽다. Loop를 뱅글뱅글 도는 게 Looping이다.

 

Troubleshooting Transparent Bridging Environments - Cisco

 

 

  1. Host A가 Broadcast Packet을 전송한다.
  2. Ethernet 특성 상 같은 세그먼트에 있는 모든 장비로 브로드캐스트를 전달한다.
  3. Bridge A, B는 Flooding을 한다. (브로드캐스트니까)
  4. Bridge A에서는 Host B와 Bridge B에 브로드캐스트를 전달한다. (Host B에만 전달하면 Looping이 발생하지 않겠지만 브로드캐스트 특성 상 Network 1을 거쳐 Bridge B에도 전달된다.)
  5. 그러면 Network 2 방향으로 브로드캐스트가 Bridge B를 통해 다시 올라온다.
  6. 이 패킷은 다시 Bridge A로 들어가고......반복...

 

 

Looping이 발생하면 네트워크는 동작이 불가능해진다.

스패닝 트리 알고리즘으로 Looping을 막을 수 있다.

 

 

 

 

 

 


Spanning Tree Protocol 

 

STP (Spanning Tree Protocol)은 위에서 설명한 Looping을 방지하기 위한 알고리즘으로, 스위치와 브리지에 전부 적용될 수 있다. STP 알고리즘의 종류도 많고 실제 개념은 더 복잡하지만 여기서는 간단하게만 알아본다.

 

configuring_spanning_tree (tp-link.com)

 

 

쉽게 생각하면 Loop를 끊어주는 것이다. Loop가 형성되지 못하게 하면 Looping이 발생할 일도 없다. 이렇게 한 경로를 막아두었다가 기존 경로에 문제가 생기면 이 경로를 다시 사용하여 데이터를 전송한다. 

 

전통적인 STP에 의해서 링크가 끊어졌을 때 재연결하는 시간은 약 1분 이상으로, 사용자들은 인터넷 연결이 끊긴 상태로 그 시간을 기다려야 한다. 이를 개선하기 위해 CISCO의 Ether channel(이더채널) 기술이 개발되었는데, 이는 여러 개의 링크가 마치 하나의 링크처럼 인식되도록 하여 재연결 대기시간이 전혀 없도록 하였다.

 

 

Fast ether channel (100M로 연결된 포트들을 묶음) / Giga ether channel (1G) / Uplink Fast (복구시간을 2-3초 줄임) 등 다양한 STP 기술들이 개발되었으며 차후에 더 깊이있게 다뤄보아야 함.

 

 

이더채널은 Trunking 이라고도 불리는데 (VLAN Trunking이랑 서로 다른 개념이므로 혼동 주의) 여러 개의 회선을 묶어서 하나의 회선인 것처럼 사용하는 기법이다. 회선을 이중화하여 만약 하나의 회선이 끊어져도 남은 회선으로 통신을 안정적으로 수행할 수 있다.

 

 

 

 


라우터와 스위치

 

라우터와 스위치를 간단하게 비교하면 다음과 같다.

 

  1. 비슷한 스펙일 때 라우터가 더 비싸다.
  2. 라우터가 스위치에 비해 패킷 처리속도가 느리다. (라우터는 내부에서 처리되는 작업이 많다.)
  3. 스위치는 전원만 공급해주면 사용이 가능하지만 라우터는 프로토콜, 네트워크, 필터링 등 설정할 게 많다.

 

 

그렇다면 라우터는 왜 사용하는가???? → 근본적으로 인터넷을 구성하기 위해서다.

 

인터넷은 네트워크 여러개를 하나로 묶어준 것이라고 했었다. 즉, 인터넷을 구성하려면 네트워크가 분리되어 있어야 한다.

가장 큰 이유는 Broadcast domain 때문이다. 

 

전 세계 네트워크가 전부 스위치로 구성돼있다고 생각해보자. Collision domain은 나뉘어져 있기 때문에 별 문제가 없어 보일지라도 Broadcast 전송을 하면 상황이 달라진다. 온 세계인이 PC를 킬 때마다 Broadcast를 보내는데, 이건 스위치로 연결돼있는 모든 디바이스에 전송된다. 잦은 Broadcast는 CPU성능을 저하시킨다는 것을 기억하자. → 네트워크를 분리해야 한다.

 

 

 

https://www.networxsecurity.org/members-area/glossary/c/collision-domain.html

 

 

 

Collision domain과 Broadcast domain의 차이를 잘 이해해야 한다. 이것이 바로 Router의 존재 이유이다.

  1. 허브는 Collision domain을 나눌 수 없다. 허브에 연결된 모든 디바이스는 같은 Collision domain에 속한다.
  2. 이를 해결하고자 Switch (or Bridge)를 사용한다. Switch는 Collision domain을 나눠준다.
  3. 하나의 local network에 broadcast가 전달되면, 그 network에 존재하는 모든 device에 패킷이 전송된다.
  4. 허브와 스위치로만 연결된 모든 영역은 같은 Broadcast domain에 존재한다. (이를 LAN segment라고도 한다.)
  5. Network 사이를 Router로 연결해주면 두 network는 서로 다른 Broadcast domain에 존재하게 된다.