コード例 #1
0
ファイル: test_upf.py プロジェクト: kvbhaskar/upg-vpp
 def extra_pdrs(self):
     return [
         IE_CreatePDR(IE_list=[
             IE_FAR_Id(id=3),
             IE_PDI(IE_list=[
                 IE_NetworkInstance(instance="access"),
                 self.ie_sdf_filter_for_redirect(),
                 IE_SourceInterface(interface="Access"),
                 self.ie_ue_ip_address(),
             ]),
             IE_PDR_Id(id=3),
             IE_Precedence(precedence=100),
         ]),
         IE_CreatePDR(IE_list=[
             IE_FAR_Id(id=4),
             IE_PDI(IE_list=[
                 IE_NetworkInstance(instance="access"),
                 IE_SDF_Filter(
                     FD=1,
                     flow_description="permit out ip from %s to assigned" %
                     self.drop_ip),
                 IE_SourceInterface(interface="Access"),
                 self.ie_ue_ip_address(),
             ]),
             IE_PDR_Id(id=4),
             IE_Precedence(precedence=100),
         ]),
     ]
コード例 #2
0
ファイル: test_upf.py プロジェクト: kvbhaskar/upg-vpp
 def establish_session(self):
     self.cur_seid = seid()
     resp = self.chat(
         PFCPSessionEstablishmentRequest(IE_list=[
             IE_CreateFAR(IE_list=[
                 IE_ApplyAction(FORW=1),
                 IE_FAR_Id(id=1),
                 IE_ForwardingParameters(IE_list=[
                     IE_DestinationInterface(interface="SGi-LAN/N6-LAN"),
                     IE_NetworkInstance(instance="sgi")
                 ])
             ]),
             self.reverse_far(),
             # FIXME: this is not handled properly :(
             IE_CreateFAR(IE_list=[
                 IE_ApplyAction(FORW=1),
                 IE_FAR_Id(id=3),
                 IE_ForwardingParameters(IE_list=[
                     IE_DestinationInterface(interface="SGi-LAN/N6-LAN"),
                     IE_NetworkInstance(instance="sgi"),
                     self.ie_redirect_information(),
                 ])
             ]),
             IE_CreateFAR(IE_list=[
                 IE_ApplyAction(DROP=1),
                 IE_FAR_Id(id=4),
             ]),
             self.forward_pdr(),
             IE_CreatePDR(IE_list=[
                 IE_FAR_Id(id=2),
                 IE_PDI(IE_list=[
                     IE_NetworkInstance(instance="sgi"),
                     IE_SDF_Filter(FD=1,
                                   flow_description=
                                   "permit out ip from any to assigned"),
                     IE_SourceInterface(interface="SGi-LAN/N6-LAN"),
                     self.ie_ue_ip_address(SD=1)
                 ]),
                 IE_PDR_Id(id=2),
                 IE_Precedence(precedence=200),
             ])
         ] + self.extra_pdrs(
         ) + [self.ie_fseid(),
              IE_NodeId(id_type=2, id="ergw")]),
         PFCPSessionEstablishmentResponse,
         seid=self.cur_seid)
     self.assertEqual(CauseValues[resp[IE_Cause].cause], "Request accepted")
     self.verify_ie_fseid(resp[IE_FSEID])
     self.assertEqual(resp[IE_FSEID].seid, self.cur_seid)
     if IE_CreatedPDR in resp:
         self.teid = resp[IE_CreatedPDR][IE_FTEID].TEID
         self.logger.info(self.teid)
コード例 #3
0
ファイル: test_upf.py プロジェクト: kvbhaskar/upg-vpp
 def forward_pdr(self):
     return IE_CreatePDR(IE_list=[
         IE_FAR_Id(id=1),
         IE_PDI(IE_list=[
             IE_NetworkInstance(instance="access"),
             IE_SDF_Filter(
                 FD=1,
                 flow_description="permit out ip from any to assigned"),
             IE_SourceInterface(interface="Access"),
             self.ie_ue_ip_address(),
         ]),
         IE_PDR_Id(id=1),
         IE_Precedence(precedence=200),
     ])
コード例 #4
0
    def establish_session_request(self):
        self.cur_seid = seid()
        resp = self.chat(
            PFCPSessionEstablishmentRequest(IE_list=[
                #UPLINK FAR=1,PDR=1
                IE_CreateFAR(IE_list=[IE_ApplyAction(
                    FORW=1), IE_FAR_Id(id=1)]),
                IE_CreatePDR(IE_list=[
                    IE_FAR_Id(id=1),
                    IE_PDI(IE_list=[
                        IE_NetworkInstance(instance="access"),
                        IE_SDF_Filter(FD=1,
                                      flow_description=
                                      "permit out ip from any to assigned"),
                        IE_SourceInterface(interface="Access"),
                        self.ie_ue_ip_address(SD=0),
                        IE_FTEID(V4=1, TEID=1111, ipv4=N3_IP_V4)
                    ]),
                    IE_PDR_Id(id=1),
                    IE_Precedence(precedence=200),
                    IE_OuterHeaderRemoval(),
                ]),

                #DOWNLINK FAR=2,PDR=2
                IE_CreateFAR(IE_list=[
                    IE_ApplyAction(FORW=1),
                    IE_FAR_Id(id=2),
                    IE_ForwardingParameters(IE_list=[
                        IE_DestinationInterface(interface="Access"),
                        IE_NetworkInstance(instance="n6"),
                        IE_OuterHeaderCreation(
                            GTPUUDPIPV4=1, TEID=2222, ipv4=GNB_IP_V4)
                    ])
                ]),
                IE_CreatePDR(IE_list=[
                    IE_FAR_Id(id=2),
                    IE_PDI(IE_list=[
                        IE_NetworkInstance(instance="n6"),
                        IE_SourceInterface(interface="Core"),
                        self.ie_ue_ip_address(SD=1)
                    ]),
                    IE_PDR_Id(id=2),
                    IE_Precedence(precedence=200),
                    IE_OuterHeaderRemoval(),
                ]),
                self.ie_fseid(),
                IE_NodeId(id_type=2, id="cp")
            ]),
            seid=self.cur_seid)
コード例 #5
0
ファイル: test_upf.py プロジェクト: kvbhaskar/upg-vpp
 def establish_reporting_session(self, report_app=False):
     self.cur_seid = seid()
     resp = self.chat(
         PFCPSessionEstablishmentRequest(IE_list=filter_ies([
             IE_CreateFAR(IE_list=[
                 IE_ApplyAction(FORW=1),
                 IE_FAR_Id(id=1),
                 IE_ForwardingParameters(IE_list=[
                     IE_DestinationInterface(interface="SGi-LAN/N6-LAN"),
                     IE_NetworkInstance(instance="sgi")
                 ])
             ]),
             IE_CreateFAR(IE_list=[
                 IE_ApplyAction(FORW=1),
                 IE_FAR_Id(id=2),
                 IE_ForwardingParameters(IE_list=[
                     IE_DestinationInterface(interface="Access"),
                     IE_NetworkInstance(instance="access")
                 ])
             ]),
             IE_CreateURR(IE_list=[
                 IE_MeasurementMethod(EVENT=1, VOLUM=1, DURAT=1),
                 IE_ReportingTriggers(start_of_traffic=1),
                 IE_TimeQuota(quota=60),
                 IE_URR_Id(id=1)
             ]) if not report_app else None,
             IE_CreatePDR(IE_list=filter_ies([
                 IE_FAR_Id(id=1),
                 IE_PDI(IE_list=[
                     IE_NetworkInstance(instance="access"),
                     IE_SDF_Filter(FD=1,
                                   flow_description=
                                   "permit out ip from any to assigned"),
                     IE_SourceInterface(interface="Access"),
                     self.ie_ue_ip_address()
                 ]),
                 IE_PDR_Id(id=1),
                 IE_Precedence(precedence=200),
                 IE_URR_Id(id=1) if not report_app else None
             ])),
             IE_CreatePDR(IE_list=[
                 IE_FAR_Id(id=2),
                 IE_PDI(IE_list=[
                     IE_NetworkInstance(instance="sgi"),
                     IE_SDF_Filter(FD=1,
                                   flow_description=
                                   "permit out ip from any to assigned"),
                     IE_SourceInterface(interface="SGi-LAN/N6-LAN"),
                     self.ie_ue_ip_address(SD=1)
                 ]),
                 IE_PDR_Id(id=2),
                 IE_Precedence(precedence=200),
             ]),
             IE_CreateURR(IE_list=[
                 IE_MeasurementMethod(VOLUM=1, DURAT=1),
                 IE_ReportingTriggers(),
                 IE_TimeQuota(quota=60),
                 IE_URR_Id(id=2)
             ]) if report_app else None,
             IE_CreatePDR(IE_list=[
                 IE_FAR_Id(id=1),
                 IE_PDI(IE_list=[
                     self.ie_sdf_filter_extra_for_app_pdi(),
                     IE_ApplicationId(id="TST"),
                     IE_NetworkInstance(instance="access"),
                     IE_SourceInterface(interface="Access"),
                     self.ie_ue_ip_address(),
                 ]),
                 IE_PDR_Id(id=3),
                 IE_Precedence(precedence=100),
                 IE_URR_Id(id=2)
             ]) if report_app else None,
             IE_CreatePDR(IE_list=[
                 IE_FAR_Id(id=2),
                 IE_PDI(IE_list=[
                     # FIXME: this currently appears not to work
                     # (to be fixed in ip-rules branch)
                     # IE_SDF_Filter(
                     #     FD=1,
                     #     flow_description="permit out ip from %s to assigned"
                     #     % self.extra_sdf_ip),
                     IE_ApplicationId(id="TST"),
                     IE_NetworkInstance(instance="sgi"),
                     IE_SourceInterface(interface="SGi-LAN/N6-LAN"),
                     self.ie_ue_ip_address(SD=1),
                 ]),
                 IE_PDR_Id(id=4),
                 # FIXME: likely a bug in 20.01 branch: PDR for DL
                 # traffic must have lower precedence
                 IE_Precedence(precedence=10),
                 IE_URR_Id(id=2)
             ]) if report_app else None,
             self.ie_fseid(),
             IE_NodeId(id_type=2, id="ergw")
         ])),
         PFCPSessionEstablishmentResponse,
         seid=self.cur_seid)
     self.assertEqual(CauseValues[resp[IE_Cause].cause], "Request accepted")
     self.verify_ie_fseid(resp[IE_FSEID])
     self.assertEqual(resp[IE_FSEID].seid, self.cur_seid)
コード例 #6
0
ファイル: test_upf.py プロジェクト: kvbhaskar/upg-vpp
 def ie_sdf_filter_extra_for_app_pdi(self):
     return IE_SDF_Filter(
         FD=1,
         flow_description="permit out ip from %s to assigned" %
         EXTRA_SDF_IP_V6)
コード例 #7
0
ファイル: test_upf.py プロジェクト: kvbhaskar/upg-vpp
 def ie_sdf_filter_for_redirect(self):
     return IE_SDF_Filter(
         FD=1,
         flow_description="permit out ip from %s to assigned" % REDIR_IP_V6)