[ONOS-2592] bgp Client bootstrap to initiate peer connection
Change-Id: I8e1a723942dca76f8bd23ed17b44cd953a19c97a
Showing
1 changed file
with
54 additions
and
12 deletions
... | @@ -24,10 +24,12 @@ import java.util.HashMap; | ... | @@ -24,10 +24,12 @@ import java.util.HashMap; |
24 | import java.util.Map; | 24 | import java.util.Map; |
25 | import java.util.concurrent.Executors; | 25 | import java.util.concurrent.Executors; |
26 | 26 | ||
27 | +import org.jboss.netty.bootstrap.ClientBootstrap; | ||
27 | import org.jboss.netty.bootstrap.ServerBootstrap; | 28 | import org.jboss.netty.bootstrap.ServerBootstrap; |
28 | import org.jboss.netty.channel.ChannelPipelineFactory; | 29 | import org.jboss.netty.channel.ChannelPipelineFactory; |
29 | import org.jboss.netty.channel.group.ChannelGroup; | 30 | import org.jboss.netty.channel.group.ChannelGroup; |
30 | import org.jboss.netty.channel.group.DefaultChannelGroup; | 31 | import org.jboss.netty.channel.group.DefaultChannelGroup; |
32 | +import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory; | ||
31 | import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory; | 33 | import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory; |
32 | import org.onosproject.bgp.controller.BGPController; | 34 | import org.onosproject.bgp.controller.BGPController; |
33 | import org.onosproject.bgpio.protocol.BGPFactories; | 35 | import org.onosproject.bgpio.protocol.BGPFactories; |
... | @@ -51,11 +53,14 @@ public class Controller { | ... | @@ -51,11 +53,14 @@ public class Controller { |
51 | // Configuration options | 53 | // Configuration options |
52 | private static final short BGP_PORT_NUM = 179; | 54 | private static final short BGP_PORT_NUM = 179; |
53 | private final int workerThreads = 16; | 55 | private final int workerThreads = 16; |
56 | + private final int peerWorkerThreads = 16; | ||
54 | 57 | ||
55 | // Start time of the controller | 58 | // Start time of the controller |
56 | private long systemStartTime; | 59 | private long systemStartTime; |
57 | 60 | ||
58 | private NioServerSocketChannelFactory serverExecFactory; | 61 | private NioServerSocketChannelFactory serverExecFactory; |
62 | + private NioClientSocketChannelFactory peerExecFactory; | ||
63 | + private static ClientBootstrap peerBootstrap; | ||
59 | private BGPController bgpController; | 64 | private BGPController bgpController; |
60 | 65 | ||
61 | // Perf. related configuration | 66 | // Perf. related configuration |
... | @@ -79,10 +84,6 @@ public class Controller { | ... | @@ -79,10 +84,6 @@ public class Controller { |
79 | return FACTORY4; | 84 | return FACTORY4; |
80 | } | 85 | } |
81 | 86 | ||
82 | - // *************** | ||
83 | - // Getters/Setters | ||
84 | - // *************** | ||
85 | - | ||
86 | /** | 87 | /** |
87 | * To get system start time. | 88 | * To get system start time. |
88 | * | 89 | * |
... | @@ -92,16 +93,20 @@ public class Controller { | ... | @@ -92,16 +93,20 @@ public class Controller { |
92 | return (this.systemStartTime); | 93 | return (this.systemStartTime); |
93 | } | 94 | } |
94 | 95 | ||
95 | - // ************** | ||
96 | - // Initialization | ||
97 | - // ************** | ||
98 | - | ||
99 | /** | 96 | /** |
100 | * Tell controller that we're ready to accept bgp peer connections. | 97 | * Tell controller that we're ready to accept bgp peer connections. |
101 | */ | 98 | */ |
102 | public void run() { | 99 | public void run() { |
103 | 100 | ||
104 | try { | 101 | try { |
102 | + | ||
103 | + peerBootstrap = createPeerBootStrap(); | ||
104 | + | ||
105 | + peerBootstrap.setOption("reuseAddr", true); | ||
106 | + peerBootstrap.setOption("child.keepAlive", true); | ||
107 | + peerBootstrap.setOption("child.tcpNoDelay", true); | ||
108 | + peerBootstrap.setOption("child.sendBufferSize", Controller.SEND_BUFFER_SIZE); | ||
109 | + | ||
105 | final ServerBootstrap bootstrap = createServerBootStrap(); | 110 | final ServerBootstrap bootstrap = createServerBootStrap(); |
106 | 111 | ||
107 | bootstrap.setOption("reuseAddr", true); | 112 | bootstrap.setOption("reuseAddr", true); |
... | @@ -143,6 +148,36 @@ public class Controller { | ... | @@ -143,6 +148,36 @@ public class Controller { |
143 | } | 148 | } |
144 | 149 | ||
145 | /** | 150 | /** |
151 | + * Creates peer boot strap. | ||
152 | + * | ||
153 | + * @return ClientBootstrap | ||
154 | + */ | ||
155 | + private ClientBootstrap createPeerBootStrap() { | ||
156 | + | ||
157 | + if (peerWorkerThreads == 0) { | ||
158 | + peerExecFactory = new NioClientSocketChannelFactory( | ||
159 | + Executors.newCachedThreadPool(groupedThreads("onos/bgp", "boss-%d")), | ||
160 | + Executors.newCachedThreadPool(groupedThreads("onos/bgp", "worker-%d"))); | ||
161 | + return new ClientBootstrap(peerExecFactory); | ||
162 | + } else { | ||
163 | + peerExecFactory = new NioClientSocketChannelFactory( | ||
164 | + Executors.newCachedThreadPool(groupedThreads("onos/bgp", "boss-%d")), | ||
165 | + Executors.newCachedThreadPool(groupedThreads("onos/bgp", "worker-%d")), | ||
166 | + peerWorkerThreads); | ||
167 | + return new ClientBootstrap(peerExecFactory); | ||
168 | + } | ||
169 | + } | ||
170 | + | ||
171 | + /** | ||
172 | + * Gets peer bootstrap. | ||
173 | + * | ||
174 | + * @return peer bootstrap | ||
175 | + */ | ||
176 | + public static ClientBootstrap peerBootstrap() { | ||
177 | + return peerBootstrap; | ||
178 | + } | ||
179 | + | ||
180 | + /** | ||
146 | * Initialize internal data structures. | 181 | * Initialize internal data structures. |
147 | */ | 182 | */ |
148 | public void init() { | 183 | public void init() { |
... | @@ -151,10 +186,11 @@ public class Controller { | ... | @@ -151,10 +186,11 @@ public class Controller { |
151 | this.systemStartTime = System.currentTimeMillis(); | 186 | this.systemStartTime = System.currentTimeMillis(); |
152 | } | 187 | } |
153 | 188 | ||
154 | - // ************** | 189 | + /** |
155 | - // Utility methods | 190 | + * Gets run time memory. |
156 | - // ************** | 191 | + * |
157 | - | 192 | + * @return m run time memory |
193 | + */ | ||
158 | public Map<String, Long> getMemory() { | 194 | public Map<String, Long> getMemory() { |
159 | Map<String, Long> m = new HashMap<>(); | 195 | Map<String, Long> m = new HashMap<>(); |
160 | Runtime runtime = Runtime.getRuntime(); | 196 | Runtime runtime = Runtime.getRuntime(); |
... | @@ -163,6 +199,11 @@ public class Controller { | ... | @@ -163,6 +199,11 @@ public class Controller { |
163 | return m; | 199 | return m; |
164 | } | 200 | } |
165 | 201 | ||
202 | + /** | ||
203 | + * Gets UP time. | ||
204 | + * | ||
205 | + * @return UP time | ||
206 | + */ | ||
166 | public Long getUptime() { | 207 | public Long getUptime() { |
167 | RuntimeMXBean rb = ManagementFactory.getRuntimeMXBean(); | 208 | RuntimeMXBean rb = ManagementFactory.getRuntimeMXBean(); |
168 | return rb.getUptime(); | 209 | return rb.getUptime(); |
... | @@ -183,6 +224,7 @@ public class Controller { | ... | @@ -183,6 +224,7 @@ public class Controller { |
183 | public void stop() { | 224 | public void stop() { |
184 | log.info("Stopped"); | 225 | log.info("Stopped"); |
185 | serverExecFactory.shutdown(); | 226 | serverExecFactory.shutdown(); |
227 | + peerExecFactory.shutdown(); | ||
186 | cg.close(); | 228 | cg.close(); |
187 | } | 229 | } |
188 | 230 | ... | ... |
-
Please register or login to post a comment