I've been writing a program in Java that is really just a robust front end for the use of GitHiub Gists, providing a nice interface for developers to organize, maintain and access code snippets that we tend to need from time to time in our different projects.
One of the features of the program is the ability for people to share their Gists with others who use the program over a LAN or over the Internet. The program just basically serializes a Java class and encrypts it then wraps it into a UDP datastream and sends it over to another user.
So I decided to implement UPNP into the code for those scenarios when a user is behind a UPNP capable router.
The router I've been using to test my code is a Netgear XR1000, which is one of their high end gaming routers built on the DumaOS operating system, but I've been having some rather serious issues with this router and the way it responds to UPNP broadcasts which my code sends out - looking for a response so it can know where the router is and so it can send other UPNP commands to the router.
Specifically, the problem I'm seeing with this router, is that it does not respond to every broadcast packet. In fact, I was seemingly getting no response at all so I wrote a small program that does nothing but send out these broadcast packets every 5 seconds, while another class listens for any responses and then I let that program run for like an hour while I recorded router replies in a database along with the time that elapsed between actual router responses. While that program was running, I also had a wireshark session running so that I could compare what I saw in the data with captured packets coming from the router - filtered for UPNP responses.
The results of the test were insanely troubling.
As this code continued to send broadcast packets every 5 seconds, I would expect a properly designed router to send a single response to EVERY packet that I sent out. Instead, what I got back from the router was a response with no pattern that could be seen ... sometimes it would respond once every 3 to 5 minutes ... and sometimes it would even go a full hour before it ever responded.
I pulled down the defined UPNP standards from the IEEE web site (I believe) and though the language in the standard does not emphasize that a device which implements UPNP must respond to every broadcast seeking service announcement, it does define the amount of time that is allowed to transpire between the moment when a device sees that packet and when that device can respond to that packet and the allotted time for responding was something like up to 5 seconds with some leeway being permitted for various reasons.
It seemed to me that even though the standard does not mandate a one for one response, that is certainly IMPLIED by the fact that there is a rigid definition of time allotted for response delay.
So I decided that I wanted to bring my observations up with Netgear so before I created a trouble ticket, I figured I better get my ducks in a row. So in the interest of being thorough, I repeated my test starting with the first release of router firmware for this router then after running the test and collecting data for about an hour and a half, I would then flash the next version of the firmware and repeat the test - then I kept doing this until I the router was on the latest released firmware.
I compiled the data into some nice looking spreadsheet charts and I wrote up a description of everything that I saw and what I did and put it all into a PDF then I created a ticket which ended up being a total joke. Their tech support was less than accommodating and ended up closing my ticket after a LOT of back and forth where the ticket was seemingly escellated to someone who simply asked me if I power cycled the router but then when I didn't respond within two days, they just closed the ticket.
Talk about frustrating!
I do have another Netgear router which is a few years older than this one and I repeated my test with that router, and the results were what I expected to see with this router - I got one response for EVERY packet that I sent out.
So really what my question is ... does anyone know if a one-for-one response would be something that is either assumed to be true as a definition in the standard or if the behavior that I'm seeing would still qualify the router as being compliant with the standard? Because I'm considering whether or not I should take this issue up with the standards committee and see if I can get any kind of interest on that level who might have inroads into Netgear that I don't have access to in order to get their firmware fixed.
But I'm kind of at a loss as to know where to go or who to take my case to in order to get Netgear to address this issue.
One of the features of the program is the ability for people to share their Gists with others who use the program over a LAN or over the Internet. The program just basically serializes a Java class and encrypts it then wraps it into a UDP datastream and sends it over to another user.
So I decided to implement UPNP into the code for those scenarios when a user is behind a UPNP capable router.
The router I've been using to test my code is a Netgear XR1000, which is one of their high end gaming routers built on the DumaOS operating system, but I've been having some rather serious issues with this router and the way it responds to UPNP broadcasts which my code sends out - looking for a response so it can know where the router is and so it can send other UPNP commands to the router.
Specifically, the problem I'm seeing with this router, is that it does not respond to every broadcast packet. In fact, I was seemingly getting no response at all so I wrote a small program that does nothing but send out these broadcast packets every 5 seconds, while another class listens for any responses and then I let that program run for like an hour while I recorded router replies in a database along with the time that elapsed between actual router responses. While that program was running, I also had a wireshark session running so that I could compare what I saw in the data with captured packets coming from the router - filtered for UPNP responses.
The results of the test were insanely troubling.
As this code continued to send broadcast packets every 5 seconds, I would expect a properly designed router to send a single response to EVERY packet that I sent out. Instead, what I got back from the router was a response with no pattern that could be seen ... sometimes it would respond once every 3 to 5 minutes ... and sometimes it would even go a full hour before it ever responded.
I pulled down the defined UPNP standards from the IEEE web site (I believe) and though the language in the standard does not emphasize that a device which implements UPNP must respond to every broadcast seeking service announcement, it does define the amount of time that is allowed to transpire between the moment when a device sees that packet and when that device can respond to that packet and the allotted time for responding was something like up to 5 seconds with some leeway being permitted for various reasons.
It seemed to me that even though the standard does not mandate a one for one response, that is certainly IMPLIED by the fact that there is a rigid definition of time allotted for response delay.
So I decided that I wanted to bring my observations up with Netgear so before I created a trouble ticket, I figured I better get my ducks in a row. So in the interest of being thorough, I repeated my test starting with the first release of router firmware for this router then after running the test and collecting data for about an hour and a half, I would then flash the next version of the firmware and repeat the test - then I kept doing this until I the router was on the latest released firmware.
I compiled the data into some nice looking spreadsheet charts and I wrote up a description of everything that I saw and what I did and put it all into a PDF then I created a ticket which ended up being a total joke. Their tech support was less than accommodating and ended up closing my ticket after a LOT of back and forth where the ticket was seemingly escellated to someone who simply asked me if I power cycled the router but then when I didn't respond within two days, they just closed the ticket.
Talk about frustrating!
I do have another Netgear router which is a few years older than this one and I repeated my test with that router, and the results were what I expected to see with this router - I got one response for EVERY packet that I sent out.
So really what my question is ... does anyone know if a one-for-one response would be something that is either assumed to be true as a definition in the standard or if the behavior that I'm seeing would still qualify the router as being compliant with the standard? Because I'm considering whether or not I should take this issue up with the standards committee and see if I can get any kind of interest on that level who might have inroads into Netgear that I don't have access to in order to get their firmware fixed.
But I'm kind of at a loss as to know where to go or who to take my case to in order to get Netgear to address this issue.
Comment