while the module cluster is not fixed, I'm using this code to generate the udp ports. worked very well.
```
#!/usr/bin/nodejs

var cluster = require("cluster");
var dgram = require("dgram");

var nfsWorkers = {};

console.log("#" + process.pid + ", start");
if (cluster.isMaster) {
    for (i = 0; i < 2; i++) {
        var worker = cluster.fork();
        var _pid = worker.process.pid;
        nfsWorkers[_pid] = worker;
        nfsWorkers[_pid].on("message", function(payload) {
            //Master Generate a New Random Port to Worker
            if (payload && payload.pid && nfsWorkers[payload.pid] && payload.action == "getPort") {
                var udp = dgram.createSocket("udp4");
                udp.on("error", function(err) {
                    nfsWorkers[payload.pid].send({
                        "pid": process.pid,
                        "requestId": payload.requestId,
                        "action": payload.action,
                        "error": err
                    }, null);
                });
                udp.on("listening", function() {
                    var udpSocket = this;
                    if (udpSocket.listeners("error").length > 0) {
                        udpSocket.removeAllListeners("error");
                    }
                    nfsWorkers[payload.pid].send({
                        "pid": process.pid,
                        "requestId": payload.requestId,
                        "action": payload.action,
                        "error": null
                    }, udpSocket);
                });
                udp.bind(0);
            }
        });
    }
} else {
    //Worker Control Message from Master
    var callback_getPort = {};
    process.on("message", function(payload, udpSocket) {
        if (payload && payload.action == "getPort" && typeof callback_getPort[payload.requestId] == 'function') {
            callback_getPort[payload.requestId](null, payload, udpSocket);
        }
    });
    //Worker Request a New Random Port to Master
    function createUdpSocket(callback) {
        if (typeof callback != 'function') {
            return;
        }
        var requestId = (Date.now() & 0xFFFFFF);
        var requestTimeout = setTimeout(function() {
            return callback(new Error('Timeout calling getPort, requestId #' + requestId));
        }, 3000);
        callback_getPort[requestId] = function(err, payload, udpSocket) {
            delete callback_getPort[requestId];
            clearTimeout(requestTimeout);
            return callback(err, udpSocket);
        }
        process.send({
            "pid": process.pid,
            "requestId": requestId,
            "action": "getPort"
        });
    }
    createUdpSocket(function(err, udpSocket) {
        //console.log(" > err:", err, ", udpSocket: ", udpSocket);
        if (err) {
            console.log("#" + process.pid + ", err:", err);
        } else {
            console.log("#" + process.pid + ", socket: ", udpSocket.address());
            // TODO: Your SNMP Session Start Here
            udpSocket.close();
        }
    })
}
```