1 << [[PacketCablePCMM:Main | Main]]
3 [[Project_Proposals:PacketCablePCMM| Project Proposal]] >>
5 [[Project_Proposals:PacketCablePCMM|Release_Plan_Helium]] >>
8 =Developer and Testing (*Preliminary*)=
11 [http://www.cablelabs.com/wp-content/uploads/specdocs/PKT-SP-MM-I05-091029.pdf PacketCable™ Specification Multimedia Specification PKT-SP-MM-I05-091029]
12 == Current Bug List ==
13 [https://bugs.opendaylight.org/buglist.cgi?bug_status=__open__&content=packetcable List bugs]
16 These components introduce a DOCSIS QoS Service Flow management using the PCMM protocol. The driver component is responsible for the PCMM/COPS/PDP functionality required to service requests from PacketCable Provider and FlowManager. Requests are transposed into PCMM Gate Control messages and transmitted via COPS to the CMTS. This plugin adheres to the PCMM/COPS/PDP functionality defined in the CableLabs specification. PacketCable solution is an MDSAL compliant component.
18 [[File:Screenshot6.png]]
20 == Packetcable Components ==
21 packetcable is comprised of three OpendayLight bundles
25 ! Bundle !! Description
27 | packetcable-model || Contains the YANG information model for flows and nodes
29 | packetcable-provider || Provider hosts the model processing, RESTCONF, API implmentation, and brokers requests to driver
31 | packetcable-driver || The codec for transforming the model into the appropriate PCMM Gate message for flows and CMTS connections.
34 [[File:Screenshot7.png]]
36 See [https://git.opendaylight.org/gerrit/gitweb?p=packetcable.git;a=tree;f=packetcable-model/src/main/yang YANG Model]
38 == Download and Install ==
40 Current instructions pertain to RC0
43 [http://nexus.opendaylight.org/content/groups/staging/org/opendaylight/integration/distribution-karaf/0.2.0-Helium-RC0/distribution-karaf-0.2.0-Helium-RC0.zip Download RC0]
47 unzip distribution-karaf-0.2.0-Helium-RC0.zip
50 === Clean out the local .m2 ===
52 Karaf can mistakenly pick up artifacts from your local .m2, so
54 rm -rf ~/.m2/repository/org/opendaylight
59 cd distribution-karaf-0.2.0-Helium-RC0/bin/
65 === What features should we install? ===
68 opendaylight-user@root>feature:install odl-l2switch-switch odl-restconf odl-mdsal-broker odl-restconf odl-adsal-all odl-openflowplugin-flow-services odl-openflowjava-protocol odl-ovsdb-all odl-openflow-nxm-extensions odl-adsal-compatibility odl-dlux-core odl-packetcable-all odl-mdsal-apidocs odl-mdsal-xsql
71 === How is ODL auto starting a series of bundles using Karaf? ===
73 Edit etc/org.apache.karaf.features.cfg ‘featuresBoot'
76 # Comma separated list of features to install at startup
78 featuresBoot=config,standard,region,package,kar,ssh,management,odl-l2switch-switch,odl-restconf,odl-mdsal-broker,odl-restconf,odl-adsal-all,odl-openflowplugin-flow-services,odl-openflowjava-protocol,odl-ovsdb-all,odl-openflow-nxm-extensions,odl-adsal-compatibility,,odl-dlux-core,odl-packetcable-all,odl-mdsal-apidocs,odl-mdsal-xsql
82 === How can I create a system service to start Karaf? ===
84 Install http://karaf.apache.org/manual/latest/users-guide/wrapper.html
86 opendaylight-user@root>feature:install service-wrapper
87 opendaylight-user@root>wrapper:install --help
91 Install the container as a system service in the OS.
94 wrapper:install [options]
98 The display name of the service.
101 Display this help message
103 Mode in which the service is installed. AUTO_START or DEMAND_START (Default: AUTO_START)
104 (defaults to AUTO_START)
106 The service name that will be used when installing the service. (Default: karaf)
109 The description of the service.
112 opendaylight-user@root> wrapper:install
113 Creating file: /home/user/odl/distribution-karaf-0.2.0-Helium-RC0/bin/karaf-wrapper
114 Creating file: /home/user/odl/distribution-karaf-0.2.0-Helium-RC0/bin/karaf-service
115 Creating file: /home/user/odl/distribution-karaf-0.2.0-Helium-RC0/etc/karaf-wrapper.conf
116 Creating file: /home/user/odl/distribution-karaf-0.2.0-Helium-RC0/lib/libwrapper.so
117 Creating file: /home/user/odl/distribution-karaf-0.2.0-Helium-RC0/lib/karaf-wrapper.jar
118 Creating file: /home/user/odl/distribution-karaf-0.2.0-Helium-RC0/lib/karaf-wrapper-main.jar
120 Setup complete. You may wish to tweak the JVM properties in the wrapper configuration file:
121 /home/user/odl/distribution-karaf-0.2.0-Helium-RC0/etc/karaf-wrapper.conf
122 before installing and starting the service.
125 Ubuntu/Debian Linux system detected:
126 To install the service:
127 $ ln -s /home/user/odl/distribution-karaf-0.2.0-Helium-RC0/bin/karaf-service /etc/init.d/
129 To start the service when the machine is rebooted:
130 $ update-rc.d karaf-service defaults
132 To disable starting the service when the machine is rebooted:
133 $ update-rc.d -f karaf-service remove
135 To start the service:
136 $ /etc/init.d/karaf-service start
139 $ /etc/init.d/karaf-service stop
141 To uninstall the service :
142 $ rm /etc/init.d/karaf-service
148 == Accessing User Interface Assets ==
152 http://localhost:8181/dlux/index.html
156 [[File:Screenshot4.png||Dlux Login]]
160 [[File:Screenshot3.png|500x600px||Dlux Flows]]
164 [[File:Screenshot2.png|500x600px||Dlux Nodes]]
166 === Explore and exercise the PacketCable REST API ===
167 http://localhost:8181/apidoc/explorer/index.html
169 [[ #RESTCONF_API_Explorer | See Explorer ]]
171 == How do I get external access to UI assets? ==
173 TODO: Short answer is you don't.
175 Using Ubuntu 14.04LTS, install haproxy
178 sudo apt-get install haproxy
181 Ensure haproxy is enabled.
184 cat /etc/default/haproxy
185 # Set ENABLED to 1 if you want the init script to start haproxy.
187 # Add extra flags here.
188 #EXTRAOPTS="-de -m 16"
191 Add configuration to /etc/haproxy/haproxy.cfg to proxy from port 8191 to localhost:8181
200 server www1 127.0.0.1:8181
205 sudo /etc/init.d/haproxy stop
206 sudo /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -VVVV -db
211 sudo /etc/init.d/haproxy restart
212 sudo /etc/init.d/haproxy status
215 == Tools for Testing ==
217 === RESTCONF API Explorer ===
219 http://localhost:8181/apidoc/explorer/index.html
221 Add a CMTS to Opendaylight Inventory
223 [[File:Screenshot1.png|Add CMTS using RESTCONF Explorer]]
228 [https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm?hl=en Configure the Chrome browser]
230 [https://git.opendaylight.org/gerrit/gitweb?p=packetcable.git;a=tree;f=packetcable-client Download and import sample packetcable collection]
233 [[File:Screenshot5.png|Postman]]
235 === Custom Testsuite ===
237 Most of the [https://wiki.opendaylight.org/view/OpenDaylight_OpenFlow_Plugin::Python_test_scripts Openflow tests for RESTCONF] can be adapted for PCMM and service flow testing. [https://git.opendaylight.org/gerrit/gitweb?p=packetcable.git;a=tree;f=packetcable-client Browse this folder] for WIP of tests and examples used for minimum acceptance testing.
239 ==== restconfapi.py ====
241 Scripted series of packetcable actions testing minimum compliance.
251 Other flows can be formulated and added to create a regression test of what kind of flows are interesting for use cases. Multicast?
253 ==== flow_config_perf_pcmm.py ====
255 For load testing there is this nice tool that could be repurpose to load test a CMTS. TODO: Adapt this script for load testing PCMM on a CMTS.
259 [https://github.com/xored/yang-ide/wiki/Setup-and-build Setup and Build Yang-IDE for Eclipse]
262 == Using Wireshark to Trace PCMM ==
264 # To start wireshark with privileges issue the following command: <pre>sudo wireshark &</pre>
265 # Select the interface to monitor.
266 # Use the Filter to only display COPS messages by applying “cops” in the filter field.
268 [[File:Screenshot8.png]]
270 == Debugging and Verifying DQoS Gate (Flows) on the CMTS ==
272 [http://books.google.com/books?id=zNnCLUa8CHQC&pg=PA701&lpg=PA701&dq=show+packetcable+gate This book] serves as a good reference. Below are some of the most useful CMTS commands to verify flows have been enabled on the CMTS.
276 [http://www.cisco.com/c/en/us/td/docs/cable/cmts/cmd_ref/b_cmts_cable_cmd_ref.pdf Cisco CMTS Cable Command Reference]
278 === Find the Cable Modem ===
281 10k2-DSG#show cable modem
283 MAC Address IP Address I/F MAC Prim RxPwr Timing Num I
284 State Sid (dBmv) Offset CPE P
285 0010.188a.faf6 0.0.0.0 C8/0/0/U0 offline 1 0.00 1482 0 N
286 74ae.7600.01f3 10.32.115.150 C8/0/10/U0 online 1 -0.50 1431 0 Y
287 0010.188a.fad8 10.32.115.142 C8/0/10/UB w-online 2 -0.50 1507 1 Y
288 000e.0900.00dd 10.32.115.143 C8/0/10/UB w-online 3 1.00 1677 0 Y
289 e86d.5271.304f 10.32.115.168 C8/0/10/UB w-online 6 -0.50 1419 1 Y
292 === Show PCMM Plugin Connection ===
295 10k2-DSG#show packetcabl ?
296 cms Gate Controllers connected to this PacketCable client
297 event Event message server information
298 gate PacketCable gate information
299 global PacketCable global information
301 10k2-DSG#show packetcable cms
302 GC-Addr GC-Port Client-Addr COPS-handle Version PSID Key PDD-Cfg
305 10k2-DSG#show packetcable cms
306 GC-Addr GC-Port Client-Addr COPS-handle Version PSID Key PDD-Cfg
307 10.32.0.240 54238 10.32.15.3 0x4B9C8150/1 4.0 0 0 0
310 === Show COPS Messages ===
312 <pre>debug cops details</pre>
314 === Use CM Mac Address to List Service Flows ===
317 10k2-DSG#show cable modem
319 MAC Address IP Address I/F MAC Prim RxPwr Timing Num I
320 State Sid (dBmv) Offset CPE P
321 0010.188a.faf6 --- C8/0/0/UB w-online 1 0.50 1480 1 N
322 74ae.7600.01f3 10.32.115.150 C8/0/10/U0 online 1 -0.50 1431 0 Y
323 0010.188a.fad8 10.32.115.142 C8/0/10/UB w-online 2 -0.50 1507 1 Y
324 000e.0900.00dd 10.32.115.143 C8/0/10/UB w-online 3 0.00 1677 0 Y
325 e86d.5271.304f 10.32.115.168 C8/0/10/UB w-online 6 -0.50 1419 1 Y
328 10k2-DSG#show cable modem 000e.0900.00dd service-flow
332 MAC Address IP Address Host MAC Prim Num Primary DS
333 Interface State Sid CPE Downstream RfId
334 000e.0900.00dd 10.32.115.143 C8/0/10/UB w-online 3 0 Mo8/0/2:1 2353
337 Sfid Dir Curr Sid Sched Prio MaxSusRate MaxBrst MinRsvRate Throughput
339 23 US act 3 BE 0 0 3044 0 39
340 30 US act 16 BE 0 500000 3044 0 0
341 24 DS act N/A N/A 0 0 3044 0 17
345 UPSTREAM SERVICE FLOW DETAIL:
347 SFID SID Requests Polls Grants Delayed Dropped Packets
349 23 3 784 0 784 0 0 784
353 DOWNSTREAM SERVICE FLOW DETAIL:
355 SFID RP_SFID QID Flg Policer Scheduler FrwdIF
356 Xmits Drops Xmits Drops
357 24 33019 131550 0 0 777 0 Wi8/0/2:2
360 $: Low Latency Queue (aggregated)
364 === Deleting a PCMM Gate Message from the CMTS ===
366 <pre>10k2-DSG#test cable dsd 000e.0900.00dd 30</pre>
368 === Find service flows ===
369 All gate controllers currently connected to the PacketCable client are displayed
371 show cable modem 00:11:22:33:44:55 service flow ????
376 === Debug and display PCMM Gate messages ===
378 debug packetcable gate control
379 debug packetcable gate events
380 show packetcable gate summary
381 show packetcable global
385 === Debug COPS messages ===
388 debug packetcable cops
389 debug cable dynamic_qos trace