in ptf/saisrv6.py [0:0]
def setUp(self):
super(Srv6MySidTest, self).setUp()
self.node0_prefix_sid = 'baba:1001:0:10::'
self.node0_t_sid = 'baba:1001:0:10:f::'
self.node0_dt46_sid1 = 'baba:1001:0:10:df46:1::'
self.node0_dt46_sid2 = 'baba:1001:0:10:df46:2::'
self.node0_dt4_sid = 'baba:1001:0:10:df4::'
self.node0_dt6_sid = 'baba:1001:0:10:df6::'
self.node0_adj_sid = 'baba:1001:0:10:ad::'
self.node0_b6_encap_sid = 'baba:1001:0:10::100'
self.node0_b6_insert_sid = 'baba:1001:0:10::200'
self.node1_prefix_sid = 'baba:1001:0:20::'
self.node2_prefix_sid = 'baba:1001:0:30::'
self.sid_list = [self.node2_prefix_sid, self.node1_prefix_sid]
self.srv6_mac = '00:aa:bb:cc:dd:ee'
self.unbor_ip = '100.100.100.100'
self.srv6_src_ip = '2001:1001:0:10::1'
# overlay configuration
self.client_ip_src = '10.10.10.10'
self.client_ip_dest = '20.20.20.20'
self.nbor_ip = '30.30.30.30'
self.xconn_nbor_ip = '40.40.40.40'
self.client_ipv6_src = '1100:1001::10'
self.client_ipv6_dest = '1100:1001::20'
self.client_smac = "00:11:11:11:11:11"
self.client_dmac = '00:22:22:22:22:22'
# client route
self.ip_nhop = sai_thrift_create_next_hop(
self.client,
ip=sai_ipaddress(self.nbor_ip),
router_interface_id=self.port10_rif,
type=SAI_NEXT_HOP_TYPE_IP)
self.ip_nbor = sai_thrift_neighbor_entry_t(
rif_id=self.port10_rif,
ip_address=sai_ipaddress(self.nbor_ip))
sai_thrift_create_neighbor_entry(
self.client, self.ip_nbor, dst_mac_address=self.client_dmac)
self.ip_route = sai_thrift_route_entry_t(
vr_id=self.default_vrf,
destination=sai_ipprefix(self.client_ip_dest + '/32'))
sai_thrift_create_route_entry(
self.client, self.ip_route, next_hop_id=self.ip_nhop)
self.ipv6_route = sai_thrift_route_entry_t(
vr_id=self.default_vrf,
destination=sai_ipprefix(self.client_ipv6_dest + '/128'))
sai_thrift_create_route_entry(
self.client, self.ipv6_route, next_hop_id=self.ip_nhop)
self.urif_lb = sai_thrift_create_router_interface(
self.client,
type=SAI_ROUTER_INTERFACE_TYPE_LOOPBACK,
virtual_router_id=self.default_vrf)
self.sr_tunnel = sai_thrift_create_tunnel(
self.client,
type=SAI_TUNNEL_TYPE_SRV6,
encap_src_ip=sai_ipaddress(self.srv6_src_ip),
underlay_interface=self.urif_lb,
encap_ttl_mode=SAI_TUNNEL_TTL_MODE_PIPE_MODEL,
decap_ttl_mode=SAI_TUNNEL_TTL_MODE_PIPE_MODEL)
self.und_nhop = sai_thrift_create_next_hop(
self.client,
type=SAI_NEXT_HOP_TYPE_IP,
ip=sai_ipaddress(self.unbor_ip),
router_interface_id=self.port12_rif)
self.und_nbor = sai_thrift_neighbor_entry_t(
rif_id=self.port12_rif, ip_address=sai_ipaddress(self.unbor_ip))
sai_thrift_create_neighbor_entry(
self.client, self.und_nbor, dst_mac_address=self.srv6_mac)
self.tunnel_route1 = sai_thrift_route_entry_t(
vr_id=self.default_vrf,
destination=sai_ipprefix(self.node0_prefix_sid + '/64'))
sai_thrift_create_route_entry(
self.client, self.tunnel_route1, next_hop_id=self.und_nhop)
self.tunnel_route2 = sai_thrift_route_entry_t(
vr_id=self.default_vrf,
destination=sai_ipprefix(self.node1_prefix_sid + '/64'))
sai_thrift_create_route_entry(
self.client, self.tunnel_route2, next_hop_id=self.und_nhop)
self.tunnel_route3 = sai_thrift_route_entry_t(
vr_id=self.default_vrf,
destination=sai_ipprefix(self.node2_prefix_sid + '/64'))
sai_thrift_create_route_entry(
self.client, self.tunnel_route3, next_hop_id=self.und_nhop)
self.t_vrf_id = sai_thrift_create_virtual_router(self.client)
self.t_route = sai_thrift_route_entry_t(
vr_id=self.t_vrf_id,
destination=sai_ipprefix(self.node1_prefix_sid + '/80'))
# port 13 cross-connect nhop
self.xconn_nhop = sai_thrift_create_next_hop(
self.client,
type=SAI_NEXT_HOP_TYPE_IP,
ip=sai_ipaddress(self.xconn_nbor_ip),
router_interface_id=self.port13_rif)
self.xconn_nbor = sai_thrift_neighbor_entry_t(
rif_id=self.port13_rif,
ip_address=sai_ipaddress(self.xconn_nbor_ip))
sai_thrift_create_neighbor_entry(
self.client, self.xconn_nbor, dst_mac_address=self.srv6_mac)
self.end_sid_counter = sai_thrift_create_counter(self.client)
self.end_sid_stats = 0
# my_sid entries
end_bf = SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USD
# End SID
self.end_sid = sai_thrift_my_sid_entry_t(
sid=self.node0_prefix_sid, vr_id=self.default_vrf)
sai_thrift_create_my_sid_entry(
self.client,
self.end_sid,
endpoint_behavior=SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_E,
endpoint_behavior_flavor=end_bf,
counter_id=self.end_sid_counter)
# End.T SID
sai_thrift_create_route_entry(
self.client, self.t_route, next_hop_id=self.und_nhop)
self.end_t_sid = sai_thrift_my_sid_entry_t(
sid=self.node0_t_sid, vr_id=self.default_vrf)
sai_thrift_create_my_sid_entry(
self.client,
self.end_t_sid,
endpoint_behavior=SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_T,
vrf=self.t_vrf_id)
# End.DT46 SIDs
# default VRF
self.end_dt46_sid1 = sai_thrift_my_sid_entry_t(
sid=self.node0_dt46_sid1, vr_id=self.default_vrf)
sai_thrift_create_my_sid_entry(
self.client,
self.end_dt46_sid1,
vrf=self.default_vrf,
endpoint_behavior=SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT46)
# non-default VRF
self.end_dt46_sid2 = sai_thrift_my_sid_entry_t(
sid=self.node0_dt46_sid2, vr_id=self.default_vrf)
sai_thrift_create_my_sid_entry(
self.client,
self.end_dt46_sid2,
vrf=self.t_vrf_id,
endpoint_behavior=SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT46)
# End.DT4 SID with non-default VRF
self.end_dt4_sid = sai_thrift_my_sid_entry_t(
sid=self.node0_dt4_sid, vr_id=self.default_vrf)
sai_thrift_create_my_sid_entry(
self.client,
self.end_dt4_sid,
vrf=self.t_vrf_id,
endpoint_behavior=SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT4)
# End.DT6 SID with non-default VRF
self.end_dt6_sid = sai_thrift_my_sid_entry_t(
sid=self.node0_dt6_sid, vr_id=self.default_vrf)
sai_thrift_create_my_sid_entry(
self.client,
self.end_dt6_sid,
vrf=self.t_vrf_id,
endpoint_behavior=SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT6)
# End.X SID
self.end_x_sid = sai_thrift_my_sid_entry_t(
sid=self.node0_adj_sid, vr_id=self.default_vrf)
sai_thrift_create_my_sid_entry(
self.client,
self.end_x_sid,
vrf=self.default_vrf,
endpoint_behavior=SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_X,
next_hop_id=self.xconn_nhop)
# End.B6.Encaps.Red SID config
my_encap_sid_list = [self.node2_prefix_sid,
self.node1_prefix_sid,
self.node0_prefix_sid]
sai_segment_list1 = sai_thrift_segment_list_t(
count=2,
ip6list=my_encap_sid_list[1:])
self.sidlist1 = sai_thrift_create_srv6_sidlist(
self.client,
type=SAI_SRV6_SIDLIST_TYPE_ENCAPS_RED,
segment_list=sai_segment_list1)
sai_segment_list_2 = sai_thrift_segment_list_t(
count=3,
ip6list=my_encap_sid_list)
self.sidlist2 = sai_thrift_create_srv6_sidlist(
self.client,
type=SAI_SRV6_SIDLIST_TYPE_ENCAPS_RED,
segment_list=sai_segment_list_2)
self.sr_nhop1 = sai_thrift_create_next_hop(
self.client,
type=SAI_NEXT_HOP_TYPE_SRV6_SIDLIST,
srv6_sidlist_id=self.sidlist1,
tunnel_id=self.sr_tunnel)
self.sr_nhop2 = sai_thrift_create_next_hop(
self.client,
type=SAI_NEXT_HOP_TYPE_SRV6_SIDLIST,
srv6_sidlist_id=self.sidlist2,
tunnel_id=self.sr_tunnel)
self.end_b6_encap_sid = sai_thrift_my_sid_entry_t(
sid=self.node0_b6_encap_sid, vr_id=self.default_vrf)
sai_thrift_create_my_sid_entry(
self.client,
self.end_b6_encap_sid,
vrf=self.default_vrf,
endpoint_behavior=SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_ENCAPS_RED,
next_hop_id=self.sr_nhop1)
# End.B6.Insert.Red SID config
my_insert_sid_list = [self.node0_prefix_sid,
self.node1_prefix_sid]
sai_segment_list3 = sai_thrift_segment_list_t(
count=2,
ip6list=my_insert_sid_list)
self.sidlist3 = sai_thrift_create_srv6_sidlist(
self.client,
type=SAI_SRV6_SIDLIST_TYPE_INSERT_RED,
segment_list=sai_segment_list3)
self.sr_nhop3 = sai_thrift_create_next_hop(
self.client,
type=SAI_NEXT_HOP_TYPE_SRV6_SIDLIST,
srv6_sidlist_id=self.sidlist3,
tunnel_id=self.sr_tunnel)
self.end_b6_insert_sid = sai_thrift_my_sid_entry_t(
sid=self.node0_b6_insert_sid, vr_id=self.default_vrf)
sai_thrift_create_my_sid_entry(
self.client,
self.end_b6_insert_sid,
vrf=self.default_vrf,
endpoint_behavior=SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_INSERT_RED,
next_hop_id=self.sr_nhop3)
# test packets
self.inner_v4_pkt = simple_tcp_packet(eth_dst=ROUTER_MAC,
eth_src='00:22:22:22:22:21',
ip_dst=self.client_ip_dest,
ip_src=self.client_ip_src,
ip_id=105,
ip_ttl=64)
self.v4_exp_pkt = simple_tcp_packet(eth_src=ROUTER_MAC,
eth_dst=self.client_dmac,
ip_dst=self.client_ip_dest,
ip_src=self.client_ip_src,
ip_id=105,
ip_ttl=63)
self.inner_v6_pkt = simple_tcpv6_packet(eth_dst=ROUTER_MAC,
eth_src='00:22:22:22:22:21',
ipv6_dst=self.client_ipv6_dest,
ipv6_src=self.client_ipv6_src,
ipv6_hlim=64)
self.v6_exp_pkt = simple_tcpv6_packet(eth_src=ROUTER_MAC,
eth_dst=self.client_dmac,
ipv6_dst=self.client_ipv6_dest,
ipv6_src=self.client_ipv6_src,
ipv6_hlim=63)