Thank you for coming to see my presentation, I'm pretty excited to be here again and I've always
agreed time at both of them so first slide we miss your answer yeah here's a little bit
next time we're definitely going forward but anyway this is a little agenda so we'll go with
a little stuff and then slide about me so you can read a pretty normal again I'm
been in voiceover IPC pass since about 2003 I read some tools and many of you
have probably heard that for you stuff like article production that helped
around that we've already built our answer part and all the stuff so
switches we have customers and pretty much every place in the world yeah so basically
in terms of free enough for some software we will always think about it as not
what but very much for software can do for us but what we can do for a concert so we
really stop that we find useful and things that might be useful for others so we
contribute public last issues and also a bunch of projects I want it to list it
but it's too long anyway so yeah I'm pretty happy I'll do this stuff anyway so basically
yes I said we built some super search switches with my basic to focus is on
reliability and also obviously care about security and performance so yeah and
as part of what kind of how I can with this project is pretty kind of long story since 2006
we started developing our software and we needed some some kind of system which would
basically help help our components to connect to the right database so we have like
hotstand by a master and basically we can somehow basically can hook it up to to the right one
we do not want to repeat every single like an age component have its own logic to kind of pick
up so we can implement it local like a another service which would basically do like
pull in a database it will pick the right one and expose like to the customer to the
applications and basically how it works we have this control logic which pulls the database
and checks which one is alive and then we have it can spin a number of forwarders which
is just proxy, proxy process basically data without any hook in this event so basically
just very dumb forwarder and it worked very well I was quite surprised but I think it was before
maybe a PG pull was invented but anyway for us it worked very well in the webstreet
here we once saw it's a control logic and Python but we eventually replace the
section of forwarder with some some treatment in C so for performance and then
all kind of as we developed our application it kind of became started like bringing it
apart so basically it became like kind of dug-off micro service which is pretty much
communicate over RPC local RPC mechanism which in our case we use pre-RPC
both basically of a historic RPC we started with XML RPC but then we tried to eliminate
all the overhead because XML RPC runner HTTP so wanted some sense that can run like
on a roll socket and I think JRPC was not even for my B2 was but the drift was the best option
maybe still is pretty fast product all the same ideas JRPC you got your parameters
you serialize them you got response you did serialize them yeah so it works very well so
as I said with all those interactions we can have small-to-bomb interactions between
services we can complete the call basically from mental out in like just a few
milliseconds but now as we kind of grow bigger basically now is a question how we can
scale it up and make it distributed so now we have all those different components
they need to talk over network and this is all problems because as I said we are
running on local circuits so we have some security at least in terms of which
user can access which service and all that with a network we would need like firewall
and multiple ports for each application so it becomes a little bit of challenge so
want to have some better medium mechanism to connect those applications without
any extra overhead like put in like HTTP front end or something so we still want those
applications to talk directly and yeah I've talked around on the risa RFC 41 45 which is basically
specifies how you can negotiate TCP sessions over over as DP basically over CIP and it's actually
funny because if you think about it TCP connection is really like a lot like a phone call so
basically it kind of makes sense in a way actually if you look at the poor minds of even
like to make a TCP connection you need to call function which called dial so to speak
anyway so we still have the original like a initial idea so instead of having like
so let's say application to component to application to most of the talk this component on
this node it can issue basically invite and then negotiate TCP session directly to
that app which runs on local sockets so basically it never realizes that it's too
too remote system and it's really kind of implemented some proof of concept and court
well and then I started thinking how maybe make it even more useful to basically so we don't
need to implement CIP and also as components so we still want them to be a simple and as
small as possible and very very dear basically next idea is something that I call portal so
basically we create a local socket on on the client node and it basically several listens on it
it has to be pretty much similar up to their ones to talk to up for it will open that socket
connect to it essentially and it will initiate CIP session to the CIP
maximizer instance on that as of node and eventually establish the TCP connection between
between them and with part about it that we don't really need to modify
newer client application or several application they basically still talking to local socket
and this one is getting a local connection or local socket too it also could be
very perform because with a lot of this latest latest cameras you can use something like
splice so essentially you won't need to this lahy essentially we'll be short cut in
the internal so you don't need you won't need any even overheading perform like this and
yeah this is a pretty much very easy for us to connect this application with this
it provides unified authorization and application layer because we can use like normal CPE
pretty cool and as you said it should work with any product also you can connect like that
base some some some GRPC or some other binary product all together pretty much anything
so yeah need that plan set this open source I think and maybe we will have goal and
there's some point it's on documentation yeah some of some future ideas for this we can
we can also do some interesting stuff so for example we can we can do like a connection pool
so if you have multiple clients that want to on the nodes that want to talk to one
particular server on remote mode we can pull the connection so you can only have one connection
going and and basically reduce latency even faster because then you don't have connection
it's already as I already just given it run and it's not in use obviously you can we can put
like encryption and compression on on the network layer you can have redundancy and
fill-over and we can also have like product all over for others we wish will basically be
probably like a precondition to those of us above yeah and that's about it so set will be
probably talking about this at some other events in the future but yeah stay tuned we'll
remind the shit
Because we want we want more for the longest latency of a star
So we don't really want any protocol on top of it unless it's necessary, so it's like
kind of goals like this.
Actually, in this case, we actually have two modes of connections, so you can use
your connector, or you can have several connect to you.
And I think I have not really thought about it for us right now, we deploy them like
private networks mostly.
So we have not really got a lot of synchonym to how it's going to work over internet
but there are a lot of connections, and it's kind of interesting.
It might also have interesting applications.
You can even, for example, imagine you have service or I'm in some sort of like
broker and you don't need to expose any ports.
You just need one port and you can have number of applications and you can be
sick to call any of them without an export and because then,
you can connect them to you, not you, to server.
So some stuff like that, but yeah, basically, we'll see how it works.
No, no, the IP is just normal text.
No, I know, but we couldn't do something like a proxy for it.
Yeah, yeah, yeah, can use some service.
But in this case, our server is also proxy, because it's actually endpoints.
So it can be like, whatever you can use, some external.
So yeah, definitely.
Thank you.