Skip to content

Instantly share code, notes, and snippets.

@takehaya
Last active March 26, 2023 17:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save takehaya/9f7672a9f25076d5116a239e2ff2c93e to your computer and use it in GitHub Desktop.
Save takehaya/9f7672a9f25076d5116a239e2ff2c93e to your computer and use it in GitHub Desktop.

IETF用コンフィグスペニット

実際のオペレートの時はtmuxの2画面開きつつやってた

sudo env exabgp.tcp.bind="0.0.0.0" exabgp.daemon.user=root exabgp -d /etc/exabgp/exabgp.conf 
sudo exabgp-cli show adj-rib out
sudo su
mkdir -p /run/exabgp
mkfifo /run/exabgp/exabgp.{in,out}
sudo ip -6 route add 2001 dev ens3

announce ipv4 "mup \
        mup-isd 10.0.1.0/24 rd 100:100 \
        next-hop 2001::1 \
        extended-community [ target:10:10 ] \
        bgp-prefix-sid-srv6 ( l3-service 2001:db8:1:1:: 0x48 [64,24,16,0,0,0] );"

exabgp-cli announce ipv4 "mup \
			mup-dsd 10.0.0.1 rd 100:100 \
			next-hop 2001::2 \
			extended-community [ target:10:10 mup:10:10 ] \
			bgp-prefix-sid-srv6 ( l3-service 2001:db8:1:1:: 0x13 [64,24,16,0,0,0] );"

exabgp-cli announce ipv4 "mup \
			mup-t1st 192.168.0.1/32 rd 100:100 teid 12345 qfi 9 endpoint 10.0.0.1 \
			next-hop 10.0.0.2 \
			extended-community [ target:10:10 ];"

exabgp-cli announce ipv4 "mup \
			mup-t2st 10.0.0.1 rd 100:100 teid 12345/32 \
			next-hop 10.0.0.2 \
			extended-community [ target:10:10 mup:10:10 ];"
# mup case
exabgp-cli announce ipv4 "mup mup-isd 10.0.1.1/24 rd 100:100 next-hop 2001::1 extended-community [ target:10:10 ] bgp-prefix-sid-srv6 ( l3-service 2001:db8:1:1:: 0x48 [64,24,16,0,0,0] );"

exabgp-cli announce ipv4 "mup mup-dsd 10.0.0.1 rd 100:100 next-hop 2001::1 extended-community [ target:10:10 mup:10:10 ] bgp-prefix-sid-srv6 ( l3-service 2001:db8:1:1:: 0x13 [64,24,16,0,0,0] );"
exabgp-cli announce ipv4 "mup mup-dsd 10.0.0.1 rd 100:100 next-hop 2001::2 extended-community [ target:10:10 mup:10:10 ] bgp-prefix-sid-srv6 ( l3-service 2001:db8:1:1:: 0x13 [64,24,16,0,0,0] );"
gobgp global rib add \
    -a ipv4-mup \
    isd 10.0.1.0/24 \
    rd 100:100 \
    prefix 2001:db8:1:1::/64 \
    locator-node-length 24 \
    function-length 16 \
    behavior ENDM_GTP4E \
    rt 10:10 \
    nexthop 2001::2
gobgp global rib add \
    -a ipv4-mup \
    dsd 10.0.1.1 \
    rd 100:100 \
    prefix 2001:db8:1:1::/64 \
    locator-node-length 24 \
    function-length 16 \
    behavior END_DT4 \
    rt 10:10 \
    mup 10:10 \
    nexthop 2001::2
gobgp global rib add \
    -a ipv4-mup \
    t1st 192.168.1.1/32 \
    rd 100:100 \
    rt 10:10 \
    teid 12345 \
    qfi 9 \
    endpoint 10.0.0.2 \
    nexthop 10.0.0.1
gobgp global rib add \
    -a ipv4-mup \
    t2st 10.0.0.2 \
    rd 100:100 \
    rt 10:10 \
    teid 12345 \
    mup 10:10 \
    nexthop 10.0.0.1

cloudinit

#cloud-config
hostname: exabgp1
manage_etc_hosts: True
timezone: Asia/Tokyo
system_info:
  default_user:
    name: cisco
password: cisco
chpasswd: { expire: False }
ssh_pwauth: True
ssh_authorized_keys:
    - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIACOor1kHlXoIicx/opFdgJ+E/ltzHDj2I5fDmhlZOOE higebu"
    - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBXdvi0JZGUBQGb4YNEg3/RzwPGdnBw0+0yfW74g64PQ takemio"
packages:
  - unzip
  - make
  - python3
  - python3-pip
write_files:
  - path: /root/install-exabgp.sh
    permissions: 0744
    owner: root
    content: |
      #!/usr/bin/env bash
      set -e
      apt-get update
      curl -sSL https://install.python-poetry.org | python3 -
      wget https://github.com/Exa-Networks/exabgp/archive/refs/heads/main.zip
      unzip main.zip
      pushd exabgp-main
      make build
      pip install ./dist/exabgp-5.0.0-py3-none-any.whl
      cat << EOF >/etc/systemd/system/exabgp.service
      [Unit]
      Description=ExaBGP
      Documentation=man:exabgp(1)
      Documentation=man:exabgp.conf(5)
      Documentation=https://github.com/Exa-Networks/exabgp/wiki
      Wants=network.target
      After=network.target
      ConditionPathExists=/etc/exabgp/exabgp.conf

      [Service]
      User=root
      Group=root
      Environmemt=exabgp.tcp.bind="0.0.0.0"
      Environment=exabgp.tcp.port=179
      Enviroment=exabgp.daemon.user=root
      RuntimeDirectory=exabgp
      RuntimeDirectoryMode=0750
      ExecStartPre=-/usr/bin/mkfifo /run/exabgp/exabgp.in
      ExecStartPre=-/usr/bin/mkfifo /run/exabgp/exabgp.out
      ExecStart=/usr/local/bin/exabgp /etc/exabgp/exabgp.conf
      ExecReload=/bin/kill -USR1 $MAINPID
      Restart=always
      CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
      AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE

      [Install]
      WantedBy=multi-user.target
      EOF
      systemctl daemon-reload
      popd
      mkdir /etc/exabgp
      mkdir -p /run/exabgp
      mkfifo /run/exabgp/exabgp.{in,out}
      cat << EOF > /etc/exabgp/exabgp.conf
      neighbor 2001::8 {
            router-id 5.5.5.5;
            local-address 2001::5;
            local-as 65182;
            peer-as 65182;
            family {
                ipv4 mup;
                ipv6 mup;
            }
            announce {
              ipv4 {
                mup \
                mup-isd 10.0.1.0/24 rd 100:100 \
                next-hop 2001::11 \
                extended-community [ target:100:1000 ] \
                bgp-prefix-sid-srv6 ( l3-service 2001:db8:1:1:: 0x48 [64,24,16,0,0,0] );

                mup \
                mup-dsd 10.0.0.1 rd 100:100 \
                next-hop 2001::12 \
                extended-community [ target:100:5001 mup:10:10 ] \
                bgp-prefix-sid-srv6 ( l3-service 2001:db8:1:1:: 0x13 [64,24,16,0,0,0] );

                mup \
                mup-t1st 192.168.0.1/32 rd 100:100 teid 12345 qfi 9 endpoint 10.0.0.1 \
                next-hop 10.0.0.2 \
                extended-community [ target:100:4001 ];

                mup \
                mup-t2st 10.0.0.1 rd 100:100 teid 12345/32 \
                next-hop 10.0.0.2 \
                extended-community [ target:100:6000 mup:10:10 ];

                mup \
                mup-t2st 10.0.0.1 rd 100:100 teid 12345/23 \
                next-hop 10.0.0.2 \
                extended-community [ target:100:6000 mup:10:10 ];

                mup \
                mup-t2st 10.0.0.1 rd 100:100 teid 12345/0 \
                next-hop 10.0.0.2 \
                extended-community [ target:100:6000 mup:10:10 ];
              }
              ipv6 {
                mup \
                mup-isd 2001::/64 rd 100:100 \
                next-hop 2001::12 \
                extended-community [ target:100:1000 ] \
                bgp-prefix-sid-srv6 ( l3-service 2001:db8:1:1:: 0x47 [64,24,16,0,0,0] );

                mup \
                mup-dsd 2001::1 rd 100:100 \
                next-hop 2001::12 \
                extended-community [ target:100:5001 mup:10:10 ] \
                bgp-prefix-sid-srv6 ( l3-service 2001:db8:2:2:: 0x18 [64,24,16,0,0,0] );

                mup \
                mup-t1st 2001:db8:1:1::1/128 rd 100:100 teid 12345 qfi 9 endpoint 2001::1\
                next-hop 2001::12 \
                extended-community [ target:100:4001 ];

                mup \
                mup-t2st 2001::1 rd 100:100 teid 12345/32 \
                next-hop 2001::12 \
                extended-community [ target:100:6000 mup:10:10 ];
              }
            }
      }
      EOF
      groupadd --system exabgp
      useradd --system -d /var/lib/exabgp -s /bin/bash -g exabgp exabgp
      systemctl enable exabgp
      systemctl start exabgp
        
  - path: /etc/netplan/50-cloud-init.yaml
    content: |
      network:
        ethernets:
          lo:
            addresses:
              - 127.0.0.1/8
              - 5.5.5.5/32
              - 2001::5/64
          ens2:
            dhcp4: true
          ens3:
            routes:
              - to: "2001::8"
                via: "fe80::5054:ff:fe03:bf64"
                on-link: true
            addresses:
              - fe80::5054:ff:fe08:2435/64
          ens4:
            dhcp4: false
        version: 2
     
runcmd:
  - sudo netplan apply
  - sudo bash /root/install-exabgp.sh

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment