No cookie for
Felix Rodriguez

ITEC 2016: What we learned and how MÄK customers will benefit

Like we do every year, MÄK visited ITEC in London and exhibited alongside our fantastic European partners, Antycip. ITEC 2016 was a resounding success for MÄK and its customers. We love getting a chance to meet up with everyone and exchange ideas, and we’re particularly excited by how MÄK customers will benefit from what we learned at this show.

Continue reading
  6115 Hits
Felix Rodriguez

What’s New: Huge Performance Gains for the MÄK RTI

The MÄK RTI enables High Level Architecture (HLA) federations to rapidly and efficiently communicate. Strong performance in an RTI increases a simulation system’s capacity for spatial updates, providing higher fidelity to a simulation. With this in mind, we’ve made significant performance increases for MAK RTI 4.4.2.

Continue reading
  9838 Hits
Felix Rodriguez

What’s New: An improved Code Generator and Java Support for VR-Link 5.2.1

 

VR-Link is the longest-running and most popular MÄK product, so we’re always excited to make improvements to it. With the release of VR-Link 5.2.1, our focus is turning to accessibility and ease of use.

Continue reading
  9842 Hits
Felix Rodriguez

What’s New: Intelligent Data Management and an Updated GUI in MÄK Data Logger 5.4

Interoperability is the backbone of MÄK’s software solutions, so we are always working to make improvements and develop new capabilities in this area. With the release of MÄK Data Logger 5.4, we are focusing on pushing the limits of our exercise scalability by reading more packets and managing the distribution of packet processing.

Continue reading
  7223 Hits
Felix Rodriguez

MÄK RTI Performance Blog 5: Bundling and Compression Benchmarks

If you’re just joining us in this 5 part blog series, welcome! Check out the previous few blogs describing the goal of this series, Latency benchmark info, Throughput benchmark info, and HLA Services benchmark info. 

In addition to turning services on and off as noted in my last blog, the MÄK RTI provides a few ways to reduce the traffic in the network. The two most commonly used methods to do this are bundling and compression. The ideal value to set both of these features varies by the type of simulation being done. Thus it is best to understand their effects on traffic to use effectively. The following graph shows the effects of bundling on network throughput:

The above graph shows our test application with message bundling turned on and off. For this test, the bundling was set at the default 1400 bytes, or just a little under the UDP packet maximum. We also show bundling at 5,000 bytes for comparison. A cursory look at the graph will show a significant speed improvement on small message counts. The improvements then start decreasing until you actually get a small penalty under medium message counts. Once messages become bigger than the bundle value, bundling stops occurring and the performance results are the same as not bundling at all. 

Continue reading
  5675 Hits
Felix Rodriguez

MÄK RTI Performance Blog 4: Individual HLA Services Benchmarks

We’ve talked about Latency and we’ve talked about Throughput in the MAK RTI, but now we’ll get into HLA Services.

One major advantage of the MÄK RTI is its ability to turn HLA services on and off. If you are not using DDM, for example, you can have the RTI turn that feature off to get a performance increase. 

Two things need to be noted when using this feature. First, even with all services turned on, the MÄK RTI is very fast. The test federate could still send over 120 thousand updates per second. That is much more than every simulator that we know of, so users really should not fear leaving all services on. Second, every service has its own overhead cost, as is shown in the following chart:

Continue reading
  5982 Hits
Felix Rodriguez

MÄK RTI Performance Blog 3: Throughput Benchmarking

Let’s talk about MÄK RTI Throughput. (If you’re interested in the other MÄK RTI Benchmark posts, check out our previous blog on Latency benchmarking.)

Throughput is a measure of how fast an RTI can write to and read from the network. Because throughput tells you how well an RTI can handle federations with large numbers of objects that are frequently sending updates, it is often an even more important metric of RTI performance than latency. In many real-time platform-level simulations, updates or interactions that contain 100-150 bytes of data are fairly typical. For packets this size, we have demonstrated a throughput of over 170 thousand packets per second on our test system.

For larger packets, we do even better. In fact, for packets with 5000 bytes of payload data, we have achieved a throughput of over 22 thousand packets per second, around 90% of the theoretical maximum for a 1 gigabit network. In our original test system, we consistently topped out at 90% payload usage (not counting our minimal HLA overhead); we re-ran all our tests in a 10 gigabit network to get a better idea of what our limit is and we measured over 60 thousand messages over 5,000 bytes per second.

Continue reading
  14887 Hits
Felix Rodriguez

MÄK RTI Performance Blog 2: Latency Benchmarking

Welcome to the first topic of our multi-post series highlighting specifics about the performance of the MÄK RTI! We’ll start with the topic of Latency, or the amount of time it takes for data to reach its destination. 

Much of the literature on distributed simulations indicates that latencies of up to 30-100 milliseconds are tolerable without losing the feeling of real-time interactivity. Even a 3D graphics-based application running at 60Hz has 16 milliseconds in which to compute and draw each frame, meaning that latencies of 5-10 milliseconds may not even effect the time at which a particular event is drawn. Meanwhile, typical latencies for the MÄK RTI are closer to 100 microseconds on our gigabit network "“ fast enough to meet the needs of even the most sensitive real-time simulations. 

Latency Benchmark Info

Continue reading
  10304 Hits
Felix Rodriguez

High Performance is our Middle Name: MÄK RTI Performance Blog 1

Although there are many criteria for evaluating and comparing RTI implementations, one of the most important is performance. Choosing an RTI that maximizes throughput and minimizes latency, bandwidth, and CPU usage can mean the difference between success and failure for an HLA simulation program. 

Performance, however, is a difficult thing to quantify. There is not just one number that defines an RTI. There are many types of HLA exercises with wildly varying requirements. High performance on one exercise does not necessarily mean high performance on a different exercise. How many federates are you using? How many updates per second? Are you using a WAN configuration? Are you using any of the services such as DDM or time management? Are you using a Java or a C++ federate? Are you using HLA 1.3 or HLA Evolved? 

The answer to all of these questions can have significant effects on performance. In order to provide the flexibility that meets the needs of most users, an RTl’s configuration options must be robust. It should support the needs of most users out of the box. It must also provide the ability to reconfigure performance capabilities for the exceptional cases, if necessary.

Continue reading
  4963 Hits
Felix Rodriguez

MÄK RTI 4.4 is finally here!

We are pleased to announce the release of MÄK RTI 4.4, a major feature release that significantly improves performance, as well as adds several new features. 

While MÄK has always focused on performance with our RTI, over the last year we doubled our efforts. Version 4.4 is the second major release with significant improvements in performance. For this release, we have overhauled the message sending and receiving process to dramatically reduce the time to process incoming messages from the network while significantly lowering CPU processing time. Additionally, we have separated the sending and receiving of messages into separate threads so that performance will not be affected when either one of these is heavily taxed. To better understand what makes the MÄK RTI the fastest RTI on the market please read this.

We didn’t stop with performance: you can now use the MÄK RTI with FOM Modules in Lightweight Mode and international customers can now easily translate the text found in the RTI assistant to target the local language.

Continue reading
  5316 Hits
Felix Rodriguez

Parallel Publishing in VR-Link

VR-Link 5.1 has put a heavy emphasis on performance. The MÄK Engineers have gone through every bit of VR-Link to find hundreds of speed improvements in the already fast libraries. There comes a point, however, that most of your speed improvements are going to come with multi-threading.

VR-Link now includes multi-threading classes that allow you to update publish your DIS and HLA objects in parallel, greatly speeding up that side of the simulation. But don’t worry, we have abstracted out most of the complexity required to multi-thread, and your code does not have to increase in complexity at all.

The trick to this simplicity is that we have now created a DtPublisherContainer, a class that can tick all the publishers at the same time but can be used in a single threaded environment otherwise. For example, if your code before looked like this:

Continue reading
  5451 Hits
Felix Rodriguez

"Your software has crashed for unknown reasons..."

As a software engineer, just writing that line brings my heart rate up. HLA in particular makes things a little harder because of the sheer number of exceptions that HLA throws, even for non-exceptional reasons. In this article, we will discuss two minor additions to VR-Link 5.0.1: One that helps find the error and another that helps you recover from an error gracefully.

First things first "” finding the error. Have you ever had a crash (hopefully not too many) in VR-Forces and encountered a little dialog asking you to save a memory dump? If you send that memory dump to us, we can analyze the VR-Forces source code and find the cause of that crash. This is actually a fairly simple feature that Windows provides. To make it even easier for you, however, we now have a simplified version of this in VR-Link that you can implement in your own applications.

DtMinidump miniDump("ApplicationName"); //Enable mini-dump.

Continue reading
  6000 Hits
Felix Rodriguez

Generic Attributes and Parameters in VR-Link 5.1

Among it's many other new features, VR-Link introduces generic attributes and parameters for version 5.1. Generics are a way of accessing extended information in your FOM that is not normally supported. For example, lets say your FOM, based on RPR, contains an extra attribute on entity objects called "RadarSignature." Once generics are enabled in VR-Link, all you have to do is ask for your data:

Continue reading
  4233 Hits
Felix Rodriguez

HLA Data Marshalling in the MÄK RTI

The HLA standard makes no guarantee for how data is marshaled over the network. Under most circumstances there’s no reason for anyone to care how it’s in there as long as you have access to it. However, there is one situation where it does matter. If you need a 64-bit or 32-bit byte aligned value, HLA gives you no option to do that. And if you are casting a pointer to a 64-bit value, you need that byte alignment to access it correctly.

In the past, VR-Link has managed to get around this by simply copying all attributes from the RTI to a new byte aligned memory space to allow said casting. As you might expect, this extra copy takes processing time and will slow down your simulation some amount. Starting with the MÄK RTI 4.3, however, we have decided to force all attributes to be byte aligned to either 32 or 64 bits depending on the size of the attribute. As long as you are using the MÄK RTI, you can ask the RTI for data pointers and cast the data directly to whatever you want it to be, avoiding that copy.

Among the many performance improvements we have done in VR-Link 5.1, it now includes the option to use data pointers. And if you are using the MÄK RTI version 4.3 or better, you don’t have to do anything to turn this feature on - it will detect the right RTI version and reconfigure itself for the faster data access version. If you are using an RTI by a different vendor that includes byte alignment or you have no 64-bit values, we do provide the capability to enable the faster method by enabling ’setGetValueMethod’ in the DtExerciseConnInitializer.

  4637 Hits
Felix Rodriguez

VR-Link for C# loads all protocol-specific material at runtime

If you’ve been playing with some of our VR-Link for C# examples, you might have noticed something strange. We usually include one example for each networking protocol, so you get F18DIS, F18HLA13, and F18HLA1516e.

But our C# examples do not do that. There is just a single F18Sharp executable. Don’t worry, we didn’t suddenly decide to drop all our networking standards. In C#, we have slightly changed the VR-Link interface to load all the protocol-specific material at run-time instead of at compile time.

Now you don’t even need to recompile to get all your protocols. You can define which protocol you want in your run-time configuration, or even command line arguments.

Continue reading
  4937 Hits
Felix Rodriguez

HLA Ownership Management in VR-Link 5.1

Transferring control in simulations is a complicated dance. Both the relinquishing and the receiving simulations have to agree in principal and then exchange lots of complicated transactions to make the exchange. The complexity leaves most who attempt it frustrated and hopeless.

It doesn’t have to be that way. In VR-Link 5.1, MÄK offers you a technique to make the transfer of objects pre-approved and thus easy. Each participating simulation starts by agreeing to take any objects offered and agreeing to relinquish any objects asked for. With the approval steps out of the way, only a single message is needed to take control of another simulation’s airplane, for example. Similarly, with a single message your simulation can give back control when you are finished. We’ve included examples in VR-Link to illustrate this technique. So give it a try "” it’s actually kind of fun.

Background and Rationale

Continue reading
  9144 Hits
Felix Rodriguez

Keeping pace with modern programming languages

Programming languages have been evolving since the first computer was created. Early languages, including Autocode, FORTRAN, and FlowMatic, made way for many of today’s modern languages. The era of the C language introduced better structure and access to low-level system functions and devices. Then came C++, adding object-oriented programming constructs. Now we have a whole class of simple, modern, general-purpose, object-oriented programming languages, like C# (pronounced C sharp), that are gaining popularity.

VR-Link has been with you since the beginning and we plan to be with you to the end. So "“ drum roll please "“ we are excited to introduce C# support for VR-Link! Because our C# implementation of VR-Link is built as a Common Language Infrastructure (CLI) library, you can build your applications using C# or any other language that conforms to the CLI standard. There are currently 32 separate languages that are a part of the CLI standard, including Python, Ruby, and Visual Basic, as well as functional languages like F# and Lisp. (Functional languages provide an incredible amount of power when manipulating objects or groups of objects - read more about programming with F#.)

MÄK wants to make your life easier and we hope that by adding C# and other CLI-compliant languages, we have. If you have questions or requests, get in touch with us at This email address is being protected from spambots. You need JavaScript enabled to view it. (or leave us a comment below)!

  4121 Hits
Felix Rodriguez

Interoperable, Protocol Independent, Easy to Use: VR-Link Stands the Test of Time

More than 20 years ago, VT MÄK stepped into the Modeling and Simulation community and introduced our flagship simulation networking software, VR-Link. Since then, MÄK has remained focused on both our dedication to interoperability and the needs of our customers. We’ve been active participants in the development of industry standards and protocols through the Simulation Interoperability Standards Organization (SISO) and have built our products to ensure our customers can use the protocol of their choice. This has consistently made VR-Link the top HLA-DIS networking toolkit on the market and VT MÄK the top choice for distributed simulation software.

Continuing the MÄK tradition of listening, learning, and evolving, we’ve recently added even more capabilities to meet the growing needs of VR-Link users. Here is some of what you’ll find in VR-Link 5.1:

  • New C# library of objects and interactions "“ While a lot of our customers use C++ to build DIS or HLA compliant applications, many new projects are started using C# "” a simple, modern, and object-oriented programming language. VR-Link now empowers customers to use a library of C# objects and interactions with our VR-Link protocol-independent API. (Learn how MÄK is keeping pace with modern programming languages like C#!)
  • Continued focus on performance "“ Performance is a top priority at MÄK. We’ve put a lot of effort in VR-Link to ensure our customers can take advantage of multithreaded publisher lists; this enables users to tick all publishers with a single call, allowing them to update as fast as possible.
  • Easier FOM extensions "“ Enjoy a simpler way to access FOM extensions. If you have a FOM where one or more new attributes have been added, you can now easily access the attribute without writing any new code at all.
  • API Improvements "“ We have significantly simplified our API for transferring ownership in HLA, as well as for configuring dead reckoners and smoothers. This will greatly speed up development for our VR-Link customers. 
  • Compliant with RPR FOM 2.0, Draft 20 "“ You can rely on VR-Link to remain up-to-date with major standards. VR-Link now supports the latest draft of the soon-to-be-finalized RPR FOM 2.0 standard, defining HLA classes, attributes, and parameters that are appropriate for real-time, platform-level simulations.

Stay tuned for more blog posts highlighting VR-Link newest capabilities!! And as always, reach out to us at This email address is being protected from spambots. You need JavaScript enabled to view it. (or leave a comment below) to get more info!

  4381 Hits
Felix Rodriguez

VR-Link: Not Just for C++ and C#

Now that VR-Link for C# is released, we are excited to build new simulations on top of C#. I personally find C# to be fantastic to work with, so I can't wait. But even more interesting is that VR-Link is actually built as a CLI (Common Language Runtime) library.

The CLI is an intermediate language that can be used to build applications on any other language that conforms to the CLI standard. There are many. As of this writing, Wikipedia (http://en.wikipedia.org/wiki/List_of_CLI_languages) lists 32 separate languages that can interface with a CLI library. This includes scripting tools such as Python, PHP, and Ruby, purer languages such as Eiffel, and commonly used simpler languages, such as Visual Basic! Our customers are no longer bound by language limitations and will now be able to choose the language strictly based on which one is more useful for the job. You can even mix and match as you please.

Continue reading
  9894 Hits
Felix Rodriguez

What is this Logger Tape?

Interoperability is hard. It is hard because there are a myriad of open standards out there, as well as multiple protocols, operating systems, and, of course, requirements. At VT MÄK, we understand this. To help, we have always tried to support the widest variety of configurations that we can. All of our products support four different DIS versions, three different HLA versions, and a plethora of FOMS, operating systems, and compilers. VR-Exchange expands this even further with DDS, TENA, and many other protocols.

Continue reading
  5990 Hits
Felix Rodriguez

DIS 7 Extensions with the Attribute PDU

DIS 7 brought a large number of improvements to the standard. Two of these improvements, however, stand out above the rest due to their flexibility in supporting all sorts of simulators and not just specific use cases. The first of this improvement is heartbeating for specific types of entities, which I covered in a past newsletter, so let’s move on to the second major general improvement: extensibility.

The Attribute PDU is a new type of message in DIS that works much differently than other PDUs. This PDU is not meant to be used alone and it contains extra information about an existing PDU. For example, say you want to add new parameters to your entities. You can now create an attribute PDU with those parameters and bundle it with your standard entity message. The DIS 7 standard also comes with tens of new record types for all sorts of new data.

Unfortunately, the actual implementation of Attribute PDUs is very confusing. You can attach this PDU at the end of an existing message for one type of effect. You can also send it separately with an identifier. Or you can even send an attribute PDU that affects multiple PDUs by itself. In order to be compliant with DIS 7, all three options need to be managed. Luckily, we do that for you. All you have to do is fill out your data and add it to your object.

Continue reading
  8527 Hits
Felix Rodriguez

How to handle disparate DIS versions

Now that VR-Link 5.0 is out and we have added support for DIS Version 7, you might have questions about compatibility between DIS versions and VR-Link. In a nutshell, if everyone is using VR-Link 5.0, there will be no compatibility problems. If you have systems not using VR-Link, or using an older version of VR-Link, then you might have some situations arise.

DIS Version 7 is not fully backwards compatible with previous versions of DIS. If you are sending DIS 7 PDUs, there is no guarantee that the other systems in your exercise will be able to read them. For this reason, by default, VR-Link 5.0 still sends DIS version 6 PDUs. This means that upgrading to VR-Link 5.0 will not suddenly make your exercise incompatible.

If you want to send DIS Version 7, you can set the global variable DtProtocolVersionToSend to 7 (this is defined in the file pdu.h). Now, you are sending DIS 7 compatible PDUs. You can also, of course, set that value to any number between 4 and 7 to send a specific version of the protocol. You can even do this at runtime using the command line if you are using our included command line interface:

DtVrlApplicationInitializer appInit(argc, argv, "VR-Link Application");
appInit.parseCmdLine();

If you are parsing the command line (or loading a VR-Link configuration from a file) simply typing "--disVersion 7" as a command line parameter will force your application to send DIS Version 7 messages.

Receiving legacy PDUs into a VR-Link 5.0 version should give you no problem at all. VR-Link has always been able to support receiving multiple protocol versions even in the same exercise. For years, we have been able to read versions 4-6 of the DIS protocol. Now, you can read versions 4-7. This is regardless of what version you are actually sending. (As an aside, this is also true in HLA where you can mix HLA 1.3 federates with HLA Evolved federates.)

There are two values that define what DIS version you can receive: DtProtocolVersionToRecvMin, and DtProtocolVersionToRecvMax. Both are also located in pdu.h. In nearly all situations you should not need to change these values, since by default they are set to the lowest and highest values that VR-Link can provide.

Those two values exist in older versions of VR-Link as well, although they are set to 4-6 instead of 4-7. If you feel up to it however, you can take an older version of VR-Link and tell it to read DIS Version 7. It will not understand new concepts, but in some cases it understands enough to be able to communicate with newer systems.

  4529 Hits
Felix Rodriguez

My HLA federates aren’t talking to each other!

Because HLA has so many configuration options, it can be frustrating to learn that your system isn’t communicating when you think everything is set up correctly. The MÄK RTI team works very hard to make it as easy to use as possible, but sometimes things go wrong. HLA federations can be very complicated.

Luckily, the new MÄK RTI 4.2 provides a revamped RTI Assistant that will help you find the problem and fix it faster than ever. In this blog, we will identify and attempt to remedy the most common problems.

Are all the federates correctly connected?
Double clicking on your RTI Assistant tray icon opens up the Federations View. 

Continue reading
  3474 Hits