►
From YouTube: IETF108-RIFT-20200729-1300
Description
RIFT meeting session at IETF108
2020/07/29 1300
https://datatracker.ietf.org/meeting/108/proceedings/
A
A
I
think
we,
I
think
we
have
actually
have
a
packed
agenda
today.
Do
you
want
to
get.
A
A
C
Howdy
good
morning,
good
afternoon,
wherever
you
are
welcome
to
virtual
108,
not
well
you're
at
atf
meeting
any
contribution
you
make
to
atf
it's
according
to
atf
rule.
Please
read
not
well
no
you're
right
agenda.
For
today
we
are
going
to
talk
about
working
group
status
and
then
we
have
base
presentation,
bronze,
open
source,
update.
We've
got
young
update
and
multicast
update.
C
Working
group
status,
the
version
12-
has
been
submitted
to
ifg.
We
are
still
spending
80
review
alvaro.
Please
applicability
statement,
draft
getting
really
ready
for
last
call.
Probably
some
wording
could
do
a
little
bit
young
person
going
work.
Thank
you.
Multicast
work
just
restarted
and
we
still
have
pgp
and
segment
routine
work.
A
No,
no,
I
just
wanted
to
point
out
that
we
moved
the
yam
presentation
to
before
the
modicus
presentation,
a
discussion
because
we
may
run
out
of
time
and
I
want
to
make
sure
the
game
gets
updated.
First.
First.
C
B
Oh,
you
guys
don't
know
how
to
operate
the
queue
I
put
my
head
in
the
cube.
So
first
observation:
do
you
guys
have
a
jabber
scribe.
A
Oh
good
point:
actually
I
tried
the
jibber
link,
it
doesn't
work
for
me.
So
can
someone
be
the
jabra
subscriber.
A
B
Cool
okay,
so
bass
back,
update,
itf
108
update
from
12
to
12.
next
one.
Please-
and
I
talk
about
one
more
thing
I
think
is
interesting.
We
could
start
working
on
and
one
observation
minor
on
the
spec
okay.
Next
one.
B
B
Improvement
have
been
done.
All
the
stuff
is
incorporated
next
one
please.
B
B
I
don't
think
it
should
be
part
of
the
base
spec,
but
something
that
people
can
implement
optionally,
even
if
implemented
optionally,
it
will
work
fine
with
base
spec.
That
does
not
support
it.
The
second
one
is
a
minor
gripe.
I
got
well,
it's
not
really
a
gripe
python
2
to
python
3.
Migration
has
been
one
of
the
worst
things
that
happened
in
tech
recently.
B
So
when
you
compile
the
model
on
python
3,
it
looks
that
python
went
from
set
to
frozen,
set
and
from
hash
to
frozen
hash
set
and
that
actually
breaks
people
coded
wrote
for
python
2
and
work
fine,
because
the
model
generated
code
implies
that
those
things
are
can
are
hashable
but
they're.
Not
the
fix
is
to
annotate
the
model
to
tell
python
that
those
things
are
hashable.
B
I
did
not
choose
to
change
the
spec.
I
think
this
is
very
circumstantial
and
particular
to
a
programming
language.
Anybody
interested
in
this
in
in
the
schema
that
is
actually
annotated
for
python.
So
those
are
comments
in
the
special
threat
supports
the
doubt,
the
box,
anybody
interested
in
schema,
annotated
for
python
3.
Please
just
contact
me
and
I
forward
you
the
stuff,
but
I
think
it
would
be
detrimental
to
pro
to
publish
that
in
the
in
the
main
specs.
D
This
is
bruno
one
comment
on
that
last
point:
mike
is
implemented
in
python
3
and
I
did
not
need
to
annotate
the
model
I
solved
it
some
other
way,
so
you
can
look
at
my
source
code.
If
you
want
to
see
how
that's
done.
B
Okay,
so
that's
probably
another
interesting
discussion
on
the
list.
If
somebody's
hacking
python
I
I
found-
I
talked
with
someone
and
they
wrote
some
code
and
I
looked
at
it,
it
was
trying
to
modify
actually
the
schema
objects
and
it
wouldn't
work
because
of
the
hashable
problem
cool.
So
that's
it.
I'm
done.
E
C
So,
who
is
running
the
video,
and
what
do
we
do
with
it?.
A
A
How
do
we
give
you
permission
to.
C
You
don't
need
the
permission
you
are
the
chair,
you
have
the
permission
on
your
left.
You
have
icon
frog.
A
You
know
I
got
the
message
on
my
screen
saying
that
bruno
is
asking
me
to
send
you
yeah.
Can
you
hear
me.
C
D
That
feature
was
actually
implemented
by
mariano
and
tommaso
from
roma
university,
two
fabric,
bandwidth,
balancing
which
spreads
the
traffic
evenly
across
multiple
parallel
links.
According
to
the
available
bandwidth
and
three
performance
monitoring
which
helps
us
discover
bottlenecks
in
the
code,
let's
dive
right
in
and
start
with,
multiplane
topologies
up
until
now
rift
python
only
supported
single
plane.
Topologies
such
as
the
one
shown
in
this
diagram
in
a
single
plane
topology
every
super
spine
node
is
connected
to
every
spine
node.
D
As
a
result
of
this,
the
super
spine
nodes
quickly
run
out
of
ports
to
deal
with
the
limited
number
of
ports
on
the
super
spine
nodes,
we
introduced
the
concept
of
multiple
planes,
such
as
the
blue
plane,
the
red
plane
and
the
green
plane.
In
this
example,
the
super
spine
nodes
in
each
plane
are
connected
to
a
corresponding
subset
of
spine
nodes
in
each
pod.
D
In
order
to
make
negative
disaggregation
work,
we
also
need
so-called
east-west
interplane
loops
that
interconnect
the
spine
nodes
in
the
different
planes
to
each
other.
These
east-west
top
of
fabric
links
are
only
used
to
carry
control,
plane,
traffic
and
not
user
plane
traffic,
and
for
that
reason
they
can
be
low
speed
links.
D
D
Here
we
see
an
example
of
a
multi-plane
topology
generated
by
the
configuration
tool.
In
this
example,
we
have
three
pods
and
we
have
three
planes
and
we
have
east-west
interplane
loops
to
connect
the
planes
to
each
other
in
these
multi-plane
topologies.
There
are
new
failure
scenarios
that
can
be
fixed
with
negative
disaggregation.
D
D
This
is
exactly
what
this
aggregation
rift.
Is
it's
the
installation
of
more
specific
routes
to
route
the
traffic
around
failures
in
the
network
and
to
do
that
in
a
fully
automated
way,
there's
actually
two
types
of
disaggregation
in
rift.
One
is
called
positive
disaggregation
and
this
type
of
disaggregation
deals
with
most
types
of
failures
in
the
network.
D
In
order
to
understand
the
concept
of
negative
disaggregation
in
rift.
You
first
need
to
understand
the
concept
of
negative
prefix
advertisements,
all
routing
protocols
up
until
now
have
used
what
rift
would
call
a
positive
prefix
advertisement
when
a
routing
protocol
advertises
a
prefix.
It
is
saying
I
know
how
to
reach
that
prefix.
D
D
If
there
are
multiple
routers
advertising
the
same
prefix,
then
the
rule
is
that
the
most
specific
advertisement,
the
one
with
the
longest
prefix
match,
wins
this
concept
of
using
the
longest
prefix
match
is
supported
in
current
generation.
Hardware
rift
introduces
a
new
concept,
namely
the
concept
of
a
negative
prefix
advertisement
when
a
rift
router
negatively
advertises
a
prefix.
What
it's
saying
is,
I
don't
know
how
to
get
to
that
prefix.
D
If
you
have
any
traffic
to
send
to
that
particular
prefix,
you
better
not
give
it
to
me.
In
other
words,
a
negative
prefix
advertisement
is
used
to
repel
traffic,
for
that
particular
prefix,
a
router
that
receives
one
of
these
negative
prefix
advertisements
is
supposed
to
use
any
other
available
routes
to
get
the
traffic
to
its
destination.
D
Even
if
that
other
alternative
route
is
less
specific.
One
thing
to
keep
in
mind
is
that
a
negative
prefix
advertisement
is
a
control
plane
concept
only
just
before
rift
installs
these
routes
in
the
forwarding
plane.
It
translates
negative
next
hops
into
positive
next
stops
and
we'll
see
the
details
of
how
that
actually
works
in
one
of
the
later
slides.
D
D
Part
one
is
completely
disconnected
from
plane,
one
because
both
of
the
links
that
connect
part
1
to
plane,
1
have
failed
part.
1
is
still
connected
to
plane,
2
and
plane
3,
but
it's
disconnected
from
plane,
1..
Similarly,
plane
2
is
still
connected
to
all
three
pods
and
plane.
Three
is
still
connected
to
all
three
pods,
but,
as
we
mentioned
already
twice
before,
plane,
one
is
disconnected
from
part.
D
One
positive
disaggregation
cannot
fix
this
particular
type
of
failure
in
positive
disaggregation,
a
node
starts
advertising
a
positive
disaggregation
prefix
when
it
notices
that
it
can
reach
a
prefix
that
one
of
its
neighbors
in
the
same
plane
cannot
reach
in
this
particular
scenario.
That
doesn't
happen
in
plane.
One
none
of
the
superspinals
can
reach
pod
one.
So
nobody
initiates
positive
disaggregation.
D
D
The
first
step
in
negative
disaggregation
is
for
plane
one
to
discover
that
it's
disconnected
from
pod
one
in
order
to
achieve
that,
these
top
of
fabric
nodes
run
two
instances
of
the
shortest
path.
First
algorithm,
the
first
instance,
or
the
first
run,
which
is
considered
the
normal
run,
is
used
to
populate
the
forwarding
tables.
D
If
negative
disaggregation
is
used,
then
the
top
of
fabric
nodes
will
also
run
a
second
run
of
the
shortest
path.
First
algorithm,
which
is
considered
the
special
run
in
this
special
run.
The
east-west
links
are
allowed
to
be
used
and,
as
a
result,
plane
one
will
discover
routes
to
pod
one,
namely
routes
that
go
through
one
of
the
other
planes.
D
They
will
start
advertising
negative
prefix
advertisements,
which
are
indicated
by
these
red
arrows
to
tell
the
network
that
they're
no
longer
able
to
reach
pod
one
they're
telling
the
rest
of
the
network.
If
you
have
any
traffic
to
send
for
any
prefix
in
pod,
one
don't
send
it
to
me,
because
I
have
discovered
that
I'm
no
longer
able
to
reach
part
one
the
show
disaggregation
command
in
rift
python
allows
you
to
see
the
negative
disaggregation
prefix
that
a
node
originates.
D
D
D
Once
again,
you
can
use
the
show
disaggregation
command
in
rifts
python
to
see
both
the
received
and
the
propagated
negative
disaggregation
prefixes
on
the
spine
nodes.
When
the
lyfnos
received
these
negative
disaggregate
prefix
advertisements,
they
use
them
to
install
special
routes
in
their
routing
table
with
negative
next
hops.
D
You
can
actually
see
these
negative
next
hops
when
you
issue
the
show
routes
command
in
rift
python,
to
look
at
the
routes
in
the
routing
table,
which
is
also
known
as
the
routing
information
base
or
rip
earlier.
I
mentioned
that
these
negative
next
hops
are
a
control,
plane
concept
only
which
doesn't
actually
exist
in
the
forwarding
plane.
D
D
D
So
we
end
up
with
a
subset
of
the
next
half
next
hops
of
the
covering
aggregates
those
next
hops
are
installed
into
the
forwarding
table,
as
is
shown
in
the
green
part
of
the
diagram
here.
In
this
diagram,
we
see
the
resulting
routing
table
and
forwarding
table
for
our
example.
Topology
we're
looking
at
the
specific
prefixes
for
the
leaves
in
part,
one
in
the
routing
table
or
the
rib.
We
have
negative
next
hops,
which
indicates
that
we
should
avoid
sending
the
traffic
through
plane
1.
D
in
the
folding
table
or
the
fib.
Those
negative
next
hops
have
been
translated
into
puzzle,
work
next
hops,
attracting
to
the
traffic
to
planes,
2
and
plane
3,
which
has
the
net
effects
of
avoiding
plane
one
you
can
use
the
show
forwarding
command
in
wrist
python
to
look
at
the
forwarding
table
for
more
information
on
negative
disaggregation
and
rift,
see
the
blog
post
or
the
detailed
documentation
referenced
on
this
page.
The
second
major
enhancement
that
was
introduced
to
wrist
python
since
itf-105
is
support
for
parallel
links.
D
D
When
you
have
parallel
links
into
topology,
you
want
to
make
sure
that
the
traffic
is
distributed
amongst
the
available
links
according
to
the
bandwidth
available
in
each
link,
we'll
go
through
a
couple
of
scenarios
to
demonstrate
how
that
works.
This
is
the
topology
that
we
will
be
using
for
our
examples,
we'll
be
looking
at
leaf,
one
two,
which
has
two
parallel
links
to
spine,
one
one
and
two
parallel
links
to
spine.
One
two
we'll
see
how
leaf
one
two
distributes
its
traffic
across
these
four
links
in
various
failure
scenarios.
D
Once
we
start
introducing
parallel
links
into
the
topology,
we
have
to
make
a
distinction
between
the
concept
of
a
neighbor
versus
the
concept
of
an
interface
versus
the
concept
of
an
adjacency
to
illustrate
that
difference.
We're
looking
at
the
output
of
the
show
neighbors
command
on
node
spawn
one
two
in
the
topology
here
we
can
see
that
that
particular
spine
node
has
four
neighbors,
but
eight
interfaces
and
correspondingly
eight
adjacencies.
D
The
reason
for
that
is
that
we
have
two
parallel
links
to
each
neighbor.
So
for
every
neighbor
there
are
two
corresponding
interfaces
and
adjacencies
to
understand
how
wrist
python
does
fabric
bandwidth,
balancing,
in
other
words,
to
understand
how
rifts
python
distributes
its
northbound
traffic
over
the
available
links,
we
can
look
at
the
output
of
the
handy
show
bandwidth
balancing
command
on
this
slide.
We
have
the
example
output.
Looking
at
from
the
perspective
of
node
leaf
one
two,
we
can
see
that
leaf.
D
One
two
has
two
neighbors,
namely
neighbor
spine,
one,
one
and
spine,
one
two,
which
you
can
see
in
the
diagram
here
and
here
from
the
perspective
of
leaf
1
2
neighbor,
spine
1
1
has
an
ingress
bandwidth
of
20
gigabits
per
second.
This
corresponds
to
the
amount
of
bandwidth
from
leaf
one
one
to
spine
one
one.
D
Similarly,
from
the
perspective
of
leaf
one
two
neighbors
spine,
one
two
has
an
ingress
bandwidth
of
twenty
gigabits
per
second,
as
well
from
the
perspective
of
leaf
one
two
neighbor
spine,
1
1
has
an
egress
bandwidth
of
60
gigabits
per
second.
This
corresponds
to
the
total
amount
of
bandwidth
that
leaves
spine,
1
1
to
any
neighbor,
except
back
to
leaf
1
2..
Similarly,
from
the
perspective
of
leaf
one
two
spot
neighbors,
fine
one,
two
also
has
an
egress
bandwidth
of
sixty
sixty
gigabits
per
second
rift.
D
Python
distributes
the
traffic
amongst
the
neighbors
in
a
way
that
is
proportional
to
the
product
of
the
ingress
bandwidth
and
the
egress
bandwidth
of
each
neighbor.
So
in
this
particular
example,
node
leaf1
will
end
up
sending
half
of
the
traffic
fifty
percent
to
node
spine
one
one
and
the
other
half
to
node
to
neighbor
spine
one
two.
D
In
this
example,
there
are
actually
multiple
parallel
interfaces
to
each
neighbor.
In
that
case,
the
traffic
is
distributed
across
the
interfaces
within
a
neighbor
group
according
to
the
bandwidth
of
these
in
each
individual
link.
So
in
this
particular
example,
each
interface
ends
up
with
25
of
the
traffic.
D
If
you
look
at
the
outputs
of
the
show
foreign
command,
we
can
see
that
the
northbound
default
route
actually
turns
out
to
be
an
ecmp
route.
It
distributes
all
the
traffic
equally
across
all
four
available
links.
Wrist
python
uses
percentages
as
the
next
top
weights
to
make
to
make
the
output
easier
to
read.
Now,
let's
look
at
the
first
failure
scenario
in
this
failure
scenario,
one
of
the
links
between
leaf
one
two
and
spine
one
one
has
failed
leaf.
One
two
still
has
two
neighbors,
namely
spine,
one,
one
and
spine
one,
two,
the
ingress
bandwidth.
D
D
D
D
As
a
result
of
this
leaf,
one
2
decides
to
send
only
40
of
the
traffic
to
spine
one
one,
because
it
has
reduced
capability
to
forward
the
traffic
to
the
rest
of
the
network,
and
it
decides
to
send
sixty
percent
of
the
traffic
to
spine,
one
two,
which
still
has
full
capacity
to
send
traffic
to
the
rest
of
the
network
within
the
link
groups
of
each
neighbor.
The
traffic
is
distributed
equally
amongst
the
links,
because
each
link
has
the
same
capacity.
D
D
F
Hello,
can
you
hear
me.
F
Yeah
hi,
I'm
I'm
anarag
from
siena.
I
just
have
a
couple
of
questions.
What
is
the
difference
between
a
route,
withdrawal
and
negative
when
you
mention
the
negative
prefix
advertisement.
D
Yeah,
so
a
route
withdrawal,
if
you
first
positively
advertise
a
prefix
you're
saying
I
can
reach
this
prefix,
it's
okay
to
give
traffic
to
me.
If
you
then
withdraw
that
prefix
you're
saying
I
can
no
longer
give
that
prefix,
but
I'm
not
making
any
statement
about
whether
or
not
you
should
send
it
somewhere
else.
If
you
negatively
advertise
a
prefix
you're
explicitly
saying,
don't
give
it
to
me
if
you
have
some
other
route
to
send
to
it
then
use
that
prefix
instead,
and
so
what
that
sounds
the
same.
F
Yeah
I
mean
what
my
assumption
was:
withdrawal
or
deletion
will
get
it
out
of
your
ribbon.
Entry
like
in
a
normal
rib
terms,
I'm
not
an
expert
in
rift,
but
it
it
seems,
like
the
term
used
here,
as
seems
similar
to
me,
but
it's
achieving
the
same
purpose
at
the
end
of
the
day
and
that
maybe
there
are
certain
little
details
which
I
don't
understand,
but
that
was
primarily
what
what
my
confusion
was
the
second
one.
Maybe
we
can
discuss
it
offline
as
well.
F
The
second
one
was
when
we
are
talking
about
balancing
in
terms
of
I
wouldn't
say,
balancing
like
when
you
mentioned
that
I
think
you
mentioned
plane.
One
was
completely
disconnected
from
part
one
right.
That
was
an
example
in
there,
so
we
did
have
a
red,
blue
and
green
planes
so
effectively.
Every
pod
also
has
red,
blue
and
green.
So
in
an
ideal
scenario,
unless
you
take
down
all
the
three
planes
it
should
never
be
disconnected.
D
So,
from
a
leaf
point
of
view,
you
cannot
just
have
a
default
route
that
points
to
all
three
spine
routers,
because
if
you
accidentally
give
it
to
the
red
spine,
you've
already
gone
into
the
red
plane,
but
that
spine
may
be
disconnected
from
from
the
super
spines
and
so
then
you're
you're
in
a
black
hole.
Okay.
For
that
reason,
you
need
to
already
at
the
leaves,
remove
the
possibility
of
sending
it
to
the
red
spine
router
and
that's
why
you
need
this.
G
Oh
and
okay,
can
I
also
the
first
question,
so
the
question
was:
what's
the
difference
between
withdrawal
and
negative
and
the
key
point,
I
guess
you,
your
video,
really
says
it
is
that
the
negative
is
actually
always
a
reference
to
the
aggregation
above
it,
and
so
when
you,
when
you
send
something
negative
you
you
say:
oh
this,
the
aggregation
above
minus
death
right,
so
so
that
tells
the
receiver
of
the
negative
to
act
to
to
basically
install
the
positive
for
the
rest
of
the
aggregation
above
so
negative
by
itself
doesn't
mean
anything.
H
Super
thanks,
tony
bruno
good
morning
from
california,
a
quick
question.
As
I
understand
once
you
get
the
negative
route
you
would.
If
there
there
is
an
if
there
is
an
exact
match
route
or
a
covering
prefix,
you
would
actually
take
that
next.
D
So
let
me
give
a
concrete
example
right
in
in
my
example,
I
sent
a
negative
advertisement
for
a
prefix
in
leaf
for
a
leaf
in
in
part
one
right.
So
if
somebody
tries
to
send
the
traffic
to
that
particular
leaf
in
part
one,
it
will
hit
the
negative
prefix
and
in
the
forwarding
plane,
the
negative
next
hop
will
have
been
translated
into
positive
next
hops.
That
say
only
use
pod
planes
two
and
three.
Now,
if
you
send
the
traffic
to
any
other
pod,
for
example,
you
will
leave
in
pod
two.
D
B
B
The
big
difference
between
the
negative
and
positive
positive
is
not
transitive.
It
will
only
go
one
level
down,
whereas
the
negative,
if
all
the
switches
connected
to
a
plane,
tell
you
one
negative,
then
you
have
to
propagate
it
further
down
and
that's
the
only
solution
that
works,
because
in
most
extreme
cases
you
have
to
decide
right
on
the
server
if
it's
multi-home,
whether
you
go,
which
plane
you
go
because
if
you
started
the
server
towards
the
wrong
plane,
you're
already
stuck
you.
B
B
B
A
A
A
E
A
E
E
E
E
This
is
the
configuration
part,
multiple
rift
instances
are
supported,
the
keys
of
the
nodes
include
name
system
id
level
and
so
on.
Variables
that
can
be
configured
include
port
level,
flood
reduction,
link
capabilities,
timers
and
security
items,
and
so
on
for
flexible
management,
different
multicast
address
or
part
can
be
used
for
different
instances.
E
A
Okay,
so
we
may
have,
she
did
mention
earlier
that
she
had
a
trouble
during
the
beer
session
as
well.
C
So
we
can
probably
summarize,
on
behalf
of
sandy
so
there's
some
additional
work
that
needs
to
be
done.
The
base
model
is
in
pretty
good
shape.
C
It's
aligned
with
84
47,
so
we'll
be
looking
forward
to
updated
version,
but
I
think
again
we
are
very
close
to
be
done
on
the
young
side
of
things
and
I
think
we
can
move
now
to
so.
The
continuation
of
presentation
is
really
description
of
changes.
I
don't
think
it's
worth
going
through
outers
of
thrift.
Please
review
the
model,
make
sure
that
it
confirms
to
what
you
want
to
see
in
terms
of
configuration,
operational
states
and
so
forth.
A
Okay,
so
before
I
get,
I
start
talking
about
multicast,
I
want
to
point
out
that,
since
this
this
session
will
end
exactly
at
in
eight
minutes,
so
we'll
probably
just
continue
to
that
endpoint
and
then
everyone
will
get
disconnected
without
saying
goodbye,
so
jeffrey
it
looks
like
they.
A
A
So
previously
we
have
talked
about
that
we're
going.
We
borrowed
the
pin
by
directly
european
concept
established
by
the
bi-directional
trees,
whether
it's
star
g
or
star,
g,
prefix
or
starship,
and
basically
every
router,
starting
from
the
the
routers
with
who
wants
to
be
on
the
tree.
A
A
The
idea
is
that
we
form
a
spanning
tree
among
those
relevant
sub-top
nodes
and
on
top
notes,
so
we
rushed
out
a
zero
one
revision
with
just
a
bit
more
details,
including
the
idea
of
per
neighbor
flooding
scope,
so
that
we
can
target
the
the
joints
and
I
added
some
strict
schema
and
and
then
finally,
I
tried
to
provide
some
details
on
on
the
building
the
spanning
tree.
The
previous
version
had
the
idea,
but
I
wanted
to
add
some
of
my
other
details.
A
It
turns
out
that
we
may
have
found
some
holes
in
that
that
cannot
handle
all
the
situations,
and
so
the
pascal
is
thinking
about
a
different
way
to
do
that,
and
that's
what
he's
going
to
talk
about
in
the
remaining
time
and
we
we
may
so
I'll
I'll,
just
hand
hand
over
to
to
pascal
now
skipping
the
some
slides,
the
the
please
look
into
that
idea
of
per
neighbor
flooding
scope.
That
is
something
new
that
we
are
introducing
for.
Multicast
purpose
is
subject
to
discussion.
G
Okay,
well,
I
will
skip
the
animation,
no
worries.
So
what
you
have
here
is
basically
a
tree
being
built
from
the
leaf
level
up.
So
you
see
that
each
leaf
selects
a
parrot.
It
can
be
done
in
any
fashion
and
you
you
go
up
like
this
all
the
way
to
the
sept
off
and
as
you
build
this
you're
building
a
collection
of
trees.
G
So
you
see
the
the
orange
tree
which
is
rooted
at
n1
and
the
green
tree,
which
is
rooted
at
n2
and
the
the
purple
tree
which
is
rooted
at
that
four
and
some
of
those
trees
that
they
are
rich
leaves
and
some
of
them.
Maybe
maybe
they
have
m3,
never
got
a
child,
but
it's
it's
an
option
to.
If
you
want
to
distribute
traffic
only
to
leaves
you
don't
have
to
build
this
green
tree.
G
But
if
you
want
to
distribute
traffic
to
every
node,
including
the
the
nodes
inside
the
network,
then
you
need
to
also
to
build
this
green
tray
as
you've
done
that
you
realize
that
you
have
actually
done
built
a
collection
of
trees,
but
you
have
not
built
a
single
tree.
So
what
you
want
to
do
now
is
interconnect
all
those
stuff
using
the
tough
plus
sept
of
level
and
basically,
as
jeffrey
said,
we
build
a
virtual
rpl
radical
point
link
between
the
tough
and
the
subtype.
G
Okay,
so
building
the
spelling
trick
can
be
easy.
For
instance,
if
we
have
a
complete
bipartite
mesh,
meaning
that
every
sub-top
is
connected
to
every
tuff,
then
basically,
you
can
elect
any
tough
node
call
it
a
root,
and
you
get
your
tree,
but
if
there
is
any
breakage
that
may
not
hold
true
anymore.
G
So
if
it's
not
fully
connected,
then
we
need
some
protocol
to
to
build
the
the
spanning
tree
that
we're
after
we
note
that
overall,
the
tough
plus
sub-top
cannot
be
fully
partitioned.
G
That
cannot
be
the
left
and
the
right
of
it
that
this
seems
to
happen
when
you
have
the
multi-plane
fabric,
as
we
saw
for
the
disaggregation
earlier,
but
that's
when
we
need
this
ring
to
interconnect
them,
because
if
there
was
a
full
partition
of
a
tough
plus
sub-top
the
left
piece,
the
right
piece,
then
you
could
not
disaggregate
at
all,
because
you
wouldn't
not
be
able
to
know
what's
going
on
on
the
other
side.
So
we
take
the
assumption
that
the
tough
plus
subtop
cannot
be
partitioned.
G
So
the
idea
at
hand
and
and
you'll
see
that
will
progress.
So
don't
ask
yourself
too
many
questions.
How
do
you
do
ashes,
how
you
distribute
multiple
trees,
etc?
For
now
we
are
just
building
a
single
tree,
and-
and
we
are
looking
at
how
we
do
that,
so
there
are
two
things
you
need
to
do.
You
need
to
elect
a
root
and
you
need
to
find
a
maybe
the
shortest
path
tree
to
that
root.
G
So
the
simplest
idea
is
to
say:
hey,
let's
speak
the
the
node
between
the
top
and
the
septal
that
has
the
least
system
id
the
or
the
highest
or
the
smallest
system.
Id
and
you'll
see
why
I
picked
the
slowest,
the
lowest,
but
initially
we
started
with
the
is
and
then
use
the
up
count
to
as
a
distance
toward
that
root
to
build
a
tree.
G
So
the
the
simple
idea,
if
you
like,
is
to
consider
this
as
a
distance
vector
prime
and
the
distance
itself,
would
be
a
composite
of
the
system
id
for
the
most
significant
bits
and
then
the
hop
count
to
that
system
id.
So
we
would,
for
instance,
advertise
that
composite
distance
in
the
node
ti
is
so
that's
reflected.
G
So
what
you
do
is
you
you
look
at
all
your
neighbors
and
if
one
of
them
advertises
a
metric
which
is
lower
than
the
one
you
already
know,
so
you
start
with
your
own
system
id
of
card
zero.
So
if
one
of
your
neighbors
sees
a
system
id
that
is
lower
than
yours,
then
you
you
will
advertise
that
you
will
pick
it
and
you
say:
oh
it's
better
than
mine,
so
it's
a
lower
distance.
G
G
So
what
you
see
here
is
the
same
thing
as
the
animation
we
were
missing,
so
you
see
that
the
the
lower
system
id
is
s1,
so
so
very
soon
n3
and
then
five
see
that
the
lowest
distance
for
which
the
system
id
is
the
most
significant
bit
is
s1
upcom
zero
as
advertised
by
s1,
so
n3,
and
then
five
will
start
advertising
s1
of
countable,
one
which
causes
for
the
next
phase.
G
Bottom
left,
s3,
s4,
s5
to
pick
n3
as
their
parrot
and
so
now,
s3
s4,
s5
advertised
s1,
comma,
2
and
n4,
which
was
actually
disconnected
from
s1
from
the
start.
I
will
now
pick
one
of
the
parents
and
we
need
to
just
at
this
point
you
could
select
any
one
with,
but
we'll
discuss
how
we
do
all
this.
So
you
see
by
just
doing
this
simple
distance
vector
which
roots
at
the
lowest
system
id
using
this
composite
metric.
We
already
be
able
to
spend
into
we
build
one.
G
So
that's
a
very
easy
spelling
tree
to
build.
It
has
a
number
of
drawbacks.
The
the
major
drawback
of
of
this
method
is
that
if
you
look
at
it,
if
you
are
really
very
well
matched,
then
s1
will
probably
get
most
of
the
work
sending
the
packets
out.
It's
not
really
exemplified
here,
but
the
the
root
of
the
tree
will,
for
instance,
if
it's
a
tough
node,
it
will
see
all
the
sept
of
nodes
inside
the
tree.
G
G
Okay,
so
to
look
at
this
problem,
we
could
say:
hey,
there's
one
way
to
to
kind
of
split
the
work
of
doing
all
the
copies
between
the
tough
and
the
soft
off,
and
when
one
kind
of
cool
way
of
doing
this
is
to
say,
hey,
why
don't?
We
have
a
sept
of
node
act
as
the
root?
G
So
what
would
happen?
Is
you
would
split
the
top
in
the
number
of
groups
which
has
a
basically
each
of
those
groups
would
have
a
size
of
the
square
root
of
the
total
number
of
subtop
nodes
which
basically
makes
it
so
that
the
decent
one
would
would
see.
Only
okay,
the
the
parents
that
the
septal
would
pick
the
other
set
of
nodes
would
pick
would
be
in
one
of
those
groups.
G
So
you
basically
end
up
with
just
the
cardinal
of
subtop
number
of
copies
total,
but
you
have
spread
the
number
between
anyone
which
does
the
square
root
number
of
copies
and
then
square
root
of
nodes
which
do
each
one
of
them
square
root
which
gives
you
the
total
so
that
that's
kind
of
a
way
to
say:
hey.
Let's
split
the
the
replication
game
between
the
swept
off
and
the
top,
and
so
you
see
that
by
doing
this
you
already
kind
of
share
the
load,
but
you
still
build
a
single
tree
next
slide.
Please.
G
So
this
single
trick
looks
like
fine
for
distributing
nice
flow,
for
instance,
but
you
see
that
that
it's
all
using
the
same
length
all
the
way
through
so
first
thing
you
would,
we
would
say,
hey.
Okay,
I
can.
G
B
B
G
And
you
want
to
make
sure
that
everybody
has
the
same
information,
because
you
should
basically
say
I
I've
built
threes,
one
two,
three
four
and
one
note
for
some
reason
doesn't
see
three
four
and
three
four
is
the
three
selected
by
all
the
other
members,
but
not
by
him.
Packets
are
gonna.
Look
so
so
right.
Yes,
so
that's
that's!
That's
very
hard.
B
G
I
would
be
a
lot
more
satisfied
if
we
could
tag
the
packet
when
you
inject
the
packet
in
the
multicast,
you
could
tag
it
with
the
tree
id
or
something
to
say:
hey,
I'm
using
this
tree,
so
the
source.
B
Randomly
selects
which
trees
and
then
we'll
flood
that
we
can
play
a
trick
with
relying
on
flow
id
and
v6,
or
you
know
something
like
this,
but
at
the
end
I
think
the
problem
you're
still
facing
is
how
many
trees
do
you
build,
because
that
has
to
be
uniform
right.
You
don't
have
for
group
state,
but
you
have
to
agree
how
many
trees
do
you
have
and
that's
the
limitation.
I
see.
G
You
have
to
agree,
everybody
has
to
to
be
on
the
same
trees,
and
everybody
must
agree
that
something
called
tony
is
that
particular
tree.
And
since
somebody
does
not
mix,
you
know
the
names
and
so.
A
We
actually
don't
need
to
worry
about
loops,
because
you
you,
you
will
only
accept
traffic
from
from
one
of
the
the
specimen
north
interface.
So
you
you,
you
will
not
get
into
getting
the
loops.
Even
even
somehow.
A
Different
trees
are
picked
by
different
nodes
in
transit
transition
states.
G
I
G
So
so
there
is
this,
but
we
see
that
there
could
be
a
way
that
we
have
not
designed
yet
where
we
make
sure
that
if
we
build
10
trees,
everybody
understand
that
the
temp
trees
are
the
same
tree.
So
they
have
numbers
one
to
ten
and
then
basically
by
the
idea
of
the
flow
by
looking
so
many
beards
on
the
multicasted
rice,
we
could
just
decide
the
tree,
but
the
hard
piece
is
to
make
sure
that
everybody
understand
what
which
tree
is,
which
and
and
how
it's
named.
G
So
so
that
was
just
on
the
mice
flow.
We
said
for
the
mice
flow
we
just
pre-built
star
star
one
one
tree
or
one
collection
of
three
and
and
the
mice
flows
go
to
every
leaf,
regardless
of
whether
the
leaf
requested
this
flow
or
did
not
request.
This
flow
for
the
giraffe
and
you'd
have
jeffrey
to
redefine
giraffe,
because
I
forgot.
I
thought
it
very
nice
that
I
forgot
what
you
meant
by
this
and
elephant
flow,
which
means
very,
very
fat
flows,
going
to
very
few
nodes.
G
G
I'm
also
concerned
make
sure
that
when
we
do
this
prefix
game
so
having
longest
match,
we
never
want
to
have
a
nice
flow
that
would
be
spread
about
the
other
trees.
So
I'm
I'm
still
a
bit
concerned
with
the
g
prefix
I
mean
there
must
be
a
rule
somewhere
which
ensures
that
whatever
subnet
of
this
prefix,
whatever
multicast
address,
built
out
of
this
prefix,
we
use
in
the
future
in
anywhere.
It's
always
to
be
routed
within
this
tree,
because
this
tree
does
not
distribute
to
everyone.
G
It
only
distributes
two
people
who
register
to
the
aggregating
prefix,
so
the
longest
match
as
me
can
discuss
that
on
the
list
or
when
we
have
more
time,
but
the
longest
match
game
for
me
is
is
hard
to
play
when
we
want
to
use
default
for
mice.
Okay,
so
we'll
discuss
that.
G
So,
after
that
we
end
up
with
the
same
game,
we
we
want
to
to
probably
select
a
different
route
in
the
rpl,
so
that
means
probably
hashing
all
the
root.
The
system
ids
with
the
the
group
g
that
we
are
talking
about
and
and
picking
the
least
ash.
Then
again,
we
want
to
make
sure
that
everybody
sees
everybody.
Otherwise,
the
least
ash
may
not
be
the
same
for
everybody.
G
So
so
it's
already
each
time
we
use
a
hash.
In
this
discussion
we
have
kind
of
a
problem
of
making
sure
everybody
has
the
same
information
about
everything
and
then,
like
I
said
earlier,
if
we
want
to
use
the
square
root
of
square
root
to
divide
the
the
work
of
replicating,
then
we
need
to
select
a
different
group
of
nodes
of
cardinality
square
root
blur
for
each
of
those
groups,
g,
which
means
maybe
another
ash
or
something.
G
G
If
you
want
to
make
sure
that
you
pick
the
least
ash,
but
then
you
avoid
collision,
you
have
to
put
the
ash
of
the
system
id
of
the
root
with
g,
and
then
you
have
to
put
the
the
non-ash
system
id,
which
is
unique.
So
at
the
end
you
get
something
which
is
unique,
so
I
played
it
once
for
the
route.
I
played
it
second
time
for
the
tough
group
id
and
and
then
at
the
end
you
know
the
hop
count
for
for
that
particular
tree.
So
that's.
G
G
Well,
okay,
there
is
just
an
exemplified
result
of
of
the
discussion
before
for
one
tree,
so
you
see
how
this
thing
gives
you
a
tree
that
can
be
used
for
bdr
replication,
but
but
you
see
the
bottom
line,
the
the
real
problem
that
we
have
now
is.
If
we
want
to
use
hash
shares,
we
want
to
make
sure
that
everybody
sees
the
same
thing.
G
Otherwise,
we'll
have
to
distribute
names
or
do
something
else,
but
it's
very
hard
at
this
point
to
to
it's
very
easy
to
build
one
tree,
it's
very
hard
to
build
multiple
trees
and
make
sure
that
by
reading
the
packet
everybody
understands.
Essentially,
that's
that's
what
I'm
concerned
with
at
this
point,
and
I'm
done.
C
Thank
you.
So
we
are
after
seven,
so
we
need
to
stop
thanks.
Everyone
for
joining
us
very
good
progress,
we'll
continue,
working
on
segment,
routing,
multicast
and
some
other
pieces,
and
I
really
hope
to
see
you
in
person
next
atf,
if
not
we'll,
just
meet
virtually
take
care.