Subject: Re: [i2rs] Call for WG Adoption: draft-nitinb-i2rs-rib-info-model-02

From: "Toru Okatsu (tokatsu)" <[email-masked]>
Date: Mon, 2 Sep 2013 01:35:10 +0000

Hi Nitin,

Thanks for your response.

I agree with you that the source ip address only case should be considered.

I think the below expression is clearer to describe what the route is.

  <ipv4-route> ::= <destination-ipv4-address> | <source-ipv4-address> |
                   (<destination-ipv4-address> <source-ipv4-address>)

Thanks,

Toru
> -----Original Message-----
> From: Nitin Bahadur [mailto:[email-masked]]
> Sent: Saturday, August 31, 2013 6:25 AM
> To: Toru Okatsu (tokatsu)
> Cc: [email-masked]
> Subject: Re: [i2rs] Call for WG Adoption:
> draft-nitinb-i2rs-rib-info-model-02
> 
> Hi Toru-san,
> 
>    Thanks for your feedback. Some comments as below.
> 
> 
> >In the section 6 which is about RIB grammar, it is better to change the
> >definition of <ipv4-route> and <ipv6-route> to accommodate not only
> >multicast routing but also source address base routing.
> >
> >Original:
> >   <ipv4-route> ::= <ipv4-prefix> [<multicast-source-ipv4-address>]
> >   <ipv4-prefix> ::= <IPV4_ADDRESS> <IPV4_ADDRESS_LENGTH>
> >   <multicast-source-ipv4-address> ::= <IPV4_ADDRESS>
> ><IPV4_PREFIX_LENGTH>
> >
> >   <ipv6-route> ::= <ipv6-prefix> [<multicast-source-ipv6-address>]
> >   <ipv6-prefix> ::= <IPV6_ADDRESS> <IPV6_PREFIX_LENGTH>
> >   <multicast-source-ipv6-address> ::= <IPV6_ADDRESS>
> > <IPV6_PREFIX_LENGTH>
> >
> >My comment:
> >   <ipv4-route> ::= <destination-ipv4-address> [<source-ipv4-address>]
> >   <destination-ipv4-address> ::= <ipv4-prefix>
> >   <source-ipv4-address> ::= <ipv4-prefix>
> >   <ipv4-prefix> ::= <IPV4_ADDRESS> <IPV4_PREFIX_LENGTH>
> >
> >   <ipv6-route> ::= <destination-ipv6-prefix> [<source-ipv6-address>]
> >   <destination-ipv6-address> ::= <ipv6-prefix>
> >   <source-ipv6-address> ::= <ipv6-prefix>
> >   <ipv6-prefix> ::= <IPV6_ADDRESS> <IPV6_PREFIX_LENGTH>
> 
> If you are doing source-based routing, then you may or may not need the
> destination-address. So <ipv4-route> ::= <destination-ipv4-address>
> [<source-ipv4-address>] is incorrect.
> 
> The below might be more correct:
> 
> <ipv4-route> ::= (<destination-ipv4-address> [<source-ipv4-address>]) |
>                  (<source-ipv4-address> [<destination-ipv4-address>])
> 
> 
> >Another comment is a minor correction. In the section 7.2.3,
> ><network-list> should be <nexthop-list>.
> >
> >Original:
> >   <nexthop-list> ::= (<nexthop-chain> <LOAD_BALANCE_WEIGHT>)
> >                      [(<nexthop-chain> <LOAD_BALANCE_WEIGHT>) ... ]
> >   <network-list> ::= (<nexthop> <LOAD_BALANCE_WEIGHT>)
> >                      [(<nexthop> <LOAD_BALANCE_WEIGHT>)... ]
> >
> >My comment
> >   <nexthop-list> ::= (<nexthop-chain> <LOAD_BALANCE_WEIGHT>)
> >                      [(<nexthop-chain> <LOAD_BALANCE_WEIGHT>) ... ]
> >   <nexthop-list> ::= (<nexthop> <LOAD_BALANCE_WEIGHT>)
> >                      [(<nexthop> <LOAD_BALANCE_WEIGHT>)... ]
> 
> This will be fixed in the next revision.
> 
> Thanks
> Nitin
>

---

From: "Joel M. Halpern" <[email-masked]>
Date: Mon, 02 Sep 2013 03:15:38 -0400

There is one interesting complication if we are going to represent 
source address based routing in the RIB (which is not unreasoanble.)
There are several different models of how to handle this.  Not all 
devices will support all models.  So how does the controller know how 
the device will interpret the entry?

For context, there are some models which are source, then dest.  There 
are some which are dest, then source.

Also, while writing this, I wondered whether there is a semantic 
difference between source with no dest and source with 0/0 dest?  If 
not, then is it not sufficient to require a dest, and allow 0/0?  If 
there is a difference, what is it?

Yours,
Joel

On 9/1/13 9:35 PM, Toru Okatsu (tokatsu) wrote:
> _______________________________________________
> i2rs mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/i2rs
>

---

From: "Toru Okatsu (tokatsu)" <[email-masked]>
Date: Mon, 2 Sep 2013 09:29:19 +0000

I cannot see the difference between source with no dest and source with 0/0 dest.
Based on that, the below expression would be more correct.

 <ipv4-route> ::= <destination-ipv4-address> <source-ipv4-address>

 <destination-ipv4-address> 0/0 means the destination base routing.
 0/0 <source-ipv4-address> means the source base routing
 <destination-ipv4-address> <source-ipv4-address> the destination and source base routing.

In terms of models to handle source base routing, the capability of being
able to support it should be negotiated between the I2RS client and 
the routing agent. Is it out of scope of I2RS about how the <pv4-route> is 
interpreted by the routing agent? The application using the I2RS client
should create data without ambiguity.

 Ex. 10.0.0.0/8 192.32.0.1/32 exists in the RIB.
     When 10.0.1.0/24 0/0 is added to the RIB,
     10.0.1.0/24 192.32.0.1/32 should also be added.

Thanks,

Toru
> From: Joel M. Halpern [mailto:[email-masked]]
> Sent: Monday, September 02, 2013 4:16 PM
> Cc: Nitin Bahadur; [email-masked]
> There is one interesting complication if we are going to represent source
> address based routing in the RIB (which is not unreasoanble.) There are
> several different models of how to handle this.  Not all devices will
> support all models.  So how does the controller know how the device will
> interpret the entry?
> 
> For context, there are some models which are source, then dest.  There are
> some which are dest, then source.
> 
> Also, while writing this, I wondered whether there is a semantic difference
> between source with no dest and source with 0/0 dest?  If not, then is it
> not sufficient to require a dest, and allow 0/0?  If there is a difference,
> what is it?
> 
> Yours,
> Joel
> 
> >>> In the section 6 which is about RIB grammar, it is better to change
> >>> the definition of <ipv4-route> and <ipv6-route> to accommodate not
> >>> only multicast routing but also source address base routing.
> >>>
> >>> Original:
> >> If you are doing source-based routing, then you may or may not need
> >> the destination-address. So <ipv4-route> ::=
> >> <destination-ipv4-address> [<source-ipv4-address>] is incorrect.
> >>

---

From: "Toru Okatsu (tokatsu)" <[email-masked]>
Date: Mon, 2 Sep 2013 14:12:40 +0000

I'd like to correct my previous e-mail.

As RIB grammar the below expression would be better to understand.

I still see no difference between source with no dest and source with 
0/0 dest. But it is up to the implementation about which of them is used
as data structure, 
<source-ipv4-address> or ( 0/0 <source-ipv4-address> ) .

Thanks,

Toru
> From: [email-masked] [mailto:[email-masked]] On Behalf Of
> Toru Okatsu (tokatsu)
> Sent: Monday, September 02, 2013 6:29 PM
> To: Joel M. Halpern; Nitin Bahadur
> Cc: [email-masked]
> able to support it should be negotiated between the I2RS client and the
> routing agent. Is it out of scope of I2RS about how the <pv4-route> is
> > >    <ipv4-route> ::= <destination-ipv4-address> |
> > > <source-ipv4-address>
> > |
> > >>> In the section 6 which is about RIB grammar, it is better to
> > >>> change the definition of <ipv4-route> and <ipv6-route> to
> > >>> accommodate not only multicast routing but also source address base
> routing.
> > >>>
> > >>> Original:
> > >> <ipv4-route> ::= (<destination-ipv4-address>
> > >> [<source-ipv4-address>])
> > |
> > >>                   (<source-ipv4-address>

---

From: Nitin Bahadur <[email-masked]>
Date: Wed, 4 Sep 2013 22:15:03 +0000

The data-model has to correctly identify the source-address from the
destination-address.
Assuming a dest-addr will be followed by a src-address will not be good.

I don't think there is a semantic difference between lack of a dest and a
0/0 dest.
But requiring someone to specify a 0/0 dest even when there is no dest
seems overkill. Just
Like requiring a src-addr of 0/0 for a destination-address based route.

Thanks
Nitin Bahadur

On 9/2/13 12:15 AM, "Joel M. Halpern" <[email-masked]> wrote:

>>>>the

---

From: "Joel M. Halpern" <[email-masked]>
Date: Thu, 05 Sep 2013 07:59:07 -0400

I can live with both forms.  I am concerned that having two ways to 
represent the same meaning is somewhat confusing and mildly error-prone.

If you have a situation in which no source lookups are being performed, 
then you would want to omit the source field, rather than specifying it 
as 0/0.  That clearly is a common case.

Conversely, I do not think that there is any case where the lookup 
process itself would use the source address but not the destination 
address.  Hence I think requiring that the destination be listed as 0/0 
for routing entries that are to use both fields, but allow any 
destination, seems quite sensible.
(For completeness of my thought, even if one has two default routes to 
the internet, for different source address prefixes, one still needs to 
perform the destination address check in order to handle local 
destinations.  The converse is not true for sources in many environments.)

Yours,
Joel

---

From: "Russ White" <[email-masked]>
Date: Thu, 5 Sep 2013 19:02:55 -0400

> Conversely, I do not think that there is any case where the lookup process
> itself would use the source address but not the destination address.
Hence I

Just to double check --multicast forwarding based on the source group?
Another place this might exist is unicast RPF checks on an inbound line card
(in situations where the destination address isn't looked up until further
along in the switching process). Neither of these might be valid; just
throwing them out there to make certain we've covered all the bases.

:-)

Russ

---

From: "Joel M. Halpern" <[email-masked]>
Date: Fri, 06 Sep 2013 04:58:51 -0400

While multicast is an interesting case, as far as I know it requires a 
dest lookup as well as a source lookup.

Yours,
Joel