On Tue, Nov 24, 2015 at 7:36 AM, Joel M. Halpern <[email protected]
<mailto:[email protected]>> wrote:
I believe that determining whether two independent and internally
consistent sets of changes can, in combination, produce a wedgie or
other failure is a research problem.
As far as I know, the I2RS working group concluded that it was a
sufficiently hard problem that we did not expect the I2RS agent to
get involved in trying to detect, much less remediate, such
cross-object inconsistencies.
But the I2RS agent is responsible for identifying an edit collision between
a new low-priority request and existing higher priority edits. That sounds
involved to me. So the agent cannot possibly solve this problem
yet it is responsible for precisely that in order to implement client
priority.
The agent can see that /foo[42] exists in the request and /foo[42] exists
in the ephemeral datastore, and call that a collision.
However, if /foo[1] or /bar[19] are also part of the "edit", such that
simply replacing
/foo[42] will break things, then the agent will not know. It will simply
overwrite
/foo[42] and leave /foo[1] and /bar[19] in the datastore.
So is the low-priority client responsible for removing /foo[1] and /bar[19]?
Seems the answer is no. The client can go away and there are no cleanup
requirements mentioned in the architecture.
Yours,
Joel
Andy
On 11/24/15 10:32 AM, PEDRO ANDRES ARANDA GUTIERREZ wrote:
Hi Russ,
I’m trying to identify the differences between interactions with
routing protocols in I2RS and what is purely conflicts between
clients. Currently I see too many issues overlapping and I fear
that the trees are not letting us see the forest.
So my take on routing protocols and wedgies might have been too
compact :-) Let me give it a second try: Stepping outside the
I2RS problem space, there is a lot of work that shows that the
origin for BGP-4 instability is that our beloved route-maps
create metrics that are not monotonically increasing or
decreasing and that makes the routing protocols meta-stable.
(BTW, I’m the first culprit when it comes to the use of them, I
have created more than one wedgie :-P ) Acknowledging that this
is a significant (and quite complex) problem for the Internet in
general, I feel that it should be treated somewhere else (GROW?).
The perspective I would like to take here is:
- assume that we have two or more clients that produce perfectly
sound routing information (no wedgies there)
- assume they talk to the same agent
- now my questions
1.- is there any way to detect whether the clients
produce contradicting/conflicting information?
2.- is there any way to resolve these
contradictions/conflicts?
BR, /PA
---
Dr. Pedro A. Aranda Gutiérrez
Technology Exploration -
Network Innovation & Virtualisation
email: pedroa d0t aranda At telefonica d0t com
Telefónica, Investigación y Desarrollo
C/ Zurbarán,12
28010 Madrid, Spain
Fragen sind nicht da, um beantwortet zu werden.
Fragen sind da, um gestellt zu werden.
Georg Kreisler
-----Mensaje original-----
De: Russ White <[email protected] <mailto:[email protected]>>
Fecha: lunes, 23 de noviembre de 2015, 14:06
Para: paag <[email protected]
<mailto:[email protected]>>, 'Jeffrey Haas'
<[email protected] <mailto:[email protected]>>
CC: "[email protected] <mailto:[email protected]>" <[email protected]
<mailto:[email protected]>>, "'Joel M. Halpern'"
<[email protected] <mailto:[email protected]>>, 'Andy
Bierman' <[email protected] <mailto:[email protected]>>, Sue
Hares <[email protected] <mailto:[email protected]>>
Asunto: RE: [i2rs] Conversation on Priority and Panes
Re the metric 'problem', just to be more precise in what
would be needed,
we are looking a metric that grows or decreases
monotonically across the
whole network.
I assume you mean in the routing space, and not in the
controller/client space, correct? In terms of a distributed
protocol? So, you're saying the delay could use "metrics"
between 11 and 20, while the bandwidth could use "metrics"
between 21 and 30, etc? And then you just add them all
together? That's what IS-IS has done for years... Even BGP
really only has one "metric," with following "tie
breakers..." So if you have something like weight/local
pref/etc, such that they occupy different "spaces" in a bit
pattern (something suggested, btw, in the original wide
community work, and in other places, as well), you're
actually just building a single metric.
You've not "solved" the multiple metric problem -- just done
something a little different than EIGRP's K values to
combine them into a single metric, which is where you need
to be to have the ability to build a single stable SPT/DAG.
The theoretical grounds for this are in T. Griffin’s and
Sobrinho’s work on BGP-4 and that lies already a couple
of years ago and that
makes the analysis much ‘easier’ (no worries about
np(complete) problems,
etc.). This could be applied in I2RS at the routing
protocol level. So, we could
discuss where that sits (should be the clients, right?)
and I don’t know if
that’s been already done, since I’m quite new to this list.
This doesn’t apply to the problem at hand, though... You
seem to be saying (clarify if wrong) --
1. Give each client some set of bits out of a 128 bit number
space (or larger, etc.)
2. Each client can have different "metrics" within their own
number space
3. When a client attempts to add some ephemeral state, they
use a metric within their "space"
4. The agent can just use the straight number as a relative
priority for each potential piece of state
This doesn't do anything different than the current concept
of priority between clients, only in the current plan each
client only has one priority, rather than multiples. I don't
see where this relates to the problem at hand.
Now, having “solved” that part of the equation :-) , the
part that interests me
more is the conflicting clients problem, because this
could be generalised to
other problem spaces in the SDN area. I do agree that
agents should be able
to catch offending state before installing it and I’m
looking for ways to specify
a minimal set of features that need to be supported at
protocol level.
Anyone else interested?
This is precisely where the problem lies. And this is where
you're going to hit the CAP theorem in full force. There are
only a few choices --
1. Make the database eventually consistent
2. Shut down accessibility during changes
3. ??
(1) is the idea of either having the agent call back to all
the clients when state they installed is overwritten or
allowing the agent to locally store some state where it
already has the information in hand and install it locally
-- the only real difference between these two solutions is
the "balance of complexity versus speed..." The entire
discussion here is how much additional complexity are we
actually adding by doing "panes of glass," which are just
locally stored state which isn't currently installed. I'm
arguing that there's minimal complexity added that you're
not already going to have in the system to allow the agent
to store information locally _if_ it chooses to. Jeff is
arguing (I think) that the "panes of glass" concept is a
coherent way of looking at this problem that will help us
understand and manage the complexity in a way that makes
sense. Joel is arguing (I think) that this sort of solution
is out of the WG charter, and it's too complex. I _think_ I
have the th
r
ee general perspectives right, but I don't know if I really have
so... :-)
(2) is the idea of locking the database while you're
changing it. This is explicitly outside the scope of I2RS
entirely, given we're trying to design something that's
atomic/restful. There are a lot of techniques you can use to
speed up locking -- row locking, sharding, etc. -- but none
of these are interesting from the I2RS perspective.
:-)
Russ
________________________________
Este mensaje y sus adjuntos se dirigen exclusivamente a su
destinatario, puede contener información privilegiada o
confidencial y es para uso exclusivo de la persona o entidad de
destino. Si no es usted. el destinatario indicado, queda
notificado de que la lectura, utilización, divulgación y/o copia
sin autorización puede estar prohibida en virtud de la
legislación vigente. Si ha recibido este mensaje por error, le
rogamos que nos lo comunique inmediatamente por esta misma vía y
proceda a su destrucción.
The information contained in this transmission is privileged and
confidential information intended only for the use of the
individual or entity named above. If the reader of this message
is not the intended recipient, you are hereby notified that any
dissemination, distribution or copying of this communication is
strictly prohibited. If you have received this transmission in
error, do not read it. Please immediately reply to the sender
that you have received this communication in error and then
delete it.
Esta mensagem e seus anexos se dirigem exclusivamente ao seu
destinatário, pode conter informação privilegiada ou
confidencial e é para uso exclusivo da pessoa ou entidade de
destino. Se não é vossa senhoria o destinatário indicado, fica
notificado de que a leitura, utilização, divulgação e/ou cópia
sem autorização pode estar proibida em virtude da legislação
vigente. Se recebeu esta mensagem por erro, rogamos-lhe que nos
o comunique imediatamente por esta mesma via e proceda a sua
destruição