Dell OS10 is built on Debian Linux, giving you full shell access with start-shell. This means you have native Python, tcpdump, awk, sed, grep, and all your favorite Linux tools available on your switch!
📑 Table of Contents
- Introduction to OS10
- Basic CLI Navigation
- Command Modes
- Initial Configuration
- User Management & Security
- Interface Configuration
- Layer 2 Switching
- Layer 3 Routing
- Access Control Lists (ACLs)
- Quality of Service (QoS)
- Monitoring & Troubleshooting
- File System Operations
- Backup & Restore
- Automation & Scripting
- Advanced Features
Introduction to Dell EMC OS10
Dell EMC OS10 is a modern, Linux-based network operating system designed for Dell's 10th generation switches. Unlike traditional proprietary network OSes, OS10 provides:
- Linux Foundation: Built on Debian Linux with full shell access
- Native Automation: Python 2.7 and 3.5 pre-installed, REST API support
- Standard Tools: Access to tcpdump, wireshark, awk, sed, grep, and other Linux utilities
- Package Management: APT package manager for installing additional software
- Configuration Management: Built-in rollback and versioning capabilities
- Open Architecture: Support for standard protocols and open APIs
Basic CLI Navigation
Accessing the CLI
# SSH to the switch ssh admin@192.168.1.1 # Console access (default credentials) Username: admin Password: admin # Enable privileged mode (similar to Cisco) OS10> enable OS10# # Enter configuration mode OS10# configure terminal OS10(config)#Cisco IOS:
# SSH to device ssh admin@192.168.1.1 # Enable mode Router> enable Router# # Configuration mode Router# configure terminal Router(config)#Linux Shell Access (OS10 Unique Feature):
# Drop to Linux shell from OS10 CLI OS10# start-shell # You now have full Debian Linux access! admin@OS10:~$ uname -a Linux OS10 4.9.0-8-amd64 #1 SMP Debian admin@OS10:~$ which python /usr/bin/python admin@OS10:~$ python --version Python 2.7.13 # Return to OS10 CLI admin@OS10:~$ exit OS10#
Basic Navigation Commands
| Task | Dell OS10 | Cisco IOS | Linux (OS10 Shell) |
|---|---|---|---|
| Show running config | show running-configuration |
show running-config |
cat /etc/sonic/config_db.json |
| Show startup config | show startup-configuration |
show startup-config |
cat /etc/sonic/config_db.json.bak |
| Show version | show version |
show version |
uname -a |
| Show interfaces | show interface status |
show ip interface brief |
ip addr show |
| Show IP routing | show ip route |
show ip route |
ip route show |
| Show ARP table | show arp |
show arp |
arp -n |
| Show MAC table | show mac address-table |
show mac address-table |
bridge fdb show |
| Clear screen | clear |
clear |
clear |
Command History & Editing
# Show command history OS10# show history # Use up/down arrows for previous commands # Ctrl+A - Beginning of line # Ctrl+E - End of line # Ctrl+K - Delete to end of line # Ctrl+U - Delete entire line # Tab - Command completion # Show available commands OS10# ? OS10(config)# ? # Show options for partial command OS10# show ?Cisco IOS:
# Show command history Router# show history # Same keyboard shortcuts work # Tab completion availableLinux Shell (OS10):
admin@OS10:~$ history admin@OS10:~$ !100 # Run command 100 from history admin@OS10:~$ !! # Run previous command admin@OS10:~$ !ssh # Run last command starting with 'ssh' admin@OS10:~$ history | grep config
Command Modes
# User EXEC Mode (limited commands) OS10> # Privileged EXEC Mode (view configurations) OS10> enable OS10# # Global Configuration Mode OS10# configure terminal OS10(config)# # Interface Configuration Mode OS10(config)# interface ethernet 1/1/1 OS10(conf-if-eth1/1/1)# # VLAN Configuration Mode OS10(config)# interface vlan 100 OS10(conf-if-vl-100)# # Router Configuration Mode (OSPF example) OS10(config)# router ospf 1 OS10(conf-router-ospf-1)# # Line Configuration Mode OS10(config)# line vty 0 9 OS10(conf-line-vty-0-9)# # Exit modes OS10(conf-if-eth1/1/1)# exit # Go back one level OS10(config)# exit OS10# exit # Logout # Quick exit to privileged mode from any config mode OS10(config)# end OS10# # Or use Ctrl+Z OS10(config)# [Ctrl+Z] OS10#Cisco IOS Command Modes:
# Very similar structure Router> enable Router# configure terminal Router(config)# interface gi0/0 Router(config-if)# exit Router(config)# end Router#
Initial Configuration
Basic System Configuration
# Set hostname OS10# configure terminal OS10(config)# hostname DELL-CORE-01 DELL-CORE-01(config)# # Set domain name DELL-CORE-01(config)# ip domain-name example.com # Configure DNS servers DELL-CORE-01(config)# ip name-server 8.8.8.8 DELL-CORE-01(config)# ip name-server 8.8.4.4 # Set timezone DELL-CORE-01(config)# clock timezone EST -5 0 # Configure NTP DELL-CORE-01(config)# ntp server 0.pool.ntp.org DELL-CORE-01(config)# ntp server 1.pool.ntp.org # Set system time manually (if no NTP) DELL-CORE-01# clock set 14:30:00 31 Oct 2025 # Configure login banner DELL-CORE-01(config)# banner login " ************************************************* * AUTHORIZED ACCESS ONLY * * Unauthorized access is prohibited * * All activities are logged and monitored * ************************************************* " # Configure MOTD banner DELL-CORE-01(config)# banner motd "Welcome to DELL-CORE-01" # Disable unused services DELL-CORE-01(config)# no ip http server DELL-CORE-01(config)# no ip telnet serverCisco IOS:
Router(config)# hostname CISCO-CORE-01 CISCO-CORE-01(config)# ip domain-name example.com CISCO-CORE-01(config)# ip name-server 8.8.8.8 CISCO-CORE-01(config)# clock timezone EST -5 CISCO-CORE-01(config)# ntp server 0.pool.ntp.org CISCO-CORE-01(config)# banner login ^C Authorized Access Only ^C CISCO-CORE-01(config)# no ip http server
Saving Configuration
# Save running config to startup config OS10# write memory OS10# copy running-configuration startup-configuration # Simplified command (similar to Cisco 'wr') OS10# write # Show configuration differences (unsaved changes) OS10# show configuration diff # OS10 has transactional commits with descriptions! OS10(config)# commit description "Added VLAN 100 and configured trunk ports" # View configuration history (rollback points) OS10# show configuration history # Rollback to previous configuration OS10# rollback configuration OS10# rollback configuration to 1 # Rollback to specific versionCisco IOS:
# Save configuration Router# copy running-config startup-config Router# write memory Router# wr # Cisco IOS doesn't have built-in rollback # (unless using archive feature)Linux Shell Backup (OS10):
# From Linux shell - manual config backup admin@OS10:~$ sudo cp /etc/sonic/config_db.json /home/admin/config-backup-$(date +%Y%m%d).json # Create tar archive of all configs admin@OS10:~$ sudo tar czf /home/admin/full-backup.tar.gz /etc/sonic/ # Copy to remote server admin@OS10:~$ scp config-backup-*.json user@backup-server:/backups/
User Management & Security
Creating Users
# Create local user with privilege level 15 (full admin) OS10(config)# username netadmin password MyP@ssw0rd! role sysadmin # User roles in OS10: # - sysadmin: Full administrative access (like privilege 15) # - secadmin: Security administration # - netadmin: Network administration # - netoperator: Read-only network access # Create read-only user OS10(config)# username readonly password View0nly! role netoperator # Enable password for privilege mode OS10(config)# enable password MyEn@blePass! # Show users OS10# show running-configuration users # Change user password OS10(config)# username netadmin password NewP@ss123!Cisco IOS:
# Create local user with privilege 15 Router(config)# username admin privilege 15 secret MyP@ssw0rd! # Create read-only user (privilege 1) Router(config)# username readonly privilege 1 secret View0nly! # Enable password Router(config)# enable secret MyEn@blePass! # Show users Router# show running-config | include usernameLinux Shell User Management (OS10):
# Add Linux system user admin@OS10:~$ sudo adduser newadmin # Add user to sudo group admin@OS10:~$ sudo usermod -aG sudo newadmin # Set password admin@OS10:~$ sudo passwd newadmin # View all users admin@OS10:~$ cat /etc/passwd # View sudo users admin@OS10:~$ getent group sudo
SSH Configuration
# Enable SSH (usually enabled by default) OS10(config)# ip ssh server enable # Configure SSH version 2 only OS10(config)# ip ssh server version 2 # Set SSH idle timeout (in seconds) OS10(config)# ip ssh server idle-timeout 600 # Generate SSH keys OS10# crypto key generate rsa # Show SSH configuration OS10# show ip ssh # Show active SSH sessions OS10# show ssh # Configure SSH on specific VTY lines OS10(config)# line vty 0 9 OS10(config-line-vty)# transport input ssh OS10(config-line-vty)# exitCisco IOS:
# Configure hostname and domain (required for SSH) Router(config)# hostname CISCO-R1 Router(config)# ip domain-name example.com # Generate RSA keys Router(config)# crypto key generate rsa How many bits in the modulus [512]: 2048 # Enable SSH version 2 Router(config)# ip ssh version 2 # Configure VTY lines for SSH Router(config)# line vty 0 4 Router(config-line)# transport input ssh Router(config-line)# login localLinux Shell SSH (OS10):
# View SSH configuration admin@OS10:~$ sudo cat /etc/ssh/sshd_config # Edit SSH config admin@OS10:~$ sudo nano /etc/ssh/sshd_config # Restart SSH service admin@OS10:~$ sudo systemctl restart ssh # View active SSH connections admin@OS10:~$ who # View SSH logs admin@OS10:~$ sudo tail -f /var/log/auth.log | grep ssh
Access Control Lists for Management
# Create management ACL to restrict SSH/Telnet access OS10(config)# ip access-list management-acl OS10(config-ipv4-acl)# permit tcp 192.168.1.0/24 any eq ssh OS10(config-ipv4-acl)# permit tcp 10.0.0.0/8 any eq ssh OS10(config-ipv4-acl)# deny tcp any any eq ssh OS10(config-ipv4-acl)# exit # Apply to VTY lines OS10(config)# line vty 0 9 OS10(config-line-vty)# access-class management-acl in OS10(config-line-vty)# exitCisco IOS:
# Create access list Router(config)# access-list 10 permit 192.168.1.0 0.0.0.255 Router(config)# access-list 10 permit 10.0.0.0 0.255.255.255 Router(config)# access-list 10 deny any # Apply to VTY lines Router(config)# line vty 0 4 Router(config-line)# access-class 10 in
Interface Configuration
Physical Interface Configuration
# Configure interface OS10(config)# interface ethernet 1/1/1 OS10(conf-if-eth1/1/1)# description Uplink-to-Core OS10(conf-if-eth1/1/1)# no shutdown OS10(conf-if-eth1/1/1)# mtu 9000 OS10(conf-if-eth1/1/1)# speed 10000 OS10(conf-if-eth1/1/1)# flowcontrol receive on tx on OS10(conf-if-eth1/1/1)# exit # Configure Layer 3 interface (routed port) OS10(config)# interface ethernet 1/1/10 OS10(conf-if-eth1/1/10)# no switchport OS10(conf-if-eth1/1/10)# ip address 192.168.1.1/24 OS10(conf-if-eth1/1/10)# no shutdown OS10(conf-if-eth1/1/10)# exit # Configure port ranges OS10(config)# interface range ethernet 1/1/1-1/1/10 OS10(conf-if-range-eth1/1/1-1/1/10)# description Access-Ports OS10(conf-if-range-eth1/1/1-1/1/10)# switchport mode access OS10(conf-if-range-eth1/1/1-1/1/10)# switchport access vlan 10 OS10(conf-if-range-eth1/1/1-1/1/10)# no shutdown OS10(conf-if-range-eth1/1/1-1/1/10)# exit # Show interface status OS10# show interface status OS10# show interface ethernet 1/1/1 OS10# show interface ethernet 1/1/1 statistics OS10# show interface ethernet 1/1/1 transceiverCisco IOS:
# Configure interface Router(config)# interface gi0/1 Router(config-if)# description Uplink-to-Core Router(config-if)# no shutdown Router(config-if)# mtu 9000 Router(config-if)# speed 1000 Router(config-if)# duplex full # Configure IP address Router(config-if)# ip address 192.168.1.1 255.255.255.0 Router(config-if)# no shutdown # Configure interface range Router(config)# interface range gi0/1-10 Router(config-if-range)# switchport mode access Router(config-if-range)# switchport access vlan 10 # Show interfaces Router# show ip interface brief Router# show interface gi0/1Linux Shell Interface Management (OS10):
# View all interfaces admin@OS10:~$ ip link show # View interface details admin@OS10:~$ ip addr show e101-001-0 # View interface statistics admin@OS10:~$ ip -s link show e101-001-0 # Bring interface up/down (requires privileges) admin@OS10:~$ sudo ip link set e101-001-0 up admin@OS10:~$ sudo ip link set e101-001-0 down # View ethtool info admin@OS10:~$ ethtool e101-001-0 # Monitor interface in real-time admin@OS10:~$ watch -n 1 'ip -s link show e101-001-0'
Interface Naming Convention
OS10 uses the format: ethernet <unit>/<module>/<port>
ethernet 1/1/1= Unit 1, Module 1, Port 1ethernet 1/1/48= Unit 1, Module 1, Port 48- In Linux shell, interfaces appear as:
e101-001-0(e = ethernet, 101 = unit/module, 001 = port)
Layer 2 Switching
VLAN Configuration
# Create VLAN OS10(config)# interface vlan 10 OS10(conf-if-vl-10)# description Sales-Department OS10(conf-if-vl-10)# no shutdown OS10(conf-if-vl-10)# exit # Create multiple VLANs OS10(config)# interface vlan 20 OS10(conf-if-vl-20)# description Engineering OS10(conf-if-vl-20)# exit OS10(config)# interface vlan 30 OS10(conf-if-vl-30)# description Guest-WiFi OS10(conf-if-vl-30)# exit # Assign interface to VLAN (access mode) OS10(config)# interface ethernet 1/1/5 OS10(conf-if-eth1/1/5)# switchport mode access OS10(conf-if-eth1/1/5)# switchport access vlan 10 OS10(conf-if-eth1/1/5)# no shutdown OS10(conf-if-eth1/1/5)# exit # Configure trunk port OS10(config)# interface ethernet 1/1/48 OS10(conf-if-eth1/1/48)# description Trunk-to-Access-Switch OS10(conf-if-eth1/1/48)# switchport mode trunk OS10(conf-if-eth1/1/48)# switchport trunk allowed vlan 10,20,30 OS10(conf-if-eth1/1/48)# no shutdown OS10(conf-if-eth1/1/48)# exit # Configure native VLAN on trunk OS10(conf-if-eth1/1/48)# switchport trunk native vlan 1 # Show VLAN information OS10# show vlan OS10# show vlan id 10 OS10# show interface switchportCisco IOS:
# Create VLAN Switch(config)# vlan 10 Switch(config-vlan)# name Sales-Department Switch(config-vlan)# exit # Assign interface to VLAN Switch(config)# interface gi0/5 Switch(config-if)# switchport mode access Switch(config-if)# switchport access vlan 10 Switch(config-if)# no shutdown # Configure trunk Switch(config)# interface gi0/48 Switch(config-if)# switchport trunk encapsulation dot1q Switch(config-if)# switchport mode trunk Switch(config-if)# switchport trunk allowed vlan 10,20,30 Switch(config-if)# switchport trunk native vlan 1 # Show VLANs Switch# show vlan brief Switch# show interfaces trunkLinux Shell VLAN Management (OS10):
# View VLAN database (SONiC uses config_db.json) admin@OS10:~$ sudo cat /etc/sonic/config_db.json | grep -A 10 VLAN # View bridge/VLAN info admin@OS10:~$ bridge vlan show # View VLAN interfaces admin@OS10:~$ ip link show | grep Vlan
Link Aggregation (Port Channels / LAG)
# Create port-channel (LAG) OS10(config)# interface port-channel 1 OS10(conf-if-po-1)# description LAG-to-Server OS10(conf-if-po-1)# switchport mode trunk OS10(conf-if-po-1)# switchport trunk allowed vlan 10,20,30 OS10(conf-if-po-1)# no shutdown OS10(conf-if-po-1)# exit # Add physical interfaces to port-channel OS10(config)# interface ethernet 1/1/1 OS10(conf-if-eth1/1/1)# channel-group 1 mode active OS10(conf-if-eth1/1/1)# no shutdown OS10(conf-if-eth1/1/1)# exit OS10(config)# interface ethernet 1/1/2 OS10(conf-if-eth1/1/2)# channel-group 1 mode active OS10(conf-if-eth1/1/2)# no shutdown OS10(conf-if-eth1/1/2)# exit # LACP modes: # - active: Actively sends LACP packets # - passive: Responds to LACP packets # - on: Forces port-channel without LACP (static) # Show port-channel status OS10# show interface port-channel 1 OS10# show interface port-channel summary OS10# show lacp interface port-channel 1Cisco IOS:
# Create port-channel Switch(config)# interface port-channel 1 Switch(config-if)# switchport mode trunk Switch(config-if)# switchport trunk allowed vlan 10,20,30 # Add interfaces to port-channel Switch(config)# interface range gi0/1-2 Switch(config-if-range)# channel-group 1 mode active Switch(config-if-range)# no shutdown # Show port-channel Switch# show etherchannel summary Switch# show interfaces port-channel 1Linux Shell Bond/Team Management (OS10):
# View bonding/team information admin@OS10:~$ cat /proc/net/bonding/PortChannel1 # View team configuration admin@OS10:~$ teamdctl PortChannel1 state # Monitor LACP admin@OS10:~$ sudo tcpdump -i e101-001-0 -nn ether proto 0x8809
Spanning Tree Protocol (STP)
# Enable Spanning Tree globally OS10(config)# spanning-tree mode rstp # STP modes available: # - rstp (Rapid Spanning Tree Protocol - 802.1w) # - mst (Multiple Spanning Tree - 802.1s) # - pvst (Per-VLAN Spanning Tree) # Set bridge priority (lower = better) OS10(config)# spanning-tree priority 4096 # Configure per-VLAN priority (PVST mode) OS10(config)# spanning-tree vlan 10 priority 4096 # Configure interface STP settings OS10(config)# interface ethernet 1/1/48 OS10(conf-if-eth1/1/48)# spanning-tree port-priority 16 OS10(conf-if-eth1/1/48)# spanning-tree cost 19 OS10(conf-if-eth1/1/48)# spanning-tree portfast OS10(conf-if-eth1/1/48)# spanning-tree bpduguard enable OS10(conf-if-eth1/1/48)# exit # Enable PortFast on access ports (skip listening/learning) OS10(config)# interface range ethernet 1/1/1-1/1/10 OS10(conf-if-range-eth1/1/1-1/1/10)# spanning-tree portfast OS10(conf-if-range-eth1/1/1-1/1/10)# exit # Enable BPDU Guard (shuts down port if BPDU received) OS10(config)# spanning-tree bpduguard enable # Show STP status OS10# show spanning-tree OS10# show spanning-tree vlan 10 OS10# show spanning-tree interface ethernet 1/1/1 OS10# show spanning-tree summaryCisco IOS:
# Enable Spanning Tree Switch(config)# spanning-tree mode rapid-pvst # Set priority Switch(config)# spanning-tree vlan 10 priority 4096 # Configure interface Switch(config)# interface gi0/1 Switch(config-if)# spanning-tree portfast Switch(config-if)# spanning-tree bpduguard enable Switch(config-if)# spanning-tree cost 19 # Show STP Switch# show spanning-tree Switch# show spanning-tree vlan 10
Storm Control
# Configure broadcast storm control OS10(config)# interface ethernet 1/1/5 OS10(conf-if-eth1/1/5)# storm-control broadcast level 10 OS10(conf-if-eth1/1/5)# storm-control multicast level 10 OS10(conf-if-eth1/1/5)# storm-control unicast level 10 OS10(conf-if-eth1/1/5)# exit # Level is percentage of bandwidth (10 = 10%)Cisco IOS:
Switch(config)# interface gi0/5 Switch(config-if)# storm-control broadcast level 10 Switch(config-if)# storm-control multicast level 10
Layer 3 Routing
Static Routing
# Enable IP routing OS10(config)# ip routing # Configure static route OS10(config)# ip route 10.0.0.0/8 192.168.1.254 # Default route OS10(config)# ip route 0.0.0.0/0 192.168.1.1 # Static route with administrative distance OS10(config)# ip route 172.16.0.0/12 192.168.1.253 distance 5 # Static route via interface OS10(config)# ip route 10.10.0.0/16 ethernet 1/1/10 # Show routing table OS10# show ip route OS10# show ip route static OS10# show ip route 10.0.0.0/8Cisco IOS:
# Enable IP routing (enabled by default on routers) Router(config)# ip routing # Configure static route Router(config)# ip route 10.0.0.0 255.0.0.0 192.168.1.254 # Default route Router(config)# ip route 0.0.0.0 0.0.0.0 192.168.1.1 # Show routing table Router# show ip route Router# show ip route staticLinux Shell Routing (OS10):
# View routing table admin@OS10:~$ ip route show admin@OS10:~$ route -n # Add static route (requires privileges) admin@OS10:~$ sudo ip route add 10.0.0.0/8 via 192.168.1.254 # Delete route admin@OS10:~$ sudo ip route del 10.0.0.0/8 # Add default route admin@OS10:~$ sudo ip route add default via 192.168.1.1
Dynamic Routing - OSPF
# Enable OSPF OS10(config)# router ospf 1 OS10(config-router-ospf-1)# router-id 1.1.1.1 # Configure OSPF networks OS10(config-router-ospf-1)# network 192.168.1.0/24 area 0 OS10(config-router-ospf-1)# network 10.0.0.0/8 area 0 # Configure passive interface OS10(config-router-ospf-1)# passive-interface default OS10(config-router-ospf-1)# no passive-interface ethernet 1/1/1 # Configure OSPF on specific interface OS10(config)# interface ethernet 1/1/1 OS10(conf-if-eth1/1/1)# ip ospf 1 area 0 OS10(conf-if-eth1/1/1)# ip ospf cost 100 OS10(conf-if-eth1/1/1)# ip ospf hello-interval 10 OS10(conf-if-eth1/1/1)# ip ospf dead-interval 40 OS10(conf-if-eth1/1/1)# exit # Show OSPF information OS10# show ip ospf OS10# show ip ospf neighbor OS10# show ip ospf interface OS10# show ip ospf database OS10# show ip route ospfCisco IOS:
# Enable OSPF Router(config)# router ospf 1 Router(config-router)# router-id 1.1.1.1 Router(config-router)# network 192.168.1.0 0.0.0.255 area 0 Router(config-router)# network 10.0.0.0 0.255.255.255 area 0 Router(config-router)# passive-interface default Router(config-router)# no passive-interface gi0/1 # Show OSPF Router# show ip ospf neighbor Router# show ip ospf interfaceLinux Shell OSPF Monitoring (OS10):
# Monitor OSPF packets admin@OS10:~$ sudo tcpdump -i e101-001-0 proto ospf # View FRRouting OSPF (OS10 uses FRR for routing) admin@OS10:~$ vtysh OS10# show ip ospf neighbor OS10# show ip ospf database OS10# exit
Dynamic Routing - BGP
# Configure BGP OS10(config)# router bgp 65001 OS10(config-router-bgp-65001)# router-id 1.1.1.1 # Configure BGP neighbor OS10(config-router-bgp-65001)# neighbor 192.168.1.2 remote-as 65002 OS10(config-router-bgp-65001)# neighbor 192.168.1.2 description ISP-Router OS10(config-router-bgp-65001)# neighbor 192.168.1.2 ebgp-multihop 2 # iBGP neighbor OS10(config-router-bgp-65001)# neighbor 10.0.0.2 remote-as 65001 OS10(config-router-bgp-65001)# neighbor 10.0.0.2 update-source loopback 0 # Advertise networks OS10(config-router-bgp-65001)# address-family ipv4 unicast OS10(config-router-bgp-65001-af)# network 10.0.0.0/8 OS10(config-router-bgp-65001-af)# network 172.16.0.0/16 OS10(config-router-bgp-65001-af)# exit # BGP peer groups OS10(config-router-bgp-65001)# neighbor PEER-GROUP peer-group OS10(config-router-bgp-65001)# neighbor PEER-GROUP remote-as 65002 OS10(config-router-bgp-65001)# neighbor 192.168.1.2 peer-group PEER-GROUP # Show BGP information OS10# show ip bgp summary OS10# show ip bgp neighbors OS10# show ip bgp OS10# show ip route bgpCisco IOS:
# Configure BGP Router(config)# router bgp 65001 Router(config-router)# bgp router-id 1.1.1.1 Router(config-router)# neighbor 192.168.1.2 remote-as 65002 Router(config-router)# neighbor 192.168.1.2 description ISP-Router Router(config-router)# network 10.0.0.0 mask 255.0.0.0 # Show BGP Router# show ip bgp summary Router# show ip bgp neighbors
Inter-VLAN Routing (SVI)
# Enable IP routing OS10(config)# ip routing # Create VLANs OS10(config)# interface vlan 10 OS10(conf-if-vl-10)# description Sales-VLAN OS10(conf-if-vl-10)# exit OS10(config)# interface vlan 20 OS10(conf-if-vl-20)# description Engineering-VLAN OS10(conf-if-vl-20)# exit # Configure SVI (Switched Virtual Interface) with IP addresses OS10(config)# interface vlan 10 OS10(conf-if-vl-10)# ip address 192.168.10.1/24 OS10(conf-if-vl-10)# no shutdown OS10(conf-if-vl-10)# exit OS10(config)# interface vlan 20 OS10(conf-if-vl-20)# ip address 192.168.20.1/24 OS10(conf-if-vl-20)# no shutdown OS10(conf-if-vl-20)# exit # Show SVIs OS10# show interface vlan 10 OS10# show ip interface briefCisco IOS:
# Enable IP routing Switch(config)# ip routing # Create VLANs Switch(config)# vlan 10 Switch(config-vlan)# name Sales-VLAN Switch(config-vlan)# exit # Configure SVI Switch(config)# interface vlan 10 Switch(config-if)# ip address 192.168.10.1 255.255.255.0 Switch(config-if)# no shutdown # Show SVIs Switch# show ip interface brief
Access Control Lists (ACLs)
Standard ACLs
# Create standard IPv4 ACL (match source IP only) OS10(config)# ip access-list standard BLOCK-10NET OS10(config-ipv4-acl)# deny 10.0.0.0/8 OS10(config-ipv4-acl)# permit any OS10(config-ipv4-acl)# exit # Apply ACL to interface (inbound) OS10(config)# interface ethernet 1/1/5 OS10(conf-if-eth1/1/5)# ip access-group BLOCK-10NET in OS10(conf-if-eth1/1/5)# exit # Show ACLs OS10# show ip access-lists OS10# show ip access-lists BLOCK-10NETCisco IOS:
# Create standard ACL Router(config)# access-list 10 deny 10.0.0.0 0.255.255.255 Router(config)# access-list 10 permit any # Or named standard ACL Router(config)# ip access-list standard BLOCK-10NET Router(config-std-nacl)# deny 10.0.0.0 0.255.255.255 Router(config-std-nacl)# permit any # Apply to interface Router(config)# interface gi0/1 Router(config-if)# ip access-group 10 in # Show ACLs Router# show access-lists
Extended ACLs
# Create extended IPv4 ACL OS10(config)# ip access-list extended WEB-FILTER OS10(config-ipv4-acl)# permit tcp 192.168.1.0/24 any eq 80 OS10(config-ipv4-acl)# permit tcp 192.168.1.0/24 any eq 443 OS10(config-ipv4-acl)# permit tcp 192.168.1.0/24 any eq 22 OS10(config-ipv4-acl)# deny tcp 192.168.1.0/24 any OS10(config-ipv4-acl)# permit ip any any OS10(config-ipv4-acl)# exit # More complex example OS10(config)# ip access-list extended SECURITY-POLICY OS10(config-ipv4-acl)# remark Allow HTTP/HTTPS from internal network OS10(config-ipv4-acl)# permit tcp 10.0.0.0/8 any eq 80 OS10(config-ipv4-acl)# permit tcp 10.0.0.0/8 any eq 443 OS10(config-ipv4-acl)# remark Allow DNS OS10(config-ipv4-acl)# permit udp any any eq 53 OS10(config-ipv4-acl)# remark Block specific host OS10(config-ipv4-acl)# deny ip host 10.0.0.100 any OS10(config-ipv4-acl)# remark Allow everything else OS10(config-ipv4-acl)# permit ip any any OS10(config-ipv4-acl)# exit # Apply ACL to interface OS10(config)# interface ethernet 1/1/10 OS10(conf-if-eth1/1/10)# ip access-group WEB-FILTER in OS10(conf-if-eth1/1/10)# exit # Apply ACL to VLAN interface OS10(config)# interface vlan 100 OS10(conf-if-vl-100)# ip access-group SECURITY-POLICY in OS10(conf-if-vl-100)# exit # Show ACL statistics OS10# show ip access-lists WEB-FILTER OS10# show running-configuration ip access-listCisco IOS:
# Create extended ACL Router(config)# ip access-list extended WEB-FILTER Router(config-ext-nacl)# permit tcp 192.168.1.0 0.0.0.255 any eq 80 Router(config-ext-nacl)# permit tcp 192.168.1.0 0.0.0.255 any eq 443 Router(config-ext-nacl)# permit tcp 192.168.1.0 0.0.0.255 any eq 22 Router(config-ext-nacl)# deny tcp 192.168.1.0 0.0.0.255 any Router(config-ext-nacl)# permit ip any any # Apply to interface Router(config)# interface gi0/1 Router(config-if)# ip access-group WEB-FILTER in # Show ACLs Router# show access-lists Router# show ip access-lists WEB-FILTER
Port Security
# Enable port security on an interface OS10(config)# interface ethernet 1/1/5 OS10(conf-if-eth1/1/5)# switchport mode access OS10(conf-if-eth1/1/5)# switchport access vlan 10 OS10(conf-if-eth1/1/5)# switchport port-security OS10(conf-if-eth1/1/5)# switchport port-security maximum 2 OS10(conf-if-eth1/1/5)# switchport port-security mac-address sticky OS10(conf-if-eth1/1/5)# switchport port-security violation shutdown OS10(conf-if-eth1/1/5)# exit # Violation modes: # - shutdown: Disables port (default) # - restrict: Drops packets from unauthorized MACs # - protect: Drops packets silently # Manually specify allowed MAC address OS10(config)# interface ethernet 1/1/6 OS10(conf-if-eth1/1/6)# switchport port-security mac-address aa:bb:cc:dd:ee:ff OS10(conf-if-eth1/1/6)# exit # Show port security OS10# show port-security OS10# show port-security interface ethernet 1/1/5 OS10# show port-security addressCisco IOS:
# Enable port security Switch(config)# interface gi0/5 Switch(config-if)# switchport mode access Switch(config-if)# switchport port-security Switch(config-if)# switchport port-security maximum 2 Switch(config-if)# switchport port-security mac-address sticky Switch(config-if)# switchport port-security violation shutdown # Show port security Switch# show port-security Switch# show port-security interface gi0/5
Quality of Service (QoS)
# Enable QoS globally OS10(config)# qos enable # Create class-map to classify traffic OS10(config)# class-map match-any VOICE-TRAFFIC OS10(config-classmap)# match ip dscp ef OS10(config-classmap)# match ip protocol 17 OS10(config-classmap)# exit OS10(config)# class-map match-any VIDEO-TRAFFIC OS10(config-classmap)# match ip dscp af41 OS10(config-classmap)# exit # Create policy-map to define QoS actions OS10(config)# policy-map QOS-POLICY OS10(config-policymap)# class VOICE-TRAFFIC OS10(config-policymap-class)# set dscp ef OS10(config-policymap-class)# priority level 1 OS10(config-policymap-class)# exit OS10(config-policymap)# class VIDEO-TRAFFIC OS10(config-policymap-class)# set dscp af41 OS10(config-policymap-class)# bandwidth percent 30 OS10(config-policymap-class)# exit OS10(config-policymap)# exit # Apply policy to interface OS10(config)# interface ethernet 1/1/1 OS10(conf-if-eth1/1/1)# service-policy input QOS-POLICY OS10(conf-if-eth1/1/1)# exit # Show QoS configuration OS10# show qos OS10# show policy-map interface ethernet 1/1/1Cisco IOS:
# Create class-map Router(config)# class-map match-any VOICE-TRAFFIC Router(config-cmap)# match ip dscp ef Router(config-cmap)# exit # Create policy-map Router(config)# policy-map QOS-POLICY Router(config-pmap)# class VOICE-TRAFFIC Router(config-pmap-c)# priority 1000 Router(config-pmap-c)# exit Router(config-pmap)# exit # Apply to interface Router(config)# interface gi0/1 Router(config-if)# service-policy input QOS-POLICY # Show QoS Router# show policy-map interface gi0/1
Monitoring & Troubleshooting
System Information
# Show system version and hardware OS10# show version OS10# show system OS10# show inventory OS10# show environment # Show CPU usage OS10# show processes cpu # Show memory usage OS10# show processes memory # Show uptime OS10# show uptime # Show temperature and fans OS10# show environment temperature OS10# show environment fans OS10# show environment power-supply # Show system logs OS10# show logging OS10# show logging | grep error OS10# show logging reverseCisco IOS:
# Show version Router# show version Router# show inventory # Show processes Router# show processes cpu Router# show processes memory # Show environment Router# show environment all # Show logs Router# show loggingLinux Shell System Monitoring (OS10):
# System information admin@OS10:~$ uname -a admin@OS10:~$ lsb_release -a admin@OS10:~$ cat /proc/version # CPU information admin@OS10:~$ lscpu admin@OS10:~$ cat /proc/cpuinfo admin@OS10:~$ top admin@OS10:~$ htop # Memory information admin@OS10:~$ free -h admin@OS10:~$ cat /proc/meminfo admin@OS10:~$ vmstat 1 # Disk usage admin@OS10:~$ df -h admin@OS10:~$ du -sh /var/log/* # Uptime and load admin@OS10:~$ uptime admin@OS10:~$ w # Temperature sensors (if available) admin@OS10:~$ sensors # View system logs admin@OS10:~$ sudo tail -f /var/log/syslog admin@OS10:~$ sudo journalctl -f admin@OS10:~$ sudo dmesg | tail -20
Connectivity Testing
# Ping OS10# ping 8.8.8.8 OS10# ping 8.8.8.8 count 100 OS10# ping 8.8.8.8 size 1500 OS10# ping 8.8.8.8 source 192.168.1.1 # Traceroute OS10# traceroute 8.8.8.8 # Telnet to test port connectivity OS10# telnet 192.168.1.100 80 # Test DNS resolution OS10# ping google.comCisco IOS:
# Ping Router# ping 8.8.8.8 Router# ping 8.8.8.8 repeat 100 Router# ping 8.8.8.8 size 1500 # Traceroute Router# traceroute 8.8.8.8 # Telnet Router# telnet 192.168.1.100 80Linux Shell Network Testing (OS10):
# Advanced ping options admin@OS10:~$ ping -c 100 -i 0.2 8.8.8.8 admin@OS10:~$ ping -c 10 -s 1500 8.8.8.8 admin@OS10:~$ ping -f 8.8.8.8 # Flood ping (be careful!) # MTR (Better than traceroute) admin@OS10:~$ mtr 8.8.8.8 admin@OS10:~$ mtr -n -c 100 8.8.8.8 # Traceroute with options admin@OS10:~$ traceroute -n 8.8.8.8 admin@OS10:~$ traceroute -I 8.8.8.8 # Use ICMP # Test TCP port connectivity admin@OS10:~$ nc -zv 192.168.1.100 80 admin@OS10:~$ telnet 192.168.1.100 80 # Test UDP port admin@OS10:~$ nc -zvu 192.168.1.100 53 # Curl to test HTTP/HTTPS admin@OS10:~$ curl -I http://192.168.1.100 admin@OS10:~$ curl -k https://192.168.1.100 # DNS testing admin@OS10:~$ nslookup google.com admin@OS10:~$ dig google.com admin@OS10:~$ dig @8.8.8.8 google.com
Packet Capture
Because OS10 runs on Linux, you have full access to tcpdump and wireshark-cli for packet captures directly on the switch!
# Start packet capture on interface admin@OS10:~$ sudo tcpdump -i e101-001-0 # Capture with filters admin@OS10:~$ sudo tcpdump -i e101-001-0 host 192.168.1.100 admin@OS10:~$ sudo tcpdump -i e101-001-0 port 80 admin@OS10:~$ sudo tcpdump -i e101-001-0 icmp admin@OS10:~$ sudo tcpdump -i e101-001-0 'tcp port 22 or tcp port 23' # Capture and save to file admin@OS10:~$ sudo tcpdump -i e101-001-0 -w /home/admin/capture.pcap # Capture with detailed output admin@OS10:~$ sudo tcpdump -i e101-001-0 -vv -n # Capture limited number of packets admin@OS10:~$ sudo tcpdump -i e101-001-0 -c 1000 -w capture.pcap # Read captured file admin@OS10:~$ tcpdump -r capture.pcap # Capture VLAN traffic admin@OS10:~$ sudo tcpdump -i e101-001-0 vlan 100 # Capture with timestamp admin@OS10:~$ sudo tcpdump -i e101-001-0 -tttt # Capture ARP admin@OS10:~$ sudo tcpdump -i e101-001-0 arp # Capture OSPF admin@OS10:~$ sudo tcpdump -i e101-001-0 proto ospf # Capture BGP admin@OS10:~$ sudo tcpdump -i e101-001-0 'tcp port 179' # Capture spanning-tree (BPDU) admin@OS10:~$ sudo tcpdump -i e101-001-0 '(ether[0:2] & 0xFFFF) = 0x0180' # Monitor in real-time with ASCII output admin@OS10:~$ sudo tcpdump -i e101-001-0 -A # Copy capture file to remote server admin@OS10:~$ scp capture.pcap user@server:/captures/Cisco IOS:
# Cisco requires SPAN/RSPAN or embedded packet capture # Much more limited than OS10's tcpdump! # Configure SPAN (port mirroring) Switch(config)# monitor session 1 source interface gi0/1 Switch(config)# monitor session 1 destination interface gi0/24 # Embedded packet capture (newer IOS) Router# monitor capture CAP interface gi0/1 both Router# monitor capture CAP match ipv4 any any Router# monitor capture CAP start Router# monitor capture CAP stop Router# monitor capture CAP export tftp://192.168.1.100/cap.pcap
Interface Statistics & Errors
# Show interface statistics OS10# show interface ethernet 1/1/1 statistics # Show interface counters OS10# show interface ethernet 1/1/1 counters # Show errors OS10# show interface ethernet 1/1/1 errors # Clear interface counters OS10# clear interface ethernet 1/1/1 counters # Show transceiver info (SFP/QSFP) OS10# show interface ethernet 1/1/1 transceiverCisco IOS:
# Show interface stats Router# show interface gi0/1 Router# show interface gi0/1 stats Router# clear counters gi0/1Linux Shell Interface Stats (OS10):
# Show detailed interface stats admin@OS10:~$ ip -s link show e101-001-0 # Continuous monitoring admin@OS10:~$ watch -n 1 'ip -s link show e101-001-0' # Using ifconfig admin@OS10:~$ ifconfig e101-001-0 # Show packet stats admin@OS10:~$ netstat -i # Advanced interface monitoring with ethtool admin@OS10:~$ sudo ethtool -S e101-001-0
MAC Address Table
# Show MAC address table OS10# show mac address-table # Show MACs on specific interface OS10# show mac address-table interface ethernet 1/1/1 # Show MACs in specific VLAN OS10# show mac address-table vlan 10 # Show dynamic MACs OS10# show mac address-table dynamic # Show static MACs OS10# show mac address-table static # Clear MAC table OS10# clear mac address-table dynamic # Set MAC aging time OS10(config)# mac address-table aging-time 300Cisco IOS:
# Show MAC table Switch# show mac address-table Switch# show mac address-table interface gi0/1 Switch# show mac address-table vlan 10 Switch# clear mac address-table dynamicLinux Shell MAC Table (OS10):
# Show bridge forwarding database admin@OS10:~$ bridge fdb show # Show for specific interface admin@OS10:~$ bridge fdb show dev e101-001-0
File System Operations
# List files OS10# dir OS10# show file-systems # Change directory OS10# cd flash: # Show current directory OS10# pwd # View file contents OS10# more flash:startup-config # Copy files OS10# copy flash:config.txt flash:config-backup.txt # Delete file OS10# delete flash:old-config.txt # Create directory OS10# mkdir flash:backups # Upload/download files (SCP) OS10# copy scp://user@192.168.1.100/config.txt flash:config.txt OS10# copy flash:config.txt scp://user@192.168.1.100/backups/Cisco IOS:
# List files Router# dir Router# dir flash: # View file Router# more flash:startup-config # Copy files Router# copy flash:old flash:new Router# delete flash:old # Upload/download via TFTP Router# copy tftp: flash: Router# copy flash: tftp:Linux Shell File Operations (OS10):
# Standard Linux file operations admin@OS10:~$ ls -lah admin@OS10:~$ cd /mnt/flash admin@OS10:~$ pwd # Copy files admin@OS10:~$ cp file1.txt file2.txt admin@OS10:~$ cp -r /etc/sonic /home/admin/backup/ # Move/rename admin@OS10:~$ mv old.txt new.txt # Delete admin@OS10:~$ rm old.txt admin@OS10:~$ rm -rf old-directory/ # View file contents admin@OS10:~$ cat config.txt admin@OS10:~$ less config.txt admin@OS10:~$ head -20 config.txt admin@OS10:~$ tail -50 config.txt admin@OS10:~$ tail -f /var/log/syslog # Search in files admin@OS10:~$ grep "interface" config.txt admin@OS10:~$ grep -r "error" /var/log/ # File permissions admin@OS10:~$ chmod 644 config.txt admin@OS10:~$ chown admin:admin config.txt # Create archives admin@OS10:~$ tar czf backup.tar.gz /etc/sonic/ admin@OS10:~$ tar xzf backup.tar.gz # SCP file transfer admin@OS10:~$ scp config.txt user@server:/backups/ admin@OS10:~$ scp user@server:/configs/new-config.txt . # SFTP admin@OS10:~$ sftp user@server
Backup & Restore
# Save running config to startup OS10# write memory # Backup config to remote server (SCP) OS10# copy running-configuration scp://admin@192.168.1.100/backups/switch-config-$(date).txt # Backup to USB (if available) OS10# copy running-configuration usb:backup-config.txt # View configuration history (for rollback) OS10# show configuration history # Restore from backup OS10# copy scp://admin@192.168.1.100/backups/switch-config.txt running-configuration # Software upgrade OS10# image install ftp://user:pass@192.168.1.100/PKGS_OS10-Enterprise-10.5.3.4.bin OS10# image boot # Show installed images OS10# show image status OS10# show boot system # Set boot image OS10# boot system standbyCisco IOS:
# Backup config Router# copy running-config tftp: Router# copy startup-config tftp: # Restore config Router# copy tftp: running-config # Backup IOS image Router# copy flash:ios.bin tftp: # Show boot config Router# show boot Router# show versionLinux Shell Comprehensive Backup (OS10):
# Full system configuration backup
admin@OS10:~$ sudo tar czf /tmp/full-backup-$(date +%Y%m%d-%H%M%S).tar.gz \
/etc/sonic/ \
/home/admin/ \
/etc/network/ \
/etc/ssh/
# Backup specific configs
admin@OS10:~$ sudo cp /etc/sonic/config_db.json /home/admin/config-backup.json
# Automated backup script
admin@OS10:~$ cat > /home/admin/backup.sh << 'EOF'
#!/bin/bash
BACKUP_DIR="/home/admin/backups"
DATE=$(date +%Y%m%d-%H%M%S)
mkdir -p $BACKUP_DIR
# Backup configuration
sudo tar czf $BACKUP_DIR/config-$DATE.tar.gz /etc/sonic/
# Copy to remote server
scp $BACKUP_DIR/config-$DATE.tar.gz user@backup-server:/backups/
# Keep only last 7 days
find $BACKUP_DIR -name "config-*.tar.gz" -mtime +7 -delete
EOF
admin@OS10:~$ chmod +x /home/admin/backup.sh
# Schedule with cron (run daily at 2 AM)
admin@OS10:~$ crontab -e
# Add line: 0 2 * * * /home/admin/backup.sh
# Restore from backup
admin@OS10:~$ sudo tar xzf /home/admin/backups/config-20251031.tar.gz -C /
Automation & Scripting
OS10's Linux foundation makes it incredibly automation-friendly. You have Python, Ansible, REST APIs, and standard Linux tools all available!
Python Scripting on OS10
# Python is pre-installed on OS10!
admin@OS10:~$ python --version
Python 2.7.13
admin@OS10:~$ python3 --version
Python 3.5.3
# Simple interface monitoring script
admin@OS10:~$ cat > monitor_interface.py << 'EOF'
#!/usr/bin/env python3
import subprocess
import time
def get_interface_stats(interface):
cmd = f"ip -s link show {interface}"
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
return result.stdout
def main():
interface = "e101-001-0"
while True:
print(f"\n=== Interface {interface} Statistics ===")
print(get_interface_stats(interface))
time.sleep(5)
if __name__ == "__main__":
main()
EOF
admin@OS10:~$ chmod +x monitor_interface.py
admin@OS10:~$ python3 monitor_interface.py
# Configuration backup script
admin@OS10:~$ cat > backup_config.py << 'EOF'
#!/usr/bin/env python3
import subprocess
import datetime
def backup_config():
timestamp = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
backup_file = f"/home/admin/config-backup-{timestamp}.json"
# Copy configuration
cmd = f"sudo cp /etc/sonic/config_db.json {backup_file}"
subprocess.run(cmd, shell=True)
print(f"Configuration backed up to: {backup_file}")
# Optional: Copy to remote server
remote_cmd = f"scp {backup_file} user@backup-server:/backups/"
# subprocess.run(remote_cmd, shell=True)
if __name__ == "__main__":
backup_config()
EOF
admin@OS10:~$ chmod +x backup_config.py
admin@OS10:~$ python3 backup_config.py
# VLAN reporting script
admin@OS10:~$ cat > vlan_report.py << 'EOF'
#!/usr/bin/env python3
import subprocess
import json
def get_vlans():
# Read configuration
with open('/etc/sonic/config_db.json', 'r') as f:
config = json.load(f)
vlans = config.get('VLAN', {})
print("=== VLAN Report ===")
for vlan_name, vlan_data in vlans.items():
vlan_id = vlan_name.replace('Vlan', '')
print(f"VLAN {vlan_id}: {vlan_data}")
if __name__ == "__main__":
get_vlans()
EOF
admin@OS10:~$ sudo python3 vlan_report.py
Note:
Cisco IOS doesn't have native Python support in the same way. You would need to use EEM (Embedded Event Manager) scripts or external tools.
REST API
# Enable REST API OS10(config)# rest-server enable # Configure HTTPS OS10(config)# rest-server https enable # Set port (default is 8090 for HTTP, 443 for HTTPS) OS10(config)# rest-server port 8090Using REST API (from Linux shell or external system):
# Get system information
curl -u admin:password -k https://192.168.1.1/restconf/data/system
# Get interfaces
curl -u admin:password -k https://192.168.1.1/restconf/data/interfaces
# Get VLANs
curl -u admin:password -k https://192.168.1.1/restconf/data/vlans
# Create VLAN via REST
curl -u admin:password -k -X PUT \
https://192.168.1.1/restconf/data/vlans/vlan=100 \
-H 'Content-Type: application/json' \
-d '{
"vlan": {
"vlan-id": 100,
"name": "Production"
}
}'
# Configure interface
curl -u admin:password -k -X PUT \
https://192.168.1.1/restconf/data/interfaces/interface=ethernet1/1/1 \
-H 'Content-Type: application/json' \
-d '{
"interface": {
"name": "ethernet1/1/1",
"description": "Configured via REST API",
"enabled": true
}
}'
Ansible Automation
# Install Ansible on management station
sudo apt-get install ansible
# Install Dell OS10 Ansible modules
ansible-galaxy collection install dellemc.os10
# Create inventory file
cat > inventory.ini << EOF
[dell_switches]
switch01 ansible_host=192.168.1.10
switch02 ansible_host=192.168.1.11
[dell_switches:vars]
ansible_network_os=dellemc.os10.os10
ansible_user=admin
ansible_password=admin
ansible_connection=network_cli
EOF
# Sample playbook: Configure VLANs
cat > configure_vlans.yml << 'EOF'
---
- name: Configure VLANs on Dell OS10 Switches
hosts: dell_switches
gather_facts: no
tasks:
- name: Create VLANs
dellemc.os10.os10_vlan:
vlan_id: "{{ item.id }}"
name: "{{ item.name }}"
state: present
loop:
- { id: 10, name: "Sales" }
- { id: 20, name: "Engineering" }
- { id: 30, name: "Guest" }
- name: Configure interface as access port
dellemc.os10.os10_interface:
name: ethernet1/1/5
description: "Sales Department"
mode: access
access_vlan: 10
state: up
- name: Configure trunk port
dellemc.os10.os10_interface:
name: ethernet1/1/48
description: "Trunk to Access Switch"
mode: trunk
trunk_vlans: "10,20,30"
state: up
- name: Save configuration
dellemc.os10.os10_config:
save: yes
EOF
# Run playbook
ansible-playbook -i inventory.ini configure_vlans.yml
# Playbook: Backup configurations
cat > backup_configs.yml << 'EOF'
---
- name: Backup Dell OS10 Configurations
hosts: dell_switches
gather_facts: no
tasks:
- name: Backup running configuration
dellemc.os10.os10_config:
backup: yes
backup_options:
filename: "{{ inventory_hostname }}_{{ ansible_date_time.date }}.cfg"
dir_path: ./backups/
EOF
# Run backup playbook
ansible-playbook -i inventory.ini backup_configs.yml
Zero Touch Provisioning (ZTP)
# Enable ZTP OS10(config)# ztp enable # Configure DHCP to provide ZTP script URL # DHCP server provides: dhcp-option=43,http://192.168.1.100/ztp-script.sh # Show ZTP status OS10# show ztp status OS10# show ztp logSample ZTP Script:
#!/bin/bash
# Sample ZTP provisioning script
# Configure hostname based on MAC or serial
SERIAL=$(decode-syseeprom | grep "Serial Number" | awk '{print $4}')
HOSTNAME="DELL-SW-${SERIAL}"
# Apply basic configuration
cat > /tmp/ztp-config.txt << EOF
configure terminal
hostname ${HOSTNAME}
ip name-server 8.8.8.8
ntp server 0.pool.ntp.org
username admin password MySecurePass! role sysadmin
!
interface vlan 1
ip address dhcp
no shutdown
!
end
write memory
EOF
# Apply configuration
vtysh < /tmp/ztp-config.txt
# Download and apply specific configuration from server
curl -o /tmp/switch-config.txt http://192.168.1.100/configs/${HOSTNAME}.cfg
vtysh < /tmp/switch-config.txt
exit 0
Advanced Features
VRF (Virtual Routing and Forwarding)
# Create VRF OS10(config)# ip vrf management OS10(config-vrf)# exit OS10(config)# ip vrf customer-a OS10(config-vrf)# exit # Assign interface to VRF OS10(config)# interface ethernet 1/1/10 OS10(conf-if-eth1/1/10)# no switchport OS10(conf-if-eth1/1/10)# ip vrf forwarding customer-a OS10(conf-if-eth1/1/10)# ip address 10.1.1.1/24 OS10(conf-if-eth1/1/10)# no shutdown OS10(conf-if-eth1/1/10)# exit # Static route in VRF OS10(config)# ip route vrf customer-a 10.2.0.0/16 10.1.1.254 # OSPF in VRF OS10(config)# router ospf 100 vrf customer-a OS10(config-router-ospf-100)# router-id 1.1.1.1 OS10(config-router-ospf-100)# network 10.1.1.0/24 area 0 OS10(config-router-ospf-100)# exit # Show VRF OS10# show ip vrf OS10# show ip route vrf customer-aCisco IOS:
# Very similar syntax Router(config)# ip vrf customer-a Router(config-vrf)# exit Router(config)# interface gi0/1 Router(config-if)# ip vrf forwarding customer-a Router(config-if)# ip address 10.1.1.1 255.255.255.0 Router# show ip vrf Router# show ip route vrf customer-a
VLT (Virtual Link Trunking)
VLT is Dell's technology similar to Cisco's vPC (Virtual PortChannel). It allows two switches to appear as one logical switch for redundancy and load balancing.
# On both VLT peer switches: # Create VLT domain OS10(config)# vlt domain 1 OS10(conf-vlt-1)# peer-routing OS10(conf-vlt-1)# back-up destination 192.168.100.2 OS10(conf-vlt-1)# primary-priority 1 # Lower on primary OS10(conf-vlt-1)# vlt-mac aa:bb:cc:dd:ee:ff OS10(conf-vlt-1)# exit # Configure VLT interconnect (ICL) OS10(config)# interface port-channel 100 OS10(conf-if-po-100)# mode L2 OS10(conf-if-po-100)# vlt-port-channel 100 OS10(conf-if-po-100)# no shutdown OS10(conf-if-po-100)# exit # Add physical interfaces to ICL OS10(config)# interface range ethernet 1/1/47-1/1/48 OS10(conf-if-range)# channel-group 100 mode active OS10(conf-if-range)# exit # Configure VLT LAG to downstream device OS10(config)# interface port-channel 10 OS10(conf-if-po-10)# switchport mode trunk OS10(conf-if-po-10)# switchport trunk allowed vlan 10,20,30 OS10(conf-if-po-10)# vlt-port-channel 10 OS10(conf-if-po-10)# exit # Add physical interfaces OS10(config)# interface ethernet 1/1/1 OS10(conf-if-eth1/1/1)# channel-group 10 mode active OS10(conf-if-eth1/1/1)# exit # Show VLT status OS10# show vlt 1 OS10# show vlt backup-link
Logging & SNMP
# Configure syslog server OS10(config)# logging server 192.168.1.50 # Set logging level OS10(config)# logging level 6 # Informational # Logging to console OS10(config)# logging console # Logging to buffer OS10(config)# logging buffered 32768 # Show logs OS10# show logging OS10# show logging | grep error # SNMP configuration OS10(config)# snmp-server community public ro OS10(config)# snmp-server community private rw OS10(config)# snmp-server location "Data Center A" OS10(config)# snmp-server contact "admin@example.com" OS10(config)# snmp-server host 192.168.1.100 traps version 2c public # Show SNMP OS10# show snmp community OS10# show snmp hostCisco IOS:
# Configure syslog Router(config)# logging 192.168.1.50 Router(config)# logging trap informational # SNMP Router(config)# snmp-server community public RO Router(config)# snmp-server location "Data Center A" Router(config)# snmp-server host 192.168.1.100 traps version 2c publicLinux Shell Logging (OS10):
# View system logs admin@OS10:~$ sudo tail -f /var/log/syslog admin@OS10:~$ sudo tail -f /var/log/messages # View journald logs admin@OS10:~$ sudo journalctl -f admin@OS10:~$ sudo journalctl -u sonic.service admin@OS10:~$ sudo journalctl --since "1 hour ago" admin@OS10:~$ sudo journalctl -p err # Search logs admin@OS10:~$ sudo grep -i error /var/log/syslog admin@OS10:~$ sudo zgrep error /var/log/syslog.*.gz # Configure rsyslog admin@OS10:~$ sudo nano /etc/rsyslog.conf # Add: *.* @192.168.1.50:514 admin@OS10:~$ sudo systemctl restart rsyslog
Access Control & AAA
# Configure TACACS+ server OS10(config)# tacacs-server host 192.168.1.200 OS10(config)# tacacs-server key MySecretKey # Enable TACACS+ authentication OS10(config)# aaa authentication login default group tacacs+ local OS10(config)# aaa authorization exec default group tacacs+ local # Show TACACS+ OS10# show tacacsDell OS10 RADIUS:
# Configure RADIUS server OS10(config)# radius-server host 192.168.1.201 OS10(config)# radius-server key MyRadiusKey # Enable RADIUS authentication OS10(config)# aaa authentication login default group radius local OS10(config)# aaa authorization exec default group radius local # Show RADIUS OS10# show radius-server
- Use the Linux shell! - Drop to shell with
start-shellfor advanced troubleshooting - Leverage Python - Write automation scripts directly on the switch
- tcpdump is your friend - Capture packets directly on switch interfaces
- Configuration rollback - Always commit with descriptions for easy rollback
- REST API - Use APIs for integration with monitoring and orchestration tools
- Ansible ready - Dell provides excellent Ansible modules for OS10
- Standard Linux tools - grep, awk, sed, systemctl all work normally
- ZTP - Use Zero Touch Provisioning for large deployments
- OS10 uses
/notation for interfaces (1/1/1) vs Cisco's slot/port notation - No
docommand needed - just use full commands from any mode - Configuration is transactional - you can commit with descriptions
- Some syntax differences (e.g.,
no switchportfor L3 interfaces) - VLT instead of vPC, but similar concepts
- Built-in Python and Linux tools make troubleshooting very different
Quick Reference Tables
Common Tasks - Three-Way Comparison
| Task | Dell OS10 | Cisco IOS | Linux (OS10 Shell) |
|---|---|---|---|
| View config | show running-configuration |
show running-config |
cat /etc/sonic/config_db.json |
| Save config | write memory |
write memory |
sudo sonic-cfggen -y /etc/sonic/config_db.json -a |
| View interfaces | show interface status |
show ip interface brief |
ip addr show |
| View routes | show ip route |
show ip route |
ip route show |
| View ARP | show arp |
show arp |
arp -n |
| View MAC table | show mac address-table |
show mac address-table |
bridge fdb show |
| Ping | ping 8.8.8.8 |
ping 8.8.8.8 |
ping 8.8.8.8 |
| Traceroute | traceroute 8.8.8.8 |
traceroute 8.8.8.8 |
traceroute 8.8.8.8 or mtr |
| Packet capture | start-shell then tcpdump |
SPAN/RSPAN required | sudo tcpdump -i e101-001-0 |
| View logs | show logging |
show logging |
tail -f /var/log/syslog |
| View CPU | show processes cpu |
show processes cpu |
top or htop |
| View memory | show processes memory |
show processes memory |
free -h |
| Reboot | reload |
reload |
sudo reboot |
Dell OS10 brings the power of Linux to network switches. As a Linux system administrator, you'll find OS10 incredibly familiar and powerful. The ability to drop into a Linux shell, use Python for automation, capture packets with tcpdump, and leverage all your favorite Linux tools makes OS10 a unique and powerful platform.
While the CLI is similar to Cisco IOS for basic operations, OS10's Linux foundation opens up possibilities that traditional network operating systems simply can't match. You're not just configuring a switch - you're working with a full-featured Linux system that happens to also be an enterprise-grade network switch!
Dell EMC OS10 CLI Reference Guide
Created: October 31, 2025
For Linux System Administrators
Happy Switching! 🚀