On Sat, 26 Jul 2014, Sebastian Moeller wrote:
On Jul 26, 2014, at 23:14 , David Lang <da...@lang.hm> wrote:
On Sat, 26 Jul 2014, Sebastian Moeller wrote:
On Jul 26, 2014, at 22:21 , David Lang <da...@lang.hm> wrote:
On Sat, 26 Jul 2014, Sebastian Moeller wrote:
On Jul 25, 2014, at 22:57 , David Lang <da...@lang.hm> wrote:
unless the router you are connecting to is running some sort of service to
support that,
But this still requires some service on the other side. You could try to
use ICMP packets, but these will only allow to measure RTT not one-way
delays (if you do this on ADSL you will find the RTT dominated by the
typically much slower uplink path). If network equipment would be
guaranteed to use NTP for decent clock synchronization and would respond
to timestamp ICMP messages with timestamp reply measuring bandwidth might
be “cheap” enough to keep running in the background, though.
Since this looks too simple there must be a simple reason why this would
fail. (It would be nice if ping packets with timestamps would have
required the echo server top also store its incoming timestamp in the
echo, but I digress)
I note that gargoyle uses a sparse stream of ping packets to a close
host and uses increases in RTT as proxy for congestion and signal to
throttle down stream link…
As you say, anything that requires symmetrical traffic (like ICMP isn't
going to work, and routers do not currently offer any service that will.
Well I think the gargoyle idea is feasible given that there is a
reference implementation out in the wild ;).
I'm not worried about an implementation existing as much as the question of
if it's on the routers/switches by default, and if it isn't, is the service
simple enough to be able to avoid causing load on these devices and to avoid
having any security vulnerabilities (or DDos potential)
But with gargoyle the idea is to monitor a sparse ping stream to the
closest host responding and interpreting a sudden increase in RTT as a sign
the the upstreams buffers are filling up and using this as signal to throttle
on the home router. My limited experience shows that quite often close hosts
will respond to pings...
that measures latency, but how does it tell you bandwidth unless you are the
only possible thing on the network and you measure what you are receiving?
you can't just test that link, you have to connect to something beyond that.
So it would be sweet if we could use services that are running on the
machines anyway, like ping. That way the “load” of all the leaf nodes of the
internet continuously measuring their bandwidth could be handled in a
distributed fashion avoiding melt-downs by synchronized measurement streams…
Well, let's talk about what we would like to have on the router
As I see it, we want to have two services
1. a service you send a small amount of data to and it responds by sending you
a large amount of data (preferrably with the most accurate timestamps it has
and the TTL of the packets it received)
2. a service you send a large amount of data to and it responds by sending you
small responses, telling you how much data it has received (with a timestamp
and what the TTL of the packets it received were)
questions:
A. Protocol: should these be UDP/TCP/SCTP/raw IP packets/???
TCP has the problem of slow start so it would need substantially more traffic
to flow to reach steady-state.
anything else has the possibility of taking a different path through the
router/switch software and so the performance may not be the same.
You thing UDP would not work out?
I don't trust that UDP would go through the same codepaths and delays as TCP
Why should a router care
even fw_codel handles TCP differently
Does it? I thought UDP typically reacts differently to fq_codels
dropping strategy but fq_codel does not differentiate between protocols (last
time I looked at the code I came to that conclusion, but I am not very fluent
in C so I might be simply wrong here)
with TCP, the system can tell the difference between different connections to
the same system, with UDP it needs to infer this from port numbers, this isn't
as accurate and so the systems (fq_codel and routers) handle them in a slightly
different way. This does affect the numbers.
so if we measure with UDP, does it really reflect the 'real world' of TCP?
But we care for UDP as well, no?
Yes, but the reality is that the vast majority of traffic is TCP, and that's
what the devices are optimized to handle, so if we measure with UDP we may not
get the same results as if we measure with TCP.
measuing with ICMP is different yet again.
Think of the router ASICs that handle the 'normal' traffic in the ASIC in the
card, but 'unusual' traffic needs to be sent to the core CPU to be processed and
is therefor MUCH slower
One thought I have is to require a high TTL on the packets for the services to
respond to them. That way any abuse of the service would have to take place
from very close on the network.
Ideally these services would only respond to senders that are directly
connected, but until these services are deployed and enabled by default, there
is going to be a need to be the ability to 'jump over' old equipment. This need
will probably never go away completely.
But if we need to modify DSLAMs and CMTSs it would be much nicer if we
could just ask nicely what the current negotiated bandwidths are ;)
negotiated bandwith and effective bandwidth are not the same
what if you can't talk to the devices directly connected to the DSL line, but
only to a router one hop on either side?
In my limited experience the typical bottleneck is the DSL line, so if
we shape for that we are fine… Assume for a moment the DSLAM uplink is so
congested because of oversubscription of the DSLAM, that now this constitutes
the bottleneck. Now the available bandwidth for each user depends on the
combined traffic of all users, not a situation we can reasonable shape for
anyway (I would hope that ISPs monitor this situation and would remedy it by
adding uplink capacity, so this hopefully is just a transient event).
for DSL you are correct, it's a point-to-point connection (star network
topology), but we have other technologies used in homes that are shared-media
bus topology networks. This includes cablemodems and wireless links.
for example, I can't buy (at least not for anything close to a reasonable
price) a router to run at home that has a DSL port on it, so I will always have
some device between me and the DSL.
http://wiki.openwrt.org/toh/tp-link/td-w8970 or
no 5GHz wireless?
http://www.traverse.com.au/products ?
I couldn't figure out where to buy one through their site.
If you had the DSL modem in the router
under cerowrts control you would not need to use a traffic shaper for your
uplink, as you could apply the BQL ideas to the ADSL driver.
If you have a shared media (cable, wireless, etc), the negotiated speed is
meaningless.
Not exactly meaningless, if gives you an upper bound...
true, but is an upper bound good enough? How close does the estimate need to be?
and does it matter if both sides are doign fq_codel or is this still in the mode
of trying to control the far side indirectly?
In my other location, I have a wireless link that is ethernet to the dish on
the roof, I expect the other end is a similar setup, so I can never see the
link speed directly (not to mention the fact that rain can degrade the
effective link speed)
One more case for measuring the link speed continuously!
at what point does the measuring process interfere with the use of the link? or
cause other upstream issues.
Other requirements or restrictions?
I think the measurement should be fast and continuous…
Fast yes, because we want to impact the network as little as possible
continuous?? I'm not so sure. Do conditions really change that much?
You just gave an example above for changing link conditions, by shared
media...
but can you really measure fast enough to handle shared media? at some point you
need to give up measuring because by the time you have your measurement it's
obsolete.
If you look at networking with a tight enough timeframe, it's either idle or
100% utilized depending on if a bit is being sent at that instant, however a
plot at that precision is worthless :-)
And as I ask in the other thread, how much does it hurt if your estimates are
wrong?
I think I sent a plot to that regard.
yep, our mails are crossing
for wireless links the conditions are much more variable, but we don't really
know what is going to work well there.
Wireless as in point 2 point links or in wifi?
both, point-to-point is variable based on weather, trees blowing in the wind,
interference, etc. Wifi has a lot more congestion, so interference dominates
everything else.
David Lang
_______________________________________________
Cerowrt-devel mailing list
Cerowrt-devel@lists.bufferbloat.net
https://lists.bufferbloat.net/listinfo/cerowrt-devel