There are two options.
1) Netflow as suggested by Teftin
or
2) Analyze the traffic stream
To implement option #2, you need either:
a. Network tap - more hardware but no performance impact to router. Some taps will provide two traffic streams (think ethernet TX pin in each direction). The two streams need to be bonded in the analysis device.
b. Mirror (or span) port on the router if supported - will consume some router resources. No bonding needed.
Then you need an analysis device to analyze the traffic stream. Depending on your needs & budget, consider using an old laptop/workstation running:
ntopng - web-based UI, has some historical info
pktstat - command-line tool, real-time, no history
wireshark - has a 'conversations' view - not ideal for long-term use
tshark - has an option -z conv,type[,filter] which displays conversations after tshark stops
Two other tools that I have not used but look promising are:
jnettop
iftop
If you really want all the messy details, check-out the 'Network Monitoring vs. Network Insight' whitepaper I wrote at protectus.com. (Full disclosure, I work there.)