hmbdc
simplify-high-performance-messaging-programming
DefaultUserConfig.hpp
1 #include "hmbdc/Copyright.hpp"
2 #pragma once
3 
4 namespace hmbdc { namespace tips { namespace netmap {
5 /**
6  * the send and recv engine config parameters and its default values used in this module
7  */
8 constexpr char const* const DefaultUserConfig = R"|(
9 {
10  "doChecksum" : false, "__doChecksum" :"calculating checksum when sending or receiving",
11  "netmapPort" : "netmapPort UNSPECIFIED", "__netmapPort" :"the default netmap device (i.e. netmap:eth0-2, netmap:ens4) for sending/receiving, no default value. When multiple tx rings exists for a device (like 10G NIC), the sender side NEEDS TO be specific on which tx ring to use to avoid out of order message on receiving side",
12  "nmResetWaitSec": 2, "__nmResetWaitSec" :"when starting the engine, netmap dev is reset for read and write this is the delay for it to finish",
13  "schedPolicy" : "SCHED_OTHER", "__schedPolicy" :"engine thread schedule policy - check man page for allowed values",
14  "schedPriority" : 0, "__schedPriority" :"engine thread schedule priority - check man page for allowed values",
15  "nmTxRings" : "0", "__nmTxRings" :"only effective on software ports created on the fly:how many tx rings in the device, 0 mean use default, no change",
16  "nmTxSlots" : "0", "__nmTxSlots" :"only effective on software ports created on the fly:how many slots in a tx ring, 0 mean use default, no change",
17  "nmRxRings" : "0", "__nmRxRings" :"only effective on software ports created on the fly:how many rx rings in the device, 0 mean use default, no change",
18  "nmRxSlots" : "0", "__nmRxSlots" :"only effective on software ports created on the fly:how many slots in a rx ring, 0 mean use default, no change",
19  "tx" :
20  {
21  "dstEthAddr" : "ff:ff:ff:ff:ff:ff", "__dstEthAddr" :"used in the ethernet frame composed by the send engine",
22  "dstIp" : "10.1.0.1", "__dstIp" :"used in the ethernet frame composed by the send engine",
23  "dstPort" : 1234, "__dstPort" :"used in the ethernet frame composed by the send engine",
24  "hmbdcName" : "netmap-tx", "__hmbdcName" :"engine thread name",
25  "maxSendBatch" : 60, "__maxSendBatch" :"up to how many messages to send in a batch (within one udp packet)",
26  "mtu" : 1500, "__mtu" :"mtu, check ifconfig output for this value for each NIC in use",
27  "nmOpenFlags" : 4096, "__nmOpenFlags" :"flags when open the netmap device for sending, default to be 0x1000, which is NETMAP_NO_TX_POLL",
28  "outBufferSizePower2" : 0, "__outBufferSizePower2" :"2^outBufferSizePower2 is the number of message that can be buffered in the engine, default 0 means automatically calculated based on 16KB as the low bound",
29  "sendBytesBurst" : 0, "__sendBytesBurst" :"rate control for how many bytes can be sent in a burst, us the OS buffer size (131071) as reference, 0 means no rate control.",
30  "sendBytesPerSec" : 110000000, "__sendBytesPerSec" :"rate control for how many bytes per second - it is turned off by sendBytesBurst==0.",
31  "srcEthAddr" : "00:00:00:00:00:00", "__srcEthAddr" :"used in the ethernet frame composed by the send engine",
32  "srcIp" : "10.0.0.1", "__srcIp" :"used in the ethernet frame composed by the send engine",
33  "srcPort" : 1234, "__srcPort" :"used in the ethernet frame composed by the send engine",
34  "ttl" : 1, "__ttl" :"the switch hop number"
35  },
36  "rx" :
37  {
38  "busyWait" : true, "__busyWait" :"when true, busy wait for the packet to arrive",
39  "hmbdcName" : "netmap-rx", "__hmbdcName" :"engine thread name",
40  "nmOpenFlags" : 0, "__nmOpenFlags" :"flags when open the netmap device for recving",
41  "pollWaitTimeMillisec" : 10, "__pollWaitTimeMillisec" :"when busyWait == false, this is the time limit used for each polling "
42  }
43 }
44 )|";
45 }}}
46 
Definition: Base.hpp:12