qpid-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ganesh Murthy <gmur...@redhat.com>
Subject Re: Qpid Proton/Dispath trace : correlate connection identifier and remote IP/port
Date Wed, 23 Nov 2016 14:14:48 GMT


----- Original Message -----
> From: "Robbie Gemmell" <robbie.gemmell@gmail.com>
> To: users@qpid.apache.org
> Sent: Wednesday, November 23, 2016 7:58:48 AM
> Subject: Re: Qpid Proton/Dispath trace : correlate connection identifier and remote IP/port
> 
> On 23 November 2016 at 08:04, Paolo Patierno <ppatierno@live.com> wrote:
> > Hi,
> >
> >
> > enabling the Qpid Proton trace through PN_TRACE_FRM=1 when I start the Qpid
> > Dispatch Router, I need sometimes to know who is the remote peer is
> > exchanging traced messages.
> >
> >
> > For example, considering these few lines of trace (running the Qpid
> > Dispatch Router) :
> >
> >
> > Accepted from 127.0.0.1:48192
> > Accepted from 127.0.0.1:48190
> > [0x7fbc44016390]:  <- SASL
> > [0x7fbc44016390]:  -> SASL
> > [0x7fbc44003b70]:  <- SASL
> > [0x7fbc44003b70]:  -> SASL
> > [0x7fbc44016390]:0 -> @sasl-mechanisms(64)
> > [sasl-server-mechanisms=@PN_SYMBOL[:ANONYMOUS, :PLAIN]]
> > [0x7fbc44003b70]:0 -> @sasl-mechanisms(64)
> > [sasl-server-mechanisms=@PN_SYMBOL[:ANONYMOUS, :PLAIN]]
> >
> >
> > The router accepts two connections from remote clients (we see IP and port)
> > but then every message is related to an "identifier" (I guess it should be
> > the file descriptor related to the used socket).
> >
> 
> I think the 'identifier' will actually relate to the proton transport,
> e.g its address, since the engine doesnt know about the socket.
> 
> > If I need to match these information with Wireshark (where I can see remote
> > port) I don't know if remote clients using remote port 48192 is related to
> > 0x7fbc44016390 or 0x7fbc44003b70.
> >
> >
> > I think it could be a good information to add into the trace at least
> > showing the "identifier" after the accepted message, i.e. :
> >
> >
> > Accepted from 127.0.0.1:48192 [0x7fbc44016390]
I don't think we can display the proton transport reference (0x7fbc44016390) next to the host/ephemeral
port because we don't have a transport yet. Dispatch router code is accepting the connection
in src/driver.c function qdpn_listener_accept() and proton is not in the picture yet.
> >
> >
> > It's also true, that messages related to something like [0x7fbc44016390]
> > come from Qpid Proton and messages like "Accepted ..." come from Qpid
> > Dispatch Router.
> >
> 
> Yep, by setting PN_TRACE_FRM it is Proton doing that logging, and it
> doesnt know about the host/port/socket and is just dealing with bytes
> in/out.
> 
> That said, I beleive you can set a 'tracer' used to output the
> message, e.g to your own log stream, which could also allow augmenting
> it with more information.

Yes, Dispatch does set a tracer by calling proton's pn_transport_set_tracer function and passing
it a callback function like this in src/server.c

pn_transport_set_tracer(tport, qd_transport_tracer);

static void qd_transport_tracer(pn_transport_t *transport, const char *message)
{
    qd_connection_t *ctx = (qd_connection_t*) pn_transport_get_context(transport);
    if (ctx)
        qd_log(ctx->server->log_source, QD_LOG_TRACE, "[%"PRIu64"]:%s", ctx->connection_id,
message);
}

As you can see above, Dispatch has access to qd_connection_t *ctx and it is adding its own
connection_id to the proton message. We could potentially display the host and the port on
every trace message but that would lead to large trace messages particularly in cases where
the hostname is long.

Thanks.
> 
> >
> > Thanks,
> >
> > Paolo.
> >
> >
> >
> > Paolo Patierno
> > Senior Software Engineer (IoT) @ Red Hat
> > Microsoft MVP on Windows Embedded & IoT
> > Microsoft Azure Advisor
> >
> > Twitter : @ppatierno<http://twitter.com/ppatierno>
> > Linkedin : paolopatierno<http://it.linkedin.com/in/paolopatierno>
> > Blog : DevExperience<http://paolopatierno.wordpress.com/>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> For additional commands, e-mail: users-help@qpid.apache.org
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org


Mime
View raw message