Nitin: 

Let me start with my perception of the problem:  

Problem: Your grammar does not handle source-destination form choice as a
generic form used by all of the interfaces. 
Solution:  Specify form as specific variable for all forms. 
Confusion:  I am suggesting two tags <form-tag><route-type> and you want see
one tag for compilation.  

See the two tags: [form-type] as two parts to one tag:  

[high order tag form] [low order form - address form] 

At this point, all I have done is reduce your complex forms to 1 tag  
<route-type> =  <form-tag><type-tag> 

Then your grammar is as follows: 

<match> ::= <route-type> (<ipv4-route> | <ipv6-route> | <mpls-route> |
                          <mac-route> | <interface-route>) <route-type> ::=
<IPV4> | <IPV6> | <MPLS> | <IEEE_MAC> | <INTERFACE>

<route-type> =  <form-tag><type-tag>
<form-tag> = <SRC-FORM><DST-FORM><SRC-DST FORM> 
Routing protocols would have:  [rrr ff ttt]  r = reserved/0  ff = 0/1 (for
src/dst), ttt = type]  

<type-tag> ::=<IPV4> | <IPV6> | <MPLS> | <IEEE_MAC> | <INTERFACE> 

Each of these forms for matches could use the SRC and destination in the
filter. 

I'm sure that IPv4, IPv6, and IEEE_MAC are obvious from your emails.
Interfaces can be viewed as the same for flows: <SRC-INTERFACE>
<DST-INTERFACE>.  This can be that the traffic flow comes in on interface1
and goes out on interface 2 for all interfaces.  MPLS could but it can be
ingress/egress label as source/destination. 

Do you agree/disagree have a potential of having source-destination for most
of these types? 

Your grammar could then be restated: 
================================
<match> ::= <route-type> (<ipv4-route> | <ipv6-route> | <mpls-route> |
                          <mac-route> | <interface-route>) 

<route-type> ::= <IPV4> | <IPV6> | <MPLS> | <IEEE_MAC> | <INTERFACE>
<form-type> ::= <SRC> | <DEST> | <DEST_SRC>

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

<ipv6-route> ::=   (<destination-ipv6-address> | <source-ipv6-address> |
                   (<destination-ipv6-address> <source-ipv6-address>)) 
<form-type> ::= <SRC> | <DEST> | <DEST_SRC> 

<mpls-route> :: =  ( (egress-MPLS-label) | (Ingress-MPLS_LABEL>) |
(<egress-mpls-label><ingress-MPLS_LABEL>))  
<mac-route> ::= > (<DST-MAC_ADDRESS> |  [<SRC-MAC-ADDRESS>] |
(<DST_MAC_ADDRESS><SRC-MAC-ADDRESS>))
<interface-route> ::=   (<DST-INTERFACE_IDENTIFIER> |
<SRC-INTERFACE-IDENTIFIER> | (<DST-INTERFACE-IDENTIFIER>
<SRC-INTERFACE-IDENTIFIER>) )

If you need context on the interfaces, pleases consider multicast and flows.
The rest hopefully is QED based the above grammar.  If we can start with
this, I hopefully, you can see the extension to other forms n-tuple and
next-hops. 

Sue 



_______________________________________________
i2rs mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/i2rs

_______________________________________________
i2rs mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/i2rs

Reply via email to