[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-users] using ipoib with xcp
I've finally got to spend some time looking further into this. I now believe the underlaying problem is that Open vSwitch is unable to connect the brib0 bridge interface to the ib0 physical interface. I suspect the cause of this to be the long MAC address of the Infiniband NICs, but so far I have not found a workaround for the issue.
These are the relevant devices for my setup: [root@hypoxcp1 ~]# ifconfig brib0 Link encap:Ethernet HWaddr 80:00:00:48:FE:80 inet addr:10.1.2.2 Bcast:10.1.2.255 Mask:255.255.255.0
inet6 addr: fe80::8200:ff:fe48:fe80/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:720 (720.0 b) eth0 Link encap:Ethernet HWaddr 00:30:48:CC:5C:A4 inet6 addr: fe80::230:48ff:fecc:5ca4/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:31755 errors:0 dropped:0 overruns:0 frame:0 TX packets:10544 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000 RX bytes:4284224 (4.0 MiB) TX bytes:1433336 (1.3 MiB) ib0 Link encap:InfiniBand HWaddr 80:00:00:48:FE:80:00:00:00:00:00:00:00:00:00:00:00:00:00:00
inet addr:10.1.2.102 Bcast:10.1.2.255 Mask:255.255.255.0 UP BROADCAST MULTICAST MTU:2044 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:128 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) xenbr0 Link encap:Ethernet HWaddr 00:30:48:CC:5C:A4 inet addr:10.1.1.2 Bcast:10.1.1.255 Mask:255.255.255.0
inet6 addr: fe80::230:48ff:fecc:5ca4/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:25892 errors:0 dropped:0 overruns:0 frame:0
TX packets:10538 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:3586527 (3.4 MiB) TX bytes:1432868 (1.3 MiB) The ifconfig command reports the wrong (or truncated) MAC address for the ib0 device. The real address can be found using other commands:
[root@hypoxcp1 ~]# cat /sys/class/net/ib0/address 80:00:00:48:fe:80:00:00:00:00:00:00:00:30:48:ff:ff:cc:0b:25 [root@hypoxcp1 ~]# ip link show ib0 4: ib0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2044 qdisc pfifo_fast qlen 128
link/infiniband 80:00:00:48:fe:80:00:00:00:00:00:00:00:30:48:ff:ff:cc:0b:25 brd 00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff As mentioned earlier in this thread I've had issues with duplicate MAC addresses in /etc/ovs-vswitchd.conf, but a clean install somehow fixed that issue, so the proper MAC address is now added to the file:
[root@hypoxcp1 ~]# cat /etc/ovs-vswitchd.conf bridge.brib0.mac=80:00:00:48:fe:80:00:00:00:00:00:00:00:30:48:ff:ff:cc:0b:25 bridge.brib0.port=brib0 bridge.brib0.port=ib0
bridge.brib0.port=vif1.2 bridge.brib0.xs-network-uuids=6455dd7f-4a61-43b8-a49d-656f749c4ac6 bridge.xenbr0.mac=00:30:48:cc:5c:a4 bridge.xenbr0.port=eth0 bridge.xenbr0.port=vif1.1
bridge.xenbr0.port=xenbr0 bridge.xenbr0.xs-network-uuids=528d85a4-f582-c181-54eb-acf09ac7dcf4 bridge.xenbr1.mac=00:30:48:cc:5c:a5 bridge.xenbr1.port=eth1 bridge.xenbr1.port=vif1.0
bridge.xenbr1.port=xenbr1 bridge.xenbr1.xs-network-uuids=4f033ff5-5a56-629c-1c27-0765ba7c03bb I'm no expert on XCP and Open vSwitch, but I believe it works something like this:
To me it seems like the MAC address for the brib0 interface is truncated, and I believe this causes Open vSwitch to not bind brib0 and ib0 together:
[root@hypoxcp1 ~]# ovs-ofctl show brib0 Apr 14 15:38:31|00001|ofctl|INFO|connecting to unix:/var/run/brib0.mgmt features_reply (xid=0x6bb27f3f): ver:0x97, dpid:32f493d6e290
n_tables:2, n_buffers:256 features: capabilities:0x17, actions:0x3ff LOCAL(brib0): addr:80:00:00:48:fe:80, config: 0, state:0 Apr 14 15:38:31|00002|ofctl|INFO|connecting to unix:/var/run/brib0.mgmt
get_config_reply (xid=0x9b99aaf1): miss_send_len=0 [root@hypoxcp1 ~]# ovs-ofctl show xenbr0 Apr 14 15:38:19|00001|ofctl|INFO|connecting to unix:/var/run/xenbr0.mgmt
features_reply (xid=0x836b0867): ver:0x97, dpid:f68bde598f51 n_tables:2, n_buffers:256 features: capabilities:0x17, actions:0x3ff 1(eth0): addr:00:30:48:cc:5c:a4, config: 0, state:0
current: 1GB-FD COPPER AUTO_NEG advertised: 10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-FD COPPER AUTO_NEG supported: 10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-FD COPPER AUTO_NEG
LOCAL(xenbr0): addr:00:30:48:cc:5c:a4, config: 0, state:0 Apr 14 15:38:19|00002|ofctl|INFO|connecting to unix:/var/run/xenbr0.mgmt get_config_reply (xid=0x2b665ea): miss_send_len=0 As you see the binding to ib0 is missing, and the MAC of brib0 is different from that in /etc/ovs-vswitchd.conf. As previously stated I can communicate between XCP hosts on both brib0 and ib0 using this setup. The problem is that VIFs on the brib0 network are not reachable. I have the following IB interfaces on a single host:
ib0 - 10.1.2.2/24 brib0 - 10.1.2.102/24 vif1.2 - 10.1.2.202/24 From within the VM that uses vif1.3 I try to ping brib0 and ib0 and watch the traffic on the XCP host: [root@hypoxcp1 ~]# tcpdump -i vif1.2 tcpdump: WARNING: vif1.2: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on vif1.2, link-type EN10MB (Ethernet), capture size 96 bytes 15:54:59.948660 arp who-has 10.1.2.102 tell 10.1.2.202
15:55:00.948643 arp who-has 10.1.2.102 tell 10.1.2.202 15:55:01.948645 arp who-has 10.1.2.102 tell 10.1.2.202 [root@hypoxcp1 ~]# tcpdump -i brib0 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on brib0, link-type EN10MB (Ethernet), capture size 96 bytes 15:54:22.612723 arp who-has 10.1.2.102 tell 10.1.2.202 15:54:23.612643 arp who-has 10.1.2.102 tell 10.1.2.202 15:54:24.612642 arp who-has 10.1.2.102 tell 10.1.2.202
[root@hypoxcp1 ~]# tcpdump -i ib0 tcpdump: WARNING: arptype 32 not supported by libpcap - falling back to cooked socket tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ib0, link-type LINUX_SLL (Linux cooked), capture size 96 bytes The packets never reach ib0. This setup adds the follow IP routes to the XCP host:
[root@hypoxcp1 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 xenbr0
10.1.2.0 0.0.0.0 255.255.255.0 U 0 0 0 ib0 10.1.2.0 0.0.0.0 255.255.255.0 U 0 0 0 brib0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 brib0
0.0.0.0 10.1.1.1 0.0.0.0 UG 0 0 0 xenbr0 If I remove the ib0 route I can talk to brib0 and ib0 from vif1.3, but only on the same physical machine. Inter-host and inter-vm over network communication breaks without that route.
I also tried using "bridge" networking instead of "vswitch", but the system behaves the same way AFAICT, though the configuration is of course different.
I'm not sure what to try next. I could use the IB network for the management interface and not run any VMs on it, but please let me know if you have any idea what's wrong.
Thanks! Trygve On Thu, Apr 8, 2010 at 11:40 AM, Trygve Sanne Hardersen <trygve@xxxxxxxxxxxxx> wrote: Hi -- HypoBytes Ltd. Trygve Sanne Hardersen Akersveien 24F 0177 Oslo Norway hypobytes.com +47 40 55 30 25 _______________________________________________ Xen-users mailing list Xen-users@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-users
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |