From my learning experience, I tend to generally (although they are a bit connected ) think of
/interface bridge ports as the INGRESS identifier…
/interface bridge vlan as the EGRESS identifier…
MT is unique in its setup but regardless of tools, the /interface bridge port line either has a PVID entry assigned (access port), which automatically assigns/tags to incoming untagged frames with that VLAN tag, or the config line does not have a PVID, and this is assumed in most cases to be a trunk port ( hybrid port being an exception ).
INGRESS
We have Two Tools for ingress identifier.
A. frame type - detects if the packet contains a tagged vlan entry or not
B. ingress filtering - compares incoming tagged packet tagged vlan-id to /interface bridge vlans for any corresponding tagged match ( same port / vlan-id )
Ingress in terms of bridge ports means what happens to frames that are tagged correctly, tagged incorrectly or untagged.
There are four conditions in ingress that can occur
(i) packet has no vlan tag
(ii) packet has vlan tag that exists on the bridge and more importantly on the same port in /interface vlan bridge settings.
(iii) packet has vlan tag that exists on the bridge and but NOT on the same port
(iv) packet has vlan tag does not exist on either port or bridge
A. FRAME TYPES
When I create a bridge port line, the first thing I do is use is the appropriate frame-type
a. For trunk ports to automatically reject any packets without tags use: frame-types=admit-only-vlan-tagged
b. For access ports to automatically reject any packets with tags use: frame-types=admit-priority-and-untagged
c. For hybrid ports ( DO NOT USE frame-type ) as both tagged and untagged packets are expected at the port.
Security Note1: Frame type setting on trunk ports eliminates any access to the device by the native vlan 1 untagged.
Note2: Frame types does not ascertain VLAN-ID.
Note3: Frame types is independent of ingress-filtering
A. INGRESS-FILTERING
Ingress-Filtering=ON
Case (i) No effect for untagged packets
Case (ii) Router reads vlan-id of packets and sees match at /interface bridge vlan for the same port → the traffic is accepted.
Case (iii) Router reads vlan-id of packets and sees NO match at /interface bridge vlan for the same port → the traffic is dropped
Case (iv) Router reads vlan-id of packets and sees NO match at /interface bridge vlan for the same port → the traffic is dropped
Ingress-Filtering=OFF
Case (i) No effect for untagged packets
Case (ii) Router does no matching → the traffic is accepted.
Case (iii) Router does no matching → the traffic is accepted.
Case (iv) Router does no matching → the traffic is accepted.
EGRESS
In general, Egress means what will happen to tagged packets when they leave a port, which boils down to leave the tags on or strip the tag off.
In the case of a trunk port, tagged packets are left as as.
In the case of an access port, tagged packets are stripped of their tags when exiting the port.
On the MT device, Egress controls not only what happens to the status of the tag packets (keep tagged or strip tag), it also identifies all ports associated with the that VLAN-ID. Thus the /interface bridge vlan controls where else the traffic may travel to and answers the question - what other ports are valid to send this traffic. ( what I call the in-between traffic). Note that mac tables are used to assist the router in determining where the in-between traffic must go.
Ex. incoming port 2 (tagged or untagged for that matter), where ports 3,4 are also identified as being on the same vlan. If no mac table entry exists, the traffic is sent to both 3,4 and then awaits return traffic and reading off the src-mac address of the frame return, establishes a time-limited mac-table entry for that return port.