aib & preroute TOI
文章來源: 無路可走2011-05-16 23:21:17
Major points

AIB is the most stable component (Atul)

1) AIB external managed adjacency
2) Software Path bundle load balance
3) Packet capture
4) Preroute Mcast
5) Preroute Unicast

BM-ADJ control path
Producer (create/delete/modify) -> AIB -> PD BM ADJ -> HW
IM/IIR -> PI BM ADJ -> PD BM ADJ -> PI AIB -> PD BM ADJ -> HW

Unicast preroute path
RP CPU -> LC CPU (prior 4.1.0 of ISSU changes)
RP CPU -> LC PSE (from 4.1.0) set next hop bit and next hop address, next hop address must be connected address.
RSVP / Linklocal / OSPF-EIGRP etc. session init packets


AIB external registration
=================
#define BMP_ADJ_CMPL_DLL_NAME   "libbundlemgr_platform_hfr_cmpl_cti.dll"
dll_parms.aibcl_compl_fn_dll_name       = BMP_ADJ_CMPL_DLL_NAME;
#define BMP_ADJ_CMPL_FUNC_NAME  "bmp_adj_cmpl_adj"
dll_parms.aibcl_compl_fn_name           = BMP_ADJ_CMPL_FUNC_NAME;
#define BMP_ADJ_DLL_NAME        "libbundlemgr_adj_pd.dll";
dll_parms.aibcl_plat_dll_name           = BMP_ADJ_DLL_NAME;
#define BMP_ADJ_PROG_FUNC_NAME  "bmp_prog_adj";
dll_parms.aibcl_plat_prog_fn_name       = BMP_ADJ_PROG_FUNC_NAME;
#define BMP_ADJ_STATS_FUNC_NAME "bmp_read_stats"
dll_parms.aibcl_plat_read_stats_fn_name = BMP_ADJ_STATS_FUNC_NAME;

Bundle Load Balance in SW path
=======================
aib_complete_entry
  calls dlldata->complete_fn() function (bmp_adj_cmpl_adj())


Packet Capture Function
=======================
packet drop capture
drop in PSE -> shq/spr -> squidlib->fabio->qad->forwarder driver (drop packets capture here)

packet punt capture on interface
1) enable software packet capture on an interface (phy only)
      l2_adj_rewrite       <86>  <0x4d9630f4, 0x504c75d8>  <       0,        0>
     queue_fifo           <56>  <0x4d930bdc, 0x505084f0>  <       0,        0>
     pak_capture          <162>  <0x4d9758f4, 0x505321c4>  <       0,        0>
     txm_nopull           <60>  <0x4d93fea4, 0x504fbe98>  <       0,        0>

     ipv4                 <26>  <0x4df6b0c8, 0x5052f178>  <       0,        0>
     hdlc                 <14>  <0x4e35415c, 0x00000000>  <       0,        0>
     l2_adj_rewrite       <86>  <0x4d9630f4, 0x5054f9f8>  <       0,        0>
     queue_fifo           <56>  <0x4d930bdc, 0x5052fc50>  <       0,        0>
     link_jump            <94>  <0x4e36842c, 0x00000000>  <       0,        0>
     txm_nopull           <60>  <0x4d93fea4, 0x5052f924>  <       0,        0>


2) drop packet capture
    fwd_spr_pak_rx()
    if (pak_capture_capture_packet(pak, PC_DIRECTION_INGRESS) ==
        PCR_DROP_PACKET)
    fwd_shq_pak_rx()
    if (pak_capture_capture_packet(pak, PC_DIRECTION_EGRESS) ==
        PCR_DROP_PACKET) {