Revision history for IPDR

Please see the examples directory on how to use the module.

IP ownership has now been resolved. This code is released under artistic_2 license and any changes made,bugs found, general information

additions should be presented back to the author. 0.39 25/05/2011

        Added initiator_id tag InitiatorID => '10.1.1.1' so you can set
        the initiator to an IP address of your choice. Not too 
        useful except for multi homed servers with one gateway 
        defined.
0.38    25/05/2011
        Fixed Warning64BitOff properly. 
        Fixed use if BigInt, some strange merging of code resulting in 
        failing encode/decode of 64bit numbers
        ACK sending.
0.37    24/05/2011
        Changed the 64BitWarningOff to Warning64BitOff, aparently you can not
        use a number at the beginning of a variable name (weird).
0.36    22/05/2011
        Added LocalAddr to new setup. If you have multiple interfaces
        then set this to the IP of the interface you wish to use, ie.

        LocalAddr => '10.1.1.1'

        Would use the interface with the IP 10.1.1.1 0.35    18/05/2011
        Added more debugging output when DEBUG is set.
0.34    16/05/2011
        PacketDirectory code changed so you do not actually have to capture
        packets, small but important element !
0.33    16/05/2011
        Added Variable hexBinarySingle. This forces the module to ingest
        hexBinary data as single bytes not 16bit wide bytes. Default
        this is set to off.
0.32    12/05/2011
        Released as confirmed working
0.31_3  10/05/2011
        Dots, dashes, equals missing in places they should not have been. You
        can tell I havent looked at IPDR for quite a while.
0.31_2  10/05/2011
        Final fix for list extract(not really list), multiple typos and overall
        stupid coding fixed.
0.31    9/05/2011
        Thanks to Rui Dias dias < dot> rp <at > gmail <dot > com for helping in debug
        in a live environment.
        Fixed IPV6 length problem which caused other issues
        Changed the type IPList to handle provided data correctly. Each element is two
        bytes 
        Added support for different field names, but the same field type (number)
0.30    4/04/2011
        Fixed a double $$ typo for file creation
        Added (as a temp test) Math::BigInt support for 32bit systems for the
        Client.pm module, for Cisco*.pm you are out of luck.
        Math::BigInt 1.77 is now a requirement.
0.29    6/04/2010
        Added SessionName so that you can specify by name the session
        you wish to use on the remote server. This allows multiple
        sessions configured on the remote side to be chosen. If the name
        is not found  the first session on the remote side is used.
        All values are now unsigned. If you want signed, pack, unpack
        in your own code as part of the DataHandler pointer.
0.28    4/04/2010
        Added full template support for XDR datatypes. Signed values
        may be problematic on the platform due to endianess.
        Started support for Logging output
        Started to add support for Endianess changes.
0.27    31/03/2010
        Added MACFormat to the Client.pm as an option. This has two values
        1 and 2. Default 1 if omitted and determines how the MAC address
        will be formatted. The default is aabb.ccdd.eeff however when set 
        to 2 the format is AA-BB-CC-DD-EE-FF
0.26    30/03/2010
        Added serviceActiveTime into XML parser.
        Added PollTime as an option into new object ( default 900 seconds )
        Added ReturnPollTime as a function to return PollTime set
        Fixed DataHandler call to include $self object
0.25    17/01/2010
        SessionID finally fixed ( case sensitive typo ).
        Change network write and reads to include timeouts
        Added variables

        AckTimeOverride
        AckSequenceOverride

        Allows you to set the AckTimer and AckSequence numbers should
        you wish to.
 
        Added a new example which allows the IPDR client to reconnect
        if the network or tcp connection timeouts/fails. 

0.24 15/01/2010

        SessionID again and also session specific Ack and Sequence
        handling
0.23.04 13/01/2010
        SessionID again
0.23.03 12/01/2010
        SessionID again
0.23.02 10/01/2010
        SessionID again previously coded to spec, now coded to an implementation
        lets see how it goes ( tears will ensue I suspect )

0.23.01 9/01/2010

        SessionID was not fixed correctly should be now
        MaxRecords appeared to be doing something odd. Removed the data
        ack sending as not required and added a purge of the data set
        from memory.

0.23 8/01/2010

Beta version for fixing and implementation several features

        AckTime  - Implementation where data flows longer than a Timeout
        period and requires ACK during receiving.
        SessionID - Set properly rather than to 0. This is quite important
        and appears one or two vendor implementations like it to be correct.
        MaxRecords - Will send a data ack and call the external function
        after each amount of data records received.

0.22 15/12/2009

        Added XML writing and relating to the Client.pm using the
        XMLDirectory attribute

0.21 20/11/2009

Added

RemoteMulti tag to send to multiple destinations

Example would be

RemoteMulti => '10.1.1.1:9000:10,20.1.1.1:9000:10'

        This will send to multiple destinations at the same time for the
        same data. This is effectively a unicast repeater.

        Added

        RemoteSecure

        This is a simple 0 or 1 flag, default is 0. If set the 
        destination should be ready to accept a SSL connection as the 
        client tries to setup a SSL call. SSLKeyFile and SSLHostFile
        must be present otherwise the client setup will fail.

        Added the Client.pm module to convert XDR into XML and also
        relay this remotely.

        PDF started with examples on how to use the module and collect
        data. 

0.20 11/11/2009

        Fixed the really bad TCP handler, not sure how or why i did the
        previous way but should now work correctly.

        Added TCP relaying. New options are

        RemoteAddr              IP address
        RemotePort              Port
        RemoteTimeOut           In Seconds
        RemoteSpeed             In Mbps. ie. 40 or 100 will send at 40mbps or
                                        100mbps. Useful for managing network
                                        or server utilisation. Default is 10.

        Any data received is then sent on to the remote IP and Port using
        a clear channel TCP connection accepted by the Cisco module. SSL
        sending may be added in the future release

        Currently the remote sending is only supported on the Cisco and 
        CiscoSSL modules.

        Added CiscoSSL module. Really this is the Cisco module but using
        IO::Socket::SSL and pointers to a CA and Host key with

        SSLKeyFile
        SSLHostFile

        Example keys are included in the distribution TO GET YOU GOING BUT
        DO NOT USE THEM IN ANY PRODUCTION ENVIRONMENT!! YOU HAVE BEEN WARNED

        See CiscoSSL on how to create a key using openssl and how to apply
        it to the router side.

        Added 

        Force32BitMode

        This defaults to 0 and is only applicable to the Cisco and CiscoSSL
        modules. The 'make test' will still fail/skip, however if collecting
        from Cisco7200 series UBRs 64bit is not required and setting this
        to 1 will allow the Cisco/CiscoSSL to still work.

0.19 02/09/2009

Added attributes to document level which are

        xmlns
        count
        version
        creationTime
        xsi:schemaLocation
        IPDRRecorderInfo
        xmlns:xsi
        endTime
        docId

        Added

        IPDRcreationTime
        RecType

        The version 3.5 template being used.

        Changed the 'DataHandler' function to also return a pointer to
        the module object to provide hooks to internal functions.

0.18 28/08/2009

Added document to the sequences returned 0.17 26/08/2009

        Another bug in the Cisco module (you probably do not believe I 
        tested this extensively)
0.16    24/08/2009
        Bug in the Cisco module causing the DOCSIS parser to fail
        Thanks to Rui Dias for providing debug and comms to track it down
0.15    20/07/2009
        IP ownership resolved and now release under the artistic_2 license.
0.14    17/07/2009
        Made DataHandler fork when processing data. The time between
        pass off to external function and keep alive timeout could be
        exceeded, so to prevent stall fork applied.
0.13    16/07/2009
        Added keep alive to after session stop, otherwise IPDR exporter
        reported timeout. Session stop is not a disconnect state, so
        collector needs to send keepalive to maintain an open session.
        Fixed CMcpeIpv4List so at LEAST the first entry in the list is
        shown. Checking for more entries should work however there is
        no data available to be 100%
0.12    12/07/2009
        Changed some of the debug error messages to be more meaningful.
        template_value_definitions needs some work. Getting a clearly defined
        valueset is proving very difficult so more vendors required.
        Added some attributes for TCP extensions, so the data is sent to
        third party servers, if needed.
0.11    03/02/2009
        Fixed a typo to pass correct information to IO::Select
0.10    21/11/2008
        Modified some of the DATA_ACK messaging so large sequence sets
        of data are ACKd correctly. ( in someways a bug previously )
        Added 64bit check upon start up. Important as some users reported
        problems with the data but in fact turned out to be non 64bit
        OS or installations of Perl ( make test anyone? )
0.09    9/11/2008
        Added support for 5.1 series software for Motorola BSR
        Some TCP and packet handling changes cause 0.08 to break
        Added nice connection failure state
0.08    3/11/2008
        DOCSIS 1.1 & 3 supported properly now.
        Multiple flows caused issues with session counting. This is
        now resolved.
        Added additional feature to XDR handler to return the RAW data
        before processing to allow independent debugging.
        Tidied up some memory leak issues
        Started work on an IPDR relay function. This module will connect/get
        IPDR data then allow other clients to connect to it for relay. Useful
        to allow vendors/third parties access to the data but not access to
        the original source due to security.
0.07    16/10/2008
        All module versions brought into line for the distribution
        Makes it easier to maintain one version across the board.
0.06    16/10/2008
        Released into the real world after testing completed
        License out under per unit fee.

0.05 Made client and cisco have the same construct names 0.04 Reworked the XDR handler
0.03 Alpha state mark 2
0.02 Alpha state
0.01 01/09/2007