Thanks Damjan. Will look into it and find some way to resolve it. Thanks, Hongjun
From: Damjan Marion [mailto:dmar...@me.com] Sent: Friday, March 22, 2019 3:41 PM To: Ni, Hongjun <hongjun...@intel.com> Cc: l...@cisco.com; vpp-dev@lists.fd.io Subject: Re: [vpp-dev] Status of PPPoE Plugin On 22 Mar 2019, at 07:34, Ni, Hongjun <hongjun...@intel.com<mailto:hongjun...@intel.com>> wrote: Hi John, For first PADI packet, its destination MAC is broadcast address. Not sure it is accepted by ethernet-input node? Sure it does, otherwise arp, dhcp, ... will not work. Do we need special process to handle it? 5.1<https://tools.ietf.org/html/rfc2516#section-5.1> The PPPoE Active Discovery Initiation (PADI) packet The Host sends the PADI packet with the DESTINATION_ADDR set to the broadcast address. The CODE field is set to 0x09 and the SESSION_ID MUST be set to 0x0000. Thanks, Hongjun From: vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io> [mailto:vpp-dev@lists.fd.io] On Behalf Of John Lo (loj) via Lists.Fd.Io Sent: Thursday, March 21, 2019 11:34 PM To: dmar...@me.com<mailto:dmar...@me.com>; Ni, Hongjun <hongjun...@intel.com<mailto:hongjun...@intel.com>> Cc: vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io> Subject: Re: [vpp-dev] Status of PPPoE Plugin Thanks for citing the PPPoE RFC 2516, Damjan. The RFC goes on to describe how to resolve the MAC address for PPPoE sessions in Section 5 in discovery stage. As such, there is really no “L2 mode” for PPPoE sessions mentioned in my previous reply in this thread. The root cause of the problem was MAC address resolution for PPPoE sessions. -John From: vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io> <vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io>> On Behalf Of Damjan Marion via Lists.Fd.Io Sent: Thursday, March 21, 2019 11:08 AM To: Ni, Hongjun <hongjun...@intel.com<mailto:hongjun...@intel.com>> Cc: vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io> Subject: Re: [vpp-dev] Status of PPPoE Plugin > On 21 Mar 2019, at 06:20, Ni, Hongjun > <hongjun...@intel.com<mailto:hongjun...@intel.com>> wrote: > > Hi Raj, > > I think you may check the Ethernet type, if it is PPPoE packet, then MAC > check will be skipped. > > Thanks, > Hongjun > > -----Original Message----- > From: vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io> > [mailto:vpp-dev@lists.fd.io] On Behalf Of Raj > Sent: Wednesday, March 20, 2019 9:48 PM > To: vpp-dev <vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io>> > Cc: alp.ars...@xflowresearch.com<mailto:alp.ars...@xflowresearch.com>; Ni, > Hongjun <hongjun...@intel.com<mailto:hongjun...@intel.com>> > Subject: Re: [vpp-dev] Status of PPPoE Plugin > > I commented out the offending parts and now PPPoE is working fine. > > diff --git a/src/vnet/ethernet/node.c b/src/vnet/ethernet/node.c index > 53d5b4eb0..7c5f673e0 100755 > --- a/src/vnet/ethernet/node.c > +++ b/src/vnet/ethernet/node.c > @@ -429,14 +429,14 @@ ethernet_input_inline (vlib_main_t * vm, > } > else > { > + /*if (!ethernet_address_cast (e0->dst_address) && > (hi->hw_address != 0) && > !eth_mac_equal ((u8 *) e0, hi->hw_address)) > error0 = ETHERNET_ERROR_L3_MAC_MISMATCH; > if (!ethernet_address_cast (e1->dst_address) && > (hi->hw_address != 0) && > !eth_mac_equal ((u8 *) e1, hi->hw_address)) > + error1 = ETHERNET_ERROR_L3_MAC_MISMATCH;*/ > vlib_buffer_advance (b0, sizeof (ethernet_header_t)); > determine_next_node (em, variant, 0, type0, b0, > &error0, &next0); @@ -653,10 +653,10 @@ > ethernet_input_inline (vlib_main_t * vm, > } > else > { > + /*if (!ethernet_address_cast (e0->dst_address) && > (hi->hw_address != 0) && > !eth_mac_equal ((u8 *) e0, hi->hw_address)) > + error0 = ETHERNET_ERROR_L3_MAC_MISMATCH;*/ > vlib_buffer_advance (b0, sizeof (ethernet_header_t)); > determine_next_node (em, variant, 0, type0, b0, > &error0, &next0); > > I am sure this is not a patch which will be accepted upstream. I would say: for sure not. > I am not sure how to _correctly_ fix this, so that it will be accepted by > upstream. If some pointers are given I can submit a patch to get PPPoE > working correctly again in VPP. This is typical case of “shotgun wedding” between control plane and dataplane over the TAP interface. RFC2516 Section 4. clearly says: The DESTINATION_ADDR field contains either a unicast Ethernet destination address, or the Ethernet broadcast address (0xffffffff). For Discovery packets, the value is either a unicast or broadcast address as defined in the Discovery section. For PPP session traffic, this field MUST contain the peer's unicast address as determined from the Discovery stage. The SOURCE_ADDR field MUST contains the Ethernet MAC address of the source device. So right thing to do here is to make sure that both control and session packets are using single mac address, preferably MAC address of the VPP interface where session traffic is received. -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#12600): https://lists.fd.io/g/vpp-dev/message/12600 Mute This Topic: https://lists.fd.io/mt/28791570/675294 Group Owner: vpp-dev+ow...@lists.fd.io<mailto:vpp-dev+ow...@lists.fd.io> Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [l...@cisco.com<mailto:l...@cisco.com>] -=-=-=-=-=-=-=-=-=-=-=-
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#12617): https://lists.fd.io/g/vpp-dev/message/12617 Mute This Topic: https://lists.fd.io/mt/28791570/21656 Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-