# This is an example for a minimal loopback configuration. # # All messages will be sent back to the origin using UDP packets. # # You can use this configuration in conjunction with the 'send', 'receive' and 'random' # utilities as shown below (run all three steps in parallel). # # 0. Overview: # # ./signal --PIPE--> ./pipe --UDP--> ./node --UDP--> ./pipe # # 1. Start server: # # $ ./node etc/loopback.conf # # 2. Send random data to server: # # $ ./signal random -r 10 -v 4 | ./pipe etc/loopback.conf node1 # # 3. Receive data from server: # # $ ./pipe etc/loopback.conf node2 # # Author: Steffen Vogel # Copyright: 2016, Institute for Automation of Complex Power Systems, EONERC ## stats = 1; debug = 10; nodes = { node1 = { type = "socket", layer = "udp", local = "134.130.169.31:12002", # Local ip:port, use '*' for random port remote = "134.130.169.98:12001", header = "gtnet-skt:fake", # 'gtnet-skt' or 'villas'. If not provided, 'villas' header will be used endian = "big", # Can be 'little' or 'small'. If not provided (default), little endianness logic will be applied vectorize = 1, # Number of samples to fetch per iteration from the socket netem = { enabled = false, delay = 1000000, # In micro seconds! jitter = 300000, distribution = "normal" } }, node2 = { type = "socket", layer = "udp", local = "134.130.169.31:12004", # Local ip:port, use '*' for random port remote = "134.130.169.99:12003", header = "gtnet-skt:fake", # 'gtnet-skt' or 'villas'. If not provided, 'villas' header will be used endian = "big", vectorize = 1 # Number of samples to fetch per iteration from the socket } }; paths = ( { in = "node1", # Name of the node we listen to (see above) out = "node1", # And we loop back to the origin hooks = ( { type = "print", output = "stdout" } ) }, { in = "node2", out = "node2", hooks = ( { type = "print", output = "stdout" } ) } );