[j-nsp] MPLS filter doesnt work

Shawn Shen shawshen2000 at gmail.com
Tue Apr 14 19:50:48 EDT 2009


I tried the same mpls filter on the PE2 ingress direction, which is
ge-1/3/0, traffic is from CE1 to CE2, still no mpls counters change. any
comment?

On Tue, Apr 14, 2009 at 6:19 PM, Harry Reynolds <harry at juniper.net> wrote:

> I've seen this behavior and believe its expected.
>
> At ingress the packet is handled as an Ip packet. The route is looked
> up, which would then possibly link to an egress firewall of family inet.
> After executing any inet filter code the route lookup is performed,
> assuming the filter accepts the packet, and here the result is a mpls
> forwarding next hop. By the time the packet hits the L2 rewrite state,
> where it becomes an MPLS frame, its already gone through the IP/R chip,
> so no more firewall action are performed.
>
> The next node will see this ingress as family mpls, so an ingress or
> egress mpls filter would work there, even if it's the penultimate hop
> and therefore actually output IP, and not MPLS due to PHP.
>
> The summary is the egress firewall family is a function of input family,
> and at least we are consistent at both ingress and penultimate nodes in
> this behavior.
>
> HTHs
>
>
>
>
>
> -----Original Message-----
> From: juniper-nsp-bounces at puck.nether.net
> [mailto:juniper-nsp-bounces at puck.nether.net] On Behalf Of Shawn Shen
> Sent: Tuesday, April 14, 2009 3:07 PM
> To: juniper-nsp at puck.nether.net
> Subject: [j-nsp] MPLS filter doesnt work
>
> Hi all,
>
> I've just got a MPLS filter problem which I couldnt find reason. I'm
> quite new to Junos so it might be something I miss hope someone could
> shed a light.
> a typical Layer 3 vpn setup:
> CE1-----PE1(ge-1/3/0)-------------(ge-1/3/0)PE2----CE2
> CE1 lo0:1.1.1.1/32
> CE2 lo0:2.2.2.2/32
> vpn name: vpn-a
> PE1 lo0:3.3.3.3/32
> PE2 lo0:4.4.4.4/32
> L3 VPN is working fine as we can ping from CE1 lo0 to CE2 lo0,
> PE1 routing table shows PE2 lo0 is reachable via directed link between
> PE1/PE2
>
> {master}
> PE1-re0> show route 4.4.4.4
> inet.0: 1748 destinations, 1749 routes (1747 active, 0 holddown, 1
> hidden)
> + = Active Route, - = Last Active, * = Both
> 4.4.4.4/32   *[IS-IS/18] 00:00:38, metric 10000
>                    > to 11.11.11.1 via ge-1/3/0.0 Since PE1 directly
> connected to PE2, for L3 VPN traffic, due to PHB, only one label(VPN)
> will be imposed. we could verify this by checking PE1's l3vpn table
> which shows destination
> 2.2.2.2/32 is via ge-1/3/0 by pushing label 23,
> PE1-re0> show route table bgp.l3vpn.0 2.2.2.2/32 detail
> bgp.l3vpn.0: 1030 destinations, 1030 routes (1030 active, 0 holddown, 0
> hidden)
> 65400:300:2.2.2.2/32 (1 entry, 0 announced)
>        *BGP    Preference: 170/-81
>                Route Distinguisher: 65400:300
>                Next hop type: Indirect
>                Next-hop reference count: 10
>                Next hop type: Router, Next hop index: 651
>                Next hop: 11.11.11.1 via ge-1/3/0.0, selected
>                Label operation: Push 23
>                Protocol next hop: 4.4.4.4
>                Push 23
>                Indirect next hop: 8cb71d4 262160
>                State: <Active Int Ext>
>                Local AS: 65400 Peer AS: 65400
>                Age: 8:24:46    Metric2: 10000
>                AS path: 65021 I (Originator)
>                AS path:  Originator ID: 4.4.4.4
>                AS path:
>                AS path: Recorded
>                Communities: target:65400:300
>                Accepted
>                VPN Label: 23
>                Localpref: 80
>
> To my understanding, CE1's IP packet entering into PE1, gets imposed
> label 23, and label switched to PE2 via ge-1/3/0, to verify this, I put
> a mpls filter on PE1 ge-1/3/0 egress side:
>
> filter test {
>            term match-exp0 {
>  from {
>   exp 0
>  }
>                then {
>                    count count-exp0;
>                    sample;
>                    accept;
>                }
>            }
>            term match-exp1 {
>  from {
>   exp 1
>  }
>                then {
>                    count count-exp1;
>                    sample;
>                    accept;
>                }
>            }
>            term all-other {
>                then {
>                    count count-other;
>                    sample;
>                    accept;
>                }
>            }
>        }
>
> PE1-re0> show configuration interfaces ge-1/3/0
> mtu 1534;
> unit 0 {
>    family inet {
>        address 11.11.11.2/30;
>    }
>    family iso;
>    family mpls {
>        filter {
>            output test;
>        }
>    }
> }
>
> Now ping from CE1 to CE2, I'm expect to see these counters increase
> because the traffic between PE1 and PE2 are MPLS packets. But turns out
> every count is just 0.
> PE1-re0> show firewall filter test
> Filter: test
> Counters:
> Name                        Bytes              Packets
> count-other                   0                    0
> count-exp1                    0                    0
> count-exp0                    0                    0
>
> However, if I put a ipv4 filter under the same interface, address family
> inet, counters do increase with transit packets.
>
> PE1-re0> show configuration interfaces ge-1/3/0
> mtu 1534;
> unit 0 {
>    family inet {
>        filter {
>            output test1;
>        }
>        address 11.11.11.2/30;
>    }
>    family iso;
>    family mpls;
>    }
> }
> PE1-re0> show configuration firewall family inet filter test1
> interface-specific;
> term t1 {
>    then {
>        count pe-egress-count;
>        sample;
>        accept;
>    }
> }
> PE1-re0> show firewall filter test1
> Filter: test1
> Counters:
> Name                                  Bytes              Packets
> pe-egress-count                     43287               186
>
> Can somebody explain to me why mpls filter not get hit while there's
> mpls transit packets? Thanks in Advance!
> _______________________________________________
> juniper-nsp mailing list juniper-nsp at puck.nether.net
> https://puck.nether.net/mailman/listinfo/juniper-nsp
>


More information about the juniper-nsp mailing list