-=[VP]+arni+=- wrote:bani wrote:the problem is that not all networks may handle large datagrams properly, this is why it's left at default. it might be possible to make the slave able to request large mtu from the master though, instead of having to require the master to set it.
correct me if i'm wrong, but from my experiences more networks have problems with too high packet numbers than with higher datagram size.
But allowing the slave to request it would also be good
--> could dropped packets on bursts also be caused by a too low /proc/sys/net/core/rmem_max & /proc/sys/net/core/wmem_max ?
it's possible, also check netdev_max_backlog, which defines the max # of packets the kernel can route per kernel scheduler tick.
bani wrote:actually ciscos care by default, you have to manually disable it. linux uses iptos by default also, to prioritize outgoing packets. i dont even think you can disable it on linux.
afaik tos is not part of the linux kernel routing features, so its also not on by default. traffic shaping by iptos or similar is offered by the "tc" package which is not in kernel ...
$ man 7 ip
IP(7) Linux Programmer’s Manual IP(7)
NAME
ip - Linux IPv4 protocol implementation
[...]
IP_TOS Set or receive the Type-Of-Service (TOS) field that is sent with every IP packet originating from
this socket. It is used to prioritize packets on the network. TOS is a byte. There are some stan-
dard TOS flags defined: IPTOS_LOWDELAY to minimize delays for interactive traffic, IPTOS_THROUGHPUT
to optimize throughput, IPTOS_RELIABILITY to optimize for reliability, IPTOS_MINCOST should be used
for "filler data" where slow transmission doesn’t matter. At most one of these TOS values can be
specified. Other bits are invalid and shall be cleared.
Linux sends IPTOS_LOWDELAY datagrams first
by default, but the exact behaviour depends on the configured queueing discipline. Some high pri-
ority levels may require an effective user id of 0 or the CAP_NET_ADMIN capability. The priority
can also be set in a protocol independent way by the (SOL_SOCKET, SO_PRIORITY) socket option (see
socket(7)).
i don't have the code offhand, but last time i read the kernel source, there are three output queues in the kernel by default: IPTOS_LOWDELAY gets put in the highest priority queue, normal traffic is in the default queue, and there is one low priority queue for all other traffic.
edit: found it. in route.c, there are actually 16 output priorities used by the default linux network scheduler...
Code: Select all
__u8 ip_tos2prio[16] = {
TC_PRIO_BESTEFFORT,
ECN_OR_COST(FILLER),
TC_PRIO_BESTEFFORT,
ECN_OR_COST(BESTEFFORT),
TC_PRIO_BULK,
ECN_OR_COST(BULK),
TC_PRIO_BULK,
ECN_OR_COST(BULK),
TC_PRIO_INTERACTIVE,
ECN_OR_COST(INTERACTIVE),
TC_PRIO_INTERACTIVE,
ECN_OR_COST(INTERACTIVE),
TC_PRIO_INTERACTIVE_BULK,
ECN_OR_COST(INTERACTIVE_BULK),
TC_PRIO_INTERACTIVE_BULK,
ECN_OR_COST(INTERACTIVE_BULK)
};
IPTOS_LOWDELAY translates to TC_PRIO_INTERACTIVE in the standard linux network scheduler -- this is priority 8 which takes precedence over priority 0 (TC_PRIO_BESTEFFORT) which is what non-tos packets get.