On 10/31/2013 2:53 PM, Rajshree Thorat wrote:
Hi All,
I have successfully configured Openstack Havana with xen
hypervisor(XCP). Initially creating/deleting
instances from OpenStack works as expected but networking part(neutron
with OpenvSwitch) was not working.
The steps I performed to make it work are as below:
Normal flow to get DHCP IP:
- VM boots and asks for an IP through DHCP
- The Nova Compute has a GRE tunnel to the OpenStack Networking node
where the neutron/openvSwitch agent provides an IP to the VM.
VM <---> Nova Compute Node <---> GRE tunnel <---> OpenStack Networking
node <---> DHCP agent
In case of XCP when guest VM boots it sends a DHCP request to dom0
through xenapi but dom0 unable to communicate with
OpenStack Networking node over GRE tunnel.
To allow VM's to communicate with Network node over GRE tunnel, we can
assign one more nic(eth2) which is part of xapi1 of dom0
to nova-compute and add eth2 to br-int on nova-compute.
xapi1 is a openstack network bridge in dom0.
Now the packet will traverse as
VM --> xapi1(dom0) --> eth2(compute) --> br-tun(compute) -->
Network-node(over GRE tunnel)
VM <-- xapi1(dom0) <-- eth2(compute) <-- br-tun(compute) <--
Network-node(over GRE tunnel)
Inbuilt Openvswitch-controller configures the v-switches to allow only
specific flows which
matches the rules installed on them. Even if we add eth2 to br-int, we
will also need to add
generic rules to br-tun such that they are able to pass the packets
received from eth2
to br-int, then to br-tun and then to network node over GRE tunnel.
That's it you are done !
dump-flows before adding rules:
root@compute:~# ovs-ofctl dump-flows br-tun
NXST_FLOW reply (xid=0x4):
cookie=0x0, duration=3.248s, table=0, n_packets=0, n_bytes=0,
idle_age=3, priority=1,in_port=1 actions=resubmit(,1)
cookie=0x0, duration=2.069s, table=0, n_packets=0, n_bytes=0,
idle_age=2, priority=1,in_port=2 actions=resubmit(,2)
cookie=0x0, duration=3.187s, table=0, n_packets=1, n_bytes=70,
idle_age=2, priority=0 actions=drop
cookie=0x0, duration=3.066s, table=1, n_packets=0, n_bytes=0,
idle_age=3, priority=0,dl_dst=01:00:00:00:00:00/01:00:00:00:00:00
actions=resubmit(,21)
cookie=0x0, duration=3.126s, table=1, n_packets=0, n_bytes=0,
idle_age=3, priority=0,dl_dst=00:00:00:00:00:00/01:00:00:00:00:00
actions=resubmit(,20)
cookie=0x0, duration=3.006s, table=2, n_packets=0, n_bytes=0,
idle_age=3, priority=0 actions=drop
cookie=0x0, duration=2.946s, table=3, n_packets=0, n_bytes=0,
idle_age=2, priority=0 actions=drop
cookie=0x0, duration=2.886s, table=10, n_packets=0, n_bytes=0,
idle_age=2, priority=1
actions=learn(table=20,hard_timeout=300,priority=1,NXM_OF_VLAN_TCI[0..11],NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],load:0->NXM_OF_VLAN_TCI[],load:NXM_NX_TUN_ID[]->NXM_NX_TUN_ID[],output:NXM_OF_IN_PORT[]),output:1
cookie=0x0, duration=2.825s, table=20, n_packets=0, n_bytes=0,
idle_age=2, priority=0 actions=resubmit(,21)
cookie=0x0, duration=2.766s, table=21, n_packets=0, n_bytes=0,
idle_age=2, priority=0 actions=drop
Add flows:
root@compute:~# ovs-vsctl add-port br-int eth2 tag=1
Here the neutron-plugin-openvswitch-agent
has put port eth2 into VLAN 1 (tag 1) on br-int.
root@compute:~# ovs-ofctl add-flow br-tun
priority=3,in_port=1,dl_vlan=1,actions=set_tunnel:0x1,NORMAL
It is for outgoing traffic from br-int
VLAN 1 - it sets the GRE key to 0x1 and gives it the NORMAL action.
root@compute:~# ovs-ofctl add-flow br-tun
priority=2,tun_id=0x1,actions=mod_vlan_vid:1,NORMAL
This flow accepts incoming traffic.
dump-flows after adding rules:
root@compute:~# ovs-ofctl dump-flows br-tun
NXST_FLOW reply (xid=0x4):
cookie=0x0, duration=115.467s, table=0, n_packets=5, n_bytes=958,
idle_age=58, priority=2,tun_id=0x1 actions=mod_vlan_vid:1,NORMAL
cookie=0x0, duration=133.203s, table=0, n_packets=5, n_bytes=830,
idle_age=61, priority=3,in_port=1,dl_vlan=1 actions=set_tunnel:0x1,NORMAL
cookie=0x0, duration=343.011s, table=0, n_packets=7, n_bytes=1230,
idle_age=186, priority=1,in_port=1 actions=resubmit(,1)
cookie=0x0, duration=341.832s, table=0, n_packets=0, n_bytes=0,
idle_age=341, priority=1,in_port=2 actions=resubmit(,2)
cookie=0x0, duration=342.95s, table=0, n_packets=4, n_bytes=300,
idle_age=334, priority=0 actions=drop
cookie=0x0, duration=342.829s, table=1, n_packets=7, n_bytes=1230,
idle_age=186, priority=0,dl_dst=01:00:00:00:00:00/01:00:00:00:00:00
actions=resubmit(,21)
cookie=0x0, duration=342.889s, table=1, n_packets=0, n_bytes=0,
idle_age=342, priority=0,dl_dst=00:00:00:00:00:00/01:00:00:00:00:00
actions=resubmit(,20)
cookie=0x0, duration=342.769s, table=2, n_packets=0, n_bytes=0,
idle_age=342, priority=0 actions=drop
cookie=0x0, duration=342.709s, table=3, n_packets=0, n_bytes=0,
idle_age=342, priority=0 actions=drop
cookie=0x0, duration=342.649s, table=10, n_packets=0, n_bytes=0,
idle_age=342, priority=1
actions=learn(table=20,hard_timeout=300,priority=1,NXM_OF_VLAN_TCI[0..11],NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],load:0->NXM_OF_VLAN_TCI[],load:NXM_NX_TUN_ID[]->NXM_NX_TUN_ID[],output:NXM_OF_IN_PORT[]),output:1
cookie=0x0, duration=342.588s, table=20, n_packets=0, n_bytes=0,
idle_age=342, priority=0 actions=resubmit(,21)
cookie=0x0, duration=342.529s, table=21, n_packets=7, n_bytes=1230,
idle_age=186, priority=0 actions=drop
This works for me. Please correct me if I am breaking any
functionality of neutron.
Regards,
Rajshree
On 10/4/2013 7:57 PM, Bob Ball wrote:
While I'm a big supporter of xenserver-core (which is the name of the
packages Endre mentions) -- the packages and their OpenStack
integration is currently very new. We're working through a number of
issues in the packaging at the moment and will hopefully have a more
stable point in a few weeks' time.
For the time being I would personally recommend using XenServer 6.2
-- which is also free, unlicensed and fully open source.
On the other hand, if you chose to use xenserver-core and find
issues, please report them on github
(https://github.com/xapi-project/xenserver-core/) and we'll get them
fixed as soon as we can -- or submit a pull request if you find the
fix yourself!
Bob
*From:*Endre Karlson [mailto:endre.karl...@gmail.com]
*Sent:* 04 October 2013 14:57
*To:* Rajshree Thorat
*Cc:* openst...@ask.openstack.org; openstack Users
*Subject:* Re: [Openstack] Openstack XCP with OVS Quantum
I'll suggest you to move away from XCP if you can and check out the
new work done by Citrix to make XenServer packages / functionality
available to be installed on stuff like CentOS 6 and Ubuntu + others.
Endre.
2013/10/4 Rajshree Thorat <rajshree.tho...@gslab.com
<mailto:rajshree.tho...@gslab.com>>
Hi,
I am trying to use Openstack Grizzly to control XCP hypervisor with
quantum ovs plugin. I tried with the steps which are mentioned in
official document
(http://docs.openstack.org/grizzly/openstack-compute/install/apt/content/introduction-to-xen.html#xen-config-reference)
but it doesn't work for me. I am not able to start nova-compute
service. It is giving me following error:
2013-10-04 18:23:44.861 32548 INFO nova.manager [-] Skipping periodic
task _periodic_update_dns because its interval is negative
2013-10-04 18:23:44.902 32548 INFO nova.virt.driver [-] Loading
compute driver 'xenapi.XenAPIDriver'
2013-10-04 18:23:44.922 32548 CRITICAL nova [-] [Errno 111] ECONNREFUSED
2013-10-04 18:23:44.922 32548 TRACE nova Traceback (most recent call
last):
2013-10-04 18:23:44.922 32548 TRACE nova File
"/usr/bin/nova-compute", line 83, in <module>
2013-10-04 18:23:44.922 32548 TRACE nova db_allowed=False)
2013-10-04 18:23:44.922 32548 TRACE nova File
"/usr/lib/python2.7/dist-packages/nova/service.py", line 534, in create
2013-10-04 18:23:44.922 32548 TRACE nova db_allowed=db_allowed)
2013-10-04 18:23:44.922 32548 TRACE nova File
"/usr/lib/python2.7/dist-packages/nova/service.py", line 413, in __init__
2013-10-04 18:23:44.922 32548 TRACE nova self.manager =
manager_class(host=self.host, *args, **kwargs)
2013-10-04 18:23:44.922 32548 TRACE nova File
"/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 353,
in __init__
2013-10-04 18:23:44.922 32548 TRACE nova self.driver =
driver.load_compute_driver(self.virtapi, compute_driver)
2013-10-04 18:23:44.922 32548 TRACE nova File
"/usr/lib/python2.7/dist-packages/nova/virt/driver.py", line 931, in
load_compute_driver
2013-10-04 18:23:44.922 32548 TRACE nova virtapi)
2013-10-04 18:23:44.922 32548 TRACE nova File
"/usr/lib/python2.7/dist-packages/nova/openstack/common/importutils.py",
line 51, in import_object_ns
2013-10-04 18:23:44.922 32548 TRACE nova return
import_class(import_value)(*args, **kwargs)
2013-10-04 18:23:44.922 32548 TRACE nova File
"/usr/lib/python2.7/dist-packages/nova/virt/xenapi/driver.py", line
139, in __init__
2013-10-04 18:23:44.922 32548 TRACE nova self._session =
XenAPISession(url, username, password, self.virtapi)
2013-10-04 18:23:44.922 32548 TRACE nova File
"/usr/lib/python2.7/dist-packages/nova/virt/xenapi/driver.py", line
630, in __init__
2013-10-04 18:23:44.922 32548 TRACE nova url =
self._create_first_session(url, user, pw, exception)
2013-10-04 18:23:44.922 32548 TRACE nova File
"/usr/lib/python2.7/dist-packages/nova/virt/xenapi/driver.py", line
641, in _create_first_session
2013-10-04 18:23:44.922 32548 TRACE nova
session.login_with_password(user, pw)
2013-10-04 18:23:44.922 32548 TRACE nova File
"/usr/local/lib/python2.7/dist-packages/XenAPI.py", line 182, in <lambda>
2013-10-04 18:23:44.922 32548 TRACE nova return lambda *params:
self._login(name, params)
2013-10-04 18:23:44.922 32548 TRACE nova File
"/usr/local/lib/python2.7/dist-packages/XenAPI.py", line 148, in _login
2013-10-04 18:23:44.922 32548 TRACE nova result =
_parse_result(getattr(self, 'session.%s' % method)(*params))
2013-10-04 18:23:44.922 32548 TRACE nova File
"/usr/lib/python2.7/xmlrpclib.py", line 1224, in __call__
2013-10-04 18:23:44.922 32548 TRACE nova return
self.__send(self.__name, args)
2013-10-04 18:23:44.922 32548 TRACE nova File
"/usr/lib/python2.7/xmlrpclib.py", line 1578, in __request
2013-10-04 18:23:44.922 32548 TRACE nova verbose=self.__verbose
2013-10-04 18:23:44.922 32548 TRACE nova File
"/usr/lib/python2.7/xmlrpclib.py", line 1264, in request
2013-10-04 18:23:44.922 32548 TRACE nova return
self.single_request(host, handler, request_body, verbose)
2013-10-04 18:23:44.922 32548 TRACE nova File
"/usr/lib/python2.7/xmlrpclib.py", line 1292, in single_request
2013-10-04 18:23:44.922 32548 TRACE nova self.send_content(h,
request_body)
2013-10-04 18:23:44.922 32548 TRACE nova File
"/usr/lib/python2.7/xmlrpclib.py", line 1439, in send_content
2013-10-04 18:23:44.922 32548 TRACE nova
connection.endheaders(request_body)
2013-10-04 18:23:44.922 32548 TRACE nova File
"/usr/lib/python2.7/httplib.py", line 954, in endheaders
2013-10-04 18:23:44.922 32548 TRACE nova self._send_output(message_body)
2013-10-04 18:23:44.922 32548 TRACE nova File
"/usr/lib/python2.7/httplib.py", line 814, in _send_output
2013-10-04 18:23:44.922 32548 TRACE nova self.send(msg)
2013-10-04 18:23:44.922 32548 TRACE nova File
"/usr/lib/python2.7/httplib.py", line 776, in send
2013-10-04 18:23:44.922 32548 TRACE nova self.connect()
2013-10-04 18:23:44.922 32548 TRACE nova File
"/usr/lib/python2.7/httplib.py", line 757, in connect
2013-10-04 18:23:44.922 32548 TRACE nova self.timeout,
self.source_address)
2013-10-04 18:23:44.922 32548 TRACE nova File
"/usr/lib/python2.7/dist-packages/eventlet/green/socket.py", line 59,
in create_connection
2013-10-04 18:23:44.922 32548 TRACE nova raise error, msg
2013-10-04 18:23:44.922 32548 TRACE nova error: [Errno 111] ECONNREFUSED
2013-10-04 18:23:44.922 32548 TRACE nova
It seems network with openvswitch is not configured properly. Is
there any OVS quantum plugin requires to run under dom0? Is there
any document which can briefly describe how Openstack + XCP works
with OVS Quantum?
Regards,
Rajshree
_______________________________________________
Mailing list:
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
Post to : openst...@lists.openstack.org
<mailto:openst...@lists.openstack.org>
Unsubscribe :
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev