e8648a1fdb
In some situations a CPU match permits a better spreading of connections, or select targets only for a given cpu. With Remote Packet Steering or multiqueue NIC and appropriate IRQ affinities, we can distribute trafic on available cpus, per session. (all RX packets for a given flow is handled by a given cpu) Some legacy applications being not SMP friendly, one way to scale a server is to run multiple copies of them. Instead of randomly choosing an instance, we can use the cpu number as a key so that softirq handler for a whole instance is running on a single cpu, maximizing cache effects in TCP/UDP stacks. Using NAT for example, a four ways machine might run four copies of server application, using a separate listening port for each instance, but still presenting an unique external port : iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 0 \ -j REDIRECT --to-port 8080 iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 1 \ -j REDIRECT --to-port 8081 iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 2 \ -j REDIRECT --to-port 8082 iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 3 \ -j REDIRECT --to-port 8083 Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: Patrick McHardy <kaber@trash.net>
66 lines
1.6 KiB
Makefile
66 lines
1.6 KiB
Makefile
header-y += nf_conntrack_sctp.h
|
|
header-y += nf_conntrack_tuple_common.h
|
|
header-y += nfnetlink_conntrack.h
|
|
header-y += nfnetlink_log.h
|
|
header-y += nfnetlink_queue.h
|
|
header-y += xt_CHECKSUM.h
|
|
header-y += xt_CLASSIFY.h
|
|
header-y += xt_CONNMARK.h
|
|
header-y += xt_CONNSECMARK.h
|
|
header-y += xt_CT.h
|
|
header-y += xt_DSCP.h
|
|
header-y += xt_IDLETIMER.h
|
|
header-y += xt_LED.h
|
|
header-y += xt_MARK.h
|
|
header-y += xt_NFLOG.h
|
|
header-y += xt_NFQUEUE.h
|
|
header-y += xt_RATEEST.h
|
|
header-y += xt_SECMARK.h
|
|
header-y += xt_TCPMSS.h
|
|
header-y += xt_TCPOPTSTRIP.h
|
|
header-y += xt_TEE.h
|
|
header-y += xt_TPROXY.h
|
|
header-y += xt_cluster.h
|
|
header-y += xt_comment.h
|
|
header-y += xt_connbytes.h
|
|
header-y += xt_connlimit.h
|
|
header-y += xt_connmark.h
|
|
header-y += xt_conntrack.h
|
|
header-y += xt_cpu.h
|
|
header-y += xt_dccp.h
|
|
header-y += xt_dscp.h
|
|
header-y += xt_esp.h
|
|
header-y += xt_hashlimit.h
|
|
header-y += xt_iprange.h
|
|
header-y += xt_ipvs.h
|
|
header-y += xt_helper.h
|
|
header-y += xt_length.h
|
|
header-y += xt_limit.h
|
|
header-y += xt_mac.h
|
|
header-y += xt_mark.h
|
|
header-y += xt_multiport.h
|
|
header-y += xt_osf.h
|
|
header-y += xt_owner.h
|
|
header-y += xt_pkttype.h
|
|
header-y += xt_quota.h
|
|
header-y += xt_rateest.h
|
|
header-y += xt_realm.h
|
|
header-y += xt_recent.h
|
|
header-y += xt_sctp.h
|
|
header-y += xt_state.h
|
|
header-y += xt_statistic.h
|
|
header-y += xt_string.h
|
|
header-y += xt_tcpmss.h
|
|
header-y += xt_tcpudp.h
|
|
header-y += xt_time.h
|
|
header-y += xt_u32.h
|
|
|
|
unifdef-y += nf_conntrack_common.h
|
|
unifdef-y += nf_conntrack_ftp.h
|
|
unifdef-y += nf_conntrack_tcp.h
|
|
unifdef-y += nfnetlink.h
|
|
unifdef-y += nfnetlink_compat.h
|
|
unifdef-y += x_tables.h
|
|
unifdef-y += xt_physdev.h
|
|
unifdef-y += xt_policy.h
|