Cisco IP Telephony 디자인을 할 때, TFTP 서버를 어떻게 분배할 지 한 두번 고민해 보았을 것입니다. 전화기가 1,000대 이상 넘어가면, 전화기 펌웨어 업그레이드에 걸리는 시간은 상상을 초월합니다. 이런 고민을 해결할 수 있는 방법에 대해 살펴보겠습니다.
기본적인 전화기 펌웨어 분배
가장 일반적이며 기본적인 CUCM의 TFTP Server를 이용하여 전화기의 Firmware를 업그레이드하는 것입니다. 시스코의 장비는 TFTP 서버를 통해 전화기의 Configuration을 다운로드 받습니다. 전화기가 TFTP의 주소를 확인하는 방법은 DHCP에서 “Option 150” 을 설정하는 것과 전화기에 수동설정하는 법입니다. 전화기를 통해 TFTP 서버에서 XML Configuration을 다운로드 받은 후 전화기의 현재 Firmware와 일치하지 않으면, Firmware 다운로드를 수행합니다. 일련의 과정은 전화기마다 독립적으로 수행되어 많은 시간이 걸리고, 지속적으로 WAN 구간 대역폭을 소모하며, TFTP Resource를 많이 소모한다는 단점이 있지만, 가장 안전하고, 일반적인 방법입니다.
Load Server를 이용한 전화기 펌웨어 분배
만일 100 대 또는 그이상의 전화기를 한 번에 업그레이드한다면, 관리자에게는 상당한 부담입니다. 실제 펌웨어는 같은 기종의 전화기끼리 동일한 펌웨어를 사용하므로, 별도의 TFTP 서버를 각 지사에 두는 방법입니다. 아래 그림에서 보듯이 전화기의 설정화면에 “Load Server”의 설정이 가능합니다.
각 지사별로 별도의 Load Server를 활용하여 Firmware를 다운로드 받게 합니다. 이렇게 하면, Local Bandwidth를 활용하고, TFTP의 부하를 줄인다는 것이 장점입니다. 단점이라면, 수동으로 각 Load Server에 파일을 업그레이드해야하고, 만일 문제가 발생하면, 상황을 관리자가 감지할 수 없습니다. 모든 TFTP 서버가 기본적으로 지원한다 합니다만, Cisco Router, Switch, 3rd party 제품으로는 SolarWinds의 제품을 사용하실 것을 추천합니다.
Peer Firmware Sharing을 이용한 전화기 펌웨어 분배
이 방법은 별도의 Load Server 없이도 가능하며, 전화기가 다른 전화기의 TFTP 서버가 되는 것입니다. 아래 그림에서 보듯이 전화기의 설정화면에 “Peer Firmware Sharing”을 활성화 합니다.
이를 이용하게 되면, 같은 서브넷에 있는 같은 기종의 전화기를 통해 Firmware를 분배합니다. 같은 서브넷이라는 이유는 Broadcast를 통해 전화기를 식별하기 때문입니다. 아래 그림은 분배하는 방법에 대해 나와 있습니다. 같은 서브넷의 전화기 한대가 Root가 되고, 다른 2대의 전화기는 차일드가 되어 파일이 분배된 후에 다시 차일드는 페어런트가 되고 다른 2대의 전화기가 차일드가 되는 구조로 전화기가 많을 수록 강력한 힘을 발휘합니다.
자세한 동작방식은 아래와 같습니다.
- 각 전화기는 필요로하는 파일을 UDP 메세지로 브로드케스트합니다.
- 각 Subnet의 전화기 한대가 Root가 됩니다.
- Root 전화기는 브로드캐스트에 대해 응답을 합니다.
- 각 전화기는 파일 분배를 위해 2대의 차일드 전화기까지 지원하며, 트리를 구성합니다.
- 페어런트 전화기와 차일드전화기 간에 TCP 세션이 만들어집니다.
- Root 전화기가 파일 다운로드를 완료하자마자 차일드 전화기로 Firmware를 전송하기 시작합니다.
만일, 전화기가 한대만 있거나, 서로 트리를 만들지 못하면, 자동으로 TFTP 서버로 부터 파일을 전송받습니다.
마치며
지금까지 논의한 방식을 기준으로 전체적인 펌웨어 분배 시간을 확인해 보겠습니다. 아래 그림에서 보듯이 전화기가 많을수록 Load Server를 이용한 방식과 Peer Firmware Sharing을 이용한 방식이 훨씬 잇점이 많습니다. 40대의 전화기를 10분만에 업그레이드를 할 수 있는 새로운 방식 아닌가 합니다.
이제 CUCM의 TFTP만을 이용하지 마시고, 다른 방법을 사용해 보시면 어떨까요? CUCM 업그레이드마다 고민하던 문제 가운데 하나가 해결되지 않을까 싶습니다.
---------------------------
라인하트 (linecard@naver.com)
CCIEV #18487