<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>Raymond P. Burkholder - Things I Do - Networks</title>
    <link>http://blog.raymond.burkholder.net/</link>
    <description>In And Around Technology and The Arts</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.7.2 - http://www.s9y.org/</generator>
    <pubDate>Sun, 22 Mar 2026 15:24:52 GMT</pubDate>

    <image>
        <url>http://blog.raymond.burkholder.net/templates/bulletproof/img/s9y_banner_small.png</url>
        <title>RSS: Raymond P. Burkholder - Things I Do - Networks - In And Around Technology and The Arts</title>
        <link>http://blog.raymond.burkholder.net/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Debian Linux Network Configuration Tools</title>
    <link>http://blog.raymond.burkholder.net/index.php?/archives/1341-Debian-Linux-Network-Configuration-Tools.html</link>
            <category>Networks</category>
    
    <comments>http://blog.raymond.burkholder.net/index.php?/archives/1341-Debian-Linux-Network-Configuration-Tools.html#comments</comments>
    <wfw:comment>http://blog.raymond.burkholder.net/wfwcomment.php?cid=1341</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.raymond.burkholder.net/rss.php?version=2.0&amp;type=comments&amp;cid=1341</wfw:commentRss>
    

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;In the Nanog email list, the following was posted as a summary of current tooling use for network management in Debian:

&lt;blockquote&gt;
&lt;p&gt;Linux has a bunch of different possible ways to administer all of this stuff.

&lt;ul&gt;
  &lt;li&gt;The most comprehensive CLI mechanism is &lt;a href=&quot;https://packages.debian.org/trixie/iproute2&quot; target=_blank&gt;iproute2&lt;/a&gt; (the “ip” command and some related constructs).
  &lt;li&gt;The most comprehensive and capable persistent configuration database mechanism is &lt;a href=&quot;https://wiki.debian.org/SystemdNetworkd&quot; target=_blank&gt;systemd-networkd&lt;/a&gt;.
  &lt;/ul&gt;

&lt;p&gt;Other &lt;a href=&quot;https://www.debian.org/doc/manuals/debian-reference/ch05.en.html#_the_modern_network_configuration_without_gui&quot; target=_blank&gt;persistent mechanisms&lt;/a&gt; include:
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://packages.debian.org/trixie/netplan.io&quot; target=_blank&gt;Netplan&lt;/a&gt; (YAML based configurations that now days mostly get parsed into systemd-networkd files and then executed).
  &lt;li&gt;Debian Traditional (the /etc/network/interfaces file and/or interfaces.d directory, ifup/ifdown/etc.).  
	Lacks many features, but most can be worked around with iproute2 shell commands added to triggers in the file.
  &lt;li&gt;Debian Traditional can be supplemented with &lt;a href=&quot;https://packages.debian.org/trixie/ifupdown2&quot; target=_blank&gt;ifupdown2&lt;/a&gt; - ifupdown replacement from Cumulus Networks
  &lt;li&gt;&lt;a href=&quot;https://packages.debian.org/trixie/network-manager&quot; target=_blank&gt;NetworkManager&lt;/a&gt; (semi-capable, but any capabilities it lacks are just hard to cope with).
  &lt;/ul&gt;

&lt;p&gt;My strong recommendation is take the time to learn systemd-networkd and use it. It’s a bit of a pain and some of the syntax can be arcane and frustrating. It’s also annoying the way it dithers the configuration for a given interface across a multitude of files in some cases. However, when I think the obvious corner cases through and consider the alternatives, I usually find myself realizing that they’ve probably made as good a choice as any for what needs to be done.

&lt;p&gt;Overall, it’s a pretty comprehensive interface and provides good logs for troubleshooting in most circumstances.
&lt;/blockquote&gt;
 
    </content:encoded>

    <pubDate>Sun, 22 Mar 2026 15:06:04 +0000</pubDate>
    <guid isPermaLink="false">http://blog.raymond.burkholder.net/index.php?/archives/1341-guid.html</guid>
    
</item>
<item>
    <title>NordVPN with new StrongSwan Confguration File Format</title>
    <link>http://blog.raymond.burkholder.net/index.php?/archives/1332-NordVPN-with-new-StrongSwan-Confguration-File-Format.html</link>
            <category>Networks</category>
    
    <comments>http://blog.raymond.burkholder.net/index.php?/archives/1332-NordVPN-with-new-StrongSwan-Confguration-File-Format.html#comments</comments>
    <wfw:comment>http://blog.raymond.burkholder.net/wfwcomment.php?cid=1332</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.raymond.burkholder.net/rss.php?version=2.0&amp;type=comments&amp;cid=1332</wfw:commentRss>
    

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;It has been a while since I last setup NordVPN on a Debian Linux using StrongSwan.  StrongSwan is now using &#039;native&#039; files rather than the now deprecated ipsec files.  &lt;a href=&quot;https://support.nordvpn.com/hc/en-us/articles/20371023942289-How-to-connect-to-NordVPN-with-IKEv2-IPSec-on-Linux&quot; target=_blank&gt;NordVPN Example: How to connect to NordVPN with IKEv2/IPSec on Linux&lt;/a&gt; refers to the old format.  Here is a new format.

&lt;p&gt;Here is my take on a successful installation.  

&lt;blockquote&gt;&lt;pre&gt;
apt install \
  --no-install-recommends \
    strongswan \
    libstrongswan-standard-plugins \
    libstrongswan-extra-plugins \
    libcharon-extra-plugins
wget https://downloads.nordcdn.com/certificates/root.pem -O /etc/swanctl/x509ca/NordVPN.pem
sed -i &#039;s/load = yes/load = no/&#039; /etc/strongswan.d/charon/constraints.conf
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;An example /etc/swanctl/swanctl.conf file:

&lt;blockquote&gt;&lt;pre&gt;
connections {
  nordvpn {
    version = 2
    proposals = aes192gcm16-aes128gcm16-prfsha256-ecp256-ecp521,aes192-sha256-modp3072,default
    rekey_time = 0s
    fragmentation = yes
    dpd_delay = 300s
    local_addrs = %defaultroute
    remote_addrs = &lt;nordvpn server name&gt;
    vips=0.0.0.0,::
    local {
      auth = eap-mschapv2
      eap_id = &quot;&amp;lt;username&amp;gt;&quot;
    }
    remote {
      auth = pubkey
      cacerts = /etc/swanctl/x509ca/NordVPN.pem
      id = %any
    }
    children {
      nordvpn {
        remote_ts = 0.0.0.0/0,::/0
        rekey_time = 0s
        dpd_action = clear
        esp_proposals = aes192gcm16-aes128gcm16-prfsha256-ecp256-modp3072,aes192-sha256-ecp256-modp3072,default
      }
    }
  }
}

secrets {
  eap-nordvpn {
    id = &quot;&amp;lt;username&amp;gt;&quot;
    secret = &quot;&amp;lt;password&amp;gt;&quot;
  }
}
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;If you have a local network to which you need access when the vpn is up, StrongSwan using route table 220 for forwarding.  Use the following command to see current settings:

&lt;blockquote&gt;&lt;pre&gt;
# ip rule list
0:      from all lookup local
220:    from all lookup 220
32766:  from all lookup main
32767:  from all lookup default

# ip route list table 220
default via 192.168.1.10 dev eth0 proto static src 
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;To add your local network to the route table.  Additional subnets are added in a similar way.  Change the interface name to suit your local circumstances.  Use the &lt;a href=&quot;https://docs.strongswan.org/docs/latest/plugins/updown.html&quot; target=_blank&gt;updown Plugin&lt;/a&gt; for better control of the local routing.

&lt;blockquote&gt;&lt;pre&gt;
ip route add table 192.168.1.0/24 dev wlan0
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;This may be required for changes made:

&lt;blockquote&gt;&lt;pre&gt;
# systemctl restart strongswan
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;Tunnel related state and status commands:
&lt;blockquote&gt;&lt;pre&gt;
sudo swanctl --load-conns
sudo swanctl --list-conns
sudo swanctl --list-certs
sudo swanctl --list-sas
sudo swanctl --initiate --child nordvpn
sudo swanctl --terminate --child nordvpn
sudo swanctl --reload-settings
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;References:
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.rockyourcode.com/how-to-setup-an-ikev2-vpn-connection-on-arch-linux-example-nordvpn/&quot; target=_blank&gt;How to Setup an IKEv2 VPN Connection on Arch Linux (Example: NordVPN)&lt;/a&gt; - primary configuration template
  &lt;li&gt;&lt;a href=&quot;https://serverfault.com/questions/709979/allow-strongswan-roadwarrior-to-access-local-lan&quot; target=_blank&gt;Allow Strongswan roadwarrior to access local LAN&lt;/a&gt; - keeping local traffic out of the vpn
  &lt;/ul&gt; 
    </content:encoded>

    <pubDate>Sun, 28 Sep 2025 18:19:29 +0000</pubDate>
    <guid isPermaLink="false">http://blog.raymond.burkholder.net/index.php?/archives/1332-guid.html</guid>
    
</item>
<item>
    <title>Networks on Linux</title>
    <link>http://blog.raymond.burkholder.net/index.php?/archives/1249-Networks-on-Linux.html</link>
            <category>Networks</category>
    
    <comments>http://blog.raymond.burkholder.net/index.php?/archives/1249-Networks-on-Linux.html#comments</comments>
    <wfw:comment>http://blog.raymond.burkholder.net/wfwcomment.php?cid=1249</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.raymond.burkholder.net/rss.php?version=2.0&amp;type=comments&amp;cid=1249</wfw:commentRss>
    

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://learn.srlinux.dev/&quot; target=_blank&gt;Learn Nokia SR Linux&lt;/a&gt; - &lt;a href=&quot;https://www.nokia.com/networks/ip-networks/service-router-linux-NOS/&quot; target=_blank&gt;Service Router Linux
  &lt;li&gt;&lt;a href=&quot;https://netdevops.me/2021/nokia-sr-linux-goes-public/&quot; target=_blank&gt;SR tutorial&lt;/a&gt; with &lt;a href=&quot;https://netdevops.me/2021/nokia-sr-linux-goes-public/&quot; target=_blank&gt;containerlab&lt;/a&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.theregister.com/2016/03/09/microsoft_sonic_debian/&quot; target=_blank&gt;Microsoft has crafted a switch OS on Debian Linux&lt;/a&gt;
  &lt;/ul&gt;
 
    </content:encoded>

    <pubDate>Sat, 11 Nov 2023 16:43:04 +0000</pubDate>
    <guid isPermaLink="false">http://blog.raymond.burkholder.net/index.php?/archives/1249-guid.html</guid>
    
</item>
<item>
    <title>systemd-networkd</title>
    <link>http://blog.raymond.burkholder.net/index.php?/archives/1230-systemd-networkd.html</link>
            <category>Networks</category>
    
    <comments>http://blog.raymond.burkholder.net/index.php?/archives/1230-systemd-networkd.html#comments</comments>
    <wfw:comment>http://blog.raymond.burkholder.net/wfwcomment.php?cid=1230</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.raymond.burkholder.net/rss.php?version=2.0&amp;type=comments&amp;cid=1230</wfw:commentRss>
    

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;References

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://wiki.archlinux.org/title/Systemd-networkd&quot; target=_blank&gt;systemd-networkd&lt;/a&gt; - from archlinux, with reference to &lt;a href=&quot;https://wiki.archlinux.org/title/Systemd-nspawn&quot; target=_blank&gt;systemd-nspawn&lt;/a&gt; for container networking. -- interesting note:  &quot;it is possible to run Docker containers inside an unprivileged systemd-nspawn container with cgroups v2 enabled&quot;.  But from an old talk:
&lt;ul&gt;  
  &lt;li&gt;&lt;a href=&quot;https://lwn.net/Articles/572957/&quot; target=_blank&gt;Creating containers with systemd-nspawn&lt;/a&gt; - It is targeted at &quot;building, testing, debugging, and profiling&quot;, not at deployment. systemd-nspawn uses the same kernel APIs that the other two tools use, but is not a competitor to them because it is not targeted at running in a production environment. 
   &lt;/ul&gt;
&lt;/ul&gt;
 
    </content:encoded>

    <pubDate>Fri, 23 Jun 2023 17:21:19 +0000</pubDate>
    <guid isPermaLink="false">http://blog.raymond.burkholder.net/index.php?/archives/1230-guid.html</guid>
    
</item>
<item>
    <title>NetworkManager - error - 'device is strictly unmanaged'</title>
    <link>http://blog.raymond.burkholder.net/index.php?/archives/1229-NetworkManager-error-device-is-strictly-unmanaged.html</link>
            <category>Networks</category>
    
    <comments>http://blog.raymond.burkholder.net/index.php?/archives/1229-NetworkManager-error-device-is-strictly-unmanaged.html#comments</comments>
    <wfw:comment>http://blog.raymond.burkholder.net/wfwcomment.php?cid=1229</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.raymond.burkholder.net/rss.php?version=2.0&amp;type=comments&amp;cid=1229</wfw:commentRss>
    

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;Gone are the good &#039;ole days of using /etc/network/interfaces to manage basic networking stack configurations.  There seems to be an explosion of alternate ways, each stepping on each other&#039;s toes: /etc/network/interfaces, NetworkManager, NetPlan, systemd-networking, ...

&lt;p&gt;A problem I had the other day was where a new installation of an espressobin had NetworkManager installed, no NetPlan, and some stuff in /etc/network/interfaces.  Unfortunately, since NetworkManager controls the dhcp-client, the /etc/network/interfaces interface was not obtaining an address.

&lt;p&gt;The solution was to edit /etc/NetworkManager/conf.d/10-ignore-interfaces.conf, and comment the following line:

&lt;blockquote&gt;
[keyfile]
#unmanaged-devices=interface-name:eth*,interface-name:wan*,interface-name:lan*,interface-name:br*
&lt;/blockquote&gt;

&lt;p&gt;After &#039;sudo service NetworkManager restart&#039;, this solves the error of NetworkManager not being able to manage strictly unmanaged interfaces, which for the espressobin, are lan0, lan1, wan.

&lt;p&gt;Some commands for NetworkManager:

&lt;ul&gt;
  &lt;li&gt;nmcli
  &lt;li&gt;nmcli device show
  &lt;li&gt;nmcli connection show
  &lt;li&gt;
  &lt;/ul&gt;

&lt;p&gt;File locations:

&lt;ul&gt;
  &lt;li&gt;/etc/NetworkManager/system-connections/ - interface configurations
  &lt;li&gt;/usr/share/doc/network-manager/README.Debian - notes about managed/unmanaged devices
  &lt;/ul&gt;

&lt;p&gt;Some references:

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://wiki.debian.org/NetworkManager&quot; target=_blank&gt;Debian NetworkManager&lt;/a&gt; - mostly desktop?
  &lt;li&gt;&lt;a href=&quot;https://wiki.debian.org/NetworkConfiguration&quot; target=_blank&gt;Debian NetworkConfiguration&lt;/a&gt; - nostly server?
  &lt;li&gt;&lt;a href=&quot;https://wiki.gnome.org/Projects/NetworkManager&quot; target=_blank&gt;NetworkManager homepage&lt;/a&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer-old.gnome.org/NetworkManager/stable/nmcli.html&quot; target=_blank&gt;nmcli&lt;/a&gt; - command-line tool for controlling NetworkManager
  &lt;li&gt;&lt;a href=&quot;https://networkmanager.dev/docs/api/latest/NetworkManager.conf.html&quot; target=_blank&gt;NetworkManager.conf&lt;/a&gt; - NetworkManager configuration file
  &lt;li&gt;&lt;a href=&quot;https://wiki.archlinux.org/title/NetworkManager&quot; target=_blank&gt;NetworkManager&lt;/a&gt; - archlinux view of NetworkManager, with a section on VPN connectivity based upon profiles
  &lt;/ul&gt; 
    </content:encoded>

    <pubDate>Fri, 23 Jun 2023 16:36:16 +0000</pubDate>
    <guid isPermaLink="false">http://blog.raymond.burkholder.net/index.php?/archives/1229-guid.html</guid>
    
</item>
<item>
    <title>Linux Network Diagnostic</title>
    <link>http://blog.raymond.burkholder.net/index.php?/archives/1214-Linux-Network-Diagnostic.html</link>
            <category>Networks</category>
    
    <comments>http://blog.raymond.burkholder.net/index.php?/archives/1214-Linux-Network-Diagnostic.html#comments</comments>
    <wfw:comment>http://blog.raymond.burkholder.net/wfwcomment.php?cid=1214</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.raymond.burkholder.net/rss.php?version=2.0&amp;type=comments&amp;cid=1214</wfw:commentRss>
    

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;Obtaining interface list, which can be used to drill down into details:

&lt;blockquote&gt;&lt;pre&gt;
$ ls /sys/class/net/
br0  eno1  enp5s0  lo  lxcbr0  veth-tf64-v90  vlan90  vlan90_br0  wlp6s0
rpb@nuc:~/data/passwords$ ls /sys/class/net/enp5s0
addr_assign_type  carrier             dev_id    gro_flush_timeout  master                operstate       proto_down  testing       upper_br0
address           carrier_changes     dev_port  ifalias            mtu                   phys_port_id    queues      threaded
addr_len          carrier_down_count  dormant   ifindex            name_assign_type      phys_port_name  speed       tx_queue_len
broadcast         carrier_up_count    duplex    iflink             napi_defer_hard_irqs  phys_switch_id  statistics  type
brport            device              flags     link_mode          netdev_group          power           subsystem   uevent
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;Provides some descriptive details and places of interest:

&lt;blockquote&gt;&lt;pre&gt;
$ sudo udevadm test-builtin net_id /sys/class/net/enp5s0
Trying to open &quot;/etc/systemd/hwdb/hwdb.bin&quot;...
Trying to open &quot;/etc/udev/hwdb.bin&quot;...
Trying to open &quot;/usr/lib/systemd/hwdb/hwdb.bin&quot;...
Trying to open &quot;/lib/systemd/hwdb/hwdb.bin&quot;...
Trying to open &quot;/lib/udev/hwdb.bin&quot;...
=== trie on-disk ===
tool version:          252
file size:        12198286 bytes
header size             80 bytes
strings            2478998 bytes
nodes              9719208 bytes
Loading kernel module index.
Found cgroup2 on /sys/fs/cgroup/, full unified hierarchy
Found container virtualization none.
Using default interface naming scheme &#039;v252&#039;.
Parsed configuration file &quot;/usr/lib/systemd/network/99-default.link&quot;
Parsed configuration file &quot;/usr/lib/systemd/network/73-usb-net-by-mac.link&quot;
Created link configuration context.
ID_NET_NAMING_SCHEME=v252
ID_NET_NAME_MAC=enx54b2030473fa
enp5s0: MAC address identifier: hw_addr=54:b2:03:04:73:fa → x54b2030473fa
ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
sd-device: Failed to chase symlinks in &quot;/sys/devices/pci0000:00/0000:00:1c.1/0000:05:00.0/of_node&quot;.
sd-device: Failed to chase symlinks in &quot;/sys/devices/pci0000:00/0000:00:1c.1/0000:05:00.0/physfn&quot;.
enp5s0: Parsing slot information from PCI device sysname &quot;0000:05:00.0&quot;: success
enp5s0: dev_port=0
enp5s0: PCI path identifier: domain=0 bus=5 slot=0 func=0 phys_port= dev_port=0 → p5s0
ID_NET_NAME_PATH=enp5s0
Unload kernel module index.
Unloaded link configuration context.
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;The raw details contributing to the previous data:

&lt;blockquote&gt;&lt;pre&gt;
$ udevadm info /sys/class/net/enp5s0
P: /devices/pci0000:00/0000:00:1c.1/0000:05:00.0/net/enp5s0
M: enp5s0
R: 0
U: net
I: 2
E: DEVPATH=/devices/pci0000:00/0000:00:1c.1/0000:05:00.0/net/enp5s0
E: SUBSYSTEM=net
E: INTERFACE=enp5s0
E: IFINDEX=2
E: USEC_INITIALIZED=5978173
E: ID_NET_NAMING_SCHEME=v252
E: ID_NET_NAME_MAC=enx54b2030473fa
E: ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
E: ID_NET_NAME_PATH=enp5s0
E: ID_BUS=pci
E: ID_VENDOR_ID=0x8086
E: ID_MODEL_ID=0x157b
E: ID_PCI_CLASS_FROM_DATABASE=Network controller
E: ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
E: ID_VENDOR_FROM_DATABASE=Intel Corporation
E: ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection
E: ID_PATH=pci-0000:05:00.0
E: ID_PATH_TAG=pci-0000_05_00_0
E: ID_NET_DRIVER=igb
E: ID_NET_LINK_FILE=/usr/lib/systemd/network/99-default.link
E: ID_NET_NAME=enp5s0
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/enp5s0
E: TAGS=:systemd:
E: CURRENT_TAGS=:systemd:
&lt;/pre&gt;&lt;/blockquote&gt;

 
    </content:encoded>

    <pubDate>Tue, 07 Mar 2023 21:53:08 +0000</pubDate>
    <guid isPermaLink="false">http://blog.raymond.burkholder.net/index.php?/archives/1214-guid.html</guid>
    
</item>
<item>
    <title>Load Balancer Tuning: Comparative Analysis of HAProxy Load Balancing Methods</title>
    <link>http://blog.raymond.burkholder.net/index.php?/archives/1210-Load-Balancer-Tuning-Comparative-Analysis-of-HAProxy-Load-Balancing-Methods.html</link>
            <category>Networks</category>
    
    <comments>http://blog.raymond.burkholder.net/index.php?/archives/1210-Load-Balancer-Tuning-Comparative-Analysis-of-HAProxy-Load-Balancing-Methods.html#comments</comments>
    <wfw:comment>http://blog.raymond.burkholder.net/wfwcomment.php?cid=1210</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.raymond.burkholder.net/rss.php?version=2.0&amp;type=comments&amp;cid=1210</wfw:commentRss>
    

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;Load balancing is prevalent in practical application (e.g., web) deployments seen today. One such load balancer, HAProxy, remains relevant as an open-source, easy-to-use system. In the context of web systems, the load balancer tier possesses significant influence over system performance and the incurred cost, which is decisive for cloud-based deployments. Therefore, it is imperative to properly tune the load balancer configuration and get the most performance out of the existing resources. In this technical report, we first introduce the HAProxy architecture and its load balancing methods. Then, we discuss fine-tuning parameters within this load balancer and examine their performances in face of various workload intensities. Our evaluation encompasses various types of web requests and homogeneous and heterogeneous back-ends. Lastly, based on the findings of this study, we present a set of best practices to optimally configure HAProxy. 

&lt;p&gt;&lt;a href=&quot;https://arxiv.org/abs/2212.14198&quot; target=_blank&gt;Load Balancer Tuning: Comparative Analysis of HAProxy Load Balancing Methods&lt;/a&gt; 
    </content:encoded>

    <pubDate>Tue, 03 Jan 2023 06:42:18 +0000</pubDate>
    <guid isPermaLink="false">http://blog.raymond.burkholder.net/index.php?/archives/1210-guid.html</guid>
    
</item>
<item>
    <title>iproute2 command variations</title>
    <link>http://blog.raymond.burkholder.net/index.php?/archives/1204-iproute2-command-variations.html</link>
            <category>Networks</category>
    
    <comments>http://blog.raymond.burkholder.net/index.php?/archives/1204-iproute2-command-variations.html#comments</comments>
    <wfw:comment>http://blog.raymond.burkholder.net/wfwcomment.php?cid=1204</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.raymond.burkholder.net/rss.php?version=2.0&amp;type=comments&amp;cid=1204</wfw:commentRss>
    

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;using ip link in brief mode:

&lt;blockquote&gt;&lt;pre&gt;
# ip -br link
lo               UNKNOWN        00:00:00:00:00:00 &lt;LOOPBACK,MULTICAST,UP,LOWER_UP&gt;
eno1             UP             c8:1f:66:ea:43:20 &lt;BROADCAST,MULTICAST,UP,LOWER_UP /&gt;
eno2             UP             c8:1f:66:ea:43:21 &lt;BROADCAST,MULTICAST,UP,LOWER_UP /&gt;
eno3             UP             c8:1f:66:ea:43:22 &lt;BROADCAST,MULTICAST,UP,LOWER_UP /&gt;
eno4             DOWN           c8:1f:66:ea:43:23 &lt;BROADCAST,MULTICAST /&gt;
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt; using ip addr in brief mode:

&lt;blockquote&gt;&lt;pre&gt;
# ip -br a
lo               UNKNOWN        127.0.0.1/8 10.32.0.12/32 ::1/128
eno1             UP
eno2             UP
eno3             UP             10.32.3.12/24 fe80::ca1f:66ff:feea:4322/64
eno4             DOWN
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;Access to the SFP style:

&lt;blockquote&gt;&lt;pre&gt;
# ethtool -m enp65s0f0np0
Identifier                                : 0x03 (SFP)
Extended identifier                       : 0x04 (GBIC/SFP defined by 2-wire interface ID)
Connector                                 : 0x23 (No separable connector)
Transceiver codes                         : 0x01 0x00 0x00 0x04 0x00 0x04 0x00 0x00 0x0d
Transceiver type                          : Infiniband: 1X Copper Passive
Transceiver type                          : Ethernet: 1000BASE-CX
Transceiver type                          : Passive Cable
Transceiver type                          : Extended: 25G Base-CR CA-N
Encoding                                  : 0x06 (64B/66B)
BR, Nominal                               : 25750MBd
Rate identifier                           : 0x00 (unspecified)
Length (SMF,km)                           : 0km
Length (SMF)                              : 0m
Length (50um)                             : 0m
Length (62.5um)                           : 0m
Length (Copper)                           : 1m
Length (OM3)                              : 0m
Passive Cu cmplnce.                       : 0x01 (SFF-8431 appendix E) [SFF-8472 rev10.4 only]
Vendor name                               : Mellanox
Vendor OUI                                : 00:02:c9
Vendor PN                                 : MCP2M00-A001E30N
Vendor rev                                : A4
Option values                             : 0x00 0x00
BR margin, max                            : 0%
BR margin, min                            : 0%
Vendor SN                                 : MT2010VB00194
Date code                                 : 200219
Optical diagnostics support               : No&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;driver and firmware info:

&lt;blockquote&gt;&lt;pre&gt;
# ethtool -i enp65s0f0np0
driver: mlx5_core
version: 5.15.39-4-pve
firmware-version: 16.34.1002 (MT_0000000183)
expansion-rom-version:
bus-info: 0000:41:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: yes&lt;/pre&gt;&lt;/blockquote&gt;


&lt;blockquote&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;/blockquote&gt;


&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://medium.com/@krisiasty/proper-network-connectivity-verification-and-benchmarking-d9cfc6dde7bf&quot; target=_blank&gt;
  &lt;/ul&gt; 
    </content:encoded>

    <pubDate>Wed, 07 Sep 2022 19:38:36 +0000</pubDate>
    <guid isPermaLink="false">http://blog.raymond.burkholder.net/index.php?/archives/1204-guid.html</guid>
    
</item>
<item>
    <title>Linux Kernel Routing</title>
    <link>http://blog.raymond.burkholder.net/index.php?/archives/1202-Linux-Kernel-Routing.html</link>
            <category>Networks</category>
    
    <comments>http://blog.raymond.burkholder.net/index.php?/archives/1202-Linux-Kernel-Routing.html#comments</comments>
    <wfw:comment>http://blog.raymond.burkholder.net/wfwcomment.php?cid=1202</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.raymond.burkholder.net/rss.php?version=2.0&amp;type=comments&amp;cid=1202</wfw:commentRss>
    

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;a href=&quot;https://www.reddit.com/r/networking/comments/ki8mlj/comment/ggpz8rl/?utm_source=share&amp;utm_medium=web2x&amp;context=3&quot; target=_blank&gt;Table Local&lt;/a&gt;:

&lt;blockquote&gt;
The dummy interface is not used in the actual routing process in most cases. The dummy ip address is inserted into the local route table as a local address (check it out yourself: &lt;b&gt;ip ro sh table local&lt;/b&gt;). Ingress packets from all interfaces are checked against this table first (as it is the maximum priority rule in the &lt;b&gt;ip rule&lt;/b&gt;), and if a local-type route matches, the packet is queued for local delivery. Egress packets are even simpler: your default route will point towards your physical interface; the packets will be queued directly to that interface&#039;s queues and you&#039;ll keep all your regular GSOs and GROs -- at least the ones that are managed by the kernel.
&lt;/blockquote&gt;

&lt;blockquote&gt;
There are standard ways many nics can offload packets: TSO (tcp segment offloading), gso (generic segment offloading), gro (generic receive offload), lro (large receive offload) are the common ones. You can see which ones are enabled with ethtool -k interface_name, interface usually has to be down to change them.
&lt;/blockquote&gt; 
    </content:encoded>

    <pubDate>Wed, 07 Sep 2022 16:49:21 +0000</pubDate>
    <guid isPermaLink="false">http://blog.raymond.burkholder.net/index.php?/archives/1202-guid.html</guid>
    
</item>
<item>
    <title>IP Ping Tool </title>
    <link>http://blog.raymond.burkholder.net/index.php?/archives/1200-IP-Ping-Tool.html</link>
            <category>Networks</category>
    
    <comments>http://blog.raymond.burkholder.net/index.php?/archives/1200-IP-Ping-Tool.html#comments</comments>
    <wfw:comment>http://blog.raymond.burkholder.net/wfwcomment.php?cid=1200</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.raymond.burkholder.net/rss.php?version=2.0&amp;type=comments&amp;cid=1200</wfw:commentRss>
    

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;a href=&quot;https://ping.pe/&quot; target=-blank&gt;https://ping.pe/&lt;/a&gt; - ping, mtr, chart, dig from multiple simultaneous locations. 
    </content:encoded>

    <pubDate>Fri, 02 Sep 2022 01:10:11 +0000</pubDate>
    <guid isPermaLink="false">http://blog.raymond.burkholder.net/index.php?/archives/1200-guid.html</guid>
    
</item>
<item>
    <title>P4 integration with BATMAN mesh network</title>
    <link>http://blog.raymond.burkholder.net/index.php?/archives/1189-P4-integration-with-BATMAN-mesh-network.html</link>
            <category>Networks</category>
    
    <comments>http://blog.raymond.burkholder.net/index.php?/archives/1189-P4-integration-with-BATMAN-mesh-network.html#comments</comments>
    <wfw:comment>http://blog.raymond.burkholder.net/wfwcomment.php?cid=1189</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.raymond.burkholder.net/rss.php?version=2.0&amp;type=comments&amp;cid=1189</wfw:commentRss>
    

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;From the P4-dev mailing list, an interesting tool which deep dives wifi, P4, the kernel, ...

&lt;blockquote&gt;

&lt;p&gt;you may want to look at the BATMAN and P4 examples in Mininet-WiFi: &lt;a href=&quot;https://mininet-wifi.github.io/manet/&quot; target=_blank&gt;Manet Routing Protocols&lt;/a&gt; or 
&lt;a href=&quot;https://github.com/ramonfontes/mn-wifi-ebook/blob/main/expert.md#p4&quot; target=_blank&gt;P4 Programming Protocol-Independent Packet Processors &lt;/a&gt;.

&lt;p&gt;BTW, we recently fully open-sourced here: &lt;a href=&quot;https://github.com/ramonfontes/mn-wifi-ebook/blob/main/toc.md&quot; target=_blank&gt; mn-wifi-ebook&lt;/a&gt;.

&lt;p&gt;The English version of the Mininet-WiFi book: &lt;a href=&quot;https://mininet-wifi.github.io/book/&quot; target=_blank&gt;The Mininet-WiFi Book&lt;/a&gt;

&lt;/blockquote&gt; 
    </content:encoded>

    <pubDate>Sat, 09 Apr 2022 18:34:46 +0000</pubDate>
    <guid isPermaLink="false">http://blog.raymond.burkholder.net/index.php?/archives/1189-guid.html</guid>
    
</item>
<item>
    <title>SOHO IPv6 switches</title>
    <link>http://blog.raymond.burkholder.net/index.php?/archives/1171-SOHO-IPv6-switches.html</link>
            <category>Networks</category>
    
    <comments>http://blog.raymond.burkholder.net/index.php?/archives/1171-SOHO-IPv6-switches.html#comments</comments>
    <wfw:comment>http://blog.raymond.burkholder.net/wfwcomment.php?cid=1171</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.raymond.burkholder.net/rss.php?version=2.0&amp;type=comments&amp;cid=1171</wfw:commentRss>
    

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;Found on a email list:

&lt;blockquote&gt;
&lt;p&gt;The Netgear GS108T is my typical go-to &quot;not a dumb switch&quot;.  8 ports
for about $80.
&lt;p&gt;Make sure you get the v3 if you want most of the modern IPv6 L2
features (you also get some very limited L3 capabilities). 
&lt;p&gt;Extra bonus with the GS108Tv3, and anything else based on the RTL8380,
is that you can run OpenWrt on it.
&lt;/blockquote&gt; 
    </content:encoded>

    <pubDate>Sun, 23 Jan 2022 02:15:31 +0000</pubDate>
    <guid isPermaLink="false">http://blog.raymond.burkholder.net/index.php?/archives/1171-guid.html</guid>
    
</item>
<item>
    <title>fq_codel now default network qdisc in debian linux (5.16~rc8-1~exp1) experimental</title>
    <link>http://blog.raymond.burkholder.net/index.php?/archives/1161-fq_codel-now-default-network-qdisc-in-debian-linux-5.16rc8-1exp1-experimental.html</link>
            <category>Networks</category>
    
    <comments>http://blog.raymond.burkholder.net/index.php?/archives/1161-fq_codel-now-default-network-qdisc-in-debian-linux-5.16rc8-1exp1-experimental.html#comments</comments>
    <wfw:comment>http://blog.raymond.burkholder.net/wfwcomment.php?cid=1161</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.raymond.burkholder.net/rss.php?version=2.0&amp;type=comments&amp;cid=1161</wfw:commentRss>
    

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
     &lt;blockquote&gt;&lt;pre&gt;
   [ Noah Meyerhans ]
   * net: Use fq_codel as the default network qdisc (Closes: #890343)
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;From ticket #890343:

&lt;blockquote&gt;&lt;pre&gt;
by default Debian uses the pfifo_fast network queuing algorithm:

# tc -s qdisc show
[...]
qdisc pfifo_fast 0: dev eth0 root refcnt 2 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
 Sent 413728102 bytes 475015 pkt (dropped 0, overlimits 0 requeues 785)
 backlog 0b 0p requeues 785

The systemd source package contains this file:

  ./systemd-237/sysctl.d/50-default.conf:net.core.default_qdisc = fq_codel

whose purpose is to set the default queuing algorithm to fq_codel.  
According to the NEWS file, this is a better alternative:

        * The default sysctl.d/ snippets will now set:

                net.core.default_qdisc = fq_codel

          This selects Fair Queuing Controlled Delay as the default
          queuing discipline for network interfaces. fq_codel helps
          fight the network bufferbloat problem. It is believed to be
          a good default with no tuning required for most workloads.
          Downstream distributions may override this choice. On 10Gbit
          servers that do not do forwarding, &quot;fq&quot; may perform better.
          Systems without a good clocksource should use &quot;pfifo_fast&quot;.

However the 50-default.conf file is not in the Debian binary package.
Is this intentional or an omission?
Could it be possible to enable fq_codel by default?
&lt;/pre&gt;&lt;/blockquote&gt; 
    </content:encoded>

    <pubDate>Mon, 03 Jan 2022 21:32:24 +0000</pubDate>
    <guid isPermaLink="false">http://blog.raymond.burkholder.net/index.php?/archives/1161-guid.html</guid>
    
</item>
<item>
    <title>Raspberry Pi Compute Module 4 as a Router</title>
    <link>http://blog.raymond.burkholder.net/index.php?/archives/1159-Raspberry-Pi-Compute-Module-4-as-a-Router.html</link>
            <category>Networks</category>
    
    <comments>http://blog.raymond.burkholder.net/index.php?/archives/1159-Raspberry-Pi-Compute-Module-4-as-a-Router.html#comments</comments>
    <wfw:comment>http://blog.raymond.burkholder.net/wfwcomment.php?cid=1159</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.raymond.burkholder.net/rss.php?version=2.0&amp;type=comments&amp;cid=1159</wfw:commentRss>
    

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;Flexible routing has now come down in price with the &lt;a href=&quot;https://www.dfrobot.com/product-2242.html&quot; target=_blank&gt;Raspberry Pi Compute Module 4 IoT Router Carrier Board Mini&lt;/a&gt; which
takes a &lt;a href=&quot;https://www.raspberrypi.com/products/compute-module-4&quot; target=_blank&gt;Raspberry Pi Compute Module 4&lt;/a&gt; and places it on a 
&lt;a href=&quot;https://wiki.dfrobot.com/Compute_Module_4_IoT_Router_Board_Mini_SKU_DFR0767&quot; target=_blank&gt;Compute Module 4 IoT Router Carrier Board Mini&lt;/a&gt;.

&lt;p&gt;Here is someone building a &lt;a href=&quot;https://low-orbit.net/raspberry-pi-firewall-and-router-with-df-robot-dual-nic&quot; target=_blank&gt;Raspberry Pi Firewall and Router with DF Robot Dual NIC&lt;/a&gt; with Ubuntu. 
    </content:encoded>

    <pubDate>Thu, 30 Dec 2021 18:59:01 +0000</pubDate>
    <guid isPermaLink="false">http://blog.raymond.burkholder.net/index.php?/archives/1159-guid.html</guid>
    
</item>
<item>
    <title>Varietal Packet Statistics</title>
    <link>http://blog.raymond.burkholder.net/index.php?/archives/1129-Varietal-Packet-Statistics.html</link>
            <category>Networks</category>
    
    <comments>http://blog.raymond.burkholder.net/index.php?/archives/1129-Varietal-Packet-Statistics.html#comments</comments>
    <wfw:comment>http://blog.raymond.burkholder.net/wfwcomment.php?cid=1129</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.raymond.burkholder.net/rss.php?version=2.0&amp;type=comments&amp;cid=1129</wfw:commentRss>
    

    <author>nospam@example.com (Raymond P. Burkholder)</author>
    <content:encoded>
    &lt;p&gt;How to get stats at all of
the different points in the stack to track down reasons for dropped packets:

&lt;ul&gt;
  &lt;li&gt;ethtool -S for h/w and driver
  &lt;li&gt;tc -s for drops by the qdisc
  &lt;li&gt;/proc/net/softnet_stat for drops at the backlog layer
  &lt;li&gt;netstat -s for network and transport layer  
  &lt;li&gt;ip -s
  &lt;/ul&gt;
 
    </content:encoded>

    <pubDate>Thu, 05 Aug 2021 01:11:24 +0000</pubDate>
    <guid isPermaLink="false">http://blog.raymond.burkholder.net/index.php?/archives/1129-guid.html</guid>
    
</item>

</channel>
</rss>
