Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SONiC 202311 #179

Merged
merged 3 commits into from
Jul 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions images/sonic/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
FROM ubuntu:22.04
FROM debian:bookworm-slim

ENV LIBGUESTFS_BACKEND=direct
# Check: https://sonic-build.azurewebsites.net/ui/sonic/pipelines
ENV SONIC_REMOTE_IMG=https://sonic-build.azurewebsites.net/api/sonic/artifacts?branchName=202211&platform=vs&target=target%2Fsonic-vs.img.gz
ARG SONIC_BASE_URL=https://sonic-build.azurewebsites.net/api/sonic/artifacts?branchName=202311&platform=vs
ARG SONIC_IMG_URL=${SONIC_BASE_URL}&target=target%2Fsonic-vs.img.gz
ARG FRR_RELOAD_URL=${SONIC_BASE_URL}&target=target%2Fdebs%2Fbullseye%2Ffrr-pythontools_8.5.1-sonic-0_all.deb

RUN apt-get update && \
apt-get --no-install-recommends install --yes \
curl \
linux-image-5.15.0-102-generic \
linux-image-cloud-amd64 \
net-tools \
ovmf \
python3 \
python3-guestfs \
qemu-system-x86 \
telnet \
tini && \
curl --location --output - "${SONIC_REMOTE_IMG}" | gunzip > sonic-vs.img
telnet

ENTRYPOINT ["/usr/bin/tini", "--"]
RUN curl --location --output - "${SONIC_IMG_URL}" | gunzip > sonic-vs.img && \
curl --location --output /frr-pythontools.deb "${FRR_RELOAD_URL}"

COPY config_db.json mirror_tap_to_eth.sh sonic_entrypoint.py /
ENTRYPOINT ["/launch.py"]

CMD ["/usr/bin/python3", "-u", "/sonic_entrypoint.py"]
COPY config_db.json mirror_tap_to_eth.sh launch.py /
10 changes: 9 additions & 1 deletion images/sonic/config_db.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
}
},
"FEATURE": {
"gnmi": {
"state": "disabled"
},
"mgmt-framework": {
"state": "disabled"
},
Expand All @@ -24,7 +27,7 @@
"snmp": {
"state": "disabled"
},
"telemetry": {
"teamd": {
"state": "disabled"
}
},
Expand Down Expand Up @@ -68,5 +71,10 @@
"admin_status": "up",
"mtu": "9100"
}
},
"VERSIONS": {
"DATABASE": {
"VERSION": "version_202311_03"
}
}
}
14 changes: 11 additions & 3 deletions images/sonic/sonic_entrypoint.py → images/sonic/launch.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,9 @@


class Qemu:
def __init__(self, name: str, memory: str, interfaces: int):
def __init__(self, name: str, smp: str, memory: str, interfaces: int):
self._name = name
self._smp = smp
self._memory = memory
self._interfaces = interfaces
self._p = None
Expand Down Expand Up @@ -46,6 +47,7 @@ def start(self) -> None:
cmd = [
'qemu-system-x86_64',
'-cpu', 'host',
'-smp', self._smp,
'-display', 'none',
'-enable-kvm',
'-machine', 'q35',
Expand Down Expand Up @@ -78,10 +80,15 @@ def initial_configuration(g: GuestFS) -> None:
sonic_target_wants = systemd_system + 'sonic.target.wants/'
g.mkdir_p(sonic_target_wants)

# Copy frr-pythontools into the image
g.copy_in(localpath='/frr-pythontools.deb', remotedir=image + 'rw/')

# Workaround: Speed up lldp startup by remove hardcoded wait of 90 seconds
g.ln_s(linkname=systemd_system + 'aaastatsd.timer', target='/dev/null') # Radius
g.ln_s(linkname=systemd_system + 'featured.timer', target='/dev/null') # Feature handling not necessary
g.ln_s(linkname=systemd_system + 'hostcfgd.timer', target='/dev/null') # After boot Host configuration
g.ln_s(linkname=systemd_system + 'rasdaemon.timer', target='/dev/null') # After boot Host configuration
g.ln_s(linkname=systemd_system + 'tacacs-config.timer', target='/dev/null') # After boot Host configuration
# Started by featured
g.ln_s(linkname=sonic_target_wants + 'lldp.service', target='/lib/systemd/system/lldp.service')

Expand Down Expand Up @@ -137,10 +144,11 @@ def main():
logger = logging.getLogger()

name = os.getenv('CLAB_LABEL_CLAB_NODE_NAME', default='switch')
memory = os.getenv('VM_MEMORY', default='2048')
smp = os.getenv('QEMU_SMP', default='2')
memory = os.getenv('QEMU_MEMORY', default='2048')
interfaces = int(os.getenv('CLAB_INTFS', 0)) + 1

vm = Qemu(name, memory, interfaces)
vm = Qemu(name, smp, memory, interfaces)

logger.info('Prepare disk')
vm.prepare_overlay(BASE_IMG)
Expand Down
7 changes: 4 additions & 3 deletions images/sonic/mirror_tap_to_eth.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash

# Script is taken from https://netdevops.me/2021/transparently-redirecting-packets/frames-between-interfaces/
# Script is taken from https://netdevops.me/2021/transparently-redirecting-packetsframes-between-interfaces/
# Read it for better understanding

set -o errexit
Expand All @@ -12,10 +12,11 @@ TAP_IF=$1
INDEX=${TAP_IF:3:3}

ip link set $TAP_IF up
ip link set $TAP_IF mtu 65000

# create tc eth<->tap redirect rules
tc qdisc add dev eth$INDEX ingress
tc filter add dev eth$INDEX parent ffff: protocol all matchall action mirred egress redirect dev $TAP_IF
tc filter add dev eth$INDEX parent ffff: protocol all u32 match u8 0 0 action mirred egress redirect dev $TAP_IF

tc qdisc add dev $TAP_IF ingress
tc filter add dev $TAP_IF parent ffff: protocol all matchall action mirred egress redirect dev eth$INDEX
tc filter add dev $TAP_IF parent ffff: protocol all u32 match u8 0 0 action mirred egress redirect dev eth$INDEX
1 change: 1 addition & 0 deletions inventories/group_vars/sonic/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ metal_core_spine_uplinks:

sonic_docker_routing_config_mode: split-unified
sonic_frr_mgmt_framework_config: false
sonic_frr_render: false

sonic_loopback_address: "{{ lo }}"
sonic_mgmtif_ip: "{{ ansible_host }}/16`"
Expand Down
5 changes: 0 additions & 5 deletions roles/sonic/defaults/main.yaml

This file was deleted.

41 changes: 17 additions & 24 deletions roles/sonic/tasks/frr-reload.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,34 +4,27 @@
port: 2605
state: started

- name: Download frr-reload.py
community.docker.docker_container_exec:
- name: Copy frr-pythontools into container
community.docker.docker_container_copy_into:
container: bgp
argv:
- curl
- --location
- "{{ frr_python_url }}"
- --output
- frr-reload.py
chdir: /usr/lib/frr
path: /frr-pythontools.deb
container_path: /root/frr-pythontools.deb
mode: "0655"

- name: Download frr-reload
- name: Install frr-pythontools
community.docker.docker_container_exec:
container: bgp
argv:
- curl
- --location
- "{{ frr_url }}"
- --output
- frr-reload
chdir: /usr/lib/frr
- dpkg
- -i
- frr-pythontools.deb
chdir: /root

- name: Change frr file permissions
community.docker.docker_container_exec:
- name: Place frr-reload
community.docker.docker_container_copy_into:
container: bgp
argv:
- chmod
- "0755"
- frr-reload.py
- frr-reload
chdir: /usr/lib/frr
content: |
#!/bin/sh
exec python3 /usr/lib/frr/frr-reload.py --reload /etc/frr/frr.conf
container_path: /usr/lib/frr/frr-reload
mode: "0755"