TENA TENA is used in range environments, often in the L portion
of LVC Slightly different emphasis; small devices, real- time-ish,
sometimes embedded, high performance in the sense of low overhead
required, multiple unusual platforms Government-owned source built
for multiple platforms
Slide 3
Live, Virtual, constructive
Slide 4
TENA Large-ish user support network https://www.tena-sda.org
Available to international militaries with permission (used in
Sweden)
Slide 5
Remote Objects Theres a popular concept in computer science
called remote procedure calls or distributed objects. Youve got a
piece of code on one host, and you want to call it from another You
can create and send a message from the client to the server to make
this call happen, but its popular to make it appear as if the
object is really on the client. This is done via a proxy
object
Slide 6
Proxy Objects -doSomething(int i) -doSomethingElse(float f);
-doSomething(int i) -doSomethingElse(float f); -doSomething(int i)
-doSomethingElse(float f); -doSomething(int i)
-doSomethingElse(float f); ProxyReal Object The proxy is a stand-in
for the real object on another host. Methods are called by a user
on the proxy, which does no computation itself. Instead, it passes
the request (along with any parameters) to the real object on a
server. The server does the computation and passes back the return
value
Slide 7
Proxy and Servant The object on the client side is called the
proxy, while the real object on the server side is called the
servant This means the proxy and servant need to agree on how
messages are passed back and forth, ports for passing messages over
sockets, etc. The good news is that this can be automated by
appropriate code, so the user doesnt have to write any of it
Typically you write a interface file in a special language, then
the proxy code and servant interface is generated for you The
infrastructure can use a variety of technologies for message
passing: multicast, tcp, udp, etc.
Slide 8
TENA Description Language The TDL/CORBA IDL below is run
through a compiler to generate the proxy objects and to create the
server-side connectors. (TDL and IDL are very similar)
Slide 9
TAO CORBA Architecture
Slide 10
Dangers While this is nice, always remember that the proxy
object is not the same thing as the real object. Calls are being
made across the network, so theyll be much slower and less reliable
than using a real object for(int idx = 0; idx < 1000; idx++ {
proxy.doSomething(idx); }
Slide 11
TENA Remote Objects Remote objects are the approach that TENA
takes Clients have proxies that connect to the servant objects
running on other hosts, so we may have a radar object instance
running on a device on the range being called from a host in the
lab, and the radar object being shown in a DIS application via a
gateway
Slide 12
Stateful Distributed Objects TENA adds stateful distributed
objects to regular distributed objects With distributed objects you
need to call a method to discover state With SDOs the state is
pushed to subscribed listeners periodically (often at state change
points) So for example a Radar object instance might tell listening
objects that it has turned on rather than waiting for other objects
to ask its state, or having other objects poll its state
Slide 13
TENA So a TENA application can consist of Objects that that
application publishes (for example, a radar or tank) Objects that
that application is listening to (for example, helicopters
published by other applications) Your own application logic TENA
has gateways to allow operation with other standards, for example
DIS or HLA
Slide 14
TENA TENA uses something called CORBA in the background,
specifically the TAO realtime CORBA ORB But all this is hidden from
the user, and as a result is never seen directly Multiple language
bindings: C++ is primary, C# also, Java in beta
Slide 15
CORBA CORBA provides the infrastructure for many things:
Publishing objects Handling parameter serialization, object
serialization, response serialization Object lookup The interface
description language (IDL) Generating proxy and servant interfaces
You provide the servant logic, CORBA does most of the rest
Slide 16
Object Serialization What if you pass an object as a parameter
to a method on a servant? Eg, Position with attributes of floats
(x,y,z). Or what if you want an object returned as a method result?
The attributes of the object need to be placed in a format that can
be passed in a message to the servant; this is all done
automatically, but it needs to be done How to you find published
objects?
Slide 17
TENA
Slide 18
TENA App
Slide 19
Cooperating TENA Apps
Slide 20
Overall TENA uses a hidden implementation of CORBA Adds
stateful distributed objects, which pushes state information to
subscribed listeners High performance, hides most network details
Govt-provided middleware for most architectures
(Linux/Windows/IOS/32/64)