SOAR known issues: +ACKs need to deal with wrap-around +Only 1 interface per node is supported, and it must be interface #1 +Suggested data rate is 6 Mbps, optimizations may be needed to support other PHY rates. -node lookups, forward list generation, ACK bitmap traversal, etc are slow +Be sure to remove all debug when comparing performance +The code only works for ETX metric...other metrics are not supported +Code can only be run on network running SOAR. Nodes running other MCL protocols may crash SOAR. MCL Readme: To install the MCL driver, put the following files in a directory: mclmp.inf mcltp.inf mcl.sys mcl.exe (The mkkit.vbs script can be used to do this automatically.) Then you need to install the miniport (using mclmp.inf) and install the transport (using mcltp.inf). You can do this in either order. To programmatically install both the miniport and transport, you can use the mcl.exe program. Use "mcl.exe install " where is the full path of the directory with the above files. For example, c:\mclkit. Don't forget the , or you'll get a cryptic error. After installing MCL, you will see the Mesh Virtual Adapter show up in the Network Connections folder. You can configure IPv4 and IPv6 to use this virtual adapter the same as any real physical adapter. You will then have IP connectivity over the mesh. Use ipconfig.exe to check IP address assignment. To upgrade to a new version of mcl.sys, you can Disable the miniport (right-click on the Mesh Virtual Adapter in Network Connections), copy a new mcl.sys to %windir%\system32\drivers, then Enable the miniport. Rebooting is not necessary. Note that if the private ioctls have changed, you will also need a matching mcl.exe. (The update.vbs script can be used to do this automatically.) You can also use mcl.exe to disable/enable the miniport, using "mcl.exe disable" and "mcl.exe enable", or to do both use "mcl.exe restart". To manually install the miniport: Open the Add Hardware Wizard (Control Panel / Add Hardware). Click Next. Wait while it searches. When it asks if the hardware is connected, select "Yes" then Next. Scroll down to the bottom, select "Add a new hardware device" then Next. Select "Install the hardware that I manually select" then Next. Select "Network Adapters" then Next. Wait while it searches. Click on Have Disk. Browse to the directory where you put the MCL installation files. Select "MCL (Mesh Connectivity Layer) Virtual Adapter" then Next. To manually install the protocol: Open the Network Connections folder in Control Panel. Right-click on any one of your adapters and choose Properties. In the General tab, click on Install. Select Protocol then Add. Wait while it searches. Click on Have Disk. Browse to the directory where you put the MCL installation files. Select "MCL (Mesh Connectivity Layer) Protocol" then OK. The LQSR (Link-Quality Source Routing) protocol is implemented inside MCL. To install the LQSR netmon parser: Install netmon if necessary. Go to netmon's directory, eg \Program Files\Microsoft Network Monitor. Copy lqsr.dll to the Parsers subdirectory. Edit netmon.ini and add this line to the [ETYPES] section: ETYPE_MSFT =LQSR,Link-Quality Source Routing, 886F Edit parser.ini and add this line to the [PARSERS] section: LQSR.DLL = 0: LQSR And also add this section to parser.ini: [LQSR] Comment = "Link-Quality Source Routing" FollowSet = HelpFile = Edit Parsers\mac.ini and add this line to the [ETYPES] section: 0x886F = LQSR A summary of the major mcl.exe options: mcl install Installs the MCL driver using files in the specified directory and enables the MCL driver. mcl enable Enables the MCL driver, causing it to be loaded and start running. mcl disable Disables the MCL driver, causing it to stop running and unload. mcl restart Disables then enables the MCL driver. mcl [-v] va Prints information & statistics about the virtual adapter. This is the first command to use to see if MCL is running properly. mcl [-v] lc Prints information & statistics about the link cache. This is the second command to use to see if MCL is running properly. It will tell you what other nodes this node knows about. mcl lcf Flushes the link cache so MCL forgets everything it knows about other nodes and links. mcl sr Prints the source route that will be used to reach the destination. This queries the link cache for a route but does NOT do Route Discovery. The destination should be the MCL address assigned to another node. Run "mcl va" on the other node to get its address. Note that nodes must have the same crypto configuration, metric type, and version number (see "mcl va") in order to communicate. Registry configuration: The registry configuration keys for MCL are located in the usual place for network adapter configuration. That is, HKLM\System\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318} Then under there look for the adapter with ComponentId ms_mclmp. The registry keys of interest: NetworkAddress REG_SZ This is the MCL address of the node. It is automatically configured when MCL first runs, but you can edit it (and restart MCL) to change it. Most registry keys live in the Parameters subkey. Use "mcl -p vac" to configure them. Both CryptoKeyMAC and CryptoKeyAES must be configured for MCL's cryptography to be enabled. ("mcl va" will show if crypto is disabled.) Note that if cryptography is enabled, then the netmon parser will not be able to parse the payloads (IP headers etc) of the LQSR packets.