diff options
author | Neale Ranns <neale@graphiant.com> | 2020-12-21 08:29:34 +0000 |
---|---|---|
committer | Ole Tr�an <otroan@employees.org> | 2021-02-15 17:27:48 +0000 |
commit | 8f5fef2c78b95de1a636ce27111722b71702212a (patch) | |
tree | a0ebd0189969ccae1f0bdd7c1a9c18dd7a066f2e /test/vpp_ip.py | |
parent | 54be0cc044f445853fae7b8995c477605250af16 (diff) |
ip: Path MTU
Type: feature
Support setting the MTU for a peer on an interface. The minimum value of
the path and interface MTU is used at forwarding time.
the path MTU is specified for a given peer, by address and table-ID.
In the forwarding plane the MTU is enfored either:
1 - if the peer is attached, then the MTU is set on the peer's
adjacency
2 - if the peer is not attached, it is remote, then a DPO is added to
the peer's FIB entry to perform the necessary fragmentation.
Signed-off-by: Neale Ranns <neale@graphiant.com>
Change-Id: I8b9ea6a07868b50e97e2561f18d9335407dea7ae
Diffstat (limited to 'test/vpp_ip.py')
-rw-r--r-- | test/vpp_ip.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/test/vpp_ip.py b/test/vpp_ip.py index e2367a3ce28..81305b2dd9b 100644 --- a/test/vpp_ip.py +++ b/test/vpp_ip.py @@ -181,3 +181,49 @@ class VppIpPuntRedirect(VppObject): if self.get_vpp_config(): return True return False + + +class VppIpPathMtu(VppObject): + def __init__(self, test, nh, pmtu, table_id=0): + self._test = test + self.nh = nh + self.pmtu = pmtu + self.table_id = table_id + + def add_vpp_config(self): + self._test.vapi.ip_path_mtu_update(pmtu={'nh': self.nh, + 'table_id': self.table_id, + 'path_mtu': self.pmtu}) + self._test.registry.register(self, self._test.logger) + return self + + def modify(self, pmtu): + self.pmtu = pmtu + self._test.vapi.ip_path_mtu_update(pmtu={'nh': self.nh, + 'table_id': self.table_id, + 'path_mtu': self.pmtu}) + return self + + def remove_vpp_config(self): + self._test.vapi.ip_path_mtu_update(pmtu={'nh': self.nh, + 'table_id': self.table_id, + 'path_mtu': 0}) + + def query_vpp_config(self): + ds = list(self._test.vapi.vpp.details_iter( + self._test.vapi.ip_path_mtu_get)) + + for d in ds: + if self.nh == str(d.pmtu.nh) \ + and self.table_id == d.pmtu.table_id \ + and self.pmtu == d.pmtu.path_mtu: + return True + return False + + def object_id(self): + return ("ip-path-mtu-%d-%s-%d" % (self.table_id, + self.nh, + self.pmtu)) + + def __str__(self): + return self.object_id() |