Greg Russell wrote:
> Your router is going to demux every stream that passes through it,
> tallying the packet totals for each type of content?
Why demux. The only important information is, what is contained in the
stream, i.e. the stream container headers. That information is avaliable
prior to demuxing.
> That *might* work if
> there's only one client on the local network, but it would very quickly
> overwhelm a router for a network with an average number of clients ... it
> would take more cpu power than is currently available, I'm sure.
Probably not a problem here. The router runs as hypervised virtual machine
on a dual core @2.2GHz system.
> Maybe you mean examine every packet looking for headers that describe the
> stream content, then sub-tally the totals for the entire ensuing stream
> and combine the totals for the entire category such as video, etc?
This way ^^^
> If so it gets back to my original question -- how are you going to
> recognize those packet headers that declare any given category of stream?
Not by static offsets if you're thinking into that direction.
Some applications, like VoIP, SSH, etc. run over dedicated ports. So it's
sufficient to test for a small subset of magic bytes on certain ports, to
see, if it's really VoIP, SSH, etc. going over there. In the case of SSL
encrypted content it's impossible anyway (this sort of DPI would be kinda a
man-in-the-middle attack).
On protocols which may carry all sorts of content one would test on what's
in there by looking at magic bytes. Just like the "file" utility does. This
has been implemented in Wireshark, naming an example.
I could of course use Wireshark's modules for this kind of application, but
I wonder, if there's software better suited for this kind of job.
> Where in a TCP/IP packet structure / stream does it say "this is video" or
> "this is audio" or "this is RSS"?
Um, in the payload? Of course it requires to parse the stream container's
headers.
Wolfgang
|