-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PCAP Agent: Rethinking Port Attribution #12
Comments
I've pushed my proposed enhancement to When that's done I'll post again saying that it's gone to soak. It will stay in soak for at least a week or two before I merge it to |
We are now in soak and the field is open for practice on the It's particular to my network's architecture, but my networks / mapping looks like this:
The |
No smoke, no surprises. Merged to |
The PCAP Agent write several Redis keys:
When originally conceived, this agent was envisioned to run on the desktop / laptop at one end of most (if not all) observed conversations; and the desktop / laptop was not anticipated to provide any services. This understanding has evolved. First iteration was to run the agent on a span port on the switch. Presently the agent runs on the nodes offering virtualization, services, and / or routing.
In this last configuration port attribution is mostly incorrect.
Part of this is due to a technical limitation: the agent only captures traffic coming in to an interface, not outgoing traffic. But this is not a satisfying explanation.
Naively, a network either consumes services or offers services. The agent was assumed to be deployed on networks which consumed services. As such for outgoing traffic the resource is represented by the destination port, and for incoming traffic by the source port; traffic between two nodes on the own network is / was out of scope. None of this is satisfyingly true in the current evolution.
The
flow
key is documented like this:The nomenclature is representative of the original understanding. What current and future evolutions demand is something more like:
There really is no "one size fits all" answer for this if networks can offer as well as consume resources. There is an observation which seems to be correct most of the time: the service's port will be lower than the client's port. This in turn suggests / is suggested by two tactical expediencies:
There are four network-centric flow cases to consider:
(The last case will probably never be seen on a properly managed network.)
Proposal
The proposal is to create a structured and extensible definition language which can be used in the configuration module to describe how each of the flow cases should be handled. This will be a DSL based on extensible Python objects, expressed using Python syntax.
An early whiteboard sketch of the concept looks something like this:
But we need the ability to express or incorporate logic to e.g. use the lower of the two ports to decide which is the client and which is the server, especially for traffic which is between two nodes on our own network.
So this is still at least somewhat under investigation although I am closer to writing code than the foregoing may suggest.
I invite your feedback and suggestions.
The text was updated successfully, but these errors were encountered: