Project

General

Profile

Bug #5107

xivo-provd behaves incorrectly with some phones in NAT environment

Added by Etienne Lessard over 3 years ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
Provisioning
Target version:
-
Security issue:
No
In versions:
> 1.2.0
Read documentation?:

Description

There's a design flaw in xivo-provd that makes it difficult to use it reliably with some phones in a NAT environment.

The phones that are problematic are those who don't send a unique information in each of their HTTP request, A unique information is something like a MAC address or a serial number that ties the request to a specific, unique device. Non unique information is something like an IP address, which isn't unique in a NAT environment, or a model name.

Non affected phones:

  • Aastra
  • Cisco SPA
  • Yealink (some models)

Affected phones:

  • Cisco SCCP
  • Digium
  • Polycom
  • Snom
  • Yealink (some models)

The flaw shows itself in a few different ways, among:

  • new devices are created after a phone is rebooted/synchronized
  • requests are not routed to the right plugin
  • performance degradation in some case (especially if there's a mass reboot)

Here's an example where the problems don't show themself too much:

Given I have the xivo-snom-8.7.3.25.5 plugin installed
Given I have a Snom 320 and a Snom 710 that have never been provisioned with the XiVO
When I power the first phone
Then it is configured in autoprov
When I power the second phone
Then it is configured in autoprov
When I reboot the first phone
Then a new "ghost" device is listed in the devices page
When I reboot the second phone
Then a new "ghost" device is listed in the devices page

Here's another problematic scenario:

Given I have the xivo-snom-8.7.3 plugin installed
Given I have the xivo-snom-8.7.4 plugin installed
Given I have 2 Snom 710 configured with the plugin xivo-snom-8.7.3
When I change the plugin of the second phone to xivo-snom-8.7.4
When I power both phone at the same time
If the phones make interleaved requests to the provisioning server (i.e. A ask snom710-<mac>.htm, then B ask snom710-<mac>.htm, then A ask snom710-firmware.xml, ...)
Then the firmware of the first phone might be in version 8.7.3 or 8.7.4
Then the firmware of the second phone might be in version 8.7.3 or 8.7.4

There's a lot of similar, subtle edge case. But the problem will be more appareant the more you have:

  • models of phone
  • phones
  • plugins
  • concurrency (i.e. mass reboot)

Also available in: Atom PDF