summaryrefslogtreecommitdiffstats
path: root/tests/topotests/bgp_prefix_sid
diff options
context:
space:
mode:
Diffstat (limited to 'tests/topotests/bgp_prefix_sid')
-rw-r--r--tests/topotests/bgp_prefix_sid/exabgp.env1
-rw-r--r--tests/topotests/bgp_prefix_sid/peer1/exabgp.cfg190
-rw-r--r--tests/topotests/bgp_prefix_sid/peer2/exabgp.cfg31
-rw-r--r--tests/topotests/bgp_prefix_sid/test_bgp_prefix_sid.py34
4 files changed, 130 insertions, 126 deletions
diff --git a/tests/topotests/bgp_prefix_sid/exabgp.env b/tests/topotests/bgp_prefix_sid/exabgp.env
index 6c554f5..bb36af5 100644
--- a/tests/topotests/bgp_prefix_sid/exabgp.env
+++ b/tests/topotests/bgp_prefix_sid/exabgp.env
@@ -1,5 +1,6 @@
[exabgp.api]
+ack = false
encoder = text
highres = false
respawn = false
diff --git a/tests/topotests/bgp_prefix_sid/peer1/exabgp.cfg b/tests/topotests/bgp_prefix_sid/peer1/exabgp.cfg
index 5b55366..a5108ff 100644
--- a/tests/topotests/bgp_prefix_sid/peer1/exabgp.cfg
+++ b/tests/topotests/bgp_prefix_sid/peer1/exabgp.cfg
@@ -1,103 +1,101 @@
-group controller {
- neighbor 10.0.0.1 {
- router-id 10.0.0.101;
- local-address 10.0.0.101;
- local-as 2;
- peer-as 1;
+neighbor 10.0.0.1 {
+ router-id 10.0.0.101;
+ local-address 10.0.0.101;
+ local-as 2;
+ peer-as 1;
- family {
- ipv4 nlri-mpls;
- }
+ family {
+ ipv4 nlri-mpls;
+ }
- static {
- # ref: draft-ietf-idr-bgp-prefix-sid-27
- #
- # IANA temporarily assigned the following:
- # attribute code type (suggested value: 40) to
- # the BGP Prefix-SID attribute
- #
- # 0 1 2 3
- # 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- # | Type | Length | RESERVED |
- # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- # | Flags | Label Index |
- # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- # | Label Index |
- # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- # Figure. Label-Index TLV (Prefix-SID type-1)
- #
- # 0 1 2 3
- # 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- # | Type | Length | Flags |
- # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- # | Flags |
- # +-+-+-+-+-+-+-+-+
- #
- # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- # | SRGB 1 (6 octets) |
- # | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- # | |
- # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- #
- # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- # | SRGB n (6 octets) |
- # | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- # | |
- # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<Paste>
- # Figure. Originator SRGB TLV (Prefix-SID type-3)
+ static {
+ # ref: draft-ietf-idr-bgp-prefix-sid-27
+ #
+ # IANA temporarily assigned the following:
+ # attribute code type (suggested value: 40) to
+ # the BGP Prefix-SID attribute
+ #
+ # 0 1 2 3
+ # 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ # | Type | Length | RESERVED |
+ # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ # | Flags | Label Index |
+ # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ # | Label Index |
+ # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ # Figure. Label-Index TLV (Prefix-SID type-1)
+ #
+ # 0 1 2 3
+ # 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ # | Type | Length | Flags |
+ # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ # | Flags |
+ # +-+-+-+-+-+-+-+-+
+ #
+ # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ # | SRGB 1 (6 octets) |
+ # | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ # | |
+ # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ #
+ # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ # | SRGB n (6 octets) |
+ # | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ # | |
+ # +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<Paste>
+ # Figure. Originator SRGB TLV (Prefix-SID type-3)
- # ExaBGP generic-attribute binary pattern:
- # Attribute-type: 0x28 (40:BGP_PREFIX_SID)
- # Attribute-flag: 0xc0 (Option, Transitive)
- # Attribute-body: Label-Index TLV and Originator SRGB TLV
- # Label-Index TLV: 0x01000700000000000001
- # Type (08bit): 0x01
- # Length (16bit): 0x0007
- # RESERVED (08bit): 0x00
- # Flags (16bit): 0x0000
- # Label Index (32bit): 0x00000001
- # Originator SRGB TLV: 0x03000800000c350000000a
- # Type (08bit): 0x03
- # Length (16bit): 0x0008 (nb-SRGB is 1)
- # Flags (16bit): 0x0000
- # SRGB1 (48bit): 0x0c3500:0x00000a (800000-800010 is SRGB1)
- route 3.0.0.1/32 next-hop 10.0.0.101 label [800001] attribute [0x28 0xc0 0x0100070000000000000103000800000c350000000a];
+ # ExaBGP generic-attribute binary pattern:
+ # Attribute-type: 0x28 (40:BGP_PREFIX_SID)
+ # Attribute-flag: 0xc0 (Option, Transitive)
+ # Attribute-body: Label-Index TLV and Originator SRGB TLV
+ # Label-Index TLV: 0x01000700000000000001
+ # Type (08bit): 0x01
+ # Length (16bit): 0x0007
+ # RESERVED (08bit): 0x00
+ # Flags (16bit): 0x0000
+ # Label Index (32bit): 0x00000001
+ # Originator SRGB TLV: 0x03000800000c350000000a
+ # Type (08bit): 0x03
+ # Length (16bit): 0x0008 (nb-SRGB is 1)
+ # Flags (16bit): 0x0000
+ # SRGB1 (48bit): 0x0c3500:0x00000a (800000-800010 is SRGB1)
+ route 3.0.0.1/32 next-hop 10.0.0.101 label [800001] attribute [0x28 0xc0 0x0100070000000000000103000800000c350000000a];
- # ExaBGP generic-attribute binary pattern:
- # Attribute-type: 0x28 (40:BGP_PREFIX_SID)
- # Attribute-flag: 0xc0 (Option, Transitive)
- # Attribute-body: Label-Index TLV and Originator SRGB TLV
- # Label-Index TLV: 0x01000700000000000001
- # Type (08bit): 0x01
- # Length (16bit): 0x0007
- # RESERVED (08bit): 0x00
- # Flags (16bit): 0x0000
- # Label Index (32bit): 0x00000002
- # Originator SRGB TLV: 0x03000800000c350000000a
- # Type (08bit): 0x03
- # Length (16bit): 0x0008 (nb-SRGB is 1)
- # Flags (16bit): 0x0000
- # SRGB1 (48bit): 0x0c3500:0x00000a (800000-800010 is SRGB1)
- route 3.0.0.2/32 next-hop 10.0.0.101 label [800002] attribute [0x28 0xc0 0x0100070000000000000203000800000c350000000a];
+ # ExaBGP generic-attribute binary pattern:
+ # Attribute-type: 0x28 (40:BGP_PREFIX_SID)
+ # Attribute-flag: 0xc0 (Option, Transitive)
+ # Attribute-body: Label-Index TLV and Originator SRGB TLV
+ # Label-Index TLV: 0x01000700000000000001
+ # Type (08bit): 0x01
+ # Length (16bit): 0x0007
+ # RESERVED (08bit): 0x00
+ # Flags (16bit): 0x0000
+ # Label Index (32bit): 0x00000002
+ # Originator SRGB TLV: 0x03000800000c350000000a
+ # Type (08bit): 0x03
+ # Length (16bit): 0x0008 (nb-SRGB is 1)
+ # Flags (16bit): 0x0000
+ # SRGB1 (48bit): 0x0c3500:0x00000a (800000-800010 is SRGB1)
+ route 3.0.0.2/32 next-hop 10.0.0.101 label [800002] attribute [0x28 0xc0 0x0100070000000000000203000800000c350000000a];
- # ExaBGP generic-attribute binary pattern:
- # Attribute-type: 0x28 (40:BGP_PREFIX_SID)
- # Attribute-flag: 0xc0 (Option, Transitive)
- # Attribute-body: Label-Index TLV and Originator SRGB TLV
- # Label-Index TLV: 0x01000700000000000001
- # Type (08bit): 0x01
- # Length (16bit): 0x0007
- # RESERVED (08bit): 0x00
- # Flags (16bit): 0x0000
- # Label Index (32bit): 0x00000003
- # Originator SRGB TLV: 0x03000800000c350000000a
- # Type (08bit): 0x03
- # Length (16bit): 0x0008 (nb-SRGB is 1)
- # Flags (16bit): 0x0000
- # SRGB1 (48bit): 0x0c3500:0x00000a (800000-800010 is SRGB1)
- route 3.0.0.3/32 next-hop 10.0.0.101 label [800003] attribute [0x28 0xc0 0x0100070000000000000303000800000c350000000a];
- }
+ # ExaBGP generic-attribute binary pattern:
+ # Attribute-type: 0x28 (40:BGP_PREFIX_SID)
+ # Attribute-flag: 0xc0 (Option, Transitive)
+ # Attribute-body: Label-Index TLV and Originator SRGB TLV
+ # Label-Index TLV: 0x01000700000000000001
+ # Type (08bit): 0x01
+ # Length (16bit): 0x0007
+ # RESERVED (08bit): 0x00
+ # Flags (16bit): 0x0000
+ # Label Index (32bit): 0x00000003
+ # Originator SRGB TLV: 0x03000800000c350000000a
+ # Type (08bit): 0x03
+ # Length (16bit): 0x0008 (nb-SRGB is 1)
+ # Flags (16bit): 0x0000
+ # SRGB1 (48bit): 0x0c3500:0x00000a (800000-800010 is SRGB1)
+ route 3.0.0.3/32 next-hop 10.0.0.101 label [800003] attribute [0x28 0xc0 0x0100070000000000000303000800000c350000000a];
}
}
diff --git a/tests/topotests/bgp_prefix_sid/peer2/exabgp.cfg b/tests/topotests/bgp_prefix_sid/peer2/exabgp.cfg
index 379d0a3..50ebdc2 100644
--- a/tests/topotests/bgp_prefix_sid/peer2/exabgp.cfg
+++ b/tests/topotests/bgp_prefix_sid/peer2/exabgp.cfg
@@ -1,19 +1,22 @@
-group controller {
-
- process receive-routes {
- run "/etc/exabgp/exa-receive.py --no-timestamp 2";
- receive-routes;
- encoder json;
- }
+process receive-routes {
+ run /etc/exabgp/exa-receive.py --no-timestamp 2;
+ encoder json;
+}
- neighbor 10.0.0.1 {
- router-id 10.0.0.102;
- local-address 10.0.0.102;
- local-as 3;
- peer-as 1;
+neighbor 10.0.0.1 {
+ router-id 10.0.0.102;
+ local-address 10.0.0.102;
+ local-as 3;
+ peer-as 1;
- family {
- ipv4 nlri-mpls;
+ family {
+ ipv4 nlri-mpls;
+ }
+ api {
+ processes [ receive-routes ];
+ receive {
+ parsed;
+ update;
}
}
}
diff --git a/tests/topotests/bgp_prefix_sid/test_bgp_prefix_sid.py b/tests/topotests/bgp_prefix_sid/test_bgp_prefix_sid.py
index bfc083b..1e6e731 100644
--- a/tests/topotests/bgp_prefix_sid/test_bgp_prefix_sid.py
+++ b/tests/topotests/bgp_prefix_sid/test_bgp_prefix_sid.py
@@ -120,13 +120,9 @@ def exabgp_get_update_prefix(filename, afi, nexthop, prefix):
ret = ret.get(afi)
if ret is None:
continue
- ret = ret.get(nexthop)
- if ret is None:
- continue
- ret = ret.get(prefix)
- if ret is None:
- continue
- return output
+ for nh in ret.get(nexthop, []):
+ if nh.get("nlri") == prefix:
+ return output
return "Not found"
@@ -135,33 +131,39 @@ def test_peer2_receive_prefix_sid_type1():
peer2 = tgen.gears["peer2"]
logfile = "{}/{}-received.log".format(peer2.gearlogdir, peer2.name)
- def _check_type1_peer2(prefix, labelindex):
+ def _check_type1_peer2(prefix, label):
output = exabgp_get_update_prefix(
logfile, "ipv4 nlri-mpls", "10.0.0.101", prefix
)
expected = {
"type": "update",
"neighbor": {
- "ip": "10.0.0.1",
+ "address": {
+ "peer": "10.0.0.1",
+ },
"message": {
"update": {
- "attribute": {
- "attribute-0x28-0xE0": "0x010007000000{:08x}".format(
- labelindex
- )
+ "announce": {
+ "ipv4 nlri-mpls": {
+ "10.0.0.101": [
+ {
+ "nlri": prefix,
+ "label": [[label]],
+ }
+ ]
+ }
},
- "announce": {"ipv4 nlri-mpls": {"10.0.0.101": {}}},
}
},
},
}
return topotest.json_cmp(output, expected)
- test_func = functools.partial(_check_type1_peer2, "3.0.0.1/32", labelindex=1)
+ test_func = functools.partial(_check_type1_peer2, "3.0.0.1/32", label=8001)
success, result = topotest.run_and_expect(test_func, None, count=10, wait=0.5)
assert result is None, 'Failed _check_type1_peer2 in "{}"'.format("peer2")
- test_func = functools.partial(_check_type1_peer2, "3.0.0.2/32", labelindex=2)
+ test_func = functools.partial(_check_type1_peer2, "3.0.0.2/32", label=8002)
success, result = topotest.run_and_expect(test_func, None, count=10, wait=0.5)
assert result is None, 'Failed _check_type1_peer2 in "{}"'.format("peer2")