Paris Lodron Universität SalzburgDepartment of Scientific Computing
Paris Lodron   
Universität Salzburg
Multimedia Communications

Configuration Example

Logging

[log]
The base level determines which types of messages are included in the log. Available message types are: DEBUG, INFO, WARN, ERROR
base_level=INFO
Controls how much log output is generated. Higher values will cause more messages.
verb_level=1
If set, the logging subsystem will create the file and will use it for storing log messages.
file=/home/ulegene/log
If set, the logging subsystem will forward messages to the system logging facility
syslog=no

Address Mappings

This section contains information about the mapping of network protocol addresses (e.g. IP) to Network Point of Attachment (NPA) addresses, which may be used by encapsulation protocols like ULE or MPE This section can contain entries of the form map.<number>=<net_addr>=<npa_addr> which represents an NPA mapping. <net_adr> can be a IPv4 or IPv6 address.
[addrs]
Whether destination addresses should be used
enable_npa=yes
Enable mapping of IP multicast addresses to NPA addresses
enable_npa_from_ip_mc=yes
Default NPA destination address (for all protocols)
default.all=00:00:00:00:00:00
Default NPA destination address for IPv4 payload packets
default.ip4=00:00:00:00:00:00
Default NPA destination address for IPv6 payload packets
default.ip6=00:00:00:00:00:00
Some address mapping examples.
map.1=10.2.1.2=00:D0:5C:21:A1:77
map.2=10.2.1.3=00:D0:5C:21:A1:78
map.3=10.2.1.4=00:D0:5C:21:A1:79

Encapsulation Chains

Each section that begins with "chain." defines a encapsulation chain. The chain specifies where to get the input data, what should be done with it (e.g. encapsulate using ULE) and where the resulting data should be sent to (the output mux).
This defines a chain with the name "mpe0".
[chain.mpe0]
The chain will only be created if active is set to "yes".
active=yes
This tells Ulegene where the input data for this chain will come from. In this example, it says that the device module to use for the input is a virtual network interface ("netiface") which should be named ule-pducX ("devname=ule-pduc") and configured with the IP address 10.2.1.1 (addr=10.2.1.1).
input={netiface devname=ule-pduc,addr=10.2.1.1}
The encapsulation method which should be used. Here, the Multi-protocol Encapsulation module is used. Any configuration information for the mpe module would be expected in the default section which is "[encaps.mpe]" in this case.
encaps=mpe
The module which receives the encapsulated data is configured here. Usually, this will be the ts mux module. The config statement tells Ulegene to use the ts mux module with the configuration taken from the section "/mux/ts/primary" for the output. The "@" in front of the module name means that only one instance of the specified module should be created. So if other chains would also specify "@ts:/mux/ts/primary" as their output mux module, they all would use the same instance of the ts module.
mux=@ts:/mux/ts/primary
The mux mode tells the ts mux module how to interpret the input data. If set to "single", the mux module considers the input data as belonging to on TS logical stream (i.e. to one PID). This is also the default if no mode is specified. If the mux mode is set to "raw", the mux module expects the input data to already be in Transport Stream format and not belonging to a special PID. The raw mux mode is intended for including external TS data, e.g. from an ASI device, in the final multiplexer output.
muxmode=single
The PID of the TS data generated by this chain if the mux mode was set to "single".
pid=400
Tells the ts mux module that this stream should receive 25 % of the target bandwith of the multiplexer. Instead of specifying a perentage value via "muxshare", an absolute bandwidth for this chain can be specified by using "muxrate", e.g. "muxrate=8MBit".
muxshare=0.25
If this chain should operate in bridgine mode, i.e. transport ethernet frames instead of IP or IPv4 packets, this will be set "yes".
bridging=no

[chain.ule-pduc]
active=yes
input={netiface devname=ule-pduc,addr=192.168.3.1}
# The encapsulation method which should be used
encaps={ule:/encaps/ule-pduc exts=pduconcat}
mux=@ts:/mux/ts/primary
bridging=no
pid=402
muxshare=0

[chain.asirx0]
active=no
input={master txdev=,rxdev=/dev/asirx0}
#encaps=none
mux={ts outdev="{file outfile=/tmp/uleg-asirx0.bin}"}
muxmode=raw

Encapsulation Methods

[encaps.ule]
# ULE Extensions
# The first one (left-most) in this list will be the last extension invoked during
# the encapsulation process. I.e. it will be the outer-most extension (right after the
# SNDU base header or destination NPA).
#
# Example:
# 	exts=ext3,ext2,ext1
#
# will produce the following SNDUs:
#
# < ------------------------------------------- SNDU --------------------------------------- >
# +-+--------+------+---------------+-------+-------+-------+-----------------------+--------+
# |D| Length | Type | Dest Address* | ext3  | ext2  | ext1  |           PDU         | CRC-32 |
# +-+--------+------+---------------+-------+-------+-------+-----------------------+--------+
#
# *Only present if D=1
exts=

### ULE Extensions ###

[ulext.pduconcat]
# The maximum amount of time that a packet is queued (in milliseconds) 
maxdelay=1000
# Maximum number of packets per PDU-Concat SNDU
maxpackets=9
# Maximum size of concatenated payloads (in bytes)
maxsize=32757
#trace={file name="/home/ulegene/traces/pduconcat.dat"}

[ulext.hdrpad]
# Length of padding header
padlen=10

Multiplexers

[mux.ts.primary]
# The default Transport Stream Packet Identifier which should be used for outgoing packets
pid=400
# The packing threshold in milliseconds (0 to disable packing)
packing=0
# The size of the output buffer
bufsize=3948
# The device that is used for transmitting data
outdev=dektec
# Target bandwidth
bandwidth=30MBit

[mux.ts.secondary]
# The default Transport Stream Packet Identifier which should be used for outgoing packets
pid=0x190
# The packing threshold in milliseconds (0 to disable packing)
packing=0
# The size of the output buffer
bufsize=3948
# The device that is used for transmitting data
#output=@file:/device/file/ouput
#outdev={file infile=,outfile="/dev/null"}
outdev={file infile=,outfile="/dev/null"}
#outdev=@master:/device/master
# Target bandwidth
bandwidth=30MBit

Devices

[device.net.input]
srcaddr=127.0.0.1:9988

[device.net.input2]
srcaddr=127.0.0.1:9998

[device.netiface]
# This section configures the virtual network interface which is used to receive
# data that should be encapsulated.

# The name of the network device
# Note: The instance number will be appended to this name. So if you've devname=uleg
# then the resulting name for the first network device will be uleg0.
# If you start further instances of ulegene, the names of the network interfaces
# will be uleg1, uleg2, etc.
devname=uleg
# Whether ulegene should operatre in bridging mode. When operating in bridging mode,
# ulegene reads ethernet frames from its network interface and encapsulates them.
# Note: The encapsulation method has to support this (e.g. ULE provides support for
# bridging)
bridging=no
# The IP address which is assigned to the network interface.
addr=192.168.1.1
# Network address mask 
mask=255.255.255.0
# Maximum Transmission Unit (MTU)
# Specifies the maximum size of packets which can be received on the network interface. 
mtu=1500

[device.file]
filename=uleg.out

[device.file.output]
outfile=uleg.out

[device.master]
txdev=/dev/asitx0
txrate=5MBit
txburstmode=yes
txbuffers=8
txbufsize=
txtolerance=0
txclock_source=0
txnull_packets=yes

[device.dektec]
devaddr=1:1
devserial=123456
devnum=0
rate=30MBit
mod.type=QAM64
mod.freq=488500000
null_packets=yes
bufsize=19200
fifomin=0

[device.cobra]
devdir=/dev/cobra
devnum=0
rate=1000000
exclusive=no
© 2006-2007 Multimedia Communications Lab, Department of Computer Sciences, Paris Lodron Univ. Salzburg