Messages from Agent - TO MAIN QUEUE: AGENT_HELLO: { "message": AGENT_HELLO (0), "data": { "hostname": "", "version": "", "interfaces": ["ens0p0","ens0p1"] } } AGENT_ERROR: // for errors that are not related to tasks { "message": AGENT_ERROR (1), "data": { "error": "" } } - TO SEPARATED QUEUE: AGENT_STATUS: { "message": AGENT_STATUS (2), "data": { "status": TASK_STATUS_, // PREPARING (0), RUNNING (1), STOPPED (2), FINISHED (3), ERROR (4) "taskId": , "progress": "Optional 0-100 for TASK_STATUS_RUNNIG", "error": "Optional for TASK_STATUS_ERROR" } } AGENT_PING: { "message": AGENT_PING (3), } Messages from Controller - TO SEPARATED QUEUE: CONTROLLER_PONG: { "message": CONTROLLER_PONG (3), } CONTROLLER_GET_TASKS_STATUS: { "message": CONTROLLER_GET_TASKS_STATUS (4), "data": { "tasks": [123, 456, 678909], // []int64 } } CONTROLLER_TASK_PAUSE: { "message": CONTROLLER_TASK_PAUSE (1), "data": { "taskId": } } CONTROLLER_TASK_STOP: { "message": CONTROLLER_TASK_STOP (2), "data": { "taskId": } } CONTROLLER_TASK_START: { "message": CONTROLLER_TASK_START (0), "data": { "taskId": , "data": { "type": TYPE_VFIO (0), // TYPE_POSIX (1) "mode": MODE_THROUGHPUT_BPS (0), // MODE_THROUGHPUT_PPS (1), MODE_TCP_CONNECTIONS (2), MODE_USERS (3), "time": , "sourceClient": [ "enp0s0": [ { "IPs": ["127.0.0.0/24", "120.0.1.1/32"], // SRC-IPs mask cannot be duplicated into two or more entities within 1 network interface "MACs": { "mode": IP_HASH (1), "addresses": [ { "address": "00-B0-D0-63-C2-26", }, { "address": "01-B0-D0-63-C2-26", } ], }, "nextHops": { "mode": ROUND_ROBIN (0), "addresses": [ { "address": "00-B0-D0-63-C2-26", "weight": 47, }, { "address": "01-B0-D0-63-C2-26", "weight": 53, } ], }, }, ], "enp0s1": [ { "IPs": ["121.0.1.1/32"], "MACs": { "mode": IP_HASH (1), "addresses": [ { "address": "00-B0-D0-63-C2-26", }, { "address": "01-B0-D0-63-C2-26", } ], }, // every packet receives round-robin balancing mac "nextHops": { "mode": ROUND_ROBIN (0), "addresses": [ { "address": "00-B0-D0-63-C2-26", "weight": 47, }, { "address": "01-B0-D0-63-C2-26", "weight": 53, } ], }, }, { "IPs": ["124.0.1.0/24", "127.0.1.0/16"], "MACs": { "mode": IP_HASH (1), "addresses": [ { "address": "00-B0-D0-63-C2-26", }, { "address": "01-B0-D0-63-C2-26", } ], }, // IPs hash, divide and bind to every IPv4/IPv6. MAC-адресов не может быть больше IPs-адресов "nextHops": { "mode": ROUND_ROBIN (0), "addresses": [ { "address": "00-B0-D0-63-C2-26", "weight": 47, }, { "address": "01-B0-D0-63-C2-26", "weight": 53, } ], }, }, { "IPs": ["129.0.1.1/32"], "MACs": { "mode": RANDOM (2), // random MAC every packet }, "nextHops": { "mode": ROUND_ROBIN (0), "addresses": [ { "address": "00-B0-D0-63-C2-26", "weight": 47, }, { "address": "01-B0-D0-63-C2-26", "weight": 53, } ], }, }, { "IPs": ["128.0.1.0/24"], "MACs": { "mode": GENERATE (3), // generate mac for every IPv4/IPv6 and bind it }, "nextHops": { "mode": ROUND_ROBIN (0), "addresses": [ { "address": "00-B0-D0-63-C2-26", "weight": 47, }, { "address": "01-B0-D0-63-C2-26", "weight": 53, } ], }, } ], ], "sourceReceiver": [ ], "plugins": [ { "plugin": , "weight": <0-100 value> }, { "plugin": , "weight": <0-100 value> } ], "performance": { "maxBps": , "maxPps": , "maxTcpConnections": , // max bps or max pps limit required with max tcp connections "maxUsers": }, "tweaks": [[0, 10], [10, 60], [20, 60], [30, 120], ...] } } }