Synology NAS의 네트워크 속도를 위해 LACP ?

   NAS(Network Attached Storage)를 사용하는 가장 큰 목적은 파일의 보관 및 사용을 여러 장치에서 탄력적으로 접근하기 위함이 가장 클 것이다.    일반 가정용(?) NAS로 Interfece 가 깔끔하고 안정적인 서비스를 제공하는 NAS를 뽑으라고 한다면 Synology 가 아닐까 싶다.   동영상 파일을 손쉽게 스트리밍 한다든지... 웹서버를 운영한다든지... 메모장을 공유하는 등 여러가지 부가기능을 손쉽게 설치, 운영할 수 있다는 것이 Synology NAS의 강점이라고 생각한다.   뭐... 지금 글이 NAS Brand에 대한 설명을 하는 것은 아니고 내가 현재 사용하는 NAS가 Synology 제품이기 때문에 실제 사례를 들기 위해서 언급한 것 뿐이다.

   NAS는 말 그대로 Network를 이용해서 연결하는 저장장치이다.   그런데 이 Network를 이용해서 연결을 하다보니 Cable, Switch Hub, Router 등의 Network장비의 연결 속도에 절대적인 영향을 받게 된다.   요즘 일반적으로 사용되는 Network 장비의 속도가 1Gbps이다.   이론적으로만 따지면 1Gbps 라는 속도는 1G Bit Per Second 이니까 10억 비트가 1초에 전달되는 대역폭을 이야기 하는 것이다.   비트라고 하니까 좀 생소할 수 있는데 파일 저장 단위로 흔하게 접할 수 있는 메가바이트(MB)로 환산해서 보면 더 피부에 와 닿을 수 있을 것 같다.

1 Giga Bit = 1,000,000,000 Bit 이다.
1 Byte = 8 Bit
이걸 계산해보면 1Gb = 125,000,000 Bytes 가 된다.
이제 바이트를 메가바이트(MB)로 변환하면 1MB = 1,000,000 bytes 이므로 125,000,000 Bytes = 125 MB 가 된다.

요약하면 1Gbps 환경에서 이론적으로는 초당 125MB의 파일을 전송할 수 있어야 하는데 이건 순하게 이론적인 값이다.   뭐 여러가지 이유가 있을 수 있겠지만 노이즈도 있을 수 있고 병목현상이 있을 수 도 있고 보안, 패리티비티 같은 여러가지 변수가 있기 때문에 실질적으로 1Gbps 환경에서 Cable 과 Switch Hub 가 문제 없을 때 전송하는 속도는 초당 40~50MB 정도가 현실이다.

   실질적으로 현실이 이렇기 때문에 거의 외장하드에 저장하는 속도에 미치지 못한다는 결론이 난다.   그나마도 1:1 로 사용한다는 전재로 그 속도를 낼 수 있는 것이고 동시 사용자가 늘어나게 되면 그만큼 속도는 떨어지게 되는게 당연하다.

   그런 동시접속으로 인한 병목현상 또는 다량 파일 처리에 대한 속도 개선을 위해서 사용되는 것이 일반적으로 LACP 와 SMB Multi Channel 기능이다.

   먼저 LACP (Link Aggregation Control Protocol) 과 SMB Multi Channel 이 무언지부터 알고 넘어가는게 맞을 듯 싶다.   이론적이고 교과서적인 내용은 접어두고 쉽게 이해하는 설명으로 가보자.  이번 포스팅에서는 LACP만 다루기로 하자. (둘다 하기엔 너무 길다.)
   일정 수준 이상등급의 NAS에는 보통 동일한 사양의 Network Adaptor가 2개 이상 설치되어 있다.   내가 사용하는 DS920+ 의 경우에도 2개의 LAN 포트가 존재한다.   일반적인 사용이라면 1개의 포트만 사용하게 되고 1개의 포트는 별도로 사용할 일이 없게 된다.   그러면 남는 한개의 LAN 포트에도 Switch HUB 와 연결을 해주면 속도가 2배로 나야 하지 않을까? 하는 생각을 하게 된다.   맞는 말이기도 하고 틀린 말이기도 하다.   왜냐하면 2개의 LAN 포트는 각자의 IP 주소를 할당받아 사용하게 되기 때문에 그것 자체만으로 Network 속도를 개선하는 기능을 제공하지는 못한다.
   그래서 적용되는 기술이 바로 LACP 이다.   뭐... NAS를 위해서 도입된 기술이 아니라 Network 기술중에 Layer2의 Protocol 중에 하나다.   즉, 2개 이상의 Network Adaptor를 마치 하나의 Adaptor로 인식하게 하고 다수의 Network Adaptor가 낼 수 있는 대역폭을 하나로 합치는 기술인 것이다.

   Adaptor가 1개만 사용되기 때문에 100이라는 속도를 낼 수 있는 대역폭이 있는데 PC1과 PC2 역시도 100의 대역폭을 갖고 있다고 한들 NAS에서는 1/2로 쪼개서 보낼 수 밖에 없게 된다.   만약 NAS가 200의 대역폭을 가졌다면 어떻게 될까?   당연히 PC1과 PC2에 1/2 로 나눠서 송수신 하게 되므로 각각 100 이라는 대역폭으로 파일을 송수신할 수 있을 것이다.   (케이블, Switch 등이 주는 대역폭이 100을 선외한다는 가정하에서 설명하는 것이다.)
   바로 이렇게 사용하기 위해서 다수개의 LAN 포트를 논리적으로 1개의 LAN 처럼 인식시켜서 대역폭을 합쳐진 LAN 포트만큼 늘려주는 방법이 바로 LACP 이다.

 

   위의 그림처럼 NAS에서는 2개의 LAN Adaptor가 합쳐져서 200의 대역폭을 마치 1개의 Adaptor가 내는 것처럼 묶어주고 그 대역폭을 다수의 PC가 나눠서 파일 송수신에 사용하는 것으로 이해하면 쉬울 것이다.

   그런데 여기서 착각하기 쉬운 부분이 한가지 있다.   1Gbps 라는 성능을 가진 Cable, Switch Hub, Router, LAN Card를 사용하면서 다수의 PC에서 동시에 파일을 송수신 한다고 한다면 LACP 를 하기 전과 비교했을 때 2배의 속도가 나는 것은 맞다.   하지만 단일 PC에서 NAS와 파일 송수신을 한다면 최대 속도인 1Gbps, 그림에서 설명하는 것으로는 100이라는 속도밖에 내지 못한다.   즉, LACP는 병목현상을 줄이기 위한 한가지 방법이지 전체적인 속도를 올릴 수 있는 방법이 아닌것이다.

그래도 안하는 것보다는 나으니... Synology NAS 와 Switch에서 설정하는 방법을 알아보자.
(내가 사용하는 환경이 Synology NAS이고 Switch는 NetGear를 사용하기 때문에 설명은 해당 장비에 국한된다.)

[ Synology DSM 의 제어판에서 "네트워크" - "네트워크 인터페이스"로 이동한다. ]

   NAS 장비에 2개의 Network Adaptor가 있고 모두 Cable로 연결이 되어 있다면 위의 사진처럼 각각의 IP를 할당 받아서 설정되어 있을 것이다.   나의 경우에는 DHCP를 쓰지 않고 고정된 장비의 경우 IP를 지정해서 쓰고 있다.
   그러면 이제 저렇게 2개로 나뉘어져 있는 것을 LACP로 묶어 보자.

[ 생성 - Bond 생성 ]

 

   Bond 생성을 선택하면 Link Aggregation 모드를 선택하는 화면이 아래와 같이 보여진다.

[ 4개의 옵션이 보인다. ]

어떻게 다른지 일단 짚고 넘어가자.

- 적응 로드 밸런싱 (Adaptive Load Balancing) : LACP를 설정할 때 함께 진행해야 하는 것이 Switch에서도 함께 묶어주는 작업이 필요하다. 그런데 이 모드의 경우엔 NAS에서 자동으로 로드밸런싱을 하여 데이터를 송수신 한다.

- IEEE 802.3ad 동적(Dynamic) Link Aggregation : 일반적으로 설정하는 방식으로 NAS에서 송수신되는 트래픽을 로드밸런싱하여 2개 또는 4개 (다중포트)에서 1개의 포트로 트래픽을 전송한다.  Switch 에서도 Dynamic Setting을 해야 한다.   설정이 다소 복잡한 반면 트래픽이 보다 균등하게 분배되고 특정 링크에 있어서 과부하가 걸리는 것을 방지할 수 있다.

- 균형 XOR (Balnace XOR) :  위의 동적 방식과 방식은 동일하지만 설정을 정적(Static)으로 해서 Switch 와 NAS 간에 LACP 연결시에 Negotiation을 하지 않는다. 즉, 균등하게 트래픽을 분배하는 반면 특정 흐름에서 고정된 링크를 사용하게 되면 트래픽이 불균형하게 분배될 수 있다는 단점이 있다.

- 활성/대기 (Active/Standby) : 이 기능은 fail-over 기능이다. 2개 또는 그이상의 디어넷 포트에서 1개만 활성화하여 사용하게 되고 만약에 문제가 생겨서 사용 못하게 되는 경우 나머지 포트중에 1개로 활성화되어 가용성을 높이는 방식이다.

   지금 하고자 하는 방식은 2번째 모드를 선택해서 셋팅할 것이다.   목적상 가장 효율적인 성능을 내주는 옵션이기 때문이다.

[ IEEE 802.3.ad 동적 Link Aggregation 선택 ]
[ Bond 할 물리적 장치를 선택한다 ]
[ IP, Subnet Mask, Gateway, DNS 설정을 해준다 ]

   내부에서 사용하는 NAS라고 하더라도 DHCP를 통한 주소할당을 받는 방식은 추천하지 않는다.   나의 경우엔 가능하면 DHCP를 쓰더라도 MAC Address 별로 지정된 IP를 Router에서 할당해 주는 방식을 주로 사용한다.   누가 언제 어떤 사용을 하고 있는지 확인하기 위해서라도 DHCP를 쓰더라도 IP 할당을 관리해주는 것이 편할 수 있다.

[ 마지막 경고창을 확인하고 "예"를 눌러준다 ]
[ 설정이 진행된다 ]

 

[ 설정이 완료되면 각각의 네트워크 카드에서 Bond 1개로 묶인 것을 확인할 수 있다 ]

 

[ 현재는 IEEE 802.3ad 연결 실패 상태이다 ]

Synology NAS에서의 설정은 이게 끝이다.   위의 사진에서 보는 것 처럼 현재는 Switch 에서의 설정이 되지 않았기 때문에 "연결 실패" 상태가 뜬다.    그럼 이제 Switch에서 LACP설정을 해줘야 한다.

   내가 현재 사용하는 Switch는 NETGEAR 사의 S350 Series 8 Port Gigabit Switch 이다.   가정에서 사용하기에는 가성비가 좋기에 현재까지 무난하게 사용하고 있다.

[ Netgaer S350 Switch ]

일단 Switch Control을 위해서 관리 화면에 접속을 해서 Password를 입력하고 관리화면으로 들어가자.

[ Netgear S350 Switch 관리 화면 ]

   Brand 별로 차이는 있겠지만 Switch 설정에 있어서 크게 다르지 않다.   영어라고 무서워 하지 말고 메뉴들을 찾아보면 대부분 거기서 거기다.  일단 해보면 이해 되는게 이바닥 아닌가?

[ Switching - Ports ]

Switching - Ports 를 클릭해서 들어가면 현재 사용되고 있는 Port의 상태를 볼 수 있다.
나의 경우엔 현재 g1, g2 에 NAS가 연결 되어 있다.
그러면 g1 과 g2 를 묶어주는 작업을 시작해 보자.

[ Switching - LAG - LAG Membership ]

어떤 포트를 묶을 것인지를 설정하는 화면이라고 생각하면 된다.   묶어주고 나서 헤깔리지 않게 이름을 설정해준다.   그리고 오른쪽 상단의 "Apply"를 눌러서 셋팅을 저장한다.   

[ Switching - LAG - LAG Congifuration ]

바로 위에 있는 "LAG Configuration"을 클릭하면 저장했던 이름이 ch1 자리에 나타난다. (나의 경우엔 Synology로 했다)

[ LAG Type을 LACP로 설정 ]

이름을 지정했던 Synology 왼쪽의 CheckBox를 Checked 해주고 LAG TYPE을 "LACP"로 선택해준다.   그리고 저장을 위해서 "Apply" 버튼을 누르면 설정이 끝난다.

그럼 다시 Synology NAS 의 DSM 화면에서 앞서 "연결실패" 되었던 부분이 어떻게 바뀌었는지 확인해 보자.

[ 연결실패에서 정상연결로 바뀌었다 ]

정상적으로 연결된 것을 확인할 수 있다.

   추가적으로 확인해줄 사항이 있다. MTU (Maximum Transmission Unit) 값이다.   네트워크에 연결된 장치가 받아 들일 수 있는 최대 데이터 패킷의 크기를 설정하는 것인데... 이게 참 오래된 이야기이다.  양날의 검이기도 하고... 패킷을 얼만큼의 크기로 잘라서 보낼까 하는 문제인데 이 설정의 변경에 따라 체감되는게 없어야 정상이다.   하드웨어가 좋아졌고 CPU 의존도가 거의 없어진 현재 시스템에서는 의미 없다고 봐야 하는게 맞는데 가끔 이런 의미 없다고 생각하는 값들이 뒷목을 잡게 하는 경우가 있다.   모든 장비에서 Jumbo Frame을 지원한다면 MTU 값을 9000 으로 모든 네트워크 장비에서 9000으로 설정하면 된다.   하지만 한 장비에서라도 그렇지 않다면 기본 값이 1500으로 설정을 그냥 두는 것을 추천한다.   USB LAN Adaptor 의 경우 Jumbo Frame을 지원하지 않는 기기들이 대부분이다.   내장형이나 PCI 형태는 대부분 9000 을 지원하지만 그렇지 않은 경우도 있으니 가능하다면 해당 설정은 바꾸지 않는 것이 좋고 바꾸더라도 모든 장비가 동일하게 맞추는걸 추천한다.

   앞서 이야기 했지만 LACP 설정이 전체적인 속도를 올려주는 것이 아니다.   동시 접속시 병목현상을 없애주기 위한 방법 중 한가지 일 뿐이다.   네트워크 속도 개선을 위해서 여러가지 방법들이 있겠지만 내가 지금까지 경험하면서 가장 중요하다고 생각되는 것은 기본에 충실한 것이다.   좋은 네트워크 케이블 쓰고, 인증된 칩셋의 장비 쓰고...  설정 하라는 대로 잘 맞춰서 셋팅하고... 이게 최고다.

   다음번에는 SMB Multichannel 에 대해서 이야기 해 보려고 한다. (그게 언제가 될지는 모르겠지만...)