Skip to content

juhulian/mpi-dissector

Repository files navigation

mpi-dissector

This Wireshark Plugin dissect the general Open MPI TCP-Traffic.

Please note: It is a proof of concept plugin with no claim to completeness! Usage at your own risk! It was only tested on a Linux machine with Wireshark 1.99.2 and Open MPI 1.8.4.

Table of Contents

Installation

back to top ↑

To install this dissector, please read README.plugins. The help file is also available in the Wireshark doc folder.

  1. Download, if you have not already done, the Wireshark sources or clone the git repository

    git clone https://code.wireshark.org/review/wireshark
    
  2. Pack the following files in the wireshark/plugins/mpi folder

    • AUTHORS
    • COPYING
    • ChangeLog
    • CMakeLists.txt
    • Makefile.am
    • Makefile.common
    • Makefile.nmake
    • moduleinfo.h
    • moduleinfo.nmake
    • packer-mpi.c
    • packer-mpi.h
    • plugin.rc.in
  3. Changes to existing Wireshark files (e.g. see section 3.2 Permanent addition in the readme file)
    Make all changes in alphabetical order!
    You will need to change the following files:

    • configure.ac
    • CMakeLists.txt
    • epan/Makefile.am
    • Makefile.am
    • packaging/nsis/Makefile.nmake
    • packaging/nsis/wireshark.nsi
    • plugins/Makefile.am
    • plugins/Makefile.nmake

3.1. Changes to plugins/Makefile.am

SUBDIRS = $(_CUSTOM_SUBDIRS_) \
   docsis \
   ...
   mate \
   mpi \
   opcua \
   ...

3.2. Changes to plugins/Makefile.nmake

PLUGIN_LIST = \
   docsis      \
   ...
   mate        \
   mpi         \
   opcua       \
   ...

3.3. Changes to the top level Makefile.am

if HAVE_PLUGINS
-include plugins/Custom.make
plugin_ldadd = $(_CUSTOM_plugin_ldadd_) \
   -dlopen plugins/docsis/docsis.la \
   ...
   -dlopen plugins/mate/mate.la \
   -dlopen plugins/mpi/mpi.la \
   -dlopen plugins/opcua/opcua.la \
   ...

3.4. Changes to the top level configure.ac

AC_CONFIG_HEADERS(config.h)
AC_OUTPUT(
   Makefile
   ...
   plugins/mate/Makefile
   plugins/mpi/Makefile
   plugins/opcua/Makefile
   ...

3.5. Changes to epan/Makefile.am

if ENABLE_STATIC
-include ../plugins/Custom.make
plugin_src = \
   ../plugins/asn1/packet-asn1.c \
   ...
   ../plugins/m2m/wimax_tlv.c \
   ../plugins/mpi/packet-mpi.c \
   ../plugins/wimax/crc.c \
   ...

3.6. Changes to CMakeLists.txt

if(ENABLE_PLUGINS)
   ...
   set(PLUGIN_SRC_DIRS
      plugins/docsis
      ...
      plugins/mate
      plugins/mpi
      plugins/opcua
      ...

3.7. Changes to the installers
If you want to include your plugin in an installer you have to change following files: * packaging/nsis/Makefile.nmake * packaging/nsis/wireshark.nsi

3.7.1. Changes to packaging/nsis/Makefile.nmake

PLUGINS= \                           
   ../../plugins/docsis/docsis.dll \
   ...
   ../../plugins/mate/mate.dll \
   ../../plugins/mpi/mpi.dll \    
   ../../plugins/opcua/opcua.dll \
   ...

3.7.2. Changes to packaging/nsis/wireshark.nsi

Section "Dissector Plugins" SecPlugins             
;-------------------------------------------       
SetOutPath '$INSTDIR\plugins\${VERSION}'           
File "${STAGING_DIR}\plugins\${VERSION}\docsis.dll"
...
File "${STAGING_DIR}\plugins\${VERSION}\m2m.dll"  
File "${STAGING_DIR}\plugins\${VERSION}\mpi.dll"  
File "${STAGING_DIR}\plugins\${VERSION}\opcua.dll"
...
  1. (Re)Build/Install Wireshark
    Run the following commands in the Wireshark root folder.

    autogen.sh
    ./configure #optional with some options, e.g. --prefix=...
    make install

    This will also create the Makfile for the Plugin. For future works on the plugin, just run make install in the plugin dir (plugins/mpi/).

Features/Todos

back to top ↑

  • dissect oob headers
    • basic oob header
    • support more oob headers in one packet
    • carry the length over packets
  • dissect oob messages
    • connection ack
    • send handler (partly)
    • orte daemon tree spawn
    • orte daemon add local procs
    • orte daemon message local procs
    • orte daemon exit cmd
    • orte plm update proc state
    • orte plm init routes cmd
    • orte grpcomm peer_modex
    • orte grpcomm peer_init_barrier
    • orte grpcomm peer_fini_barrier
    • orte rml tag iof
    • orte rml tag show help
  • dissect btl header
    • base header
    • common header
    • match header
    • rendezvous header (not tested!)
    • rget header (not tested!)
    • ack header (not tested!)
    • nack header
    • frag header (not tested!)
    • get header
    • put/rdma header (not tested!)
    • fin header (not tested!)
    • rndvrestartnotify header (not tested!)
    • rndvrestartack header
    • rndvrestartnack header
    • recverrnotify header
  • dissect btl message
    • synchronization
    • barrier
  • push the todo's to the milestones

Screenshots

back to top ↑

oob msg data

btl sync req

btl match

btl match full

About

Wireshark Plugin to dissect Open MPI TCP-Traffic.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published