Hi guys,
I need to run a PPPoE session over a relay, however, it seems that the PPPoE client implementation on RouterOS 3.6 at least is broken. Specifically, during a normal PPPoE session negotation I see this:
01:22:06.400353 PPPoE PADI [Service-Name] [Host-Uniq 0xE8290000]
01:22:06.418530 PPPoE PADO [Service-Name] [Host-Uniq 0xE8290000] [AC-Name "tvwt-ip-esr-2"][|pppoe]
01:22:06.418730 PPPoE PADR [Service-Name] [Host-Uniq 0xE8290000] [AC-Cookie 0x8CC202F68666151817886DF00B0E5875]
01:22:06.436266 PPPoE PADS [ses 0xdb9f] [Service-Name] [Host-Uniq 0xE8290000] [AC-Cookie 0x8CC202F68666151817886DF00B0E5875]
Note the Host-Uniq values that stays the same for the session. When MikroTik RouterOS attempts to negotiate a session and I sniff on the MikroTik side of the pppoe-relay I see this:
01:25:35.671321 PPPoE PADI [Host-Uniq 0xE8000000] [Service-Name]
01:25:35.690203 PPPoE PADO [Relay-Session-ID 0x0100000000141C37594A] [Host-Uniq 0xE8000000] [Service-Name] [AC-Name "tvwt-ip-esr-2"][|pppoe]
01:25:35.691945 PPPoE PADR [Host-Uniq 0xE9000000] [Service-Name] [AC-Cookie 0x8CC202F68666151817886DF00B0E5875]
01:25:36.741244 PPPoE PADR [Host-Uniq 0xE9000000] [Service-Name] [AC-Cookie 0x8CC202F68666151817886DF00B0E5875]
Note how the Host-Uniq value changes. pppoe-relay does not relay the PADR packet to the server due to this (as I understand it). The man page says this (and this only) about the initial PADI, PADO, PADR and PADS packets:
Any PADO frames received are relayed back to the client which sent the PADI (assuming they contain valid Relay-Session-ID
tags.) Likewise, PADR frames from clients are relayed back to the matching access concentrator.When a PADS frame is received, pppoe-relay enters the two peers’ MAC addresses and session-ID’s into a hash table. (The ses-
sion-ID seen by the access concentrator may be different from that seen by the client; pppoe-relay must renumber sessions to
avoid the possibility of duplicate session-ID’s.) Whenever either peer sends a session frame, pppoe-relay looks up the ses-
sion entry in the hash table and relays the frame to the correct peer.
My understanding is that the PADR should should have the same Host-Uniq value since it’s part of the same unique session negotation. I’m not sure about the Relay-Session-ID tag. If anybody knows how to make this work, please do let me know.