PlatformLab / HomaModule

A Linux kernel module that implements the Homa transport protocol.
175 stars 43 forks source link

Add gso_force_software kernel parameter #23

Closed breakertt closed 1 year ago

breakertt commented 1 year ago

Add gso_force_software kernel parameter which can force software GSO when set nonzero through sysctl. This parameter also indicates an alternative way to make Homa work over TSO-unsupported NICs instead of setting max_gso_size.

The .pcap files in force-software-GSO.zip are my experiment results over two virtual machines and one host setup. Virtual machines are installed with libvirt and with virtio NICs. The node0 is inserted the HomaModule while node1 is not as tcpdump doesn't work with HomaModule's GRO bypass techniques. These .pcap files show we need explicitly assign skb_shinfo(skb)->gso_type = 0xd while creating skbs to make the sender perform the segmentation in a expected way.

johnousterhout commented 1 year ago

How did you decide on the value 0xd to request GSO in software? When look in the kernel sources, that corresponds to the symbol SKB_GSO_TUNNEL_REMCSUM.

-John-

johnousterhout commented 1 year ago

Answering my own question: I see that 0xd is the value I put in the code for testing (not sure why I chose that value...).

breakertt commented 1 year ago

Answering my own question: I see that 0xd is the value I put in the code for testing (not sure why I chose that value...).

Yeah, that 0xd value is there in the HomaModule and it works for at least for virtio NIC.