Roger,
Ostinato supports both TCP and UDP - but TCP is stateless; it cannot do 3-way handshake and establish TCP connections.
I installed the mininet VM, started mininet with "sudo -E mn" which uses the default minimal topology with 2 hosts and 1 switch and then from h1 sent TCP and UDP streams successfully to h2.
Here's the output of dump-flows -
Ā
mininet> dpctl dump-flows
*** s1 ------------------------------------------------------------------------
Ā cookie=0x0, duration=202.156s, table=0, n_packets=9929, n_bytes=595740, idle_timeout=60, priority=65535,udp,in_port="s1-eth1",vlan_tci=0x0000,dl_src=26:e5:29:01:96:5b,dl_dst=d6:41:7c:21:0b:02,nw_src=10.0.0.1,nw_dst=10.0.0.2,nw_tos=0,tp_src=0,tp_dst=0 actions=output:"s1-eth2"
Ā cookie=0x0, duration=49.649s, table=0, n_packets=2434, n_bytes=146040, idle_timeout=60, priority=65535,tcp,in_port="s1-eth1",vlan_tci=0x0000,dl_src=26:e5:29:01:96:5b,dl_dst=d6:41:7c:21:0b:02,nw_src=10.0.0.1,nw_dst=10.0.0.2,nw_tos=0,tp_src=0,tp_dst=0 actions=output:"s1-eth2"
Ā cookie=0x0, duration=49.636s, table=0, n_packets=2434, n_bytes=131436, idle_timeout=60, priority=65535,tcp,in_port="s1-eth2",vlan_tci=0x0000,dl_src=d6:41:7c:21:0b:02,dl_dst=26:e5:29:01:96:5b,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,tp_src=0,tp_dst=0 actions=output:"s1-eth1"
Ā cookie=0x0, duration=0.652s, table=0, n_packets=0, n_bytes=0, idle_timeout=60, priority=65535,icmp,in_port="s1-eth2",vlan_tci=0x0000,dl_src=d6:41:7c:21:0b:02,dl_dst=26:e5:29:01:96:5b,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,icmp_type=3,icmp_code=3 actions=output:"s1-eth1"
Ā cookie=0x0, duration=90.647s, table=0, n_packets=2, n_bytes=84, idle_timeout=60, priority=65535,arp,in_port="s1-eth1",vlan_tci=0x0000,dl_src=26:e5:29:01:96:5b,dl_dst=d6:41:7c:21:0b:02,arp_spa=10.0.0.1,arp_tpa=10.0.0.2,arp_op=2 actions=output:"s1-eth2"
Ā cookie=0x0, duration=44.568s, table=0, n_packets=1, n_bytes=42, idle_timeout=60, priority=65535,arp,in_port="s1-eth2",vlan_tci=0x0000,dl_src=d6:41:7c:21:0b:02,dl_dst=26:e5:29:01:96:5b,arp_spa=10.0.0.2,arp_tpa=10.0.0.1,arp_op=1 actions=output:"s1-eth1"
mininet> dpctl dump-flows tcp
*** s1 ------------------------------------------------------------------------
Ā cookie=0x0, duration=55.213s, table=0, n_packets=2706, n_bytes=162360, idle_timeout=60, priority=65535,tcp,in_port="s1-eth1",vlan_tci=0x0000,dl_src=26:e5:29:01:96:5b,dl_dst=d6:41:7c:21:0b:02,nw_src=10.0.0.1,nw_dst=10.0.0.2,nw_tos=0,tp_src=0,tp_dst=0 actions=output:"s1-eth2"
Ā cookie=0x0, duration=55.200s, table=0, n_packets=2706, n_bytes=146124, idle_timeout=60, priority=65535,tcp,in_port="s1-eth2",vlan_tci=0x0000,dl_src=d6:41:7c:21:0b:02,dl_dst=26:e5:29:01:96:5b,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,tp_src=0,tp_dst=0 actions=output:"s1-eth1"
mininet> dpctl dump-flows udp
*** s1 ------------------------------------------------------------------------
Ā cookie=0x0, duration=210.107s, table=0, n_packets=10323, n_bytes=619380, idle_timeout=60, priority=65535,udp,in_port="s1-eth1",vlan_tci=0x0000,dl_src=26:e5:29:01:96:5b,dl_dst=d6:41:7c:21:0b:02,nw_src=10.0.0.1,nw_dst=10.0.0.2,nw_tos=0,tp_src=0,tp_dst=0 actions=output:"s1-eth2"
I saved the streams in the attached file that you can open in Ostinato. Note that these are streams on h1 towards h2 for the default mininet topology. You need to open an xterm on h1 using "xterm h1" followed by starting Ostinato from that h1's xterm.
Let me know if you have any questions.