This article outlines the limitation on MAC address configuration on IRB (Integrated Bridging and Routing) interfaces.
Starting with Junos release 13.2, IRB interfaces can be configured with MAC addresses on MPC cards to allow for a distinct MAC address per VLAN. This MAC address is effective only for the inet family; it does not apply to the inet6 family. The example below shows this behavior. R1(irb.102)------------------(xe-2/2/0)R2 [edit] lab@R1 show interfaces xe-2/3/0 encapsulation ethernet-bridge; unit 0 { family bridge; } [edit] lab@R1 show interfaces irb unit 102 { family inet { address 10.0.102.20/24; } family inet6 { address 2001:db8:0:102::20/64; } mac 00:00:00:10:02:20; } [edit] lab@R1 show bridge-domains BD vlan-id none; interface xe-2/3/0.0; routing-interface irb.102; . lab@R2# show interfaces xe-2/2/0 unit 0 { family inet { address 10.0.102.21/24; } family inet6 { address 2001:db8:0:102::21/64; } } lab@R1> show interfaces irb extensive Physical interface: irb, Enabled, Physical link is Up Interface index: 132, SNMP ifIndex: 503, Generation: 135 Type: Ethernet, Link-level type: Ethernet, MTU: 1514, Clocking: Unspecified, Speed: Unspecified Device flags : Present Running Interface flags: SNMP-Traps Link type : Full-Duplex Link flags : None Physical info : Unspecified Hold-times : Up 0 ms, Down 0 ms Current address: 80:71:1f:10:a0:30, Hardware address: 80:71:1f:10:a0:30 Alternate link address: Unspecified Last flapped : Never Statistics last cleared: Never Traffic statistics: Input bytes : 0 Output bytes : 0 Input packets: 0 Output packets: 0 IPv6 transit statistics: Input bytes : 0 Output bytes : 0 Input packets: 0 Output packets: 0 Input errors: Errors: 0, Drops: 0, Framing errors: 0, Runts: 0, Giants: 0, Policed discards: 0, Resource errors: 0 Output errors: Carrier transitions: 0, Errors: 0, Drops: 0, MTU errors: 0, Resource errors: 0 Logical interface irb.102 (Index 338) (SNMP ifIndex 619) (Generation 153) Flags: Up SNMP-Traps 0x4004000 Encapsulation: ENET2 MAC: 00:00:00:10:02:20 Bandwidth: 1000mbps Routing Instance: default-switch Bridging Domain: BD Traffic statistics: Input bytes : 9160 Output bytes : 8174 Input packets: 144 Output packets: 115 IPv6 transit statistics: Input bytes : 1344 Output bytes : 0 Input packets: 21 Output packets: 0 Local statistics: Input bytes : 7816 Output bytes : 8174 Input packets: 123 Output packets: 115 Transit statistics: Input bytes : 1344 0 bps Output bytes : 0 0 bps Input packets: 21 0 pps Output packets: 0 0 pps IPv6 transit statistics: Input bytes : 1344 Output bytes : 0 Input packets: 21 Output packets: 0 Protocol inet, MTU: 1500, Generation: 182, Route table: 0 Flags: Sendbcast-pkt-to-re Addresses, Flags: Is-Preferred Is-Primary Destination: 10.0.102/24, Local: 10.0.102.20, Broadcast: 10.0.102.255, Generation: 150 Protocol inet6, MTU: 1500, Generation: 183, Route table: 0 Flags: Is-Primary Addresses, Flags: Is-Default Is-Preferred Is-Primary Destination: 2001:db8:0:102::/64, Local: 2001:db8:0:102::20 Generation: 178 Addresses, Flags: Is-Preferred Destination: fe80::/64, Local: fe80::8271:1f00:6610:a030 Protocol multiservice, MTU: 1500, Generation: 168 Generation: 184, Route table: 0 Policer: Input: __default_arp_policer__ In the example above, the irb.102 interface is configured with a static MAC of 00:00:00:10:02:20, and is reflected correctly in the output. However, when traffic is originated for an ipv6 destination, the configured MAC address will not be used. [edit] lab@R1 run ping 2001:db8:0:102::21 PING6(56=40+8+8 bytes) 2001:db8:0:102::20 --> 2001:db8:0:102::21 16 bytes from 2001:db8:0:102::21, icmp_seq=0 hlim=64 time=3.363 ms 16 bytes from 2001:db8:0:102::21, icmp_seq=1 hlim=64 time=1.862 ms 16 bytes from 2001:db8:0:102::21, icmp_seq=2 hlim=64 time=0.725 ms 16 bytes from 2001:db8:0:102::21, icmp_seq=3 hlim=64 time=0.754 ms 16 bytes from 2001:db8:0:102::21, icmp_seq=4 hlim=64 time=0.699 ms 16 bytes from 2001:db8:0:102::21, icmp_seq=5 hlim=64 time=0.700 ms 16 bytes from 2001:db8:0:102::21, icmp_seq=6 hlim=64 time=0.704 ms 16 bytes from 2001:db8:0:102::21, icmp_seq=7 hlim=64 time=0.711 ms 16 bytes from 2001:db8:0:102::21, icmp_seq=8 hlim=64 time=0.706 ms 16 bytes from 2001:db8:0:102::21, icmp_seq=9 hlim=64 time=0.714 ms 16 bytes from 2001:db8:0:102::21, icmp_seq=10 hlim=64 time=0.705 ms lab@R2 monitor traffic interface xe-2/2/0 layer2-headers detail Address resolution is ON. Use <no-resolve> to avoid any reverse lookup delay. Address resolution timeout is 4s. Listening on xe-2/2/0, capture size 1514 bytes Reverse lookup for ff02::1:ff00:21 failed (check DNS reachability). Other reverse lookup failures will not be reported. Use <no-resolve> to avoid reverse lookups on IP addresses. 06:43:15.816097 In PFE proto 6 (ipv6): (class 0xc0, hlim 255, next-header: ICMPv6 (58), length: 32) 2001:db8:0:102::20 > ff02::1:ff00:21: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2001:db8:0:102::21 source link-address option (1), length 8 (1): 80:71:1f:10:a0:30 06:43:15.816165 Out 80:71:1f:10:9e:b4 > 80:71:1f:10:a0:30 , ethertype IPv6 (0x86dd), length 86: (class 0xc0, hlim 255, next-header: ICMPv6 (58), length: 32) 2001:db8:0:102::21 > 2001:db8:0:102::20: [icmp6 sum ok] ICMP6, neighbor advertisement, length 32, tgt is 2001:db8:0:102::21, Flags [router, solicited, override] destination link-address option (2), length 8 (1): 80:71:1f:10:9e:b4 06:43:15.817031 In PFE proto 6 (ipv6): (hlim 64, next-header: ICMPv6 (58), length: 16) 2001:db8:0:102::20 > 2001:db8:0:102::21: [icmp6 sum ok] ICMP6, echo request, seq 0 06:43:15.817037 In PFE proto 6 (ipv6): (hlim 64, next-header: ICMPv6 (58), length: 16) 2001:db8:0:102::20 > 2001:db8:0:102::21: [icmp6 sum ok] ICMP6, echo request, seq 1 06:43:15.817060 Out 80:71:1f:10:9e:b4 > 80:71:1f:10:a0:30, ethertype IPv6 (0x86dd), length 70: (hlim 64, next-header: ICMPv6 (58), length: 16) 2001:db8:0:102::21 > 2001:db8:0:102::20: [icmp6 sum ok] ICMP6, echo reply, seq 0 For ipv4, the configured MAC address is used as the source MAC address. lab@R2 monitor traffic interface xe-2/2/0 layer2-headers detail Address resolution is ON. Use <no-resolve> to avoid any reverse lookup delay. Address resolution timeout is 4s. Listening on xe-2/2/0, capture size 1514 bytes Reverse lookup for 10.0.102.21 failed (check DNS reachability). Other reverse lookup failures will not be reported. Use <no-resolve> to avoid reverse lookups on IP addresses. 06:42:28.913256 In PFE proto 2 (ipv4): (tos 0x0, ttl 64, id 19332, offset 0, flags [none], proto: ICMP (1), length: 84) 10.0.102.20 > 10.0.102.21: ICMP echo request, id 58899, seq 0, length 64 06:42:28.913364 Out 80:71:1f:10:9e:b4 > Broadcast, ethertype ARP (0x0806), length 42: arp who-has 10.0.102.20 tell 10.0.102.21 06:42:28.913967 In 00:00:00:10:02:20 > 80:71:1f:10:9e:b4, ethertype ARP (0x0806), length 60: arp reply 10.0.102.20 is-at 00:00:00:10:02:20 06:42:28.913974 Out 80:71:1f:10:9e:b4 > 00:00:00:10:02:20, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 19335, offset 0, flags [none], proto: ICMP (1), length: 84) 10.0.102.21 > 10.0.102.20: ICMP echo reply, id 58899, seq 0, length 64 06:42:29.913243 In PFE proto 2 (ipv4): (tos 0x0, ttl 64, id 19380, offset 0, flags [none], proto: ICMP (1), length: 84) 10.0.102.20 > 10.0.102.21: ICMP echo request, id 58899, seq 1, length 64 06:42:29.913257 Out 80:71:1f:10:9e:b4 > 00:00:00:10:02:20, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 19383, offset 0, flags [none], proto: ICMP (1), length: 84) 10.0.102.21 > 10.0.102.20: ICMP echo reply, id 58899, seq 1, length 64 06:42:30.914075 In PFE proto 2 (ipv4): (tos 0x0, ttl 64, id 19414, offset 0, flags [none], proto: ICMP (1), length: 84) 10.0.102.20 > 10.0.102.21: ICMP echo request, id 58899, seq 2, length 64 06:42:30.914085 Out 80:71:1f:10:9e:b4 > 00:00:00:10:02:20 , ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 19417, offset 0, flags [none], proto: ICMP (1), length: 84) 10.0.102.21 > 10.0.102.20: ICMP echo reply, id 58899, seq 2, length 64 06:42:31.915591 In PFE proto 2 (ipv4): (tos 0x0, ttl 64, id 19447, offset 0, flags [none], proto: ICMP (1), length: 84) 10.0.102.20 > 10.0.102.21: ICMP echo request, id 58899, seq 3, length 64 06:42:31.915601 Out 80:71:1f:10:9e:b4 > 00:00:00:10:02:20, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 19450, offset 0, flags [none], proto: ICMP (1), length: 84) 10.0.102.21 > 10.0.102.20: ICMP echo reply, id 58899, seq 3, length 64 The ipv6 neighbor on R2 is also learned via the original IRB MAC address. lab@R2> show ipv6 neighbors IPv6 Address Linklayer Address State Exp Rtr Secure Interface 2001:Db8:0:102::20 80:71:1f:10:a0:30 stale 384 yes no xe-2/2/0.0 The ipv4 ARP entry on R2 shows the configured MAC address on R1. lab@R2> show arp | match xe 00:00:00:10:02:20 10.0.102.20 10.0.102.20 xe-2/2/0.0 none
R1(irb.102)------------------(xe-2/2/0)R2 [edit] lab@R1 show interfaces xe-2/3/0 encapsulation ethernet-bridge; unit 0 { family bridge; } [edit] lab@R1 show interfaces irb unit 102 { family inet { address 10.0.102.20/24; } family inet6 { address 2001:db8:0:102::20/64; } mac 00:00:00:10:02:20; } [edit] lab@R1 show bridge-domains BD vlan-id none; interface xe-2/3/0.0; routing-interface irb.102; . lab@R2# show interfaces xe-2/2/0 unit 0 { family inet { address 10.0.102.21/24; } family inet6 { address 2001:db8:0:102::21/64; } } lab@R1> show interfaces irb extensive Physical interface: irb, Enabled, Physical link is Up Interface index: 132, SNMP ifIndex: 503, Generation: 135 Type: Ethernet, Link-level type: Ethernet, MTU: 1514, Clocking: Unspecified, Speed: Unspecified Device flags : Present Running Interface flags: SNMP-Traps Link type : Full-Duplex Link flags : None Physical info : Unspecified Hold-times : Up 0 ms, Down 0 ms Current address: 80:71:1f:10:a0:30, Hardware address: 80:71:1f:10:a0:30 Alternate link address: Unspecified Last flapped : Never Statistics last cleared: Never Traffic statistics: Input bytes : 0 Output bytes : 0 Input packets: 0 Output packets: 0 IPv6 transit statistics: Input bytes : 0 Output bytes : 0 Input packets: 0 Output packets: 0 Input errors: Errors: 0, Drops: 0, Framing errors: 0, Runts: 0, Giants: 0, Policed discards: 0, Resource errors: 0 Output errors: Carrier transitions: 0, Errors: 0, Drops: 0, MTU errors: 0, Resource errors: 0 Logical interface irb.102 (Index 338) (SNMP ifIndex 619) (Generation 153) Flags: Up SNMP-Traps 0x4004000 Encapsulation: ENET2 MAC: 00:00:00:10:02:20 Bandwidth: 1000mbps Routing Instance: default-switch Bridging Domain: BD Traffic statistics: Input bytes : 9160 Output bytes : 8174 Input packets: 144 Output packets: 115 IPv6 transit statistics: Input bytes : 1344 Output bytes : 0 Input packets: 21 Output packets: 0 Local statistics: Input bytes : 7816 Output bytes : 8174 Input packets: 123 Output packets: 115 Transit statistics: Input bytes : 1344 0 bps Output bytes : 0 0 bps Input packets: 21 0 pps Output packets: 0 0 pps IPv6 transit statistics: Input bytes : 1344 Output bytes : 0 Input packets: 21 Output packets: 0 Protocol inet, MTU: 1500, Generation: 182, Route table: 0 Flags: Sendbcast-pkt-to-re Addresses, Flags: Is-Preferred Is-Primary Destination: 10.0.102/24, Local: 10.0.102.20, Broadcast: 10.0.102.255, Generation: 150 Protocol inet6, MTU: 1500, Generation: 183, Route table: 0 Flags: Is-Primary Addresses, Flags: Is-Default Is-Preferred Is-Primary Destination: 2001:db8:0:102::/64, Local: 2001:db8:0:102::20 Generation: 178 Addresses, Flags: Is-Preferred Destination: fe80::/64, Local: fe80::8271:1f00:6610:a030 Protocol multiservice, MTU: 1500, Generation: 168 Generation: 184, Route table: 0 Policer: Input: __default_arp_policer__
[edit] lab@R1 run ping 2001:db8:0:102::21 PING6(56=40+8+8 bytes) 2001:db8:0:102::20 --> 2001:db8:0:102::21 16 bytes from 2001:db8:0:102::21, icmp_seq=0 hlim=64 time=3.363 ms 16 bytes from 2001:db8:0:102::21, icmp_seq=1 hlim=64 time=1.862 ms 16 bytes from 2001:db8:0:102::21, icmp_seq=2 hlim=64 time=0.725 ms 16 bytes from 2001:db8:0:102::21, icmp_seq=3 hlim=64 time=0.754 ms 16 bytes from 2001:db8:0:102::21, icmp_seq=4 hlim=64 time=0.699 ms 16 bytes from 2001:db8:0:102::21, icmp_seq=5 hlim=64 time=0.700 ms 16 bytes from 2001:db8:0:102::21, icmp_seq=6 hlim=64 time=0.704 ms 16 bytes from 2001:db8:0:102::21, icmp_seq=7 hlim=64 time=0.711 ms 16 bytes from 2001:db8:0:102::21, icmp_seq=8 hlim=64 time=0.706 ms 16 bytes from 2001:db8:0:102::21, icmp_seq=9 hlim=64 time=0.714 ms 16 bytes from 2001:db8:0:102::21, icmp_seq=10 hlim=64 time=0.705 ms lab@R2 monitor traffic interface xe-2/2/0 layer2-headers detail Address resolution is ON. Use <no-resolve> to avoid any reverse lookup delay. Address resolution timeout is 4s. Listening on xe-2/2/0, capture size 1514 bytes Reverse lookup for ff02::1:ff00:21 failed (check DNS reachability). Other reverse lookup failures will not be reported. Use <no-resolve> to avoid reverse lookups on IP addresses. 06:43:15.816097 In PFE proto 6 (ipv6): (class 0xc0, hlim 255, next-header: ICMPv6 (58), length: 32) 2001:db8:0:102::20 > ff02::1:ff00:21: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 2001:db8:0:102::21 source link-address option (1), length 8 (1): 80:71:1f:10:a0:30 06:43:15.816165 Out 80:71:1f:10:9e:b4 > 80:71:1f:10:a0:30 , ethertype IPv6 (0x86dd), length 86: (class 0xc0, hlim 255, next-header: ICMPv6 (58), length: 32) 2001:db8:0:102::21 > 2001:db8:0:102::20: [icmp6 sum ok] ICMP6, neighbor advertisement, length 32, tgt is 2001:db8:0:102::21, Flags [router, solicited, override] destination link-address option (2), length 8 (1): 80:71:1f:10:9e:b4 06:43:15.817031 In PFE proto 6 (ipv6): (hlim 64, next-header: ICMPv6 (58), length: 16) 2001:db8:0:102::20 > 2001:db8:0:102::21: [icmp6 sum ok] ICMP6, echo request, seq 0 06:43:15.817037 In PFE proto 6 (ipv6): (hlim 64, next-header: ICMPv6 (58), length: 16) 2001:db8:0:102::20 > 2001:db8:0:102::21: [icmp6 sum ok] ICMP6, echo request, seq 1 06:43:15.817060 Out 80:71:1f:10:9e:b4 > 80:71:1f:10:a0:30, ethertype IPv6 (0x86dd), length 70: (hlim 64, next-header: ICMPv6 (58), length: 16) 2001:db8:0:102::21 > 2001:db8:0:102::20: [icmp6 sum ok] ICMP6, echo reply, seq 0
lab@R2 monitor traffic interface xe-2/2/0 layer2-headers detail Address resolution is ON. Use <no-resolve> to avoid any reverse lookup delay. Address resolution timeout is 4s. Listening on xe-2/2/0, capture size 1514 bytes Reverse lookup for 10.0.102.21 failed (check DNS reachability). Other reverse lookup failures will not be reported. Use <no-resolve> to avoid reverse lookups on IP addresses. 06:42:28.913256 In PFE proto 2 (ipv4): (tos 0x0, ttl 64, id 19332, offset 0, flags [none], proto: ICMP (1), length: 84) 10.0.102.20 > 10.0.102.21: ICMP echo request, id 58899, seq 0, length 64 06:42:28.913364 Out 80:71:1f:10:9e:b4 > Broadcast, ethertype ARP (0x0806), length 42: arp who-has 10.0.102.20 tell 10.0.102.21 06:42:28.913967 In 00:00:00:10:02:20 > 80:71:1f:10:9e:b4, ethertype ARP (0x0806), length 60: arp reply 10.0.102.20 is-at 00:00:00:10:02:20 06:42:28.913974 Out 80:71:1f:10:9e:b4 > 00:00:00:10:02:20, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 19335, offset 0, flags [none], proto: ICMP (1), length: 84) 10.0.102.21 > 10.0.102.20: ICMP echo reply, id 58899, seq 0, length 64 06:42:29.913243 In PFE proto 2 (ipv4): (tos 0x0, ttl 64, id 19380, offset 0, flags [none], proto: ICMP (1), length: 84) 10.0.102.20 > 10.0.102.21: ICMP echo request, id 58899, seq 1, length 64 06:42:29.913257 Out 80:71:1f:10:9e:b4 > 00:00:00:10:02:20, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 19383, offset 0, flags [none], proto: ICMP (1), length: 84) 10.0.102.21 > 10.0.102.20: ICMP echo reply, id 58899, seq 1, length 64 06:42:30.914075 In PFE proto 2 (ipv4): (tos 0x0, ttl 64, id 19414, offset 0, flags [none], proto: ICMP (1), length: 84) 10.0.102.20 > 10.0.102.21: ICMP echo request, id 58899, seq 2, length 64 06:42:30.914085 Out 80:71:1f:10:9e:b4 > 00:00:00:10:02:20 , ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 19417, offset 0, flags [none], proto: ICMP (1), length: 84) 10.0.102.21 > 10.0.102.20: ICMP echo reply, id 58899, seq 2, length 64 06:42:31.915591 In PFE proto 2 (ipv4): (tos 0x0, ttl 64, id 19447, offset 0, flags [none], proto: ICMP (1), length: 84) 10.0.102.20 > 10.0.102.21: ICMP echo request, id 58899, seq 3, length 64 06:42:31.915601 Out 80:71:1f:10:9e:b4 > 00:00:00:10:02:20, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 19450, offset 0, flags [none], proto: ICMP (1), length: 84) 10.0.102.21 > 10.0.102.20: ICMP echo reply, id 58899, seq 3, length 64
lab@R2> show ipv6 neighbors IPv6 Address Linklayer Address State Exp Rtr Secure Interface 2001:Db8:0:102::20 80:71:1f:10:a0:30 stale 384 yes no xe-2/2/0.0
lab@R2> show arp | match xe 00:00:00:10:02:20 10.0.102.20 10.0.102.20 xe-2/2/0.0 none
As confirmed by the example above, the MAC address configured under the edit interfaces irb unit <xyz> hierarchy is not effective for the inet6 family. This has always been the case. There are no plans to include this support in the future.
edit interfaces irb unit <xyz>