Это очень поздно и без ответа, но я хотел бы точно узнать, что я сделал в случае, если кому-то еще это интересно.
Я работал с очень странным встроенным оборудованием, которому не назначен MAC-адрес при изготовлении. Это означает, что нам нужно было назначить один в программном обеспечении.
Очевидное решение состоит в том, чтобы пользователь выбрал MAC-адрес, который, как он знает, доступен в его сети, предпочтительно из локально администрируемого диапазона, и это то, что я и сделал. Однако я хотел выбрать достаточно безопасное значение по умолчанию, а также попытаться предупредить пользователя в случае возникновения конфликта.
В конце концов, я прибег к выбору значения по умолчанию для произвольной выборки в локально управляемом диапазоне, выбранном путем выполнения некоторых аппаратных измерений с умеренной энтропией. Я намеренно исключил начало и конец диапазона, исходя из предположения, что они, скорее всего, будут выбраны вручную. Скорее всего, в любой данной сети будет только одно из этих устройств, и, конечно, меньше 20, поэтому вероятность конфликта очень мала, хотя и не так низка, как могла бы быть из-за несколько предсказуемых случайных чисел.
Учитывая низкие шансы возникновения проблемы, и, несмотря на превосходные ответы выше, я решил обойтись без обнаружения конфликта и обойтись предупреждением для пользователя, чтобы следить за проблемами конфликта MAC.
Если бы я решил реализовать обнаружение конфликтов, то, учитывая, что я контролирую весь сетевой стек, я, вероятно, буду следить за чрезмерными неизвестными или отсутствующими пакетами, а затем инициирую изменение MAC-адреса или предупреждаю пользователя, когда это происходит.
Надеюсь, это поможет кому-то еще где-то, но, вероятно, нет!