Hello,
We observed that NSO synchronization (netconf) could be very long for devices with more than 20Mb of configuration (15minutes for a sync-from and 5 minutes for a partial-sync over junos:configration/firewall). We have made some tests in three differents environments. Did anyone observed the same behaviour ?
We went deeper in this analysis. Let's take a junos netconf device with 10Mb of configuration.
For a sync-from, here is the RPC send by NSO, logs netconf taken directly on the device:
NSO is doing 4 rpc: a show conf version, show version, show conf and finally show conf version. 90% of the sync from is spend on rpc get-config.
Jun 3 14:00:24 # start netconf exchange
Jun 3 14:00:24 [NETCONF] - [80917] Incoming: <?xml version="1.0" encoding="UTF-8"?>
<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<capabilities><capability>urn:ietf:params:netconf:base:1.0</capability><capability>urn:ietf:params:netconf:base:1.1</capability></capabilities>
</hello>]]>]]>
Jun 3 14:00:24 # 2 RPC, get-config of version then "show version"
Jun 3 14:00:24 [NETCONF] - [80917] Incoming: <?xml version="1.0" encoding="UTF-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1">
<get-config xmlns:nc='urn:ietf:params:xml:ns:netconf:base:1.0'><source><running/></source><filter><configuration><version/></configuration></filter></get-config></rpc>]]>]]><?xml version="1.0" encoding="UTF-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="2">
<get-software-information xmlns='http://xml.juniper.net/xnm/1.1/xnm'><brief/></get-software-information></rpc>]]>]]>
[…]
Jun 3 14:00:25 # end of get-software-information
Jun 3 14:00:27 # 2 secondes later rpc-request get-config global
Jun 3 14:00:27 [NETCONF] - [80917] Incoming: <?xml version="1.0" encoding="UTF-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="3">
<get-config><source><running/></source><filter><configuration xmlns="http://xml.juniper.net/xnm/1.1/xnm"></configuration></filter></get-config></rpc>]]>]]>
[…]
Jun 3 14:05:24 # end: 5 minutes.
Jun 3 14:05:24 ### NSO ask for a show conf version
Jun 3 14:05:25 [NETCONF] - [80917] Incoming: <?xml version="1.0" encoding="UTF-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="4">
<get-config xmlns:nc='urn:ietf:params:xml:ns:netconf:base:1.0'><source><running/></source><filter><configuration><version/></configuration></filter></get-config></rpc>]]>]]>
Jun 3 14:05:56 ## end of session
Jun 3 14:05:56 [NETCONF] - [80917] Incoming: <?xml version="1.0" encoding="UTF-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="5">
<close-session/></rpc>]]>]]>
So nearly 80% of the sync from is spent on the device :S Hence, we decided to perform the same rpc manualy with ssh ip -p 830 -s netconf.
Device: junos 17.4R2 mx
Times:
platforme A manual netconf: 1minute 20s.
platforme B manual netconf: 1minute26s
platforme C manual netconf: 1minute 29s
platforme A nso sync from: 5minutes.
platforme B nso sync from: 5minutes 5s
Thanks.