SR Linux est un NOS (Network Operating System) qui exploite la pile de protocoles de routage de Nokia SR OS, tout en utilisant également Linux comme système d’exploitation sous-jacent, permettant aux administrateurs d’utiliser des outils de débogage et de configuration qu’ils connaissent bien, même s’ils n’ont aucune expérience avec SR OS.
Les fonctions de routage sur SR Linux s’exécutent comme des applications modulaires et légères, configurables via des API externes. Ces applications utilisent gRPC et des API pour communiquer entre elles et avec des systèmes externes via TCP. Les applications fournies par Nokia peuvent être complétées par des applications développées par des tiers, qui se connectent au framework SR Linux. Les fonctions « Application-based » permettent des mises à jour modulaires et une isolation facile des pannes.
SR Linux utilise largement les modèles de données structurées. Chaque application a un modèle YANG qui pilote sa configuration et son état. SR Linux expose les modèles YANG aux API de gestion prises en charge. Par exemple, l’arborescence de commandes dans le CLI est dérivée des modèles SR Linux YANG chargés dans le système, et un client gNMI peut utiliser des RPC définis pour configurer une application en fonction de son modèle YANG. Lorsqu’une configuration est validée, le serveur de gestion SR Linux valide les modèles YANG et les traduit en « protocol buffers » pour la base de données IDB (Impart DataBase).
SR Linux fournit un kit de développement NetOps (NDK), avec une suite de librairies pour aider les administrateurs à développer des agents qui s’exécutent avec les applications SR Linux. Les agents construits avec le NDK (NetOps Development Kit) gRPC fonctionnent de manière similaire à d’autres applications fournies avec SR Linux.
Ce système d’exploitation est disponible sur les plateformes matérielles Nokia 7220 Interconnect Router (7220 IXR) et 7250 IXR-10/IXR-6 Interconnect Routers (7250 IXR). Depuis quelques jours, une version SR Linux tournant dans un conteneur Docker est disponible publiquement pour réaliser des simulations réseau. Un site est même disponible pour apprendre à utiliser SR Linux. Faire tourner un NOS dans un conteneur a de nombreux avantages, comme, par exemple, le besoin réduit de ressources par rapport à une machine virtuelle.
Pour l’exemple ci-dessous, un fichier YAML décrit le lab et sert de référence pour le lancement Containerlab.
name: nokia topology: kinds: srl: image: ghcr.io/nokia/srlinux:latest linux: image: alpine:latest nodes: spine1: kind: srl spine2: kind: srl leaf1: kind: srl leaf2: kind: srl leaf3: kind: srl server1: kind: linux server2: kind: linux server3: kind: linux links: - endpoints: ["spine1:e1-1", "leaf1:e1-1"] - endpoints: ["spine1:e1-2", "leaf2:e1-1"] - endpoints: ["spine1:e1-3", "leaf3:e1-1"] - endpoints: ["spine2:e1-1", "leaf1:e1-2"] - endpoints: ["spine2:e1-2", "leaf2:e1-2"] - endpoints: ["spine2:e1-3", "leaf3:e1-2"] - endpoints: ["leaf1:e1-3", "server1:et1"] - endpoints: ["leaf2:e1-3", "server2:et1"] - endpoints: ["leaf3:e1-3", "server3:et1"]
docker pull ghcr.io/nokia/srlinux sudo containerlab deploy -t nokia.clab.yaml
Une architecture Clos Network avec deux Spines, trois Leafs et trois serveurs Alpine peut tourner facilement avec seulement 4 vCPUs et 8 Go de RAM.
Le type de noeud SR Linux définit le modèle à émuler. Les types disponibles sont : ixr6, ixr10, ixrd1, ixrd2 et ixrd3 qui correspondent aux modèles physiques Nokia 7250/7220 IXR. Par défaut, c’est le type ixr6 qui est utilisé par Containerlab. En fonction du type fourni, Containerlab générera le fichier de topologie qui sera monté sur le conteneur SR Linux et le fera démarrer dans la variante matérielle choisie.
# Copyright 2020 Nokia # Licensed under the BSD 3-Clause License. # SPDX-License-Identifier: BSD-3-Clause chassis_configuration: "chassis_type": 42 "base_mac": "02:45:cb:00:00:00" "cpm_card_type": 69 # cpm2-ixr slot_configuration: 1: "card_type": 127 "mda_type": 36 # 32xQSFP28+4xQSFP-DD (imm32-100g-qsfp28+4-400g-qsfpdd)
Nativement, le conteneur SR Linux accepte les interaction via un accès bash au conteneur, un accès CLI au conteneur, un accès SSH, un accès gNMI en TCP sur le port 57400 et un accès utilisant l’interface JSON-RPC sur les ports 80/443 pour HTTP/HTTPS .
gnmic -a 172.20.20.4 -u admin -p admin --skip-verify capabilities gNMI version: 0.7.0 supported models: - urn:srl_nokia/aaa:srl_nokia-aaa, Nokia, 2021-06-30 - urn:srl_nokia/aaa-types:srl_nokia-aaa-types, Nokia, 2019-11-30 - urn:srl_nokia/acl:srl_nokia-acl, Nokia, 2021-03-31 - urn:srl_nokia/aggregate-routes:srl_nokia-aggregate-routes, Nokia, 2021-03-31 - urn:srl_nokia/app-mgmt:srl_nokia-app-mgmt, Nokia, 2021-03-31 - urn:srl_nokia/bfd:srl_nokia-bfd, Nokia, 2021-03-31 - urn:srl_nokia/bgp:srl_nokia-bgp, Nokia, 2021-06-30 - urn:srl_nokia/network-instance/protocols/bgp-evpn:srl_nokia-bgp-evpn, Nokia, 2021-03-31 - urn:srl_nokia/bgp-vpn:srl_nokia-bgp-vpn, Nokia, 2021-03-31 - urn:srl_nokia/boot:srl_nokia-boot, Nokia, 2021-03-31 - .................. - .................. - urn:srl_nokia/tools-packet-trace:srl_nokia-tools-packet-trace, Nokia, 2019-11-30 - urn:srl_nokia/tools-platform:srl_nokia-tools-platform, Nokia, 2021-03-31 - urn:srl_nokia/tools-platform-redundancy:srl_nokia-tools-platform-redundancy, Nokia, 2020-06-30 - urn:srl_nokia/tools-qos:srl_nokia-tools-qos, Nokia, 2021-03-31 - urn:srl_nokia/tools-system:srl_nokia-tools-system, Nokia, 2019-11-30 - urn:srl_nokia/tools-tls:srl_nokia-tools-tls, Nokia, 2021-03-31 - urn:srl_nokia/tools-tunnel:srl_nokia-tools-tunnel, Nokia, 2021-03-31 - urn:srl_nokia/tools-vxlan-tunnel:srl_nokia-tools-vxlan-tunnel, Nokia, 2021-03-31 supported encodings: - JSON_IETF - ASCII - 45 - 44 - 46 - 47 - 48 - 49 - 50