Commit Graph

368 Commits

Author SHA1 Message Date
Simon Lin 050129a819 [virtual-time-simulator] optimize ACK radio events (#5559)
This commit optimizes Virtual Time Simulator by only sending ACK to
nodes that are expecting it.
2020-10-30 12:28:39 -07:00
Simon Lin 903f677215 [dua] implement Backbone query and answer (#5664)
This commit implements DUA features of Thread 1.2 DUA that involves
sending and processing Backbone query and answer:

- Extend address query to the Backbone Link
  - Send BB.qry for Thread address query
  - Send ADDR_ANS.ntf for BB.ans
- DAD process
  - PBBR to send BB.qry on the Backbone link (3 times if not answered)
  - PBBR to receive and handle BB.qry and sends BB.ans
  - PBBR to receive BB.ans and sends ADDR_ERR.ntf if duplicated
- PRO_BB.ntf
  - Send PRO_BB.ntf when DUA registration is updated
  - Handle PRO_BB.ntf
- Add test_dua_dad.py to test the DAD process when it was successful
  or duplicated
  - Verify the normal DAD process
  - Verify Address Query can be extended to the Backbone link
  - Verify DAD duplicate is handled correctly
  - Verify PRO_BB.ntf for duplicated DUA is handled correctly
2020-10-30 11:18:05 -07:00
Li Cao 42fb2e44be [low-power] implement forward tracking series (#5608)
This commit implements the Forward Tracking Series feature in Link Metrics.

- Two new apis are added:
  - otLinkMetricsSendMgmtRequestForwardTrackingSeries, which is used
    to send an MLE Link Metrics Management Request
  - otLinkMetricsSendLinkProbe, which is used to send an MLE Link Probe

- A new class LinkMetricsSeriesInfo is used to maintain the data of
  one Series configured by a neighbor. This class inherits
  LinkedListEntry and each Neighbor has a list of
  LinkMetricsSeriesInfo. All LinkedListEntrys are allocated and freed
  by a Pool in LinkMetrics.

- To specify SeriesFlags in cli command for Forward Tracking Series, a
  similar approach with LinkMetricsFlags is used. Another character
  flags is used to represent SeriesFlags.

- Whenever the node receives a frame (including ACK) from a neighbor,
  it would call Neighbor::AggregateLinkMetrics which goes through each
  LinkMetricsSeriesInfo entry in the neighbor's list and aggregate the
  data if the frame type matches the entry.

- Two test scripts are added to test this function:
  - v1_2_LowPower_7_2_01_ForwardTrackingSeries.py
  - v1_2_LowPower_test_forward_tracking_series.py
2020-10-29 20:04:39 -07:00
Yakun Xu 0603ed1c14 [test] verify realm-local multicast on POSIX (#5738) 2020-10-29 10:37:51 -07:00
Moandor 713662bf80 [continuous-integration] use lcov to generate coverage data (#5635) 2020-10-29 08:34:37 -07:00
Jing Ma 305bdd8897 [thread-cert] refactor case 5.1.3 using pktverify (#5708) 2020-10-28 08:41:05 -07:00
Jing Ma 3e776b0c46 [thread-cert] refactor case 5.1.2 using pktverify (#5686) 2020-10-27 22:58:20 -07:00
Simon Lin 8707b63894 [scripts] add MLR Backbone multicast routing test (#5578)
- backbone/test_mlr_multicast_routing.py verifies the basic features
  of Backbone multicast routing

- backbone/test_mlr_multicast_routing_timeout.py verifies that MLR
  timeout works

- backbone/test_mlr_multicast_routing_commissioner_timeout.py verifies
  that Commissioner MLR timeout works
2020-10-26 22:46:48 -07:00
Jing Ma 7b18147e03 [thread-cert] refactor case 5.1.1 using pktverify (#5680) 2020-10-26 08:16:51 -07:00
Simon Lin f192c6dd00 [posix] fix MLE sends ICMPv6 destination unreachable (#5585) 2020-10-23 11:07:34 -07:00
Simon Lin e00e5b3d70 [backbone-router] backbone TMF enhancements (#5660)
This commit enhances Backbone TMF:

- Subscribe Backbone TMF on multicast addresses on the Backbone
  interface
  - All Network BBRs Multicast Address
  - All Domain BBRs Multicast Address

- Thread Netif no longer subscribe these two addresses, because BBR
  Multicast Addresses are only defined for the Backbone Link in Thread
  Spec 9.4.8.1

- Make sure backbone messages are using link local src addresses
  - Verify src addr for b/bmr messages
2020-10-23 08:48:54 -07:00
Yakun Xu ff76aac3db [cli] add energy scan channel (#5677) 2020-10-21 12:17:28 -07:00
Simon Lin 913037b508 [simulation] add configuration MAX_NETWORK_SIZE (#5565)
Currently, the WELLKNOWN_NODE_ID = 34 is not properly defined.

- In virtual time simulation, WELLKNOWN_NODE_ID limits the number of
  ports each PORT_OFFSET can occupy. The virtual time simulator
  listens at the nodeid=0 port rather than nodeid=34 port. So, there
  is no such thing as wellknown node ID in virtual time simulation.

- In real time simulation, the sniffer listens at the nodeid=34
  port. This PR changes it to nodeid=0 port to be consistent with
  other parts.

- In posix virtual time, the simulator listens at the nodeid=0
  port. So, there is no such thing as wellknown node ID in Posix
  virtual time.

This commit changes it to MAX_NETWORK_SIZE = 33 and make it
(configuration OPENTHREAD_SIMULATION_MAX_NETWORK_SIZE) configurable in
simulation by:

- Makefile configuration: MAX_NETWORK_SIZE
- Cmake configuration: OT_SIMULATION_MAX_NETWORK_SIZE
2020-10-16 10:57:03 -07:00
Jing Ma c2903713a1 [thread-cert] refactor case 9.2.12 and 9.2.13 using pktverify (#5442) 2020-10-14 12:23:55 -07:00
Jing Ma 690ddbf881 [thread-cert] enhance case 5.6.7 for data version increment (#5643) 2020-10-13 22:40:57 -07:00
Jintao Lin eee652cc9e [cli] add command to set/get external FEM's LNA gain (#5563) 2020-10-13 08:12:14 -07:00
Yakun Xu d0d2b71af3 [ip6] no anycast as source address (#5632)
- Check source address of packets from users
- Determine anycast address by MLE API for accuracy
- Replace anycast address with a valid unicast address when sending
  with platform UDP in UDP layer
- Replace anycast address with a valid unicast address in IP layer
2020-10-13 08:10:29 -07:00
Yakun Xu 9e3b450218 [expect] refactor common functions (#5634)
* unify node creating and destroying
* simplify switching between nodes
2020-10-12 08:21:48 -07:00
Simon Lin 8642f998cc [thread-cert] set node addr64 to EXTENDED_ADDRESS_BASE + nodeid (#5601)
This commit sets nodes' extaddrs to 0x166e0a0000000000 + nodeid, which
does not change node behavior but makes it easier for us to analyze
pcaps.
2020-10-11 23:02:29 -07:00
Jing Ma f01f4d96a3 [thread-cert] refactor case 9.2.7 using pktverify (#5459) 2020-10-11 16:26:13 -07:00
Jing Ma d2d4df6260 [thread-cert] refactor case 5.5.3 using pktverify (#5448) 2020-10-11 16:25:32 -07:00
Rongli Sun d5cc6edc2c [tests] init joiner with different masterkey before start (#5626)
For 8.x.x, there is validation that joiner has the same keys as the
commissioner after commissioning, it should be configured with a
different master key before start commissioning.
2020-10-11 11:09:40 -07:00
Jing Ma 1f10fe814f [thread-cert] enhance case 9.2.4 to avoid reverifying coap retransmission packets (#5614)
Replace must_verify with filter to avoid possible verification of coap
retransmission packets which could cause filter incorrect packets.
2020-10-11 10:47:07 -07:00
Li Cao a4368909ff [low-power] add cli command macsend for certification (#5573)
This command allows an Rx-Off-When-Idle device to send an empty mac
data frame or mac datarequest to its parent. This command is only used
for certification.
2020-10-11 10:46:20 -07:00
Li Cao fa57212b82 [cli] add cli command to control child supervision (#5620) 2020-10-09 08:36:39 -07:00
Simon Lin 809947e1f9 [mlr] send BMLR.ntf on Backbone link (#5388)
This commit enhances Backbone Router to send BMLR.ntf on the backbone
link for Multicast Listeners.
- Send BMLR.ntf to the Backbone link
- Add Backbone test with packet verification
- Includes some revision to the Thread 1.2 Backbone CI scripts to make
  it more stable
2020-09-29 22:37:33 -07:00
Jing Ma aa6abe1535 [thread-cert] enhance case 9.2.18 for SED packet order (#5584)
Copy the pkt to verify Step 13 and Step 14 SED packets since the
packets could be in front of the packet in Step 12.
2020-09-29 22:36:16 -07:00
Jing Ma 01d17c609b [thread-cert] enhance case 9.2.10 for MED packets order (#5598) 2020-09-29 19:47:41 -07:00
Jing Ma 318b688539 [thread-cert] enhance case 5.6.6 for potential SED packet out-of-order (#5597) 2020-09-29 19:47:10 -07:00
Jing Ma 68673aa52c [thread-cert] enhance case 9.2.4 (#5590)
Extend the mgmt set simulation execution and waiting time for
potential miss-catching packets.
2020-09-29 19:46:21 -07:00
Jonathan Hui dc9b032dad [mle] remove secure data request mode bit (#5560)
- Always set to 1 on transmission.
- Always ignore on reception.
2020-09-29 15:30:37 -07:00
Simon Lin 81996b0f3b [dua] handle coap error code for DUA.rsp (#5523)
- Configure next response to 5.00 for Reference Device
- Handle 5.00 (and other COAP error codes) in DUA.rsp (required by 1.2
  Test Spec)
- Update DUA test to handle COAP code 5.00
2020-09-27 22:30:15 -07:00
Simon Lin 6c6d5f6179 [scripts] fix test_route_table.py fails by chance (#5580) 2020-09-27 18:47:49 -07:00
Simon Lin fad92841e7 [dua] handle AddressError (#5516)
This commit enhances DUA feature to handle Address Error by increasing
the DAD counter and generating new DUA address if a DUA conflict is
detected.
2020-09-27 11:32:33 -07:00
Simon Lin f013a30409 [pktverify] verify offline test info (#5525)
This commit allows running packet verification on a test info (.json)
directly without running the test procedure, which can be helpful for
developing and debugging packet verification code.
2020-09-27 11:22:49 -07:00
Simon Lin efccfe2252 [scripts] fix test_route_table.py (#5558) 2020-09-26 20:22:50 -07:00
Li Cao dc94758e84 [low-power] implement link metrics - single probe (#5481)
This commit is the first part in link metrics. It implements single
probe function.

An overview of major changes:
- Add link metrics apis which allow apps to send a single probe and
  set report callback.
- Add cli commands for calling link metrics api and related README
  doc.
- Add a new module link_metrics to implement the query process and
  handle the report.
- Add related tlv types.
- Add simple script test to run single probe process.
2020-09-25 09:50:09 -07:00
Simon Lin 81b71a2d27 [github-actions] fix thread-wireshark missing (#5577) 2020-09-25 06:51:09 -07:00
Simon Lin cd80f94a81 [reference-device] send fake ADDR_NTF.ntf (#5537) 2020-09-24 20:31:25 -07:00
Simon Lin ce336257ee [thread-cert] Thread 1.2 CI with OTBR and Backbone link (#5489)
Thread 1.2 CI with OTBR and Backbone link:
- Run OTBR in Dockers with Backbone link
- Enhance node.py to work with OTBR Docker
- Add Packet Verification for 5.11.1
  - incomplete, some steps can not pass yet, just to make sure
    Backbone traffic verification works
- Support running multiple tests simultaneously (default: each test
  run 3 instances)
- Build OTBR Docker using OpenThread PR code
- Upload code coverage in Docker

Some implementation details:
- Most existing code of node.py is shared by OTBR Docker
- Backbone related test scripts are found in
  tests/scripts/thread-cert/backbone
- A new script tests/scripts/thread-cert/run_bbr_tests.py is added to
  manage multiple running tests
- Test configuration differs according to PORT_OFFSET
  - Backbone interface name: Backbone{PORT_OFFSET}
  - Backbone network prefix: 91{PORT_OFFSET:02x}::/64
  - Docker instance name: otbr_{PORT_OFFSET}_{nodeid}
  - Output Files:
    - Pcap:
      - Thread: {test_name}_{PORT_OFFSET}.pcap
      - Backbone: {test_name}_{PORT_OFFSET}_backbone.pcap
      - Merged: {test_name}_{PORT_OFFSET}_merged.pcap
    - Log: {test_name}_{PORT_OFFSET}.log
2020-09-24 20:16:27 -07:00
Simon Lin 2daa097bb4 [github-actions] run Thread 1.1 cert tests for 1.2 build (#5547)
This commit runs Thread 1.1 certification tests with packet
verification for 1.2 build because Thread 1.2 certified devices are
supposed to be able to pass Thread 1.1 certification first.

Note: changes to test TOPOLOGY:
- Original: nodes use version=1.1 by default
- Now: nodes use version according to ENV, except explicitly specified
2020-09-24 19:13:30 -07:00
Li Cao f77c5d4653 [thread-cert] add low power case 6_1_07 (#5557) 2020-09-23 08:33:50 -07:00
Jing Ma f787275eee [thread-cert] refactor case 9.2.4 using pktverify (#5412)
1. add timestamp parse and check
2. add leader aloc parse and check
2020-09-22 09:41:39 -07:00
Simon Lin 1d8e4da7f7 [ot-ctl] auto reconnect session (#5466)
- ot-ctl automatically reconnect session when disconnected
- add test for reset/factoryreset
2020-09-21 19:44:50 -07:00
Jonathan Hui 0683f78e17 [cli] service and server data as hex-encoded binary values (#5556) 2020-09-21 08:46:50 -07:00
Diego Ismirlian f974f38155 [cli] implement setting/getting cca threshold (#5532)
This commit adds a command to the CLI to be able to set (and get) the
CCA threshold. This is useful when there is a LNA in the radio's RX
path.
2020-09-21 08:46:19 -07:00
Moandor e7e84b6ae7 [cli] add api version command (#5544)
This adds a CLI command to get the API version number.
2020-09-21 08:38:33 -07:00
Jonathan Hui 0d8a99bd05 [cli] implement network data print (#5543)
- Print human-readable network data.
- Create network data sub-command.
2020-09-19 10:28:17 -07:00
Jonathan Hui 42d76a0a4e [cli] change 'binary' arg to '-x' for consistency (#5543) (#5549) 2020-09-19 08:53:34 -07:00
Li Cao 500337bc63 [low-power] fix csl channel (#5501)
If CSL Channel is never specified, the actual CSL channel should
always be the phy channel that the device is using. If CSL Channel
hasn't been specified and radio channel changes, the actual CSL
channel should also change. In current implementation, CSL Channel is
by default a valid value (not specified by upper layer) and wouldn't
change when radio channel changes even if it's never specified.

This commit fixes this issue. On CSL receiver, a bit is extracted from
mCslChannel to be used as a flag mIsCslChannelSpecified. If it is
false, mCslChannel would keep synchronized to the value of
mRadioChannel in Mac and Csl Channel TLV wouldn't be appended in Child
Update Request to its parent. On CSL transmitter, CSL channel info in
child is allowed to be 0. If it's 0, the channel info in frame would
be set using Mac::GetPanChannel.
2020-09-16 22:15:37 -07:00