Mmmux: Unterschied zwischen den Versionen

Aus LaborWiki
Wechseln zu: Navigation, Suche
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
Zeile 9: Zeile 9:
In our current implementation we have a canbus daemon (cand) that connects the canbus transceiver hardware with the tcp protocol. Programs that need to talk to canbus devices connect via tcp to the cand, which then forwards data from and to the bus.
In our current implementation we have a canbus daemon (cand) that connects the canbus transceiver hardware with the tcp protocol. Programs that need to talk to canbus devices connect via tcp to the cand, which then forwards data from and to the bus.


In order to connect our current infrastructure to the mmmuxd, a proxy program connects the cand service with the mmmuxd. This way we can migrate current infrastructure step by step.
In order to connect our current infrastructure to the mmmuxd, a proxy program connects the cand service with the mmmuxd. This way we can migrate the current infrastructure step by step.


== Operation scenarios ==
== Operation scenarios ==
Zeile 17: Zeile 17:


It can be used to connect distant canbus/radio networks with one another - for example connecting two canbus networks via ethernet in scenarios where otherwise the cable length would be over the specifications for safe operation.
It can be used to connect distant canbus/radio networks with one another - for example connecting two canbus networks via ethernet in scenarios where otherwise the cable length would be over the specifications for safe operation.
== Metainformation and modes of operation ==
In some scenarios it may be neccessary to cache requests or not forward packets from one medium to another and have some sort of routing for packets. The mmmuxd adds a special header containing the following information to each packet:
* version -- protocol version
* speed -- speed at which the packet was received (in bit/s)
* frequency -- frequency on which the packet was received (in kHz)
* flags:
** stick to medium: do not forward to a different medium
** stick to band: do not forward on other radio bands
* medium: medium from which the packet was received (or is to be sent if "stick to mediun" flag is present)
** ethernet: for client-to-client requests (i.e. requesting data from a connected proxy)
** canbus
** radio

Version vom 13. April 2010, 15:11 Uhr

Mmmuxd.png

mmmuxd stands for Multi Media Multiplexing Daemon, which is a small daemon that basically accepts tcp connections and forwards incoming data to all other connected clients.

Whereas the term "multi media" often stands for fancy graphical eye-candy stuff, it in this case means "connecting different transport media", such as can-bus, radio transceivers and ethernet.

The mmmuxd is kept as small as possible for the sake of availability. By default, the mmmuxd only forwards tcp packets - in order to connect an additional medium (such as canbus), one needs to have a client that implements the hardware interface to the canbus device on one side and the mmmuxd protocol on the other - the same holds for radio transceivers etc.

Migration from current Infrastructure

Mmmuxd migration scheme.png

In our current implementation we have a canbus daemon (cand) that connects the canbus transceiver hardware with the tcp protocol. Programs that need to talk to canbus devices connect via tcp to the cand, which then forwards data from and to the bus.

In order to connect our current infrastructure to the mmmuxd, a proxy program connects the cand service with the mmmuxd. This way we can migrate the current infrastructure step by step.

Operation scenarios

The mmmuxd may be used to multiplex access to a single media transceiver - such as rfm12usb. This way one may use a single hardware device with several different applications at a time - this was the primary implementation goal.

It may as well be used to forward data between different media and can easily connect canbus-speaking devices with radio transceivers.

It can be used to connect distant canbus/radio networks with one another - for example connecting two canbus networks via ethernet in scenarios where otherwise the cable length would be over the specifications for safe operation.

Metainformation and modes of operation

In some scenarios it may be neccessary to cache requests or not forward packets from one medium to another and have some sort of routing for packets. The mmmuxd adds a special header containing the following information to each packet:

  • version -- protocol version
  • speed -- speed at which the packet was received (in bit/s)
  • frequency -- frequency on which the packet was received (in kHz)
  • flags:
    • stick to medium: do not forward to a different medium
    • stick to band: do not forward on other radio bands
  • medium: medium from which the packet was received (or is to be sent if "stick to mediun" flag is present)
    • ethernet: for client-to-client requests (i.e. requesting data from a connected proxy)
    • canbus
    • radio