►
From YouTube: SONiC DASH Workgroup Community Meeting Aug 30 2023
Description
Merge PR422
Discuss PR429
Kumaresh to review PR425 for Prince
Discuss:
PR415 SAI wrong code generated in libsai
PR428 Clarification on Service Tunnel Inbound Processing
P4 pipeline & files Q&A with Marian (resource types, table properties, annotations, bmv2 tables/virtual tables, Rules-Groups-Stages-ENIs, etc...
A
A
But
what
I
wanted
to
point
out
in
case
you
didn't
have
a
chance
to
read
them
is
that
you
know
riff
from
the
Microsoft
Sonic
Team
posted
PR
document
and
some
slides
talking
about
h,
a
work
and
proposal
here,
and
this
happens
in
the
Smart
Switch
Linux
Foundation
call
presented
by
Gohan
and
those
are
on
Thursdays.
One
is
in
the
morning
and
one
is
in
the
evenings.
A
They
alternate
every
other
week,
so
I
pulled
up
the
slides,
I
thought
we
could
take
a
quick
look
at
them,
but
that
happened
and
then
we
I
followed
up
on
PR
360
and
then,
if
everyone's
receiving
the
notes,
it
was
just
what
we
talked
about
last
week
here
so
and
then
the
recordings
are
here
where
you
can
find
them.
So
that's
what
we
did
there
and
before
we
get
started
today.
A
Did
anyone
have
on
the
call
have
a
PR
or
something
they
wanted
to
cover
before
what
I
had
planned
to
do
was
show
you
guys,
basically,
a
quick
overview
of
where
riff
had
posted
his
slides?
If
you
hadn't
seen
him
so,
did
anyone
have
something
first
or
I
know
sod
had
asked
for
a
little
bit
of
time,
but
he
was
waiting
for
someone
familiar
with
the
pipeliner
or
Marion,
but
we
could
always
check
so
did
anyone
else
have
something?
First,.
A
So,
did
you
want
to
try
and
ask
your
question
prior
to
Marianne,
getting
on
the
call.
C
Anyone
else
Christina
just
review
sort
of
last
week:
we'd
agreed
to
merge
422,
but
it
didn't
get
merged.
I
just
realized.
C
Morning
so
I
I
did
merge
it
because
it's
going
to
be
holding
up
Camille
has
a
new
PR
in
line
and
it
probably
has
to
be
synced
resynced
again.
He
just
submitted
429
an
optimization
on
the
code
generator
so
I
reviewed
it.
It's
fine,
but
I
wanted
to
get
422
merged
burst.
A
And
then
you've
mentioned
429
here.
C
A
Yeah,
that's
great.
Anyone
else
have
something
for
this
week
saw
oh
sad,
I
know
you
had
your
I
brought
your
python
conversion
to
Gohan's
attention
last
week
verbally
while
I
was
in
front
of
him,
so
it
had
him.
Take
a
look
as
well.
D
B
D
Is
if
you
are
to
remove
ACL
decks
from
behavioral
model
test
bus?
It
needs
a
review.
D
A
And
Chris
is
a
reviewer
and
I
said,
looks
good
to
me
where
oh
Prince,
so
Prince
is
back
and
he
he's
been
converted
to
on
call
for
a
couple
of
weeks
kumaresh.
Would
you
be
able
to
take
a
look
at
this
one.
E
E
A
B
Okay,
so
Martin
in
the
in
the
P4
code,
there
is
an
annotation
that
says
is
resource
type.
Can
you
explain
what
that
means.
D
Yeah
so
I
an
API
to
query
how
many
entries
you
can
still
create
in
a
system,
so
the
API
is
per
object
and
also
you
can
have
variations
based
on
attributes.
So
some
some
attributes,
May
May,
Define,
a
more
specific
carving
of
resources,
or
maybe
they
may
say
that
the
size
of
an
entry
is
different.
So
some
of
those
attributes
will
will
be
marked
as
a
resource
type,
which
doesn't
happen
effect
on
the
behavior.
D
That
will
be
simply
passed
from
P4
code,
as
is
to
psi
API,
and
you
will
see
that
in
site.
Api
doxygen
comment
on
top
of
the
attribute,
which
will
only
be
used
for
availability,
query
API,
but
on
the
behavior
it
doesn't
have
anything.
B
Okay,
so
that
the
effect
on
the
generated
PSI
API
is
only
in
that
oxygen
comments
and.
B
E
B
And
yeah,
okay
and
the
API
that
you
said
that
queries,
the
the
the
availability
is
that
API
in
those
in
those
generated
apis.
D
D
So
yeah
yeah,
okay
I,
will
send
the
link
in
this
meetings,
chat.
B
Sure
so,
and
so
is
this-
is
resource
type,
a
property
of
the
table,
or
is
it
a
property
of
the
so,
for
example,
you
said
that
I
mean
shouldn't
be
based
on
what
I
understand
using
this
is
resource
type
field.
You
Psy
knows
how
many
entries,
for
example,
how
much
space
is
left
in
the
table.
Yeah.
D
D
So
let
me
give
you
an
example:
you
have
some
entry
that
got
a
key
like
an
IP
address
right,
so
you
you
may
support
itv4
address
and
IPv6
address
and
often
a
case
when
IPv6
entry
will
consume
more
members.
D
Yes,
so
the
the
attribute
in
the
entry,
which
is
that
address,
will
be
marked
as
a
resource
file
is
resource
type,
true,
meaning
that
it
will
be
usually
like
address
family
and
what
you,
what
you
do
when
you
query,
is
you
pass
an
object
type
which
is
the
type
of
the
table
plus
you
manage
this
attribute
of
the
table,
a
specific
value,
either
V6
or
V4.
D
So
it's
not
an
attribute
of
the
table.
Sorry,
another
property
of
the
table.
It's
just
it's
just
like
a
flag
that
marks
significant
attributes
that
you
need
to
pass
to
pass
along
with
the
table
ID
or
the
object
type.
B
D
And
there
is
a
list
of
object,
types
that
this
attribute
is
allowed
to
to
be
set
to
like
that
you
you
can
pass
with
this
attribute,
so
it
is
generated
or
it
is
relevant
to
attributes
of
of
PSI
object
types
that
that
are
of
a
that
attribute
is
of
type
object.
Psi
object,
ID,
but
if
you
say
PSI
object,
ID,
it's
not
like
specific
enough
for
validation
checks
right,
because
if
your
attribute
accepts
an
object,
ID,
it
could
be
object.
D
D
So
previously
what
we
did
we
were
trying
to
guess
what
would
be
the
allowed
object
types
but
I
have
added
a
capability
to
P4
to
actually
stay
explicitly
by
the
programmer.
What
object
types
are
allowed
and
this
will
be
reflected
in
The
annotation.
D
For
for
that
attribute,
API.
B
I
see
so
it's
it's
for
a
more
fine-grained,
let's
say:
check
checks
in
the
PSI
API
Yeah.
E
B
Yeah,
okay,
so
just
one
more
question.
B
In
in
the
P4
model,
every
table
all
the
keys
of
a
table,
they
have
an,
they
have
an
they
have
an
annotation
that
says
name
then.
C
B
E
D
B
E
D
Yeah,
that's
the
the
name
in
the
name
of
the
attribute.
So
when
you
generate
API,
you
will
get
PSI
Dash
Apple
rule
attribute
dip.
That
will
be
the
full
name.
E
B
D
I,
don't
recall,
probably
sometimes
probably
will
need
to
to
look
at
the
examples
where
those
differ.
I,
don't
recall
exactly
that
was
more
for
a
just
just
Cosmetics
to
to
have
a
a
more
a
better
defined
and
better
understood
name
in
the
API.
F
B
I
see
okay
and
one
one
more
question.
So
in
the
P4
code
there
are
a
bunch
of
Echo
rule
tables
like
for
inbound
outbound
and
for
different
stages.
But
when
the
API
is
generated,
the
API
does
not
have
any
notion
of
which
stage
or
which
direction.
D
There
is
a
logic
that
kind
of
merges
tables
it
look
the
same,
and
you
can
specify
that
also
not
in
the
very
straightforward
way,
but
you
can
specify
multiple
tables
that
they
belong
to
kind
of
like
the
same
object
type
and
the
PSI
API
generated
will
have
their
keys
and
actions
which
are
the
same,
but
also
there
will
be
like
a
modifier
attributes
that
will
allow
you
to
specify
which
exactly
table
you
want
to
program.
D
Yeah
yeah,
there
are
inbound
stages.
There
are
outbound
stages.
You
can
pick,
which
type
group
exactly
you
want
to
put
the
rule
in,
because
otherwise
you
would
have
kind
of
not
that
easy
to
use
API
where
you
would
need
to
baste
like
based
on
the
on
the
stage.
You
would
need
to
use
a
different
API
right,
a
different
function
call
and
all
that,
and
all
this
logic
would
need
to
go
into
the
application.
D
B
Okay,
I
think
this
one
I
I
mean
my
I
think
I
have
I,
might
have
incorrect
understanding
about
this
one.
So
a
my
understanding
was
also
looking
at
the
code
that
the
control
plane
creates
an
echo
group
with
rules
and
all
that
and
afterwards
in
a
separate
move.
It
attaches
that
group
to
eni
whether
it
is
inbound
or
which
stage
right.
D
B
B
Example,
while
while
you
are
creating
a
group
right
at
that
moment,
you
don't
care
which,
whether
it
is
inbound
or
outbound
or
which
state.
Now,
once
you
have
treated
a
group
now
you
have,
let's
say
group
ID
now
in
a
separate
API,
for
example,
you
attach
that
group
to
inbound
or
outbound
or,
let's
say
stage,
four
echel
of
the
eni.
D
No
that's
right,
but
look
at
it
from
it's
from
the
B4
or
from
the
pipeline
perspective
right.
You
have
distinct
tables.
You
have
really
like
in
your
pipeline.
You
have
Separate
Tables
that
the
package
should
go
through
and
if
you
just
do
nothing
and
generate
code
for
it,
as
is
you
would
get
an
API
for
each
table.
B
Okay,
so
then,
why
would
we
have
those
pointers
in
the
eni
context,
for
example,
in
the
eni
attributes,
we
also
have
separate
pointers
for
every
stage
and
also
for
inbound
enough
for
all
the
combinations
of
stage
and
inbounder
stage
and
direction.
B
D
D
D
So
we
have
first
of
all,
we
have
this
thing
right,
be
the
occult
group
ID.
So
this
is
kind
of
you.
You
say
in
which
group
this
rule
belongs,
so
you
may
have
multiple
groups
but
for
let's
say,
50
100
groups
thousand
groups.
This
is
your
thousand
distinct
ACL
tables.
D
And,
and
how
it
is
modeled
in
here
is
that
then
P4
you
like
the
behavioral
model
is,
is
a
fixed
pipeline
right.
You
have
a
predefined
number
of
lookups
and
predefined
number
of
of
tables.
So
what
we
do
in
here
is
that
so
this
ACL
stage
we
have
a
predefined
number
of
stages.
D
Page
applied
so
like
that,
actually
we
we
probably
need
to
extend
it
to
file
because
size
actually
report.
The
number
of
stages
require
this
five,
so
we
need
to
add
a
four
and
five,
but
really
in
the
behavioral
model.
You
have
only
a
fixed
set
of
tables.
Now
what
you
need
to
kind
of
model
with
that
there
is
your
virtual
teammates,
which
is
this
one
attribute
allows
you
to
do
so.
What
happens
is
that,
like
you
have
10
emis
right?
D
They
belong
to
different
customers
or
to
different
VMS
to
different
v-nets.
They
may
have
completely
different
set
of
those
in
and
out
ACL
groups
attached
to
them,
so
each
eni
may
have
a
unique
set
of
tables,
but
in
the
bmv2
you
have
only
six
tables
and
no
more
so.
What
you
need
to
do
is
when
you
hit
an
Emi
for
a
classification.
So
let's
go
to
the
eni
dash,
that's
probably
Dash
pipeline,
and
there
is
an
eni
table.
D
Here
so
set
Emi
attributes
is
called
when
you
do
an
E
and
I
look.
So
when
you
determine
which
Emi
you
your
packet
belongs
to,
then
you'll
set
your
inbound
outbound
V6
V4
accol
groups,
which
would
be
those
identifiers
of
your
virtual
tables
that
that
will
be
looked
up
when
you,
when
you
do
the
lookup
on
the
on
the
physical
table,
so
you
have
a
probably
I
will
need
to
draw
a
diagram
if
it's
too
complicated.
D
But
what
happens
is
that
you
populate
the
physical
P4
table
according
to
this,
with
all
the
rules
according
to
the
stage.
D
So
when
you
create
a
rule,
you
say
that
rule
belongs
to
a
group.
When
you
create
a
group,
you
attach
it
to,
or
you
say
to
at
which
stage
for
a
particular
eni.
This
group
may
be
applied
and
as
a
result
you
get
like.
So,
first
of
all,
what
we
were
trying
to
do
is,
since
you
have
like
ACL
stages
here
and
ACL
stages
here,
so
it
will
be
6,
P4
tables,
but
really
even
more
because
we
may
add
more
stages.
D
So
we
didn't
want
to
have
that
duplicated
in
the
apis,
because
you
would
get
site
apis
that
look
the
same
just
different
name
of
the
enum
and
different
name
of
the
of
the
function.
So
we
collapsed
those
into
one
API
and
then
you
have
all
these
specifiers
like
the
group
and
then
you
can
attach
the
group
to
ni
and
so
on.
D
Of
those
that
that
is
correct,
yeah,
that
is
correct.
So
the
intention,
by
from
the
user
point
of
view,
is
to
say
which,
which
ACLs
to
look
up
for
this
Emi
and
what
will
really
happen
is
that
we
will,
in
the
behavioral
model
we
will
just
set
in
the
metadata,
those
IDs
and
each
time
we
do
a
lookup
we
will
know
for
which
particular
group
ID.
We
need
to
do
the
look
for.
So
all
the
other
rules
won't
be
relevant.
D
It's
probably
unique,
so
this
is
not
necessarily
right
because
it
may
be
reused
so.
B
Okay,
so
so
in
that
I
mean
if
you
go
to
the
API
I'm,
not
sure
if
you
have
one
of
those
files
in
the
I'm.
B
The
dash
apis
for
Echoes
I
did
not
find
any,
for
example,
stage
or
inbound
or
outbound.
D
It's
probably
by
the
done
by
the
object,
ID.
Also
Let
me
refresh
my
memory
first
experimental
I
think.
D
Or
maybe
it
experimental
is
it
okay,
so
ACL?
D
D
So
here
it
is
here.
Is
your
Dash
ACL
group
ID.
B
B
D
Not
find
yeah
right,
it's
not
here,
because
you
can
attach
group
to
any
state
right,
so
rule
doesn't
know
on
which
stage
it
is
executed,
because
you
attach
a
group
to
a
stage
and
you
can
attach
theoretically
I,
don't
know
if
that
really
happens
or
not,
but
it's
not
forbidden.
You
can
attach
group
to
stage
one
in
one
eni
or
to
stage
two
in
a
different
unit.
D
Yeah,
because,
because
for
a
group,
it's
Dynamic,
that's
why
I'm
saying
you
attach
it
you,
you
have
a
fixed
set
of
places
you
can
attach
it
to
which
is
defined
in
the
eni
API.
So
there
is
a
fixed
number
of
places
that
the
group
can
be
attached
to,
but
at
the
create
point
of
creation
of
the
group
or
the
attaching
itself
is
dynamic.
So
in
the
runtime
you
can
attach
the
same
group
to
different
places.
B
Of
yeah
and
then
you
will
go
to
the
eni
API
and
you
will
set
that
group
ID
in
the
eni
attributes
table
right.
So
I'm,
sorry,
that's
that's
what
I
that's
the
understanding
that
I
had,
but
then
why
do?
Why
are
there
Separate
Tables
in
the
pipeline
shouldn't
be
only
a
single
table
in
the
pipeline.
Let's
say:
group
ID,
oh.
B
D
D
No
I
mean
the
the
group
ID
changes
or,
or
this
or
value
of
this
key
metadata
Dash.
Our
code
group
ID.
B
D
So
what
you
really
want
to
achieve,
you
want
to
achieve
sex
or
sorry
for
One
Direction.
You
want
to
achieve
like
five
stages
or
five
glutams,
so
in
bmv2
one
table
can
be
looked
up
once
otherwise
you
need
to
replicate
so
we
did
replicating.
D
So
there
is
probably
a
different
way
of
doing
that,
like
you
can
have
one
table
and
you
can
probably
call
apply
multiple
times.
I
didn't
try
that,
but
you
need
to
have
you
need
to
have
this
number
of
lookups.
B
No
just
just
one
one
more
minute,
if
that's
possible
Marine,
if
you
go
back
to
the
echel
file,
dot,
h
file
and,
at
the
end,
all
the
way
in
the
end
in
the
apis.
So.
E
E
B
Says
that
okay,
add
these
rules
in
the
group
and
he
calls
this
API,
okay
and
and
now
in
the
behavioral
model,
I'm
talking
about
the
lips
eye,
for
example,
that
you
generated
there
are
six
of
those
tables.
Okay,
how
will
it
know?
How
will
your
lips,
High
adapter
know
which
table
to
program
the
entry
in
because
you.
D
Don't
have
information
so
when
you
create
a
group
you
only
so
a
group
itself
doesn't
create
a
new
entry.
So
this.
B
D
Now
you
you
kind
of
can
with
P4
code,
but
then
it
will
be
replicated,
it
will
be
replicated
by
the
compiler,
and
then
there
are
problems
with
that,
because
the
names
generated
are
like
I,
don't
really
control
how
it
will
name
the
tables
so
I
just
created
them
explicitly
myself.
So
there
are
two
ways:
either
you
create
six
tables
or
you
apply
one
table
six
times
and
compiler
will
create
six
tables
for
you.
D
D
D
A
D
A
No
so
I,
don't
know
if
you
saw
this
Marion
before
where
you
joined
Griff
had
posted
here.
His
high
availability
work
in
the
Smart,
Switch,
Linux,
Foundation
area,
and
so
I
was
showing
it
right
here
and
I
did
include
it
in
the
meeting
notes
from
last
time.
A
In
case
anyone
wanted
to
go
ahead
and
take
a
look,
the
pr,
the
document,
the
slides
but
he's
really
open
to
feedback,
and
the
audience
here
is
different
than
the
audience
and
the
other
meetings
that
I've
seen
so
I
thought
I
would
bring
it
up
here
and
show
it
to
you
guys
quickly.
So
have
you
guys
been
able
to
see
these
links
or
you
have
these
in
the
notes.
A
A
The
audience
is
different
is
the
thing
not
everybody
here
goes
there
and
vice
versa.
So
I
thought
I
would
just
introduce
it
here
and
let
people
know
they're
here
and
then
there
is
a
if
they
want
to
go
through
the
Deep
review.
I
guess
you
could
look
at
the
Pierre,
the
docs,
the
slides
and
then
go
to
that
call.
I!
Guess
if
you
want
to
go
into
the
in-depth
review,
I
guess:
that's
all
I
was
trying
to
say
if
anyone's
interested.
A
A
We
can
look
at
issue
415
sure,
so
all
right
guys.
This
is
here
it's
in
the
chat
window
and
then
issue
415.
C
Yeah
I'm
just
that's
a
meal
because
and
always
attend,
there's
an
issue
there
where
we
need
some
Marian's
feedback.
There's
a
oh
code
being
generated
in
the
code,
generator
that
generates
some
problems
and
you
think
Marian
might
be
the
best
person
to
take
a
look
at
that.
C
D
Okay,
so
it's
just
set
a
said:
the
parameter
according
to
its
type.
So
is
there
an
error
right
now
or
what
like?
How
does
the
issue
manifested
so.
D
C
E
A
C
A
F
Thanks,
yes,
so
so
what
I
actually
want
to
do
is
to
when
I
go
like
warnings
to
to
errors
during
compilation
to
you
know,
to
avoid
stuff
like
this.
C
F
Basically,
what's
happening
right
now,
this
is
just
a
compiler
warning,
but
under
the
hood,
the
oil,
the
ID,
is
to
just
lower
16
16
piece
from
64
bits,
yeah,
so
I'm
not
sure.
You
know
whether
this
have
some
like
impact
internally,
whether
in
the
BMV
tools,
the
streets
or
whether
in
the
side
drift
so
I
actually
need
someone
with
like
deeper
knowledge.
F
You
know
to
you,
know,
take
a
look
on
that
and
figure
out
what
could
be
the
actual
issue
here,
because
right
right
now,
actually
it's
object.
Id
is
UNIX
because
the
index
is
set
on
the
lowest
part.
So
I
think
this
is
not
issue,
but
I.
Think
that,
like
the
entire
audio
should
be
used
as
a
ID.
D
Yeah,
so
if
I
remember
correctly,
the
intention
was
to
have
ID
built
as
a
struct,
so
so
that
the
roughly
upper
bits
would
be
the
object.
Type
lower
bits
would
be
the
ID
within
that
type.
So
by
truncating
you
just
you're
just
getting
the
bmv2
ID
value.
D
Which
is
less
than
64,
but
it's
16
bits
or
something
like
that
and
you
you
already
know
what
the
type
is.
You
don't
need
the
whole
object.
Id.
You
only
need
to
pass
the
year
ID
irrelevant
to
bnv2,
but
I
I
will
check.
Maybe
there
is
a
way
to
do
it
without
These
Warnings,
just
explicitly
split
the
the
object.
Id.
D
No,
no,
no,
no,
it's
just
the
size
we
picked.
There
is
an
alternative,
as
you're
saying
we
can
manually,
convert
all
of
the
IDs
in
bmv2
into
64.
Bits
doesn't
really
affect
anything,
but
it
will
have
to.
D
We
will
have
to
make
sure
that
the
cycle
generated
will
have
them
unique
and
and
also
that
we
can
derive
an
object
type
from
them.
F
Yes,
so
I
actually
actually
fixed
one
of
the
parts
that,
like
in
the
in
the
leap
size
So.
Currently
the
oil
in
the
rib
side
is
including
the
type
so
I
actually
added
that
so
the
oil
contains
the
index
and
the
object
type
from
each
side.
F
But
you
know
my
concern
here
was
that
you
know
there
are
if
this
value
is
to
donated
to
the
lower
16
bits
that
I
will
be
like
multiple
objects,
with
the
same
idea,
because,
for
example
like
the
like
the
port
ID
or
maybe
like
this
or
different
different
trap
group,
or
something
like
that,
so
they
have
started
the
from
number
one
in
the
current
limitation.
F
So
if
you
don't
get
that
to
16
bits,
so
there
will
be
like
multiple
objects
with
the
same
ID
I'm,
not
sure
yet
like
exactly
how
this
is
handled
in
the
BNB.
So
if
you,
if
you
say
that
when
the
call
is
made,
then
they
already
know
what
the
object
type
is.
So
maybe
that.
D
Yeah,
so
the
width
and
bmv2
is
passed
to
say,
lib
and
so
I
live
only
takes
those
backs,
because
that's
how
much
is
was
reserved
for
that
key.
F
E
A
E
Hey
Christina
yeah
I
created
an
issue
number
428,
okay,.
A
A
E
Okay,
so
I
tagged,
prints
on
this
and
I
see
he's
not
in
the
meeting
today,
but
I
can
I
mean
ask
the
group
in
case
anyone
else
knows
so
for
service
tunnel
processing.
E
One
of
the
things
the
data
playing
does
is
convert
the
inner
V4
header
to
an
IPv6
header
and
in
the
description
in
the
hld
of
the
inbound
service
tunnel
processing.
It's
not
clear
to
me
what
the
packet
looks
like
when
it
arrives
and
how
we're
supposed
to
process
it
so
like
with
any
outbound
packet.
E
The
outbound
processing
creates
a
entry
in
the
flow
table
for
matching
on
subsequent
packets
in
that
outbound
flow,
and
it
also
creates
an
inbound
flow
entry
for
packets
coming
from
the
other
direction,
so
here
I
believe
the
the
packets
coming
from
the
other
direction
or
IPv6
and
the
packets
that
are
going
out,
outbound,
originally
rpv4,
so
I'm
trying
to
understand.
If
this
description
is
saying
or
implying
that
yeah
we
create
a
V4
entry
for
outbound
and
a
V6
entry
for
inbound.
E
So
I
don't
know.
If
anyone
knows
the
answer
to
that.
E
Okay,
the
the
second
part
of
it
is
the
packet
format,
I
believe
from
the
description.
The
packets
arrive,
double
tundled
instead
of
this,
like
I,
have
in
the
end
cap
stack
there
to
NV
GRE
headers,
followed
by
the
the
inner
IPv6
header.
E
Okay,
yeah,
because
if
it's
only
one,
that's
fine,
except
that,
if
the
flow
lookup
is
done
on
the
inner
IPv6.
E
Then
I
mean
it's
just
different
processing.
Usually
you
you
pop
off
the
outer
header,
you're
left
with
the
remaining
header,
and
you
do
a
flow
lookup
on
it.
This
would
be
you'd
pop
off.
An
outer
header,
you'd
know
somehow
to
skip
the
middle
header
and
then
use
the
inner
header
for
the
flow
lookup
and
like
how
do
you
know
to
skip
the
middle
like
mm-hmm,
yeah,.
E
So
I
think
in
the
hld
in
this
section,
there's
lots
of
good
examples
like
with
specific,
like
packets
and
configs
and
IP
addresses,
and
a
good
description
of
a
step-by-step
processing
for
the
outbound
and
and
what
happens
at
how
you
arrive
at
the
final
outcome
packet.
But
the
inbound
description
is
is
much
more
brief
and
it
would
be
useful
I
think
if
there
were
inbound
descriptions
as
rich
as
the
outbound.
E
A
Hey
well,
does
it
I,
guess
I'll
put
that
anyone
have
anything
else.
I
can
stop
the
recording
and
give
us
time
to
get
ready
for
our
next
call.
A
That's
what
you
guys
would
like
so
I'll
do
that
I
can't
seem
to
wait
for
the
seven
seconds
to.