<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>VyOS - Blog</title>
    <link>https://blog.vyos.io</link>
    <description>VyOS Platform Project news and updates 
All about development and project life in  our blog</description>
    <language>en</language>
    <pubDate>Fri, 29 May 2026 11:15:49 GMT</pubDate>
    <dc:date>2026-05-29T11:15:49Z</dc:date>
    <dc:language>en</dc:language>
    <item>
      <title>VyOS Project May 2026 Update</title>
      <link>https://blog.vyos.io/vyos-project-may-2026-update</link>
      <description>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://blog.vyos.io/vyos-project-may-2026-update" title="" class="hs-featured-image-link"&gt; &lt;img src="https://blog.vyos.io/hubfs/vyos_mothly_update_may2026_blogpost.png" alt="VyOS Project May 2026 Update" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;p&gt;Hello, Community!&lt;/p&gt; 
&lt;p&gt;The May development update is here. Despite the fact that we had to deal with a downpour of vulnerabilities such as Copy Fail, Dirty Frag, and others (they are all fixed in rolling and in emergency LTS release updates available to subscription holders now!), the VyOS team and community members still added quite a lot of new features and bug fixes this month.&lt;/p&gt; 
&lt;p&gt;They include a fix for the long-standing, very annoying bug that led to needless OpenVPN server restarts on config changes that only affected user settings that go to the client config dir, multiple new options for DHCPv4 and DHCPv6 servers, initial support for traffic engineering in segment routing, and more.&lt;/p&gt;</description>
      <content:encoded>&lt;div class="hs-featured-image-wrapper"&gt; 
 &lt;a href="https://blog.vyos.io/vyos-project-may-2026-update" title="" class="hs-featured-image-link"&gt; &lt;img src="https://blog.vyos.io/hubfs/vyos_mothly_update_may2026_blogpost.png" alt="VyOS Project May 2026 Update" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;p&gt;Hello, Community!&lt;/p&gt; 
&lt;p&gt;The May development update is here. Despite the fact that we had to deal with a downpour of vulnerabilities such as Copy Fail, Dirty Frag, and others (they are all fixed in rolling and in emergency LTS release updates available to subscription holders now!), the VyOS team and community members still added quite a lot of new features and bug fixes this month.&lt;/p&gt; 
&lt;p&gt;They include a fix for the long-standing, very annoying bug that led to needless OpenVPN server restarts on config changes that only affected user settings that go to the client config dir, multiple new options for DHCPv4 and DHCPv6 servers, initial support for traffic engineering in segment routing, and more.&lt;/p&gt;  
&lt;img src="https://track.hubspot.com/__ptq.gif?a=4129050&amp;amp;k=14&amp;amp;r=https%3A%2F%2Fblog.vyos.io%2Fvyos-project-may-2026-update&amp;amp;bu=https%253A%252F%252Fblog.vyos.io&amp;amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "&gt;</content:encoded>
      <category>high availability</category>
      <category>ipsec</category>
      <category>openvpn</category>
      <category>Segment Routing</category>
      <pubDate>Fri, 29 May 2026 10:45:00 GMT</pubDate>
      <author>daniil@sentrium.io (Daniil Baturin)</author>
      <guid>https://blog.vyos.io/vyos-project-may-2026-update</guid>
      <dc:date>2026-05-29T10:45:00Z</dc:date>
    </item>
    <item>
      <title>On "run reset vrrp master"</title>
      <link>https://blog.vyos.io/on-run-reset-vrrp-master</link>
      <description>&lt;div class="posthaven-post-body"&gt; 
 &lt;p&gt;I've just exorcised a ghost of the old VRRP CLI implementation — the "reset vrrp master" command. I thought it would go away with the vyatta-vrrp package, but in fact it was in vyatta-op. It made me remember that I was going to write about it in the original blog post, but somehow I forgot about it.&lt;/p&gt; 
 &lt;p&gt;Here is why that command was not reimplemented. First, it never worked with preempt to begin with, and with preempt being the default, its usefulness was already limited.&lt;/p&gt; 
 &lt;p&gt;A more serious reason, however, is that it was a rather horrible (even if ingenious) kludge. This is how it worked: first it tried to locate the VRRP group in keepalived.conf, then it would remove it from the config, restart keepalived, insert it again, and restart keepalived again. It sort of worked, but you can see how fragile this approach is. If anything at any stage would go wrong, it would leave VRRP in an inconsistent state.&lt;/p&gt; 
 &lt;p&gt;A much cleaner and general way to do it is to just disable the VRRP group in conf mode (set high-availability vrrp group Foo disable) and commit the change.&lt;br&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt; 
&lt;/div&gt;</description>
      <content:encoded>&lt;div class="posthaven-post-body"&gt; 
 &lt;p&gt;I've just exorcised a ghost of the old VRRP CLI implementation — the "reset vrrp master" command. I thought it would go away with the vyatta-vrrp package, but in fact it was in vyatta-op. It made me remember that I was going to write about it in the original blog post, but somehow I forgot about it.&lt;/p&gt; 
 &lt;p&gt;Here is why that command was not reimplemented. First, it never worked with preempt to begin with, and with preempt being the default, its usefulness was already limited.&lt;/p&gt; 
 &lt;p&gt;A more serious reason, however, is that it was a rather horrible (even if ingenious) kludge. This is how it worked: first it tried to locate the VRRP group in keepalived.conf, then it would remove it from the config, restart keepalived, insert it again, and restart keepalived again. It sort of worked, but you can see how fragile this approach is. If anything at any stage would go wrong, it would leave VRRP in an inconsistent state.&lt;/p&gt; 
 &lt;p&gt;A much cleaner and general way to do it is to just disable the VRRP group in conf mode (set high-availability vrrp group Foo disable) and commit the change.&lt;br&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt; 
&lt;/div&gt;  
&lt;img src="https://track.hubspot.com/__ptq.gif?a=4129050&amp;amp;k=14&amp;amp;r=https%3A%2F%2Fblog.vyos.io%2Fon-run-reset-vrrp-master&amp;amp;bu=https%253A%252F%252Fblog.vyos.io&amp;amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "&gt;</content:encoded>
      <category>development</category>
      <category>high availability</category>
      <category>Uncategorized</category>
      <category>vrrp</category>
      <pubDate>Sat, 28 Jul 2018 19:10:22 GMT</pubDate>
      <author>daniil@sentrium.io (Daniil Baturin)</author>
      <guid>https://blog.vyos.io/on-run-reset-vrrp-master</guid>
      <dc:date>2018-07-28T19:10:22Z</dc:date>
    </item>
    <item>
      <title>New VRRP CLI is here (with IPv6 support)</title>
      <link>https://blog.vyos.io/new-vrrp-cli-is-here-with-ipv6-support</link>
      <description>&lt;div class="posthaven-post-body"&gt; 
 &lt;p&gt;Ever since I started with Vyatta, I've had a problem with commands for features unrelated to interfaces being defined inside interfaces. I'm sure the person who came up with that arrangement meant well and thought it would be familiar for Cisco and Juniper users, but the more I lived with it, the more I thought it creates more problems than it solves.&lt;br&gt;&lt;/p&gt; 
 &lt;p&gt;From the user perspective, it's hard to easily view the complete configuration of those features. It's also much harder to clone a feature config to another machine. And if you ever want to move some connection to a different NIC, things get even more fun.&lt;/p&gt; 
 &lt;p&gt; For developers, however, it's even worse. First, it means commands for those features needs to be duplicated for every interface type, which makes adding new interfaces much harder. Second, configuration scripts end up more complex due to paths that can be nested quite deeply. Third, with the current config backend specifically, lack of nested end nodes can lead to very interesting tracking of the state to avoid repeated service restarts.&lt;br&gt;&lt;/p&gt; 
 &lt;p&gt; Until recently there was a token excuse for leaving unfortunate UI decisions alone — the difficulty of writing migration scripts. Luckily, it's &lt;a href="https://blog.vyos.net/writing-migration-scripts-and-manipulating-vyos-config-files-outside-vyos-just-got-easier"&gt;no longer the case&lt;/a&gt;, so we can start cleaning it up. Ok, it &lt;i&gt;is &lt;/i&gt;hard and you need to take care of many details, but at least you are not wrestling with a library that is simply inadequate for the task. Now we can go on a quest to remove excessive nesting and redesign the UI is an easier to use, more logical fashion.&lt;br&gt;&lt;/p&gt; 
 &lt;p&gt;VRRP looked a good feature to start the clean up with — we need to get&amp;nbsp; IPv6 VRRP support to work in the end, its scripts have accumulated quite some cruft, and, well, it really has nothing to do with interface settings since it's a protocol of its own implemented by a userspace daemon. &lt;br&gt;&lt;/p&gt; 
 &lt;p&gt;Today I've rolled out the new implementation and it is already in the latest rolling release image, ready for your testing. Let's walk through the changes.&lt;/p&gt; 
 &lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;br&gt; &lt;/p&gt; 
 &lt;h2&gt;Keepalived&lt;/h2&gt; 
 &lt;p&gt;Keepalived was updated to version 2.0.5 with some patches of my own that are already in master but not in a release yet.&lt;br&gt;&lt;/p&gt; 
 &lt;h2&gt;New VRRP syntax&lt;/h2&gt; 
 &lt;p&gt;Here is an example of a VRRP group with all available options set:&lt;/p&gt; 
 &lt;pre&gt;dmbaturin@vyos# show high-availability vrrp group WAN&lt;br&gt;
 advertise-interval 5&lt;br&gt;
 authentication {&lt;br&gt;
     password qwerty&lt;br&gt;
     type plaintext-password # could also be "ah"&lt;br&gt;
 }&lt;br&gt;
 description "My VRRP group"&lt;br&gt; disable&lt;br&gt;&amp;nbsp;health-check {&lt;br&gt;
     failure-count 5&lt;br&gt;
     interval 60&lt;br&gt;
     script /config/scripts/healthcheck.sh&lt;br&gt;
 }&lt;br&gt;
 hello-source-address 10.218.0.1&lt;br&gt;
 interface eth1&lt;br&gt;
 no-preempt&lt;br&gt;
 peer-address 10.218.0.10&lt;br&gt;
 preempt-delay 180&lt;br&gt;
 priority 200&lt;br&gt;
 rfc3768-compatibility&lt;br&gt;
 transition-script {&lt;br&gt;
     backup /config/scripts/backup.sh&lt;br&gt;
     fault /config/scripts/fault.sh&lt;br&gt;
     master /config/scripts/master.sh&lt;br&gt;
 }&lt;br&gt;
 virtual-address 10.218.0.100/24&lt;br&gt;
 virtual-address 10.218.0.101/24&lt;br&gt;
 vrid 42
&lt;/pre&gt; 
 &lt;p&gt;As you can see, instead of being nested inside interfaces, VRRP has its own subtree now, "set high-availability vrrp". This makes it easy to move a VRRP group to a different interface, or change its VRID (Virtual Router ID) without resorting to node renaming or deleting and recreating it. &lt;br&gt;&lt;/p&gt; 
 &lt;p&gt;Originally, group number used to define the VRID, as in, "set interfaces ethernet eth0 vrrp vrrp-group 10" would create a group with VRID 10. Now group names are purely for identification and can be arbitrary. To set the VRID, use the "vrid" option.&lt;/p&gt; 
 &lt;p&gt;Since groups are now outside of interfaces, the interface is also an option, that can be changed easily. The interfaces you can use are ethernet, bonding, bridge, and VLANs (including QinQ VLANs) on all of those.&lt;/p&gt; 
 &lt;p&gt;Otherwise the options inside the groups changed little. The option that controls preempt mode is now a valueless node "no-preempt" rather than a boolean node "preempt (true|false)". The "run-transition-scripts" option is now simply "transition-script" — after all, what else one could do with them other than run them?&lt;/p&gt; 
 &lt;p&gt;There is one behaviour change that I think no one will notice, but it should be mentioned. The old CLI used to allow setting a virtual-address without prefix length, as in "virtual-address 192.0.2.1". I think it was an oversight, because it could trick people into thinking it will have the same prefix length as the primary address of the interface, but it's not the case. Instead, the prefix length of such addresses would be set to /32, which, in broadcast networks, makes little sense. Now the CLI requires that you specify prefix length. If you relly want a virtual address with /32 or /128 mask, you should specify it explicitly.&lt;/p&gt; 
 &lt;h3&gt;Sync groups&lt;/h3&gt; 
 &lt;p&gt;You might have already noticed that sync-group option is missing, even though I said that group has all available options set. That's right — sync groups are now separate entities. This is how you can create one:&lt;/p&gt; 
 &lt;pre&gt;dmbaturin@vyos# show high-availability vrrp sync-group&lt;br&gt;
 sync-group MySyncGroup {&lt;br&gt;
     member WAN&lt;br&gt;
     member LAN&lt;br&gt;
 }
&lt;/pre&gt; 
 &lt;p&gt;Unlike the old CLI, it's very easy to see which sync groups exist in the system, and shuffle VRRP groups between them if necessary.&lt;/p&gt; 
 &lt;h2&gt;IPv6 support&lt;/h2&gt; 
 &lt;p&gt;I'm pretty sure it's going to be everyone's first question, and rightfully so! The short answer is: yes, IPv6 VRRP is here for real. The long answer: with one caveat, you cannot mix IPv4 and IPv6 in one group.&lt;/p&gt; 
 &lt;p&gt;This is a keepalived limitation. The VRRP protocol specification technically allows it, which is why I didn't make separate syntax for IPv6 groups. Maybe the restriction will be relaxed at some point, maybe not. Right now, if you try to mix IPv4 and IPv6 addresses in one group, you'll get a commit error.&lt;/p&gt; 
 &lt;pre&gt;dmbaturin@vyos# show interfaces ethernet eth1&lt;br&gt;
 address 10.218.0.1/24&lt;br&gt;
 address 2001:db8:ee::1/64&lt;br&gt;
 duplex auto&lt;br&gt;
 hw-id 00:50:56:9b:9d:9f&lt;br&gt;
 smp-affinity auto&lt;br&gt;
 speed auto&lt;br&gt;
[edit]&lt;br&gt;
dmbaturin@vyos# show high-availability&lt;br&gt;
 vrrp {&lt;br&gt;
     group IPv4 {&lt;br&gt;
         interface eth1&lt;br&gt;
         virtual-address 10.218.0.2/24&lt;br&gt;
         vrid 44&lt;br&gt;
     }&lt;br&gt;
     group IPv6 {&lt;br&gt;
         interface eth1&lt;br&gt;
         virtual-address 2001:db8:ee::2/64&lt;br&gt;
         vrid 43&lt;br&gt;
     }&lt;br&gt;
 }&lt;br&gt;
[edit]&lt;br&gt;
dmbaturin@vyos# run show interfaces ethernet eth1&lt;br&gt;
eth1:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000&lt;br&gt;
    link/ether 00:50:56:9b:9d:9f brd ff:ff:ff:ff:ff:ff&lt;br&gt;
    inet 10.218.0.1/24 brd 10.218.0.255 scope global eth1&lt;br&gt;
       valid_lft forever preferred_lft forever&lt;br&gt;
    inet 10.218.0.2/24 scope global secondary eth1&lt;br&gt;
       valid_lft forever preferred_lft forever&lt;br&gt;
    inet6 2001:db8:ee::2/64 scope global nodad&lt;br&gt;
       valid_lft forever preferred_lft forever&lt;br&gt;
    inet6 2001:db8:ee::1/64 scope global&lt;br&gt;
       valid_lft forever preferred_lft forever
&lt;/pre&gt; 
 &lt;h2&gt;Operational mode commands&lt;/h2&gt; 
 &lt;div&gt;
   The essentials are implemented, but it's subject to expansion and improvement. 
 &lt;/div&gt; 
 &lt;div&gt;
   These commands are already there: 
 &lt;/div&gt; 
 &lt;div&gt; 
  &lt;ul&gt; 
   &lt;li&gt;show vrrp&lt;/li&gt; 
   &lt;li&gt;show vrrp detail&lt;/li&gt; 
   &lt;li&gt;show vrrp statistics&lt;/li&gt; 
  &lt;/ul&gt; 
  &lt;p&gt;The output of "show vrrp" has changed a bit, some hardly informative fields such as "addr owner" (which has little practical implications) were removed.&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;pre&gt;dmbaturin@vyos# run show vrrp&lt;br&gt;
Name    Interface      VRID  State    Last Transition&lt;br&gt;
------  -----------  ------  -------  -----------------&lt;br&gt;
Foo     eth1             30  MASTER   4s
&lt;/pre&gt; 
 &lt;p&gt;Lack of information about sync group membership is a more significant omission and if there's demand for it, I'll try to get it back. The reason for it is that the new op mode uses keepalived's JSON output implemented in recent versions, but that output lacks some information that was included in the old (hard to parse) format, so I'll need to send them a patch for it.&lt;/p&gt; 
 &lt;h2&gt;Transition scripts&lt;/h2&gt; 
 &lt;p&gt;The order of transition script arguments remains compatible. One difference is that for RFC-compliant (i.e. using a macvlan for virtual MAC) VRRP, transition scripts now receive the macvlan interface where addresses are actually assigneg, e.g. eth1v43.&lt;/p&gt; 
 &lt;h2&gt;Compatibility with old configs&lt;/h2&gt; 
 &lt;p&gt;To ensure compatibility with old configs, I've written a migration script that should cover both configs from 1.1.8 and from earlier versions of the rolling release (including unicast peer and health-check options).&lt;/p&gt; 
 &lt;p&gt;Your old configs should be automatically converted to the new syntax after image updgrade.&lt;/p&gt; 
 &lt;h2&gt;Your testing is needed!&lt;/h2&gt; 
 &lt;p&gt;The code is new, and there may be corner cases I've missed. If you find any bugs, please report them!&lt;br&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;br&gt;&lt;/p&gt; 
&lt;/div&gt;</description>
      <content:encoded>&lt;div class="posthaven-post-body"&gt; 
 &lt;p&gt;Ever since I started with Vyatta, I've had a problem with commands for features unrelated to interfaces being defined inside interfaces. I'm sure the person who came up with that arrangement meant well and thought it would be familiar for Cisco and Juniper users, but the more I lived with it, the more I thought it creates more problems than it solves.&lt;br&gt;&lt;/p&gt; 
 &lt;p&gt;From the user perspective, it's hard to easily view the complete configuration of those features. It's also much harder to clone a feature config to another machine. And if you ever want to move some connection to a different NIC, things get even more fun.&lt;/p&gt; 
 &lt;p&gt; For developers, however, it's even worse. First, it means commands for those features needs to be duplicated for every interface type, which makes adding new interfaces much harder. Second, configuration scripts end up more complex due to paths that can be nested quite deeply. Third, with the current config backend specifically, lack of nested end nodes can lead to very interesting tracking of the state to avoid repeated service restarts.&lt;br&gt;&lt;/p&gt; 
 &lt;p&gt; Until recently there was a token excuse for leaving unfortunate UI decisions alone — the difficulty of writing migration scripts. Luckily, it's &lt;a href="https://blog.vyos.net/writing-migration-scripts-and-manipulating-vyos-config-files-outside-vyos-just-got-easier"&gt;no longer the case&lt;/a&gt;, so we can start cleaning it up. Ok, it &lt;i&gt;is &lt;/i&gt;hard and you need to take care of many details, but at least you are not wrestling with a library that is simply inadequate for the task. Now we can go on a quest to remove excessive nesting and redesign the UI is an easier to use, more logical fashion.&lt;br&gt;&lt;/p&gt; 
 &lt;p&gt;VRRP looked a good feature to start the clean up with — we need to get&amp;nbsp; IPv6 VRRP support to work in the end, its scripts have accumulated quite some cruft, and, well, it really has nothing to do with interface settings since it's a protocol of its own implemented by a userspace daemon. &lt;br&gt;&lt;/p&gt; 
 &lt;p&gt;Today I've rolled out the new implementation and it is already in the latest rolling release image, ready for your testing. Let's walk through the changes.&lt;/p&gt; 
 &lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;br&gt; &lt;/p&gt; 
 &lt;h2&gt;Keepalived&lt;/h2&gt; 
 &lt;p&gt;Keepalived was updated to version 2.0.5 with some patches of my own that are already in master but not in a release yet.&lt;br&gt;&lt;/p&gt; 
 &lt;h2&gt;New VRRP syntax&lt;/h2&gt; 
 &lt;p&gt;Here is an example of a VRRP group with all available options set:&lt;/p&gt; 
 &lt;pre&gt;dmbaturin@vyos# show high-availability vrrp group WAN&lt;br&gt;
 advertise-interval 5&lt;br&gt;
 authentication {&lt;br&gt;
     password qwerty&lt;br&gt;
     type plaintext-password # could also be "ah"&lt;br&gt;
 }&lt;br&gt;
 description "My VRRP group"&lt;br&gt; disable&lt;br&gt;&amp;nbsp;health-check {&lt;br&gt;
     failure-count 5&lt;br&gt;
     interval 60&lt;br&gt;
     script /config/scripts/healthcheck.sh&lt;br&gt;
 }&lt;br&gt;
 hello-source-address 10.218.0.1&lt;br&gt;
 interface eth1&lt;br&gt;
 no-preempt&lt;br&gt;
 peer-address 10.218.0.10&lt;br&gt;
 preempt-delay 180&lt;br&gt;
 priority 200&lt;br&gt;
 rfc3768-compatibility&lt;br&gt;
 transition-script {&lt;br&gt;
     backup /config/scripts/backup.sh&lt;br&gt;
     fault /config/scripts/fault.sh&lt;br&gt;
     master /config/scripts/master.sh&lt;br&gt;
 }&lt;br&gt;
 virtual-address 10.218.0.100/24&lt;br&gt;
 virtual-address 10.218.0.101/24&lt;br&gt;
 vrid 42
&lt;/pre&gt; 
 &lt;p&gt;As you can see, instead of being nested inside interfaces, VRRP has its own subtree now, "set high-availability vrrp". This makes it easy to move a VRRP group to a different interface, or change its VRID (Virtual Router ID) without resorting to node renaming or deleting and recreating it. &lt;br&gt;&lt;/p&gt; 
 &lt;p&gt;Originally, group number used to define the VRID, as in, "set interfaces ethernet eth0 vrrp vrrp-group 10" would create a group with VRID 10. Now group names are purely for identification and can be arbitrary. To set the VRID, use the "vrid" option.&lt;/p&gt; 
 &lt;p&gt;Since groups are now outside of interfaces, the interface is also an option, that can be changed easily. The interfaces you can use are ethernet, bonding, bridge, and VLANs (including QinQ VLANs) on all of those.&lt;/p&gt; 
 &lt;p&gt;Otherwise the options inside the groups changed little. The option that controls preempt mode is now a valueless node "no-preempt" rather than a boolean node "preempt (true|false)". The "run-transition-scripts" option is now simply "transition-script" — after all, what else one could do with them other than run them?&lt;/p&gt; 
 &lt;p&gt;There is one behaviour change that I think no one will notice, but it should be mentioned. The old CLI used to allow setting a virtual-address without prefix length, as in "virtual-address 192.0.2.1". I think it was an oversight, because it could trick people into thinking it will have the same prefix length as the primary address of the interface, but it's not the case. Instead, the prefix length of such addresses would be set to /32, which, in broadcast networks, makes little sense. Now the CLI requires that you specify prefix length. If you relly want a virtual address with /32 or /128 mask, you should specify it explicitly.&lt;/p&gt; 
 &lt;h3&gt;Sync groups&lt;/h3&gt; 
 &lt;p&gt;You might have already noticed that sync-group option is missing, even though I said that group has all available options set. That's right — sync groups are now separate entities. This is how you can create one:&lt;/p&gt; 
 &lt;pre&gt;dmbaturin@vyos# show high-availability vrrp sync-group&lt;br&gt;
 sync-group MySyncGroup {&lt;br&gt;
     member WAN&lt;br&gt;
     member LAN&lt;br&gt;
 }
&lt;/pre&gt; 
 &lt;p&gt;Unlike the old CLI, it's very easy to see which sync groups exist in the system, and shuffle VRRP groups between them if necessary.&lt;/p&gt; 
 &lt;h2&gt;IPv6 support&lt;/h2&gt; 
 &lt;p&gt;I'm pretty sure it's going to be everyone's first question, and rightfully so! The short answer is: yes, IPv6 VRRP is here for real. The long answer: with one caveat, you cannot mix IPv4 and IPv6 in one group.&lt;/p&gt; 
 &lt;p&gt;This is a keepalived limitation. The VRRP protocol specification technically allows it, which is why I didn't make separate syntax for IPv6 groups. Maybe the restriction will be relaxed at some point, maybe not. Right now, if you try to mix IPv4 and IPv6 addresses in one group, you'll get a commit error.&lt;/p&gt; 
 &lt;pre&gt;dmbaturin@vyos# show interfaces ethernet eth1&lt;br&gt;
 address 10.218.0.1/24&lt;br&gt;
 address 2001:db8:ee::1/64&lt;br&gt;
 duplex auto&lt;br&gt;
 hw-id 00:50:56:9b:9d:9f&lt;br&gt;
 smp-affinity auto&lt;br&gt;
 speed auto&lt;br&gt;
[edit]&lt;br&gt;
dmbaturin@vyos# show high-availability&lt;br&gt;
 vrrp {&lt;br&gt;
     group IPv4 {&lt;br&gt;
         interface eth1&lt;br&gt;
         virtual-address 10.218.0.2/24&lt;br&gt;
         vrid 44&lt;br&gt;
     }&lt;br&gt;
     group IPv6 {&lt;br&gt;
         interface eth1&lt;br&gt;
         virtual-address 2001:db8:ee::2/64&lt;br&gt;
         vrid 43&lt;br&gt;
     }&lt;br&gt;
 }&lt;br&gt;
[edit]&lt;br&gt;
dmbaturin@vyos# run show interfaces ethernet eth1&lt;br&gt;
eth1:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000&lt;br&gt;
    link/ether 00:50:56:9b:9d:9f brd ff:ff:ff:ff:ff:ff&lt;br&gt;
    inet 10.218.0.1/24 brd 10.218.0.255 scope global eth1&lt;br&gt;
       valid_lft forever preferred_lft forever&lt;br&gt;
    inet 10.218.0.2/24 scope global secondary eth1&lt;br&gt;
       valid_lft forever preferred_lft forever&lt;br&gt;
    inet6 2001:db8:ee::2/64 scope global nodad&lt;br&gt;
       valid_lft forever preferred_lft forever&lt;br&gt;
    inet6 2001:db8:ee::1/64 scope global&lt;br&gt;
       valid_lft forever preferred_lft forever
&lt;/pre&gt; 
 &lt;h2&gt;Operational mode commands&lt;/h2&gt; 
 &lt;div&gt;
   The essentials are implemented, but it's subject to expansion and improvement. 
 &lt;/div&gt; 
 &lt;div&gt;
   These commands are already there: 
 &lt;/div&gt; 
 &lt;div&gt; 
  &lt;ul&gt; 
   &lt;li&gt;show vrrp&lt;/li&gt; 
   &lt;li&gt;show vrrp detail&lt;/li&gt; 
   &lt;li&gt;show vrrp statistics&lt;/li&gt; 
  &lt;/ul&gt; 
  &lt;p&gt;The output of "show vrrp" has changed a bit, some hardly informative fields such as "addr owner" (which has little practical implications) were removed.&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;pre&gt;dmbaturin@vyos# run show vrrp&lt;br&gt;
Name    Interface      VRID  State    Last Transition&lt;br&gt;
------  -----------  ------  -------  -----------------&lt;br&gt;
Foo     eth1             30  MASTER   4s
&lt;/pre&gt; 
 &lt;p&gt;Lack of information about sync group membership is a more significant omission and if there's demand for it, I'll try to get it back. The reason for it is that the new op mode uses keepalived's JSON output implemented in recent versions, but that output lacks some information that was included in the old (hard to parse) format, so I'll need to send them a patch for it.&lt;/p&gt; 
 &lt;h2&gt;Transition scripts&lt;/h2&gt; 
 &lt;p&gt;The order of transition script arguments remains compatible. One difference is that for RFC-compliant (i.e. using a macvlan for virtual MAC) VRRP, transition scripts now receive the macvlan interface where addresses are actually assigneg, e.g. eth1v43.&lt;/p&gt; 
 &lt;h2&gt;Compatibility with old configs&lt;/h2&gt; 
 &lt;p&gt;To ensure compatibility with old configs, I've written a migration script that should cover both configs from 1.1.8 and from earlier versions of the rolling release (including unicast peer and health-check options).&lt;/p&gt; 
 &lt;p&gt;Your old configs should be automatically converted to the new syntax after image updgrade.&lt;/p&gt; 
 &lt;h2&gt;Your testing is needed!&lt;/h2&gt; 
 &lt;p&gt;The code is new, and there may be corner cases I've missed. If you find any bugs, please report them!&lt;br&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;br&gt;&lt;/p&gt; 
&lt;/div&gt;  
&lt;img src="https://track.hubspot.com/__ptq.gif?a=4129050&amp;amp;k=14&amp;amp;r=https%3A%2F%2Fblog.vyos.io%2Fnew-vrrp-cli-is-here-with-ipv6-support&amp;amp;bu=https%253A%252F%252Fblog.vyos.io&amp;amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "&gt;</content:encoded>
      <category>development</category>
      <category>high availability</category>
      <category>Uncategorized</category>
      <category>vrrp</category>
      <pubDate>Fri, 27 Jul 2018 22:10:19 GMT</pubDate>
      <author>daniil@sentrium.io (Daniil Baturin)</author>
      <guid>https://blog.vyos.io/new-vrrp-cli-is-here-with-ipv6-support</guid>
      <dc:date>2018-07-27T22:10:19Z</dc:date>
    </item>
  </channel>
</rss>
