Hello,
I'm trying a "strange" setup with rdomains, bridge and vether. As there is
something I don't understand, I'd like to know if the behavior is normal or if
it is an issue. This is not a production system, just experimentations.
Here is what I'm trying to do. With 1 NIC connected to a "physical" network, I
wish to have several rdomains connected to the same uplink VLAN.
As this uplink VLAN provides DHCP, it facilitates the configuration.
When everything is up, I can ping the default router from either rdomain but I
can't ping rdomain 1 from rdomain 2 or vice versa. Arp is failing to resolve
the IP addresses eventhough the arp packet is received on vether interface.
With 2 NICs, the communication succeeds.
The results are the same with 5.8 and current (snapshot downloaded yesterday)
Here is the setup :
1/ configure the interfaces
testhost:~ # cat /etc/hostname.em0
dhcp
testhost:~ # cat /etc/hostname.em1
rdomain 1
!route -T 1 exec dhclient em1
testhost:~ #
testhost:~ # cat /etc/hostname.vether2
rdomain 2
!route -T 2 exec dhclient vether2
up
testhost:~ #
2/ Build the bridge :
testhost:~ # cat /etc/hostname.bridge0
add em1
add vether2
up
testhost:~ #
3/ Verify configuration :
testhost:~ # ifconfig bridge0
bridge0: flags=41<UP,RUNNING>
groups: bridge
priority 32768 hellotime 2 fwddelay 15 maxage 20 holdcnt 6 proto rstp
designated: id 00:00:00:00:00:00 priority 0
em1 flags=3<LEARNING,DISCOVER>
port 2 ifpriority 0 ifcost 0
vether2 flags=3<LEARNING,DISCOVER>
port 5 ifpriority 0 ifcost 0
Addresses (max cache: 100, timeout: 240):
08:00:27:2c:87:f2 em1 1 flags=0<>
00:50:b6:67:9c:82 em1 1 flags=0<>
[...]
testhost:~ # ifconfig em0
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
lladdr 08:00:27:2c:87:f2
priority: 0
groups: egress
media: Ethernet autoselect (1000baseT full-duplex)
status: active
inet 192.168.79.39 netmask 0xffffff00 broadcast 192.168.79.255
testhost:~ # ifconfig em1
em1: flags=8b43<UP,BROADCAST,RUNNING,PROMISC,ALLMULTI,SIMPLEX,MULTICAST>
rdomain 1 mtu 1500
lladdr 08:00:27:36:20:e8
priority: 0
media: Ethernet autoselect (1000baseT full-duplex)
status: active
inet 192.168.79.159 netmask 0xffffff00 broadcast 192.168.79.255
testhost:~ # ifconfig vether2
vether2: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> rdomain 2
mtu 1500
lladdr fe:e1:ba:d0:45:3b
priority: 0
groups: vether
media: Ethernet autoselect
status: active
inet 192.168.79.193 netmask 0xffffff00 broadcast 192.168.79.255
testhost:~ # route -n show -inet
Routing tables
Internet:
Destination Gateway Flags Refs Use Mtu Prio Iface
default 192.168.79.254 UGS 0 788 - 8 em0
127/8 127.0.0.1 UGRS 0 0 32768 8 lo0
127.0.0.1 127.0.0.1 UHl 0 0 32768 1 lo0
192.168.79/24 192.168.79.39 UC 4 12990 - 4 em0
192.168.79.39 08:00:27:2c:87:f2 UHLl 0 22 - 1 em0
192.168.79.123 70:5a:b6:af:a0:42 UHLc 1 6503 - 4 em0
192.168.79.159 08:00:27:36:20:e8 UHLc 0 11027 - 4 em0
192.168.79.193 fe:e1:ba:d0:45:3b UHLc 0 11795 - 4 em0
192.168.79.254 2c:76:8a:30:2b:00 UHLc 1 1192 - 4 em0
192.168.79.255 192.168.79.39 UHb 0 5764 - 1 em0
224/4 127.0.0.1 URS 0 195 32768 8 lo0
testhost:~ # route -nT1 show
Routing tables
Internet:
Destination Gateway Flags Refs Use Mtu Prio Iface
default 192.168.79.254 UGS 0 1752 - 8 em1
192.168.79/24 192.168.79.159 UC 1 15026 - 4 em1
192.168.79.159 08:00:27:36:20:e8 UHLl 0 0 - 1 em1
192.168.79.254 2c:76:8a:30:2b:00 UHLc 1 1167 - 4 em1
192.168.79.255 192.168.79.159 UHb 0 734 - 1 em1
testhost:~ # route -nT2 show
Routing tables
Internet:
Destination Gateway Flags Refs Use Mtu Prio Iface
default 192.168.79.254 UGS 0 2215 - 8 vether2
192.168.79/24 192.168.79.193 UC 1 5334 - 4 vether2
192.168.79.193 fe:e1:ba:d0:45:3b UHLl 0 0 - 1 vether2
192.168.79.254 2c:76:8a:30:2b:00 UHLc 1 399 - 4 vether2
192.168.79.255 192.168.79.193 UHb 0 2317 - 1 vether2
4/ Ping tests
testhost:~ # ping -c 2 192.168.79.159
PING 192.168.79.159 (192.168.79.159): 56 data bytes
64 bytes from 192.168.79.159: icmp_seq=0 ttl=255 time=1.297 ms
64 bytes from 192.168.79.159: icmp_seq=1 ttl=255 time=0.639 ms
--- 192.168.79.159 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.639/0.968/1.297/0.329 ms
testhost:~ # ping -c 2 192.168.79.193
PING 192.168.79.193 (192.168.79.193): 56 data bytes
64 bytes from 192.168.79.193: icmp_seq=0 ttl=255 time=0.820 ms
64 bytes from 192.168.79.193: icmp_seq=1 ttl=255 time=0.617 ms
--- 192.168.79.193 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.617/0.718/0.820/0.102 ms
testhost:~ # ping -c2 -V1 192.168.79.39
PING 192.168.79.39 (192.168.79.39): 56 data bytes
64 bytes from 192.168.79.39: icmp_seq=0 ttl=255 time=0.587 ms
64 bytes from 192.168.79.39: icmp_seq=1 ttl=255 time=0.633 ms
--- 192.168.79.39 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.587/0.610/0.633/0.023 ms
testhost:~ # ping -c2 -V1 192.168.79.193
PING 192.168.79.193 (192.168.79.193): 56 data bytes
--- 192.168.79.193 ping statistics ---
2 packets transmitted, 0 packets received, 100.0% packet loss
5/ Arp tables
testhost:~ # arp -na
Host Ethernet Address Netif Expire Flags
192.168.79.39 08:00:27:2c:87:f2 em0 permanent l
192.168.79.123 70:5a:b6:af:a0:42 em0 19m54s
192.168.79.159 08:00:27:36:20:e8 em0 14m47s
192.168.79.193 fe:e1:ba:d0:45:3b em0 16m18s
192.168.79.254 2c:76:8a:30:2b:00 em0 20m0s
testhost:~ # arp -nV1 -a
Host Ethernet Address Netif Expire Flags
192.168.79.39 08:00:27:2c:87:f2 em1 15m33s
192.168.79.159 08:00:27:36:20:e8 em1 permanent l
192.168.79.193 (incomplete) em1 expired
192.168.79.254 2c:76:8a:30:2b:00 em1 19m59s
testhost:~ # arp -nV2 -a
Host Ethernet Address Netif Expire Flags
192.168.79.39 08:00:27:2c:87:f2 vether2 14m6s
192.168.79.193 fe:e1:ba:d0:45:3b vether2 permanent l
192.168.79.254 2c:76:8a:30:2b:00 vether2 20m0s
6/ tcpdump on the vether side
On one terminal : # ping -V1 192.168.79.193
On another terminal :
testhost:~ # tcpdump -neli vether2 arp | grep 192.168.79.193
tcpdump: listening on vether2, link-type EN10MB
12:14:18.050311 08:00:27:36:20:e8 ff:ff:ff:ff:ff:ff 0806 42: arp who-has
192.168.79.193 tell 192.168.79.159
12:14:19.054795 08:00:27:36:20:e8 ff:ff:ff:ff:ff:ff 0806 42: arp who-has
192.168.79.193 tell 192.168.79.159
12:14:20.054016 08:00:27:36:20:e8 ff:ff:ff:ff:ff:ff 0806 42: arp who-has
192.168.79.193 tell 192.168.79.159
Thanks for reading that far :)
Claer