Juniper Apstra software product version 5.1.0 is available to licensed, registered Juniper customers from the Juniper Apstra software download site.Documentation for Juniper Apstra 5.1.0 is available from the Juniper Apstra documentation site.
N/A
Tech Previews give you the ability to test functionality and provide feedback during the development process of innovations that are not final production features. The goal of a Tech Preview is for the feature to gain wider exposure and potential full support in a future release. Customers are encouraged to provide feedback and functionality suggestions for a Technology Preview feature before it becomes fully supported.
Tech Previews may not be functionally complete, may have functional alterations in future releases, or may get dropped under changing markets or unexpected conditions, at Juniper’s sole discretion. Juniper recommends that you use Tech Preview features in non-production environments only.
Juniper considers feedback to add and improve future iterations of the general availability of the innovations. Your feedback does not assert any intellectual property claim, and Juniper may implement your feedback without violating your or any other party's rights.
These features are "as is" and voluntary use. Support Services will attempt to resolve any issues that customers experience when using these features and create bug reports on behalf of support cases. However, Juniper may not provide comprehensive support services to Tech Preview features. Certain features may have reduced or modified security, accessibility, availability, and reliability standards relative to General Availability software. Tech Preview is not supported under existing service agreements, SLAs, or support service.
For additional details, please contact Juniper Support or your local account team.
/var/tmp/show_tech_tmp
/* */
#
<? include "filehere" ?>
RFE-3447
"show chassis beacon"
"GREEN"
"request chassis beacon"
File "/usr/local/lib/python3.10/dist-packages/lollipop/errors.py", line 182, in raise_errors raise ValidationError(self.errors) lollipop.errors.ValidationError: Invalid data: {'key': 'Unable to identify "key" from schema'}
leaf2# show vrf vrf Vrf-PURPLE inactive vrf Vrf-blue id 120 table 1001 (configured) vrf Vrf-red id 122 table 1002 (configured) vrf mgmt id 47 table 5000
>= 23. 4R3-S3
>=22. 3R2-S2
/interfaces/interface/subinterfaces/subinterface/state/admin-status
"System {system} OS Family {os_family} with ASIC {asic} does not support subinterfaces due to hardware constraints. This error can be relaxed within validation policy in the event of a vendor-supplied OS update adding support."
Unique Index (PrimaryKeyIndex) violation newRow index matches that at row: 65536 python3.10: /Project/leblon/infra/TableTop.tin:206: void Aos::DoubleLinkListHelper::addToList(Aos::RowIndexHelper&, U32): Assertion `false && "!row"' failed. Process 22875 died with signal 6 (SIGABRT) errno 0 code -6 (unknown)
Failure 1: Task Stage creation of Configlet for password change may fail with: AssertionError: Timeout waiting for Wait that last task status is succeeded Failure 2: Task Check System agent status may fail with: 409 Conflict: Agent is already running a job (check)
1. For System Agent Check Failure (409 Conflict): * Update the pristine configuration to reflect the new encrypted password for the user. * Remove the temporary configlets named `change_pass_<...>_junos`. * Manually commit the blueprint. * Re-run agent check jobs to confirm the password update. 2. For Background Task Timeout (e.g., Configlet Staging Failure): * Revert the blueprint to the previous working version.
Important Note: 1. This issue is applicable only to customers upgrading from Apstra 4.1.x to 4.2.x or later, where Fabric MTU remains disabled post-upgrade and customers who wish to continue without enabling the Granular MTU feature. 2. This issue is not applicable to customers with fresh 4.2.x deployments, where Fabric MTU is enabled by default, activating the Granular MTU feature.
1. Navigate to Platform → Developers → REST API Explorer. 2. Use the PATCH /api/blueprints/{blueprint_id}/fabric-settings endpoint with the following payload: { "external_router_mtu": 9216 } 3. Verify the update by performing a GET on the same endpoint: GET /api/blueprints/{blueprint_id}/fabric-settings 4. Navigate to Blueprints → Blueprint Name → Uncommited and check the diff 5. Commit the Blueprint
{ "key":"dashboard", "value": {} }
admin@aos-server:~$ sudo su [sudo] password for admin: root@aos-server:/home/admin# gzip -d aos-web-ui-5.1.0-esc539.run.gz root@aos-server:/home/admin# chmod 755 aos-web-ui-5.1.0-esc539.run root@aos-server:/home/admin# sudo ./aos-web-ui-5.1.0-esc539.run Verifying archive integrity... All good. Uncompressing AOS WebUI installer 100% ### Backing up existing AOS WebUI into /opt/aos/frontend/snapshot/2025-03-26_23-50-19 ... ### Copying AOS WebUI file into aos_controller_1 ... ### Initializing new AOS WebUI ... ### Done!
2025-02-05 11:45:35,039 INFO aos.cluster.container_launcher:Update task container aos-offbox-10_42_29_205-f status: state='absent', error=Not found 2025-02-05 11:47:06,379 WARNING aos.cluster.container_launcher:Launch action already pending for container 'aos-offbox-10_42_84_192-f' requests.exceptions.ReadTimeout: UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)
1. Log in to the controller VM. 2. Execute "ps -ef | grep -i ContainerLauncherAgent" to check the process ID (PID) of the ContainerLauncherAgent. 3. Run "sudo pkill -f ContainerLauncherAgent" to kill the ContainerLauncherAgent process. 4. Confirm that the process has restarted by running "ps -ef | grep -i ContainerLauncherAgent" again.
"Combining MLAG and ESI leaf pairs not supported"
1. Identify the leaf switches connected to the external generic system 2. Identify the Connectivity Templates (CTs) associated with the external generic interfaces and unassign the corresponding application points 3. Delete the links between the leaf switches and the external generic system 4. Undeploy and unassign the leaf devices from the blueprint 5. Unassign interface maps from the blueprint 6. Use the REST API /api/blueprints/{blueprint_id}/modify-racks to convert the racks from ESI to MLAG 7. Import MLAG-compatible interface maps and assign them to the switches 8. Recreate the links to the external generic system 9. Reassign the endpoints to the appropriate Connectivity Templates
system l1 unsupported speed action error unsupported error-correction action error
# Copyright 2024-present, Apstra, Inc. All rights reserved. # # This source code is licensed under End User License Agreement found in the # LICENSE file at http://apstra.com/eula import configparser import json import os import re import shutil import subprocess import traceback SystemIdPattern = re.compile(r'AOS_SYSTEM_ID=offbox,(.+),(.+)') def update_aos_conf(task_id): aos_config = os.path.join( '/var/lib/aos/conf.d/task/offbox/', task_id, 'aos.conf', ) parser = configparser.ConfigParser() if os.path.isfile(aos_config): parser.read(aos_config) if not parser.has_section('logrotate'): parser.add_section('logrotate') if 'max_kept_backups' not in parser.options('logrotate'): parser.set('logrotate', 'max_kept_backups', '1') staging_file = aos_config + '.staging' with open(staging_file, 'w') as f: parser.write(f) shutil.move(staging_file, aos_config) return True return False def refresh_logging_infra(container_id): subprocess.check_output([ 'docker', 'exec', container_id, 'pkill', '-HUP', 'DeviceKeeperAge' ]) def get_offbox_containers(): containers = subprocess.check_output([ 'docker', 'ps', '-q', '--filter', 'label=AOS_CLUSTER_APPLICATION=offbox', ]).decode() return containers.splitlines() def get_task_ids(): def extract_info(container_env): try: envs = json.loads(container_env) except ValueError: return None, None for env in envs: matched = SystemIdPattern.match(env) if matched: return matched.group(1), matched.group(2) return None, None containers = get_offbox_containers() if not containers: return containers_env = subprocess.check_output([ 'docker', 'inspect', '--format', '{{json .Config.Env}}', *containers, ]).decode() for line in containers_env.splitlines(): task_id, container_id = extract_info(line) if not task_id: print('Failed to extract task id from container env: {}'.format(line)) continue yield task_id, container_id def main(): for task_id, container_id in get_task_ids(): try: if update_aos_conf(task_id): refresh_logging_infra(container_id) except: print('Failed to update aos.conf for container: {}'.format(container_id)) traceback.print_exc() main()
find /var/log/aos/task -name "*.log" -size +10M -print | grep "DeviceTelemetry" | xargs -I {} sudo cp /dev/null {}
[telemetry_global_config] # Python multithreading enable/disable knob for telemetry collection multithreading_config = 1 # Execution timeout for extensible telemetry collectors command_timeout = 120 # Knob to enable/disable gRPC based service collectors grpc_enabled = 0
Mar 7 12:19:00 leaf2 mosquitto[17106]: New connection from 128.0.0.4 on port 21883. Mar 7 12:19:00 leaf2 mosquitto[17106]: New client connected from 128.0.0.4 as client-4-re0-NA_event_subscriber-re0 (c1, k0). Mar 7 12:19:00 leaf2 mosquitto[17106]: New connection from 128.0.0.4 on port 21883. Mar 7 12:19:00 leaf2 mosquitto[17106]: New client connected from 128.0.0.4 as client-4-re0-NA_periodic_subscriber-re0 (c1, k0). Mar 7 12:19:01 leaf2 mgd[69155]: UI_EPHEMERAL_COMMIT: User 'root' has requested commit on 'junos-analytics' ephemeral database Mar 7 12:19:01 leaf2 mgd[69155]: UI_EPHEMERAL_COMMIT_COMPLETED: commit complete on 'junos-analytics' ephemeral database Mar 7 12:19:05 leaf2 mgd[69187]: UI_EPHEMERAL_COMMIT: User 'root' has requested commit on 'junos-analytics' ephemeral database Mar 7 12:19:05 leaf2 mgd[69187]: UI_EPHEMERAL_COMMIT_COMPLETED: commit complete on 'junos-analytics' ephemeral database
set system syslog file messages match "!(.*INTERACT-4-UI_EPHEMERAL_COMMIT.*|.*INTERACT-4-UI_EPHEMERAL_DATABASE_PURGED.*|.*mosquitto\[.*|.*AUTH-5-JADE_AUTH_SUCCESS.*|.*jsd\[.*DAEMON-3-UI_CHILD_SIGNALED.*|.*sshd\[.*exited.*)" set system syslog host x.x.x.x match "!(.*INTERACT-4-UI_EPHEMERAL_COMMIT.*|.*INTERACT-4-UI_EPHEMERAL_DATABASE_PURGED.*|.*mosquitto\[.*|.*AUTH-5-JADE_AUTH_SUCCESS.*|.*jsd\[.*DAEMON-3-UI_CHILD_SIGNALED.*|.*sshd\[.*exited.*)"
[agent_management] # Override the default heartbeat timeout for agents spawned dynamically by # AgentManager. The value must be a non-negative number. The unit is seconds. # The value 0 is used to turn off heartbeat-based agent timeouts and restarts. # The minimum non-0 value allowed is 60. If not provided, then the default # timeout value (600 seconds) is used. heartbeat_period = 1200
1. Delete the distinct routing policies from the Virtual Network primitive of the affected Connectivity Template (CT). 2. Create separate Connectivity Templates (CTs) for each routing policy, ensuring that each CT corresponds to one routing policy. 3. Assign each CT to the appropriate protocol endpoints.
neighbor a05:fab:192:168:50::254 { description "facing_leaf1-generic"; local-address a05:fab:192:168:50::1; peer-as 65510; family inet { unicast { extended-nexthop; } } family inet6 { unicast; } import ( RoutesFromExt-default-Default_immutable && RoutesFromExt-default-Default_immutable ); export ( RoutesToExt-default-Default_immutable && RoutesToExt-default-Default_immutable ); }
sudo scp -r admin@{old_controller_ip}:/var/lib/aos/.license /var/lib/aos/ docker restart aos_license_1
admin@aos-server:~$ chmod 755 ./aos_54413_fix_metricdb_permissions.run admin@aos-server:~$ sudo ./aos_54413_fix_metricdb_permissions.run Verifying archive integrity... All good. Uncompressing Fix for AOS-54413 for AOS >= 4.2.2 100% AOS[2025-05-25_19:36:22]: Fixing controller node AOS[2025-05-25_19:36:23]: Getting cluster node metadata AOS[2025-05-25_19:36:24]: Fixing worker node: 10.28.75.6 Logs have been collected at: /home/admin/aos_54413_fix_logs_20250525_193623.tar.gz
forwarding-options { vxlan-routing { next-hop 45056; interface-num 8192; overlay-ecmp; } }
forwarding-options { vxlan-routing { next-hop 32768; interface-num 8192; overlay-ecmp; } }
forwarding-options { vxlan-routing { next-hop 16384; interface-num 6144; overlay-ecmp; } }
"Cannot parse config: system already parsed."
2025-02-17 23:31:18,730 680:INFO:aos.scotch.libs.scotch_flask:request: POST /api/systems/AN10555621/pristine-config HTTP/1.0 34074 bytes 2025-02-17 23:31:18,737 680:INFO:aos.scotch.libs.scotch_flask:response: 422 55 bytes 0.007347 seconds
1. In Apstra 4.2.x, gRPC was introduced to support Telemetry Streaming, and as a result, having two system blocks in the pristine configuration was expected in that release. 2. Starting from Apstra 5.0.0, enhancements were made to automatically merge multiple system stanzas in the pristine configuration during the NOS upgrade process. 3. If a customer chooses to remain on their current NOS version for an extended period, multiple system stanzas can exist in the pristine configuration without causing issues.
/api/cluster/application-weight
{ "iba": 1000, "offbox": 250, "apstra_edge": 500 }
/etc/aos/aos.conf
Steps to Reproduce: 1. Create a template with the overlay control protocol set to MP-EBGP EVPN. 2. Navigate to the Blueprint Creation page. 3. Select Datacenter as the reference design. 4. Set Spine-to-Leaf Links Underlay Type to IPv6 RFC:5549. 5. Attempt to create the blueprint.
1. Navigate to Platform -> Developers -> REST API Explorer. 2. In the REST API Explorer, go to blueprint -> {blueprint_id} -> DELETE. 3. Select the locked blueprint ID and click Try It. 4. Expect a success response code to appear on the same page.
{ "rt_policy": { "import_RTs": { "0": "Type 0 RD X:Y must be in format 2-byte ASN:4-byte value. Provided value: \"65500:0\"" } }
virtual_infra failed to collect data, plugin raised exception: {'item_iter': <aos.sdk.graph.graph.RelationshipIterator object at 0x7f60c03f9570>, 'items': [df57a2f0-969c-4dee-9831-a53526bd7d5a-[:policy]->4c8c4c31-df9a-4188-933f-6b5d67703a1f, df57a2f0-969c-4dee-9831-a53526bd7d5a-[:policy]->1787d662-4a41-4b8b-9b77-acac5508e771]}
Graph Query: match( node('system', name='server', role='generic', management_level='unmanaged', external=False) .out('hosted_interfaces') .node('interface', name='server_intf') .out('hosted_vn_endpoints') .node('vn_endpoint', name='vn_endpoint') .in_('member_endpoints') .node('virtual_network') .out('instantiated_by') .node('vn_instance', name='vn_instance') .having( node(name='vn_instance') .in_('hosted_vn_instances') .node('system', system_id=not_none(), deploy_mode='deploy') .out('hosted_interfaces') .node('interface') .out('link') .node('link') .in_('link') .node('interface') .in_('hosted_interfaces') .node(name='server'), at_least=1 ), node(name='server') .in_('is_realized_by') .node('hypervisor', name='hv'), node(name='hv') .out('hosts') .node('vm', name='vm') .out('has') .node('vnic', name='vnic') .out('part_of') .node('vnet', vn_type='vlan', name='vnet') ) .distinct(['server', 'vn_endpoint', 'vm', 'vnic']) .where(lambda vnet, vn_instance, vn_endpoint: (vnet.vlans == [0] and vn_endpoint.tag_type == 'untagged' or vn_instance.vlan_id in vnet.vlans))
Configuration Error: ssh: connect to host 10.28.17.4 port 22: Connection refused
1. Navigate to Platform > Developers > REST API Explorer 2. Execute REST API: POST /api/cluster/worker/sync [OR] 1. Restart AOS from the controller VM: systemctl restart aos
##
## Warning: statement ignored: unsupported platform (ACX7024X)
gRPC Max Client connection limit error
>=23.4R2-EVO release
>=23.4R2-EVO
set system services extension-service request-response grpc grpc-keep-alive 300
set protocols evpn mac-ip-limit <desired-value>
forwarding-options { evpn-vxlan { shared-tunnels; } }
<environment-item> <name>FPC 0 Power Supply 1</name> <status>Present</status> </environment-item>
show ip route
vtysh
S>r 198.51.100.2/32 [1/0] via 192.168.0.9, Po1.4, weight 1, 01:59:25 B * 198.51.100.2/32 [20/0] via 10.0.0.3, Vlan201 onlink, weight 1, 01:59:25
interface Ethernet1/2 no bfd echo
2026-05-26: Added AOS-61246
2026-05-15: Updated AOS-54864
2026-05-14: Updated AOS-42437
2026-04-03: Added AOS-55780
2026-03-23: Added AOS-60167
2026-03-18: Removed AOS-51029,Added AOS-59821,AOS-59842,AOS-60114
2026-03-03: Added AOS-47430,AOS-59726
2026-02-18: Added AOS-54971
2026-02-03: Added AOS-59198
2026-01-08: Added AOS-48525
2025-12-11: Added AOS-58680
2025-11-18: Added AOS-58200
2025-11-10: Updated AOS-57490
2025-10-02: Added AOS-56571, AOS-57297, AOS-57315, AOS-57490
2025-09-17: Added AOS-57099
2025-09-08: Added AOS-52744, AOS-56498
2025-08-26: Updated Download link for AOS-53355, AOS-54413
2025-08-20: Updated AOS-52519, Added AOS-56175, AOS-56282
2025-08-13: Added 40023, AOS-43348, AOS-45139
2025-08-04: Updated AOS-53355
2025-07-29: Added AOS-52519 and Updated AOS-51846
2025-06-26: Added AOS-54006
2025-06-25: Added AOS-54864
2025-06-09: Added AOS-54497, AOS-54513
2025-05-27: Added AOS-54413
2025-05-22: Added AOS-50584, AOS-54391
2025-05-19: Added AOS-51083, AOS-54198
2025-05-08: Added AOS-44623, AOS-49957, AOS-52731, AOS-53919, AOS-54088
2025-05-01: Updated AOS-51964. Added AOS-53940, AOS-53627, AOS-53602.
2025-04-17 : Added AOS-53526,AOS-53534,AOS-53783
2025-04-12 : Updated AOS-47861
2025-04-04 : Added AOS-53537,AOS-53538
2025-04-01 : Updated RFE with Feature Category
2025-03-27 : Updated RFE-3241(JUNOS Qualified Version: 23.4R2-S4, removed 23.4R2, 23.4R2-S3), Added AOS-50120, AOS-50216, AOS-52766, AOS-52774, AOS-52892, AOS-52927, AOS-53355
2025-03-21 : Added AOS-52788, AOS-53023, AOS-53220, and Removed AOS-50283
2025-03-14 : Added AOS-52300
2025-03-13 : Updated AOS-43808
2025-02-17 : Added AOS-52519, AOS-52484, AOS-52431, AOS-52339, AOS-51579, AOS-51029
2025-01-31 : Added AOS-52217
2025-01-29 : Updated AOS-51846
2025-01-21 : Updated AOS-49934, added AOS-50710,AOS-50912, AOS-51846, AOS-51964
2025-01-09 : Updated AOSEXT-21
2025-01-07: Updated AOS-42437 and added AOS-51549, AOS-50112.
2025-01-02: updated
2024-12-20: initial published
2024-12-12: initial creation