virtual private lan service is a full mesh of pseudowires between involved pe routers in order to provide a single broadcast domain to the customer over the mpls core. the pe routers discover each other from bgp vpls afi similar to layer3 mpls vpn. each pe router advertises it's own rd+loopback to the bgp vpls afi with a configured export rt extended community, and find the other pe routers in vpls afi with the import rt extended community. once the peers are found, a vpls could use two different modes. in the ldp mode, each given pe router will bring up an atom session to each other pe routers in the given vpls, which will result in a full mesh of ldp sessions, which is obviously a full mesh of pseudowires. since a given pe router have pseudowire to each other pe routers within the vpls, it can easily find out the sending pe router and update it's mac address table accordingly. in bgp mode, each pe router allocates a label block which is advertised with the configured ve id in the bgp nlri. if a given pe router wants to send an ethernet frame to an other pe router, it uses the remote's label base, adds it's own ve id and uses the result as the innel service label. the outer, transport label is taken from the global table looking for an appropirate lsp for the remote pe router. the receiving pe router substracts it's own label base from the service label and it gives him the ve number of the sending pe router and this is how it can update it's mac address table. the bum traffic optionally could be carried by some p2mp technologies regardless the chosen mode.