Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

# Routing In Fat Trees (RIFT)

This repository contains a Python implementation of the Routing In Fat Trees (RIFT) protocol specified in Internet Draft (ID)
[draft-draft-rift-15](https://www.ietf.org/archive/id/draft-ietf-rift-rift-15.pdf)
This repository contains a Python implementation of the Routing In Fat Trees (RIFT) protocol specified in [RFC 9692](https://www.rfc-editor.org/rfc/rfc9692.pdf)

The code is currently still a work in progress (see Feature List below for the status).

Expand Down
3 changes: 2 additions & 1 deletion _config.yml
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
theme: jekyll-theme-slate
theme: jekyll-theme-slate

4 changes: 2 additions & 2 deletions doc/features.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

## Supported version

RIFT draft version: [draft-ietf-rift-rift-12](https://tools.ietf.org/pdf/draft-ietf-rift-rift-12.pdf)
RIFT [RFC 9692](https://www.rfc-editor.org/rfc/rfc9692.pdf)

Thrift data model version: 4.1
Thrift data model version: 6.1 (w/o auto-evpn or auto-fabric support)

## Adjacencies

Expand Down
5 changes: 5 additions & 0 deletions doc/notes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@ Generate Python code:
thrift --gen py -out . common.thrift
thrift --gen py -out . encoding.thrift

Observe that after generating the code due to python 3.10 having
changed lots of previous types to immutables the code diffs
to __init__.py have to be restored to allow mutations to
ttypes classes again.

*** Helpful commands for debugging

Detailed listing of UDP sockets:
Expand Down
12 changes: 6 additions & 6 deletions requirements-3-10.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ appdirs==1.4.4
astroid==2.12.7
atomicwrites==1.4.1
attrs==22.1.0
awscli==1.25.67
botocore==1.27.66
awscli==1.29.62
botocore==1.31.62
CacheControl==0.12.11
Cerberus==1.3.4
certifi==2022.6.15
certifi==2022.12.7
chardet==5.0.0
charset-normalizer==2.1.1
codecov==2.1.12
codecov==2.1.13
colorama==0.4.4
contextlib2==21.6.0
coverage==6.4.4
Expand Down Expand Up @@ -51,12 +51,12 @@ python-dateutil==2.8.2
pytoml==0.1.21
pytoolconfig==1.2.2
pytricia==1.0.2
PyYAML==5.4.1
PyYAML==6.0.1
requests==2.28.1
retrying==1.3.3
rope==1.3.0
rsa==4.7.2
s3transfer==0.6.0
s3transfer==0.7.0
six==1.16.0
sortedcontainers==2.4.0
thrift==0.16.0
Expand Down
35 changes: 27 additions & 8 deletions rift/common.thrift
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,14 @@ const MTUSizeType default_mtu_size = 1400
/** default link being BFD capable */
const bool bfd_default = true

/** type used to target nodes with key value */
typedef i64 KeyValueTargetType

/** default target for key value are all nodes. */
const KeyValueTargetType keyvaluetarget_default = 0
/** value for _all leaves_ addressing. Represented by all bits set. */
const KeyValueTargetType keyvaluetarget_all_south_leaves = -1

/** undefined nonce, equivalent to missing nonce */
const NonceType undefined_nonce = 0;
/** outer security key id, MUST be interpreted as in implementation
Expand Down Expand Up @@ -272,17 +280,19 @@ enum RouteType {
}

enum KVTypes {
OUI = 1,
WellKnown = 2,
Experimental = 1,
WellKnown = 2,
OUI = 3,
}

/** <auto-evpn>
EVPN Fabric ID */
typedef i16 FabricIDType

const FabricIDType undefined_fabric_id = 0
const FabricIDType default_fabric_id = 1

/** <auto-evpn> */
/** EVPN Fabric ID */

const bool default_acting_auto_evpn_dci_when_tof = false

enum AutoEVPNModel {
Expand All @@ -291,26 +301,35 @@ enum AutoEVPNModel {

const AutoEVPNModel default_autoevpn_model = AutoEVPNModel.ERB_VLAN_BUNDLE

const bool AUTO_EVPN_SUPPORT_DEFAULT = false

/** </auto-evpn> */

/** <auto-flood-reflection> */

enum AutoFRModel {
/** Full Mesh of L1 tunnel shortcuts, only model supported currently with auto FR */
TunnelMode = 0,
NoTunnelMode = 1,
NoTunnelMode = 0,
TunnelMode = 1,
}

const AutoFRModel default_autofr_model = AutoFRModel.TunnelMode
const AutoFRModel default_autofr_model = AutoFRModel.NoTunnelMode

typedef i32 FloodReflectionClusterIDType

/* maybe used in future for special purposes */
const FloodReflectionClusterIDType IllegalClusterID = 0
const FloodReflectionClusterIDType DefaultClusterID = 1

/// preference to become FR, higher is better
/** preference to become FR, higher is better */
typedef i32 FloodReflectionPreferenceType

const FloodReflectionPreferenceType MinFloodReflectionPreference = 0

const bool AUTO_FLOOD_REFLECTION_SUPPORT = false
/** </auto-flood-reflection> */

/** <southbound KVs> */

/** </southbound KVs> */

3 changes: 1 addition & 2 deletions rift/common/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
#very, very magic code to cleanup the immutable schema to allow old code to modify rift packets

__all__ = ['ttypes', 'constants']

from . import ttypes
Expand All @@ -9,3 +7,4 @@
delattr(getattr(ttypes, _klass),"__setattr__")
except (KeyError, AttributeError):
pass

9 changes: 7 additions & 2 deletions rift/common/constants.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading