What is a separate flow in Linux fq_codel?
It seems both source and destination ports are included, at least by default:
http://lxr.free-electrons.com/source/net/core/flow_dissector.c#L655
655 /**656 * __skb_get_hash: calculate a flow hash657 * @skb: sk_buff to calculate flow hash from658 *659 * This function calculates a flow hash based on src/dst addresses660 * and src/dst port numbers. Sets hash in skb to non-zero hash value661 * on success, zero indicates no valid hash. Also, sets l4_hash in skb662 * if hash is a canonical 4-tuple hash over transport ports.663 */664 void __skb_get_hash(struct sk_buff *skb)
Per http://mdh.diva-portal.org/smash/get/diva2:754020/FULLTEXT01.pdf (someone's PhD thesis):
The flows are separated by hashing a 5-tuple value from the packet (default is src/dest port/ip and protocol) together with a random number
Apart from default bit, it's clear.