Hyper_Eye
Occasional Visitor
For the last few years I have been using an RT-N66U running Merlin firmware. I never had any major issues with it. It was on 380.65_2 when last week I upgraded to an RT-AC88U. I immediately put Asuswrt-Merlin 380.65_4 on it. Overall I'm impressed with the router but I'm having UPnP issues that I did not have with the old router. I have not yet determined if downgrading the firmware or upgrading to the beta will fix it.
I first noticed the problem when my son and I tried to play Destiny on PS3 together. It wouldn't let us join the same fireteam. I ran a network test and it reported that UPnP was unavailable. It was late so I didn't mess with it any further that night. The next night I checked it again and it reported UPnP was available and we were able to play. Tonight we were once again unable to play. I set out to determine if the issue is limited to the PS3.
My main desktop is Linux so I attempted to obtain an open port list with upnpc (a test client application included with miniupnpc.) When the router is properly responding the output looks something like this:
When I get a response like this I am able to utilize UPnP with both PS3 consoles, my Xbox One, etc. When the consoles are not able to use UPnP I am unable to query UPnP status from my desktop. The router port forwarding page displays any ports opened by UPnP and there is no indication of a problem in the logs but it is not working.
I restarted UPnP with the 'service restart_upnp' command. That did not fix the issue. I stopped UPnP on the router with the 'service stop_upnp' command and I started it back up in debug mode by running 'miniupnpd -f /etc/upnp/config -d'. When the service is working I can see the multicast SSDP M-SEARCH query come in and I see the SSDP response:
During the times where the service is not working I do not see any activity in miniupnpd. It does not indicate that a request has come in. If I query the root description URL directly it responds:
I can open and close ports this way even if the router is not discoverable through an SSDP search on port 1900. It would appear that the issue is in receiving the multicast UDP request. I have no idea what triggers it to stop receiving the multicast traffic or what triggers it to start working again. When it is failing to respond it fails for all devices on the network. Multicast is not failing network wide at those times because other UPnP devices are discoverable.
Netstat shows me that the multicast port 1900 is actually opened twice.
If I stop the upnp service one connection on the port will remain in netstat. I don't know what the other process is. I intend to install lsof and find out. It could be that miniupnpd fails to start during boot and it leaves a hanging descriptor. lsof should shed some light but I am curious if another descriptor is intercepting the search requests.
I will check on those things over the weekend. I will also hook up the old router and do some comparisons. Any guidance would be greatly appreciated.
I first noticed the problem when my son and I tried to play Destiny on PS3 together. It wouldn't let us join the same fireteam. I ran a network test and it reported that UPnP was unavailable. It was late so I didn't mess with it any further that night. The next night I checked it again and it reported UPnP was available and we were able to play. Tonight we were once again unable to play. I set out to determine if the issue is limited to the PS3.
My main desktop is Linux so I attempted to obtain an open port list with upnpc (a test client application included with miniupnpc.) When the router is properly responding the output looks something like this:
Code:
$ upnpc -l
upnpc : miniupnpc library test client, version 2.0.
(c) 2005-2016 Thomas Bernard.
Go to http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
for more information.
List of UPNP devices found on the network :
desc: http://192.168.0.1:57512/rootDesc.xml
st: urn:schemas-upnp-org:device:InternetGatewayDevice:1
Found valid IGD : http://192.168.0.1:57512/ctl/IPConn
Local LAN ip address : 192.168.0.69
Connection Type : IP_Routed
Status : Connected, uptime=2218s, LastConnectionError : ERROR_NONE
Time started : Fri Apr 28 02:11:11 2017
MaxBitRateDown : 10000000 bps (10.0 Mbps) MaxBitRateUp 10000000 bps (10.0 Mbps)
ExternalIPAddress = ************
i protocol exPort->inAddr:inPort description remoteHost leaseTime
0 UDP 51426->192.168.0.53:51426 'Teredo' '' 0
1 TCP 27161->192.168.0.97:27161 '349CBAA' '' 84711
2 TCP 27162->192.168.0.97:27162 '349CBAB' '' 84713
3 UDP 5353->192.168.0.66:5353 'PCP MAP edc67bb90d2e6ac8d96fcd9d' '' 5764
4 UDP 4500->192.168.0.66:4500 'PCP MAP edc67bb90d2e6ac8d96fcd9d' '' 5764
GetGenericPortMappingEntry() returned 713 (SpecifiedArrayIndexInvalid)
When I get a response like this I am able to utilize UPnP with both PS3 consoles, my Xbox One, etc. When the consoles are not able to use UPnP I am unable to query UPnP status from my desktop. The router port forwarding page displays any ports opened by UPnP and there is no indication of a problem in the logs but it is not working.
I restarted UPnP with the 'service restart_upnp' command. That did not fix the issue. I stopped UPnP on the router with the 'service stop_upnp' command and I started it back up in debug mode by running 'miniupnpd -f /etc/upnp/config -d'. When the service is working I can see the multicast SSDP M-SEARCH query come in and I see the SSDP response:
Code:
miniupnpd[1103]: SSDP M-SEARCH from 192.168.0.55:50716 ST: urn:schemas-upnp-org:device:InternetGatewayDevice:1
miniupnpd[1103]: Single search found
miniupnpd[1103]: SendSSDPResponse(): 0 bytes to 192.168.0.55:50716 ST: HTTP/1.1 200 OK
CACHE-CONTROL: max-age=120
ST: urn:schemas-upnp-org:device:InternetGatewayDevice:1
USN: uuid:b98aba76-35fb-4898-bf6b-bf4bf7b45505::urn:schemas-upnp-org:device:InternetGatewayDevice:1
EXT:
SERVER: AsusWRT/380.65 UPnP/1.1 MiniUPnPd/2.0
LOCATION: http://192.168.0.1:57512/rootDesc.xml
OPT: "http://schemas.upnp.org/upnp/1/0/"; ns=01
01-NLS: 1493365680
BOOTID.UPNP.ORG: 1493365680
CONFIGID.UPNP.ORG: 1337
During the times where the service is not working I do not see any activity in miniupnpd. It does not indicate that a request has come in. If I query the root description URL directly it responds:
Code:
upnpc -u http://192.168.0.1:57512/rootDesc.xml -l
I can open and close ports this way even if the router is not discoverable through an SSDP search on port 1900. It would appear that the issue is in receiving the multicast UDP request. I have no idea what triggers it to stop receiving the multicast traffic or what triggers it to start working again. When it is failing to respond it fails for all devices on the network. Multicast is not failing network wide at those times because other UPnP devices are discoverable.
Netstat shows me that the multicast port 1900 is actually opened twice.
Code:
# netstat -anu | grep 1900
udp 0 0 0.0.0.0:1900 0.0.0.0:*
udp 0 0 0.0.0.0:1900 0.0.0.0:*
If I stop the upnp service one connection on the port will remain in netstat. I don't know what the other process is. I intend to install lsof and find out. It could be that miniupnpd fails to start during boot and it leaves a hanging descriptor. lsof should shed some light but I am curious if another descriptor is intercepting the search requests.
I will check on those things over the weekend. I will also hook up the old router and do some comparisons. Any guidance would be greatly appreciated.