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