Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations bkrike on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

SMDR Data stops pushing or pulling data when no or low call volumes

Status
Not open for further replies.

Takst3r

Vendor
Aug 10, 2011
127
ZA
Hi All,

I have been having this issue for a while now. IP Office v500 rls 8.1 (85). Ive upgraded from 8.1 (69) to 8.1 (79) and recently to the current version with the aim of having this issue sorted. I have increased the buffer to 3000 - Max.

Every morning I have to change either the port or ip address to anything else and back again then the data starts to flow. In the morning it is stopped. Looking at the raw data it stops at approximately the same time ( This is the time all users go home - either no activity or low activity)

I have disabled the TCP file sniffer that captures the raw data , however the data still just stops.

Hoping someone can assist with this issue


BELOW IS A CAPTURE OF A THREAD WHEREBY THE USERS HAD THE SAME EXPERIENCE. - However there was no that replied.

Here is a sections from another thread where the user is also having the same issue.
am wondering if anyone has had the problem of SMDR data stop going to a device. I have a customer with an IP 500V2 with 8.1.63 on it. They are using a Trisys Voice Recording System. The voice recording system need the SMDR Data to tag the calls. I entered the IP Address into the SMDR Data tab and if there is a call on it the Voice Recording system sees the SMDR Data. At night (low call times) the SMDR Data stops and, if I change the IP Address to something else and back again provided that there are call going on the SMDR Data dumps the buffer into the Call Recording system. Does any one know any way to have the IP Office send this data when there are no call going.

 
forgot to add. i tried pushing to different locations with the same result.
 
Avaya's TCPIP stack implementation is broken in these releases
The IPO does not see that the remote end has closed the Socket

this means that when it sends the SMDR packet it does not receive an acknowledgement & keeps retrying forever instead of timing out and then re-initialising the socket with a syn, syn/ack, ack three way handshake

if you have IPOSS on your system you may be able to get Avaya to investigate (good luck with that)

I have a small python script that can demonstrate the issue & it seems to have been fixed in 9.0.2
again if you have IPOSS you should be able to get the upgrade licence from Avaya.



A Maintenance contract is essential, not a Luxury.
Do things on the cheap & it will cost you dear
 
Thanks IPGuru,

Already logged the ticket as I thought it had to be an IP Office issue.

Thanks for clearing the issue. Im sure it will help Avaya in quickly diagnosing the issue.

If possible could you please send me the Python script.

Regards
 
this is probably not the best coding example as I was experimenting at the time but it does at lease work

Code:
import socket
import select
PORT=22
class SMDR(object):
    ''' IP Office SMDR Reciever
    usage with SMDR([port]) as smdr
    ''' 
    def __enter__(self):
        return self
        
    def __exit__(self,typ,value,traceback):
        self.close()
            
    def __init__(self,port=PORT):
        ''' intilaise listener on port'''
        port=int(port) # ensure port is integer
        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        server_address =('',port)
        self.sock.bind(server_address)
        self.sock.listen(0)

    def get_smdr(self):
        ''' generator to yield smdr data as list '''
        self.running=True
        inputs=[self.sock]
        while self.running:
            rx,tx,ex=select.select(inputs,[],[],5)
            for x in rx:
                if x==self.sock:
                    conn,addr=self.sock.accept()
                    inputs.append(conn)
                else:
                    data=x.recv(4096)
                    if data:
                        yield data.strip().split(',')
                    else:
                        x.close()
                        inputs.remove(x)

    def stop(self):
        self.running=False
        
    def close(self):
        self.sock.close()
        
def main():
#   help (SMDR)
    with SMDR() as smdr:
        for x in smdr.get_smdr():
            print(x)
    return 0
if __name__ == '__main__':
    main()

A Maintenance contract is essential, not a Luxury.
Do things on the cheap & it will cost you dear
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top