Clustering impact on openflowplugin
thx
-Basheeruddin
On 06/04/2014 01:10 PM, Moiz Raja wrote:
The Clustering design in Helium is based on a Master-Slave model where all writes essentially go to the primary replica. In looking at the OF 1.3 Spec it appears that OF also supports the notion of Master-Slave controller and it seems that it would be the right mode of operation for us to use.
To properly support Master-Slave mode I believe the openflowplugin needs to do the following,
a. Support a global RPC method to make a specific controller the master (makeMaster). This method will be invoked by an external component. Since the clustering scheme is based on data shards we could come up with a simple rule that a member that has the inventory shard will also use the openflowplugin. When the external component notices that the primary shard for inventory has changed to the current cluster member then it will invoke the makeMaster RPC on the local openflowplugin.
b. The makeMaster implementation would need to send a message to the switch requesting that it’s role be set to master
c. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
Please let me know if you believe this scheme would have problems.
Thanks,-Moiz
-- Thx, -Basheeruddin
c. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
The Clustering design in Helium is based on a Master-Slave model where all writes essentially go to the primary replica. In looking at the OF 1.3 Spec it appears that OF also supports the notion of Master-Slave controller and it seems that it would be the right mode of operation for us to use.
To properly support Master-Slave mode I believe the openflowplugin needs to do the following,
a. Support a global RPC method to make a specific controller the master (makeMaster). This method will be invoked by an external component. Since the clustering scheme is based on data shards we could come up with a simple rule that a member that has the inventory shard will also use the openflowplugin. When the external component notices that the primary shard for inventory has changed to the current cluster member then it will invoke the makeMaster RPC on the local openflowplugin.
b. The makeMaster implementation would need to send a message to the switch requesting that it’s role be set to master
c. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
Please let me know if you believe this scheme would have problems.
Thanks,-Moiz
I think more than one component might find the change of mastership (or primary) significant - hence they should be able to register a listener on Clustering Service -- which would notify the change in mastership. Its upto the component how to handle the change in mastership event.
thx
-Basheeruddin
On 06/04/2014 01:10 PM, Moiz Raja wrote:
The Clustering design in Helium is based on a Master-Slave model where all writes essentially go to the primary replica. In looking at the OF 1.3 Spec it appears that OF also supports the notion of Master-Slave controller and it seems that it would be the right mode of operation for us to use.
To properly support Master-Slave mode I believe the openflowplugin needs to do the following,
a. Support a global RPC method to make a specific controller the master (makeMaster). This method will be invoked by an external component. Since the clustering scheme is based on data shards we could come up with a simple rule that a member that has the inventory shard will also use the openflowplugin. When the external component notices that the primary shard for inventory has changed to the current cluster member then it will invoke the makeMaster RPC on the local openflowplugin.
b. The makeMaster implementation would need to send a message to the switch requesting that it’s role be set to master
c. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
Please let me know if you believe this scheme would have problems.
Thanks,-Moiz
-- Thx, -Basheeruddin
Sent: Wednesday, June 04, 2014 2:05 PM
To: Moiz Raja (moraja); openflowplugin-dev@...; openflowjava-dev@...
Cc: Abhishek Kumar (abhishk2)
Subject: Re: Clustering impact on openflowplugin
thx
-Basheeruddin
On 06/04/2014 01:10 PM, Moiz Raja wrote:
The Clustering design in Helium is based on a Master-Slave model where all writes essentially go to the primary replica. In looking at the OF 1.3 Spec it appears that OF also supports the notion of Master-Slave controller and it seems that it would be the right mode of operation for us to use.
To properly support Master-Slave mode I believe the openflowplugin needs to do the following,
a. Support a global RPC method to make a specific controller the master (makeMaster). This method will be invoked by an external component. Since the clustering scheme is based on data shards we could come up with a simple rule that a member that has the inventory shard will also use the openflowplugin. When the external component notices that the primary shard for inventory has changed to the current cluster member then it will invoke the makeMaster RPC on the local openflowplugin.
b. The makeMaster implementation would need to send a message to the switch requesting that it’s role be set to master
c. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
Please let me know if you believe this scheme would have problems.
Thanks,-Moiz
-- Thx, -Basheeruddin
Sent: Wednesday, June 04, 2014 2:08 PM
To: Moiz Raja (moraja)
Cc: openflowplugin-dev@...; openflowjava-dev@...; Basheeruddin Ahmed (syedbahm)
Subject: Re: Clustering impact on openflowplugin
c. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
The Clustering design in Helium is based on a Master-Slave model where all writes essentially go to the primary replica. In looking at the OF 1.3 Spec it appears that OF also supports the notion of Master-Slave controller and it seems that it would be the right mode of operation for us to use.
To properly support Master-Slave mode I believe the openflowplugin needs to do the following,
a. Support a global RPC method to make a specific controller the master (makeMaster). This method will be invoked by an external component. Since the clustering scheme is based on data shards we could come up with a simple rule that a member that has the inventory shard will also use the openflowplugin. When the external component notices that the primary shard for inventory has changed to the current cluster member then it will invoke the makeMaster RPC on the local openflowplugin.
b. The makeMaster implementation would need to send a message to the switch requesting that it’s role be set to master
c. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
Please let me know if you believe this scheme would have problems.
Thanks,-Moiz
Abhishek,
In the case where a member crashes rpcs will not get unregistered with the system. I think we need to handle that scenario as well - in this scenario obviously the downed node will not be able to unregister the rpcs and not be able to handle a "role change" notification from the switch - which as per the OpenFlow Spec would not be sent to the slave controller anyway. One of the things which distinguishes a OF Master from a Slave controller is that slaves do not receive any asynchronous messages from the switch.
-Moiz
From: Abhishek Kumar (abhishk2)
Sent: Wednesday, June 04, 2014 2:08 PM
To: Moiz Raja (moraja)
Cc: openflowplugin-dev@...; openflowjava-dev@...; Basheeruddin Ahmed (syedbahm)
Subject: Re: Clustering impact on openflowplugin
c. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.When a new node is discovered by the open flow plugin, it does routed rpc registration for this node with broker. When connection with new node is lost, the rpcs are unregistered for this node. OFPlugin folks - please correct me if I am wrong.
With above in place, when a controller is “made” master for a node, the OFPlugin on that controller can register for routed rpcs for this node. And similarly, the old master needs to unregister the rpcs for this node. Does openflow spec define any event that “old” master would get when its NOT master anymore?
-Abhishek
On Jun 4, 2014, at 1:10 PM, Moiz Raja <moraja@...> wrote:
The Clustering design in Helium is based on a Master-Slave model where all writes essentially go to the primary replica. In looking at the OF 1.3 Spec it appears that OF also supports the notion of Master-Slave controller and it seems that it would be the right mode of operation for us to use.
To properly support Master-Slave mode I believe the openflowplugin needs to do the following,
a. Support a global RPC method to make a specific controller the master (makeMaster). This method will be invoked by an external component. Since the clustering scheme is based on data shards we could come up with a simple rule that a member that has the inventory shard will also use the openflowplugin. When the external component notices that the primary shard for inventory has changed to the current cluster member then it will invoke the makeMaster RPC on the local openflowplugin.
b. The makeMaster implementation would need to send a message to the switch requesting that it’s role be set to master
c. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
Please let me know if you believe this scheme would have problems.
Thanks,-Moiz
What does member indicate here?
-Prasanna
Sent: Thursday, June 05, 2014 3:05 AM
To: Abhishek Kumar (abhishk2)
Cc: openflowjava-dev@...; openflowplugin-dev@...
Subject: Re: [openflowplugin-dev] Clustering impact on openflowplugin
Abhishek,
In the case where a member crashes rpcs will not get unregistered with the system. I think we need to handle that scenario as well - in this scenario obviously the downed node will not be able to unregister the rpcs and not be able to handle a "role change" notification from the switch - which as per the OpenFlow Spec would not be sent to the slave controller anyway. One of the things which distinguishes a OF Master from a Slave controller is that slaves do not receive any asynchronous messages from the switch.
-Moiz
From: Abhishek Kumar (abhishk2)
Sent: Wednesday, June 04, 2014 2:08 PM
To: Moiz Raja (moraja)
Cc: openflowplugin-dev@...;
openflowjava-dev@...; Basheeruddin Ahmed (syedbahm)
Subject: Re: Clustering impact on openflowplugin
c. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
When a new node is discovered by the open flow plugin, it does routed rpc registration for this node with broker. When connection with new node is lost, the rpcs are unregistered for this node. OFPlugin folks - please correct me if I am wrong.
With above in place, when a controller is “made” master for a node, the OFPlugin on that controller can register for routed rpcs for this node. And similarly, the old master needs to unregister the rpcs for this node. Does openflow spec define any event that “old” master would get when its NOT master anymore?
-Abhishek
On Jun 4, 2014, at 1:10 PM, Moiz Raja <moraja@...> wrote:
The Clustering design in Helium is based on a Master-Slave model where all writes essentially go to the primary replica. In looking at the OF 1.3 Spec it appears that OF also supports the notion of Master-Slave controller and it seems that it would be the right mode of operation for us to use.
To properly support Master-Slave mode I believe the openflowplugin needs to do the following,
a. Support a global RPC method to make a specific controller the master (makeMaster). This method will be invoked by an external component. Since the clustering scheme is based on data shards we could come up with a simple rule that a member that has the inventory shard will also use the openflowplugin. When the external component notices that the primary shard for inventory has changed to the current cluster member then it will invoke the makeMaster RPC on the local openflowplugin.
b. The makeMaster implementation would need to send a message to the switch requesting that it’s role be set to master
c. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
Please let me know if you believe this scheme would have problems.
Thanks,
-Moiz
Sent: Wednesday, June 04, 2014 10:29 PM
To: Moiz Raja (moraja); Abhishek Kumar (abhishk2)
Cc: openflowjava-dev@...; openflowplugin-dev@...
Subject: RE: Clustering impact on openflowplugin
What does member indicate here?
-Prasanna
From: openflowplugin-dev-bounces@... [mailto:openflowplugin-dev-bounces@...]
On Behalf Of Moiz Raja (moraja)
Sent: Thursday, June 05, 2014 3:05 AM
To: Abhishek Kumar (abhishk2)
Cc: openflowjava-dev@...; openflowplugin-dev@...
Subject: Re: [openflowplugin-dev] Clustering impact on openflowplugin
Abhishek,
In the case where a member crashes rpcs will not get unregistered with the system. I think we need to handle that scenario as well - in this scenario obviously the downed node will not be able to unregister the rpcs and not be able to handle a "role change" notification from the switch - which as per the OpenFlow Spec would not be sent to the slave controller anyway. One of the things which distinguishes a OF Master from a Slave controller is that slaves do not receive any asynchronous messages from the switch.
-Moiz
From: Abhishek Kumar (abhishk2)
Sent: Wednesday, June 04, 2014 2:08 PM
To: Moiz Raja (moraja)
Cc:
openflowplugin-dev@...;
openflowjava-dev@...; Basheeruddin Ahmed (syedbahm)
Subject: Re: Clustering impact on openflowplugin
c. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
When a new node is discovered by the open flow plugin, it does routed rpc registration for this node with broker. When connection with new node is lost, the rpcs are unregistered for this node. OFPlugin folks - please correct me if I am wrong.
With above in place, when a controller is “made” master for a node, the OFPlugin on that controller can register for routed rpcs for this node. And similarly, the old master needs to unregister the rpcs for this node. Does openflow spec define any event that “old” master would get when its NOT master anymore?
-Abhishek
On Jun 4, 2014, at 1:10 PM, Moiz Raja <moraja@...> wrote:
The Clustering design in Helium is based on a Master-Slave model where all writes essentially go to the primary replica. In looking at the OF 1.3 Spec it appears that OF also supports the notion of Master-Slave controller and it seems that it would be the right mode of operation for us to use.
To properly support Master-Slave mode I believe the openflowplugin needs to do the following,
a. Support a global RPC method to make a specific controller the master (makeMaster). This method will be invoked by an external component. Since the clustering scheme is based on data shards we could come up with a simple rule that a member that has the inventory shard will also use the openflowplugin. When the external component notices that the primary shard for inventory has changed to the current cluster member then it will invoke the makeMaster RPC on the local openflowplugin.
b. The makeMaster implementation would need to send a message to the switch requesting that it’s role be set to master
c. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
Please let me know if you believe this scheme would have problems.
Thanks,
-Moiz
This should all be a performance optimization, right? That is if any node can access any MD-SAL data element, it's just it might be slow if it is remote. Similarly, any node can make any RPC call, it just might be slow if it's remote.
Am I wrong?
A cluster member.
From: Prasanna Huddar [prasanna.huddar@...]
Sent: Wednesday, June 04, 2014 10:29 PM
To: Moiz Raja (moraja); Abhishek Kumar (abhishk2)
Cc: openflowjava-dev@...; openflowplugin-dev@...
Subject: RE: Clustering impact on openflowplugin
What does member indicate here?
-Prasanna
From: openflowplugin-dev-bounces@... [mailto:openflowplugin-dev-bounces@...] On Behalf Of Moiz Raja (moraja)
Sent: Thursday, June 05, 2014 3:05 AM
To: Abhishek Kumar (abhishk2)
Cc: openflowjava-dev@...; openflowplugin-dev@...
Subject: Re: [openflowplugin-dev] Clustering impact on openflowplugin
Abhishek,
In the case where a member crashes rpcs will not get unregistered with the system. I think we need to handle that scenario as well - in this scenario obviously the downed node will not be able to unregister the rpcs and not be able to handle a "role change" notification from the switch - which as per the OpenFlow Spec would not be sent to the slave controller anyway. One of the things which distinguishes a OF Master from a Slave controller is that slaves do not receive any asynchronous messages from the switch.
-Moiz
From: Abhishek Kumar (abhishk2)
Sent: Wednesday, June 04, 2014 2:08 PM
To: Moiz Raja (moraja)
Cc: openflowplugin-dev@...; openflowjava-dev@...; Basheeruddin Ahmed (syedbahm)
Subject: Re: Clustering impact on openflowpluginc. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
When a new node is discovered by the open flow plugin, it does routed rpc registration for this node with broker. When connection with new node is lost, the rpcs are unregistered for this node. OFPlugin folks - please correct me if I am wrong.
With above in place, when a controller is “made” master for a node, the OFPlugin on that controller can register for routed rpcs for this node. And similarly, the old master needs to unregister the rpcs for this node. Does openflow spec define any event that “old” master would get when its NOT master anymore?
-Abhishek
On Jun 4, 2014, at 1:10 PM, Moiz Raja <moraja@...> wrote:
The Clustering design in Helium is based on a Master-Slave model where all writes essentially go to the primary replica. In looking at the OF 1.3 Spec it appears that OF also supports the notion of Master-Slave controller and it seems that it would be the right mode of operation for us to use.
To properly support Master-Slave mode I believe the openflowplugin needs to do the following,
a. Support a global RPC method to make a specific controller the master (makeMaster). This method will be invoked by an external component. Since the clustering scheme is based on data shards we could come up with a simple rule that a member that has the inventory shard will also use the openflowplugin. When the external component notices that the primary shard for inventory has changed to the current cluster member then it will invoke the makeMaster RPC on the local openflowplugin.
b. The makeMaster implementation would need to send a message to the switch requesting that it’s role be set to master
c. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
Please let me know if you believe this scheme would have problems.
Thanks,
-Moiz
_______________________________________________
openflowjava-dev mailing list
openflowjava-dev@...
https://lists.opendaylight.org/mailman/listinfo/openflowjava-dev
Sent: Thursday, June 05, 2014 11:12 AM
To: Moiz Raja (moraja)
Cc: Prasanna Huddar; Abhishek Kumar (abhishk2); openflowjava-dev@...; openflowplugin-dev@...
Subject: Re: [openflowjava-dev] Clustering impact on openflowplugin
This should all be a performance optimization, right? That is if any node can access any MD-SAL data element, it's just it might be slow if it is remote. Similarly, any node can make any RPC call, it just might be slow if it's remote.
Am I wrong?
A cluster member.
From: Prasanna Huddar [prasanna.huddar@...]
Sent: Wednesday, June 04, 2014 10:29 PM
To: Moiz Raja (moraja); Abhishek Kumar (abhishk2)
Cc: openflowjava-dev@...; openflowplugin-dev@...
Subject: RE: Clustering impact on openflowplugin
What does member indicate here?
-Prasanna
From: openflowplugin-dev-bounces@... [mailto:openflowplugin-dev-bounces@...] On Behalf Of Moiz Raja (moraja)
Sent: Thursday, June 05, 2014 3:05 AM
To: Abhishek Kumar (abhishk2)
Cc: openflowjava-dev@...; openflowplugin-dev@...
Subject: Re: [openflowplugin-dev] Clustering impact on openflowplugin
Abhishek,
In the case where a member crashes rpcs will not get unregistered with the system. I think we need to handle that scenario as well - in this scenario obviously the downed node will not be able to unregister the rpcs and not be able to handle a "role change" notification from the switch - which as per the OpenFlow Spec would not be sent to the slave controller anyway. One of the things which distinguishes a OF Master from a Slave controller is that slaves do not receive any asynchronous messages from the switch.
-Moiz
From: Abhishek Kumar (abhishk2)
Sent: Wednesday, June 04, 2014 2:08 PM
To: Moiz Raja (moraja)
Cc: openflowplugin-dev@...; openflowjava-dev@...; Basheeruddin Ahmed (syedbahm)
Subject: Re: Clustering impact on openflowpluginc. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
When a new node is discovered by the open flow plugin, it does routed rpc registration for this node with broker. When connection with new node is lost, the rpcs are unregistered for this node. OFPlugin folks - please correct me if I am wrong.
With above in place, when a controller is “made” master for a node, the OFPlugin on that controller can register for routed rpcs for this node. And similarly, the old master needs to unregister the rpcs for this node. Does openflow spec define any event that “old” master would get when its NOT master anymore?
-Abhishek
On Jun 4, 2014, at 1:10 PM, Moiz Raja <moraja@...> wrote:
The Clustering design in Helium is based on a Master-Slave model where all writes essentially go to the primary replica. In looking at the OF 1.3 Spec it appears that OF also supports the notion of Master-Slave controller and it seems that it would be the right mode of operation for us to use.
To properly support Master-Slave mode I believe the openflowplugin needs to do the following,
a. Support a global RPC method to make a specific controller the master (makeMaster). This method will be invoked by an external component. Since the clustering scheme is based on data shards we could come up with a simple rule that a member that has the inventory shard will also use the openflowplugin. When the external component notices that the primary shard for inventory has changed to the current cluster member then it will invoke the makeMaster RPC on the local openflowplugin.
b. The makeMaster implementation would need to send a message to the switch requesting that it’s role be set to master
c. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
Please let me know if you believe this scheme would have problems.
Thanks,
-Moiz
_______________________________________________
openflowjava-dev mailing list
openflowjava-dev@...
https://lists.opendaylight.org/mailman/listinfo/openflowjava-dev
Not wrong. It is a performance optimization only.
-Moiz
From: Colin Dixon [colin@...]
Sent: Thursday, June 05, 2014 11:12 AM
To: Moiz Raja (moraja)
Cc: Prasanna Huddar; Abhishek Kumar (abhishk2); openflowjava-dev@...; openflowplugin-dev@...
Subject: Re: [openflowjava-dev] Clustering impact on openflowplugin
--ColinWait.We might want to try to co-locate the data for a node on the same instance that has the connection (and thus handles the RPCs) for that node, but it shouldn't affect correctness.
This should all be a performance optimization, right? That is if any node can access any MD-SAL data element, it's just it might be slow if it is remote. Similarly, any node can make any RPC call, it just might be slow if it's remote.
Am I wrong?
On Thu, Jun 5, 2014 at 12:47 PM, Moiz Raja (moraja) <moraja@...> wrote:
A cluster member.
From: Prasanna Huddar [prasanna.huddar@...]
Sent: Wednesday, June 04, 2014 10:29 PM
To: Moiz Raja (moraja); Abhishek Kumar (abhishk2)
Cc: openflowjava-dev@...; openflowplugin-dev@...
Subject: RE: Clustering impact on openflowplugin
What does member indicate here?
-Prasanna
From: openflowplugin-dev-bounces@... [mailto:openflowplugin-dev-bounces@...] On Behalf Of Moiz Raja (moraja)
Sent: Thursday, June 05, 2014 3:05 AM
To: Abhishek Kumar (abhishk2)
Cc: openflowjava-dev@...; openflowplugin-dev@...
Subject: Re: [openflowplugin-dev] Clustering impact on openflowplugin
Abhishek,
In the case where a member crashes rpcs will not get unregistered with the system. I think we need to handle that scenario as well - in this scenario obviously the downed node will not be able to unregister the rpcs and not be able to handle a "role change" notification from the switch - which as per the OpenFlow Spec would not be sent to the slave controller anyway. One of the things which distinguishes a OF Master from a Slave controller is that slaves do not receive any asynchronous messages from the switch.
-Moiz
From: Abhishek Kumar (abhishk2)
Sent: Wednesday, June 04, 2014 2:08 PM
To: Moiz Raja (moraja)
Cc: openflowplugin-dev@...; openflowjava-dev@...; Basheeruddin Ahmed (syedbahm)
Subject: Re: Clustering impact on openflowpluginc. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
When a new node is discovered by the open flow plugin, it does routed rpc registration for this node with broker. When connection with new node is lost, the rpcs are unregistered for this node. OFPlugin folks - please correct me if I am wrong.
With above in place, when a controller is “made” master for a node, the OFPlugin on that controller can register for routed rpcs for this node. And similarly, the old master needs to unregister the rpcs for this node. Does openflow spec define any event that “old” master would get when its NOT master anymore?
-Abhishek
On Jun 4, 2014, at 1:10 PM, Moiz Raja <moraja@...> wrote:
The Clustering design in Helium is based on a Master-Slave model where all writes essentially go to the primary replica. In looking at the OF 1.3 Spec it appears that OF also supports the notion of Master-Slave controller and it seems that it would be the right mode of operation for us to use.
To properly support Master-Slave mode I believe the openflowplugin needs to do the following,
a. Support a global RPC method to make a specific controller the master (makeMaster). This method will be invoked by an external component. Since the clustering scheme is based on data shards we could come up with a simple rule that a member that has the inventory shard will also use the openflowplugin. When the external component notices that the primary shard for inventory has changed to the current cluster member then it will invoke the makeMaster RPC on the local openflowplugin.
b. The makeMaster implementation would need to send a message to the switch requesting that it’s role be set to master
c. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
Please let me know if you believe this scheme would have problems.
Thanks,
-Moiz
_______________________________________________
openflowjava-dev mailing list
openflowjava-dev@...
https://lists.opendaylight.org/mailman/listinfo/openflowjava-dev
The Clustering design in Helium is based on a Master-Slave model where all writes essentially go to the primary replica. In looking at the OF 1.3 Spec it appears that OF also supports the notion of Master-Slave controller and it seems that it would be the right mode of operation for us to use.To properly support Master-Slave mode I believe the openflowplugin needs to do the following,a. Support a global RPC method to make a specific controller the master (makeMaster). This method will be invoked by an external component. Since the clustering scheme is based on data shards we could come up with a simple rule that a member that has the inventory shard will also use the openflowplugin. When the external component notices that the primary shard for inventory has changed to the current cluster member then it will invoke the makeMaster RPC on the local openflowplugin.b. The makeMaster implementation would need to send a message to the switch requesting that it’s role be set to masterc. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.Please let me know if you believe this scheme would have problems.Thanks,-Moiz
_______________________________________________
openflowjava-dev mailing list
openflowjava-dev@...
https://lists.opendaylight.org/mailman/listinfo/openflowjava-dev
So, really, we'd like for there to be some way to figure out what controller instance is currently attached to a given device so that we could give it's data affinity to that device. Does the OpenFlow plugin expose the information about which switches are attached to which instances?--Colin
On Thu, Jun 5, 2014 at 1:22 PM, Moiz Raja (moraja) <moraja@...> wrote:
Not wrong. It is a performance optimization only.
-Moiz
From: Colin Dixon [colin@...]
Sent: Thursday, June 05, 2014 11:12 AM
To: Moiz Raja (moraja)
Cc: Prasanna Huddar; Abhishek Kumar (abhishk2); openflowjava-dev@...; openflowplugin-dev@...
Subject: Re: [openflowjava-dev] Clustering impact on openflowplugin
--ColinWait.We might want to try to co-locate the data for a node on the same instance that has the connection (and thus handles the RPCs) for that node, but it shouldn't affect correctness.
This should all be a performance optimization, right? That is if any node can access any MD-SAL data element, it's just it might be slow if it is remote. Similarly, any node can make any RPC call, it just might be slow if it's remote.
Am I wrong?
On Thu, Jun 5, 2014 at 12:47 PM, Moiz Raja (moraja) <moraja@...> wrote:
A cluster member.
From: Prasanna Huddar [prasanna.huddar@...]
Sent: Wednesday, June 04, 2014 10:29 PM
To: Moiz Raja (moraja); Abhishek Kumar (abhishk2)
Cc: openflowjava-dev@...; openflowplugin-dev@...
Subject: RE: Clustering impact on openflowplugin
What does member indicate here?
-Prasanna
From: openflowplugin-dev-bounces@... [mailto:openflowplugin-dev-bounces@...] On Behalf Of Moiz Raja (moraja)
Sent: Thursday, June 05, 2014 3:05 AM
To: Abhishek Kumar (abhishk2)
Cc: openflowjava-dev@...; openflowplugin-dev@...
Subject: Re: [openflowplugin-dev] Clustering impact on openflowplugin
Abhishek,
In the case where a member crashes rpcs will not get unregistered with the system. I think we need to handle that scenario as well - in this scenario obviously the downed node will not be able to unregister the rpcs and not be able to handle a "role change" notification from the switch - which as per the OpenFlow Spec would not be sent to the slave controller anyway. One of the things which distinguishes a OF Master from a Slave controller is that slaves do not receive any asynchronous messages from the switch.
-Moiz
From: Abhishek Kumar (abhishk2)
Sent: Wednesday, June 04, 2014 2:08 PM
To: Moiz Raja (moraja)
Cc: openflowplugin-dev@...; openflowjava-dev@...; Basheeruddin Ahmed (syedbahm)
Subject: Re: Clustering impact on openflowpluginc. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
When a new node is discovered by the open flow plugin, it does routed rpc registration for this node with broker. When connection with new node is lost, the rpcs are unregistered for this node. OFPlugin folks - please correct me if I am wrong.
With above in place, when a controller is “made” master for a node, the OFPlugin on that controller can register for routed rpcs for this node. And similarly, the old master needs to unregister the rpcs for this node. Does openflow spec define any event that “old” master would get when its NOT master anymore?
-Abhishek
On Jun 4, 2014, at 1:10 PM, Moiz Raja <moraja@...> wrote:
The Clustering design in Helium is based on a Master-Slave model where all writes essentially go to the primary replica. In looking at the OF 1.3 Spec it appears that OF also supports the notion of Master-Slave controller and it seems that it would be the right mode of operation for us to use.
To properly support Master-Slave mode I believe the openflowplugin needs to do the following,
a. Support a global RPC method to make a specific controller the master (makeMaster). This method will be invoked by an external component. Since the clustering scheme is based on data shards we could come up with a simple rule that a member that has the inventory shard will also use the openflowplugin. When the external component notices that the primary shard for inventory has changed to the current cluster member then it will invoke the makeMaster RPC on the local openflowplugin.
b. The makeMaster implementation would need to send a message to the switch requesting that it’s role be set to master
c. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
Please let me know if you believe this scheme would have problems.
Thanks,
-Moiz
_______________________________________________
openflowjava-dev mailing list
openflowjava-dev@...
https://lists.opendaylight.org/mailman/listinfo/openflowjava-dev
_______________________________________________
openflowjava-dev mailing list
openflowjava-dev@...
https://lists.opendaylight.org/mailman/listinfo/openflowjava-dev
Sent: Thursday, June 05, 2014 3:57 PM
To: Moiz Raja (moraja)
Cc: openflowplugin-dev@...; openflowjava-dev
Subject: Re: [openflowjava-dev] Clustering impact on openflowplugin
The Clustering design in Helium is based on a Master-Slave model where all writes essentially go to the primary replica. In looking at the OF 1.3 Spec it appears that OF also supports the notion of Master-Slave controller and it seems that it would be the right mode of operation for us to use.
To properly support Master-Slave mode I believe the openflowplugin needs to do the following,
a. Support a global RPC method to make a specific controller the master (makeMaster). This method will be invoked by an external component. Since the clustering scheme is based on data shards we could come up with a simple rule that a member that has the inventory shard will also use the openflowplugin. When the external component notices that the primary shard for inventory has changed to the current cluster member then it will invoke the makeMaster RPC on the local openflowplugin.
b. The makeMaster implementation would need to send a message to the switch requesting that it’s role be set to master
c. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
Please let me know if you believe this scheme would have problems.
Thanks,-Moiz
_______________________________________________
openflowjava-dev mailing list
openflowjava-dev@...
https://lists.opendaylight.org/mailman/listinfo/openflowjava-dev
Date: Thursday, June 5, 2014 10:47 AM
To: Prasanna Huddar <prasanna.huddar@...>, "Abhishek Kumar (abhishk2)" <abhishk2@...>
Cc: "openflowjava-dev@..." <openflowjava-dev@...>, "openflowplugin-dev@..." <openflowplugin-dev@...>
Subject: Re: [openflowplugin-dev] Clustering impact on openflowplugin
Sent: Wednesday, June 04, 2014 10:29 PM
To: Moiz Raja (moraja); Abhishek Kumar (abhishk2)
Cc: openflowjava-dev@...; openflowplugin-dev@...
Subject: RE: Clustering impact on openflowplugin
What does member indicate here?
-Prasanna
From:
openflowplugin-dev-bounces@... [mailto:openflowplugin-dev-bounces@...]
On Behalf Of Moiz Raja (moraja)
Sent: Thursday, June 05, 2014 3:05 AM
To: Abhishek Kumar (abhishk2)
Cc: openflowjava-dev@...;
openflowplugin-dev@...
Subject: Re: [openflowplugin-dev] Clustering impact on openflowplugin
Abhishek,
In the case where a member crashes rpcs will not get unregistered with the system. I think we need to handle that scenario as well - in this scenario obviously the downed node will not be able to unregister the rpcs and not be able to handle a "role change" notification from the switch - which as per the OpenFlow Spec would not be sent to the slave controller anyway. One of the things which distinguishes a OF Master from a Slave controller is that slaves do not receive any asynchronous messages from the switch.
-Moiz
From: Abhishek Kumar (abhishk2)
Sent: Wednesday, June 04, 2014 2:08 PM
To: Moiz Raja (moraja)
Cc:
openflowplugin-dev@...;
openflowjava-dev@...; Basheeruddin Ahmed (syedbahm)
Subject: Re: Clustering impact on openflowplugin
c. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
When a new node is discovered by the open flow plugin, it does routed rpc registration for this node with broker. When connection with new node is lost, the rpcs are unregistered for this node. OFPlugin folks - please correct me if I am wrong.
With above in place, when a controller is “made” master for a node, the OFPlugin on that controller can register for routed rpcs for this node. And similarly, the old master needs to unregister the rpcs for this node. Does openflow spec define any event that “old” master would get when its NOT master anymore?
-Abhishek
On Jun 4, 2014, at 1:10 PM, Moiz Raja <moraja@...> wrote:
The Clustering design in Helium is based on a Master-Slave model where all writes essentially go to the primary replica. In looking at the OF 1.3 Spec it appears that OF also supports the notion of Master-Slave controller and it seems that it would be the right mode of operation for us to use.
To properly support Master-Slave mode I believe the openflowplugin needs to do the following,
a. Support a global RPC method to make a specific controller the master (makeMaster). This method will be invoked by an external component. Since the clustering scheme is based on data shards we could come up with a simple rule that a member that has the inventory shard will also use the openflowplugin. When the external component notices that the primary shard for inventory has changed to the current cluster member then it will invoke the makeMaster RPC on the local openflowplugin.
b. The makeMaster implementation would need to send a message to the switch requesting that it’s role be set to master
c. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
Please let me know if you believe this scheme would have problems.
Thanks,
-Moiz
Hi
For multi controller support, the open flow plugin would need an arbiter component.
Following is the design proposed for the Arbiter component https://wiki.opendaylight.org/view/OpenDaylight_OpenFlow_Plugin:Backlog:MultiControllerAndArbiterDesign
Please let know if any questions/concerns
-Kamal
Date: Thursday, June 5, 2014 10:47 AM
To: Prasanna Huddar <prasanna.huddar@...>, "Abhishek Kumar (abhishk2)" <abhishk2@...>
Cc: "openflowjava-dev@..." <openflowjava-dev@...>, "openflowplugin-dev@..." <openflowplugin-dev@...>
Subject: Re: [openflowplugin-dev] Clustering impact on openflowplugin
A cluster member.
From: Prasanna Huddar [prasanna.huddar@...]
Sent: Wednesday, June 04, 2014 10:29 PM
To: Moiz Raja (moraja); Abhishek Kumar (abhishk2)
Cc: openflowjava-dev@...; openflowplugin-dev@...
Subject: RE: Clustering impact on openflowplugin
What does member indicate here?
-Prasanna
From: openflowplugin-dev-bounces@... [mailto:openflowplugin-dev-bounces@...] On Behalf Of Moiz Raja (moraja)
Sent: Thursday, June 05, 2014 3:05 AM
To: Abhishek Kumar (abhishk2)
Cc: openflowjava-dev@...; openflowplugin-dev@...
Subject: Re: [openflowplugin-dev] Clustering impact on openflowplugin
Abhishek,
In the case where a member crashes rpcs will not get unregistered with the system. I think we need to handle that scenario as well - in this scenario obviously the downed node will not be able to unregister the rpcs and not be able to handle a "role change" notification from the switch - which as per the OpenFlow Spec would not be sent to the slave controller anyway. One of the things which distinguishes a OF Master from a Slave controller is that slaves do not receive any asynchronous messages from the switch.
-Moiz
From: Abhishek Kumar (abhishk2)
Sent: Wednesday, June 04, 2014 2:08 PM
To: Moiz Raja (moraja)
Cc: openflowplugin-dev@...; openflowjava-dev@...; Basheeruddin Ahmed (syedbahm)
Subject: Re: Clustering impact on openflowpluginc. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
When a new node is discovered by the open flow plugin, it does routed rpc registration for this node with broker. When connection with new node is lost, the rpcs are unregistered for this node. OFPlugin folks - please correct me if I am wrong.
With above in place, when a controller is “made” master for a node, the OFPlugin on that controller can register for routed rpcs for this node. And similarly, the old master needs to unregister the rpcs for this node. Does openflow spec define any event that “old” master would get when its NOT master anymore?
-Abhishek
On Jun 4, 2014, at 1:10 PM, Moiz Raja <moraja@...> wrote:
The Clustering design in Helium is based on a Master-Slave model where all writes essentially go to the primary replica. In looking at the OF 1.3 Spec it appears that OF also supports the notion of Master-Slave controller and it seems that it would be the right mode of operation for us to use.
To properly support Master-Slave mode I believe the openflowplugin needs to do the following,
a. Support a global RPC method to make a specific controller the master (makeMaster). This method will be invoked by an external component. Since the clustering scheme is based on data shards we could come up with a simple rule that a member that has the inventory shard will also use the openflowplugin. When the external component notices that the primary shard for inventory has changed to the current cluster member then it will invoke the makeMaster RPC on the local openflowplugin.
b. The makeMaster implementation would need to send a message to the switch requesting that it’s role be set to master
c. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
Please let me know if you believe this scheme would have problems.
Thanks,
-Moiz
_______________________________________________
openflowjava-dev mailing list
openflowjava-dev@...
https://lists.opendaylight.org/mailman/listinfo/openflowjava-dev
Date: Monday, July 21, 2014 3:54 PM
To: Cisco Employee <kramesha@...>
Cc: "openflowplugin-dev@..." <openflowplugin-dev@...>, "openflowjava-dev@..." <openflowjava-dev@...>
Subject: Re: [openflowjava-dev] Clustering impact on openflowplugin
Hi
For multi controller support, the open flow plugin would need an arbiter component.
Following is the design proposed for the Arbiter component https://wiki.opendaylight.org/view/OpenDaylight_OpenFlow_Plugin:Backlog:MultiControllerAndArbiterDesign
Please let know if any questions/concerns
-Kamal
Date: Thursday, June 5, 2014 10:47 AM
To: Prasanna Huddar <prasanna.huddar@...>, "Abhishek Kumar (abhishk2)" <abhishk2@...>
Cc: "openflowjava-dev@..." <openflowjava-dev@...>, "openflowplugin-dev@..." <openflowplugin-dev@...>
Subject: Re: [openflowplugin-dev] Clustering impact on openflowplugin
A cluster member.
From: Prasanna Huddar [prasanna.huddar@...]
Sent: Wednesday, June 04, 2014 10:29 PM
To: Moiz Raja (moraja); Abhishek Kumar (abhishk2)
Cc: openflowjava-dev@...; openflowplugin-dev@...
Subject: RE: Clustering impact on openflowplugin
What does member indicate here?
-Prasanna
From: openflowplugin-dev-bounces@... [mailto:openflowplugin-dev-bounces@...] On Behalf Of Moiz Raja (moraja)
Sent: Thursday, June 05, 2014 3:05 AM
To: Abhishek Kumar (abhishk2)
Cc: openflowjava-dev@...; openflowplugin-dev@...
Subject: Re: [openflowplugin-dev] Clustering impact on openflowplugin
Abhishek,
In the case where a member crashes rpcs will not get unregistered with the system. I think we need to handle that scenario as well - in this scenario obviously the downed node will not be able to unregister the rpcs and not be able to handle a "role change" notification from the switch - which as per the OpenFlow Spec would not be sent to the slave controller anyway. One of the things which distinguishes a OF Master from a Slave controller is that slaves do not receive any asynchronous messages from the switch.
-Moiz
From: Abhishek Kumar (abhishk2)
Sent: Wednesday, June 04, 2014 2:08 PM
To: Moiz Raja (moraja)
Cc: openflowplugin-dev@...; openflowjava-dev@...; Basheeruddin Ahmed (syedbahm)
Subject: Re: Clustering impact on openflowpluginc. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
When a new node is discovered by the open flow plugin, it does routed rpc registration for this node with broker. When connection with new node is lost, the rpcs are unregistered for this node. OFPlugin folks - please correct me if I am wrong.
With above in place, when a controller is “made” master for a node, the OFPlugin on that controller can register for routed rpcs for this node. And similarly, the old master needs to unregister the rpcs for this node. Does openflow spec define any event that “old” master would get when its NOT master anymore?
-Abhishek
On Jun 4, 2014, at 1:10 PM, Moiz Raja <moraja@...> wrote:
The Clustering design in Helium is based on a Master-Slave model where all writes essentially go to the primary replica. In looking at the OF 1.3 Spec it appears that OF also supports the notion of Master-Slave controller and it seems that it would be the right mode of operation for us to use.
To properly support Master-Slave mode I believe the openflowplugin needs to do the following,
a. Support a global RPC method to make a specific controller the master (makeMaster). This method will be invoked by an external component. Since the clustering scheme is based on data shards we could come up with a simple rule that a member that has the inventory shard will also use the openflowplugin. When the external component notices that the primary shard for inventory has changed to the current cluster member then it will invoke the makeMaster RPC on the local openflowplugin.
b. The makeMaster implementation would need to send a message to the switch requesting that it’s role be set to master
c. The makeMaster implementation would also need to re-register all routed Rpc’s that were registered by the previous master. I haven’t thought through exactly how the new master would discover those Rpc’s - but one way would be enhance the Rpc registration API to include some meta information which could be used to query for those Rpc registrations. Another option could be enhance the RpcProvider to switch Rpc Registrations to the new provider.
Please let me know if you believe this scheme would have problems.
Thanks,
-Moiz
_______________________________________________
openflowjava-dev mailing list
openflowjava-dev@...
https://lists.opendaylight.org/mailman/listinfo/openflowjava-dev