一杯清茶

道,可道,非常道;名,可名,非常名。

zebra/quagga ospf and unh test section 3

case 3.1
ospf_router_lsa_originate
  |--ospf_router_lsa_body_set
       |--router_lsa_link_set
            |--lsa_link_broadcast_set
           
           
A router originates a router-LSA for each area that it
belongs to. Such an LSA describes the collected states of
the router’s links to the area.

case 3.2
nsm_inactivity_timer
  |--nsm_kill_nbr
       |--nsm_change_state(NSM_Full-->NSM_Down)
            |--ospf_router_lsa_timer_add
            |--OSPF_ISM_EVENT_EXECUTE (ISM_NeighborChange)
           
case 3.3
see case 3.1


case 3.4
Part A
ism_change_state(ISM_Waiting-->ISM_DR)
  |--ospf_network_lsa_timer_add
      |--ospf_network_lsa_originate
           |--ospf_network_lsa_new
                |--  if (oi->full_nbrs == 0)return NULL;
               
Part B
nsm_change_state(NSM_Loading-->NSM_Full)
  |--ospf_network_lsa_timer_add
               
case 3.5
nsm_change_state(NSM_Loading-->NSM_Full or NSM_Full-->NSM_Down)
  |--ospf_network_lsa_timer_add  
       |--ospf_network_lsa_originate
            |--ospf_network_lsa_refresh
                 |--ospf_network_lsa_body_set
                
case 3.6
data structure:
ospf{}
  |--new_rtrs(route_table{})
       |--info(list{})--ospf_route
      
new_rtrs is constructed in
ospf_spf_calculate
  |--ospf_intra_add_router

originate/refresh summary lsa
ospf_abr_task
  |--ospf_abr_process_router_rt
       |--ospf_find_asbr_route
       |--ospf_abr_announce_rtr               
            |--ospf_abr_announce_rtr_to_area
                 |--ospf_summary_asbr_lsa_refresh

remove summary lsa                
ospf_abr_task
  |--ospf_abr_unapprove_summaries
  |--ospf_abr_remove_unapproved_summaries                
 
 
case 3.7
data structure:
ospf{}
  |--new_rtrs(route_table{})
       |--info--ospf_route{}

ospf_abr_task
  |--ospf_abr_process_network_rt
       |--ospf_abr_announce_network
            |--ospf_abr_announce_network_to_area
                 |--ospf_summary_lsa_refresh
           
case 3.8
ospf_abr_task
  |--ospf_abr_process_router_rt
       |--ospf_find_asbr_route
       |--ospf_abr_announce_rtr            
             
            if (or->path_type == OSPF_PATH_INTER_AREA)
            if (!OSPF_IS_AREA_BACKBONE (area))  
            |--ospf_abr_announce_rtr_to_area
                 |--ospf_summary_asbr_lsa_refresh


case 3.9
ospf_abr_task
  |--ospf_abr_process_network_rt
       |--ospf_abr_announce_network
            if (or->path_type == OSPF_PATH_INTER_AREA)
            if (!OSPF_IS_AREA_BACKBONE (area))
            |--ospf_abr_announce_network_to_area
                 |--ospf_summary_lsa_refresh
 
 
case 3.10
ospf_abr_task
  |--ospf_abr_process_network_rt
       |--ospf_abr_announce_network
            if (or->path_type == OSPF_PATH_INTER_AREA)
            if (!OSPF_IS_AREA_BACKBONE (area))
            |--ospf_abr_announce_network_to_area
                 |--ospf_summary_lsa_refresh

ospf_abr_task
  |--ospf_abr_unapprove_summaries
  |--ospf_abr_remove_unapproved_summaries                
 

case 3.12
ospf_area{}
  |--ranges(route_table)--ospf_area_range{}

ospf_abr_task
  |--ospf_abr_prepare_aggregates
  |--ospf_abr_process_network_rt
       |--ospf_abr_announce_network
            |--ospf_abr_update_aggregate
  |--ospf_abr_announce_aggregates
       |--ospf_abr_announce_network_to_area
      
ospf_area_range
  |--ospf_area_range_set
       |--ospf_area_range_new   
       |--ospf_area_range_add
       |--ospf_schedule_abr_task  
      
case 3.13
ospf_abr_announce_aggregates

case 3.14
ospf_abr_announce_aggregates     

case 3.15
set vlink ospf interface output cost
ospf_spf_calculate
  |--ospf_intra_add_router
       |--ospf_vl_up_check
            |--ospf_vl_set_params
           
ospf_write
in this case virtual link src address and destination address is not in the same subnet.
           
case 3.16
add a static route
ip_route
  |--zebra_static_ipv4
       |--static_add_ipv4
            |--static_install_ipv4
                 |--rib_process
                      |--nexthop_active_update (check unreachable nexthop)
                      |--rib_install_kernel
                           |--kernel_add_ipv4
                                |--netlink_route_multipath
                                     |--netlink_talk
                                    
                      |--redistribute_add
                           |--zsend_route_multipath
                                |--zebra_server_send_message


initiate request
ospf_redistribute_source_type_metric
  |--ospf_redistribute_set
       |--zclient_redistribute (ZEBRA_REDISTRIBUTE_ADD)
            |--zebra_redistribute_send
       |--ospf_asbr_status_update
            |--ospf_spf_calculate_schedule  
           
           
zebra server handle service request
zebra_client_read (ZEBRA_REDISTRIBUTE_ADD)
  |--zebra_redistribute_add
       |--zebra_redistribute
            |--zsend_route_multipath
                 |--zebra_server_send_message        
                
zebra client handle response from server
zclient_read
  |--ipv4_route_add
       |--ospf_zebra_read_ipv4
            |--ospf_external_lsa_originate   
case 3.17
same as 3.16

case 3.18
can't find the related source code.it's a bug!!!
           
case 3.19
ospf_abr_task
  |--ospf_abr_announce_stub_defaults
       |--ospf_abr_announce_network_to_area         
      
ospf_area_default_cost   

case 3.20
ospf_spf_calculate_timer
  |--ospf_ia_routing
       |--ospf_examine_summaries            
            |--process_summary_lsa
                 |--ospf_ia_network_route
                      |--ospf_route_add

case 3.21
ospf_external_lsa_originate
  |--ospf_external_lsa_new
       |--ospf_lsa_unique_id
                     
case 3.22
can't find flush process, it's a bug!!!
ospf_lsa_install
  |--OSPF_MAX_SEQUENCE_NUMBER
                     

阅读更多
个人分类: Network
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭