I've been working on building a #VPP-based router for the last year to support a small ISP I've been partnering with. I recently began polishing it (e.g., building an image that can be installable from USB, etc.) and adding a unified configuration CLI that abstracts away the details of managing multiple VPP processes, FRR, ZFS snapshots, (eventually) immutable system, etc.
This weekend I began experimenting with adding local #LLM capabilities (using #Ollama with gpt-oss:120b running on an AMD AI MAX 395+ system with 128GB of unified RAM) and I'm really excited by the possibilities.
imp> agent
[+] Connected to Ollama (gpt-oss:120b)
Type your request, or 'exit' to return
agent> Let's add a new loopback interface with IPv4 10.5.5.1/32 and IPv6 fc00::5:5:1/128. It can be called "service".
Thinking...
[Tool: add_loopback]
create_lcp: True
ipv4_cidr: 10.5.5.1/32
ipv6_cidr: fc00::5:5:1/128
name: service
→ Added loop0 (service) with 10.5.5.1/32, fc00::5:5:1/128
Thinking...
The loopback interface loop0 (named “service”) has been created with:
• IPv4 10.5.5.1/32
• IPv6 fc00::5:5:1/128
Let me know if you’d like any further changes!
agent> exit
Returning to IMP REPL...
imp*> apply
[+] Configuration saved to /persistent/config/router.json
[+] Configuration files generated in /tmp/imp-generated-config
Changes detected:
Detected 1 configuration change(s):
- ADD loopback loop0
[DRY-RUN] VPP Core changes (5 commands):
create loopback interface instance 0
set interface state loop0 up
lcp create loop0 host-if lo0
set interface ip address loop0 10.5.5.1/32
set interface ip address loop0 fc00::5:5:1/128
Apply changes live? [Y/n]: y
[+] Applying changes live...
Detected 1 configuration change(s):
- ADD loopback loop0
Applying VPP Core changes...
[+] OK (5 commands)
[+] Live changes applied successfully
imp>
…and watching it come up (and be automatically handled by #iBGP since I'm pinging from a host that's not directly connected).
> ping 10.5.5.1
PING 10.5.5.1 (10.5.5.1): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
Request timeout for icmp_seq 4
Request timeout for icmp_seq 5
Request timeout for icmp_seq 6
Request timeout for icmp_seq 7
Request timeout for icmp_seq 8
Request timeout for icmp_seq 9
64 bytes from 10.5.5.1: icmp_seq=10 ttl=63 time=3.067 ms
64 bytes from 10.5.5.1: icmp_seq=11 ttl=63 time=3.132 ms
64 bytes from 10.5.5.1: icmp_seq=12 ttl=63 time=3.128 ms
64 bytes from 10.5.5.1: icmp_seq=13 ttl=63 time=4.260 ms
64 bytes from 10.5.5.1: icmp_seq=14 ttl=63 time=3.189 ms
64 bytes from 10.5.5.1: icmp_seq=15 ttl=63 time=3.992 ms