Cisco IOS – Understanding IGP Network Statements

One of the things that I find both counterintuitive and often misunderstood is the role of the network command in interior gateway protocols. This command is used in the router configuration mode on Cisco devices. While there are some protocol specifics that should be understood, it behaves similarly between RIP, EIGRP and OSPF. The common misconception is that the network statement determines what will be advertised. While it can affect what is being advertised, that is not the direct purpose of this command.

If you have mistakenly thought the network command determines what is being advertised, you’re certainly not alone. We can even find verbiage in the output of “show ip protocols” that lends credibility to this position. Let’s take a look at the following configuration.

R1toR2NetworkStatement

In the above example, I have enable EIGRP on all of the interfaces.

R1 Configuration

interface Loopback0
 ip address 1.1.1.1 255.255.255.0
interface Loopback1
 ip address 2.2.2.1 255.255.255.0
interface FastEthernet0/0
 ip address 192.168.1.1 255.255.255.0
router eigrp 1
 network 1.1.1.1 0.0.0.0
 network 2.2.2.1 0.0.0.0
 network 192.168.1.1 0.0.0.0
 auto-summary

R2 Configuration

interface FastEthernet0/0
 ip address 192.168.1.2 255.255.255.0
interface FastEthernet0/1
 no ip address
router eigrp 1
 network 192.168.1.2 0.0.0.0
 auto-summary

Notice the output of show ip protocols on R1

R1#show ip protocols
Routing Protocol is "eigrp 1"
  Outgoing update filter list for all interfaces is not set

// --snip-- for brevity

  Automatic network summarization is in effect
  Automatic address summarization:
    192.168.1.0/24 for Loopback0, Loopback1
    2.0.0.0/8 for FastEthernet0/0, Loopback0
      Summarizing with metric 128256
    1.0.0.0/8 for FastEthernet0/0, Loopback1
      Summarizing with metric 128256
  Maximum path: 4
  Routing for Networks:
    1.1.1.1/32
    2.2.2.1/32
    192.168.1.1/32

// --snip-- for brevity

I would like to call attention to the section that says Routing for Networks and indicates three IP addresses with a /32 mask. This information is derived directly from the network statements. Moreover, the router isn’t really routing for these specific routes, it is routing for the interfaces that have IP addresses that MATCH these entries.

To prove this, let’s see what R2 has in it’s routing table.

R2#show ip route

// --snip-- for brevity

Gateway of last resort is not set

D    1.0.0.0/8 [90/409600] via 192.168.1.1, 00:14:47, FastEthernet0/0
D    2.0.0.0/8 [90/409600] via 192.168.1.1, 00:14:13, FastEthernet0/0
C    192.168.1.0/24 is directly connected, FastEthernet0/0

As we can see the routes are actually summaries addresses from the subnets represented by Loopback0 and Loopback1. Let’s go back to R1 and disable auto-summarization so we can get a clearer picture.

R1

R1(config)#router eigrp 1
R1(config-router)#no auto-summary

R2

R2#show ip route

// --snip-- for brevity

Gateway of last resort is not set

     1.0.0.0/24 is subnetted, 1 subnets
D       1.1.1.0 [90/409600] via 192.168.1.1, 00:00:39, FastEthernet0/0
     2.0.0.0/24 is subnetted, 1 subnets
D       2.2.2.0 [90/409600] via 192.168.1.1, 00:00:39, FastEthernet0/0
C    192.168.1.0/24 is directly connected, FastEthernet0/0

Now we can see that there is an exact correlation between the EIGRP learned routes at R2 and the loopback interfaces of R1. The network statements and what is listed in “show ip protocols” are in sync. However, the /24 routes associated with the individual Loopback interfaces are what is being advertised.

So what exactly is the role of the network statement if it isn’t to describe what should be advertised? The short answer to this question is that these statements determine what interface or interfaces should run the given routing protocol. It does this by matching the IP address on the interface. To illustrate this point, let’s take another look at R1.

R1 Configuration

interface Loopback0
 ip address 1.1.1.1 255.255.255.0
interface Loopback1
 ip address 2.2.2.1 255.255.255.0
interface FastEthernet0/0
 ip address 192.168.1.1 255.255.255.0
router eigrp 1
 network 1.1.1.1 0.0.0.0
 network 2.2.2.1 0.0.0.0
 network 192.168.1.1 0.0.0.0

As the EIGRP process assesses which interfaces it should run on, all interfaces have IP addresses that match EIGRP network statements. For example, network 1.1.1.1 0.0.0.0 matches the IP on Loopback0. Since Loopback0 represents network 1.1.1.0/24, the entire /24 is what will be advertised.

The mask of 0.0.0.0 is a configuration that expects an exact match. We don’t always have to configure the network statement to do an exact match. A configuration that would enable EIGRP on any IPv4 interface would look like the following.

router eigrp 1
 network 0.0.0.0 255.255.255.255

Some people prefer to inversely match the wildcard mask with the subnet mask. For example:

router eigrp 1
 network 1.1.1.0 0.0.0.255
 network 2.2.2.0 0.0.0.255
 network 192.168.1.0 0.0.0.255

In either case, the wildcard mask expects an exact match only where the 0′s are found. For example, the first statement above attempts to match 1.1.1.x. The example of 0.0.0.0 255.255.255.255 matches x.x.x.x (or anything). The point here is that we’re performing a match to enable the protocol for a represented network.

Most would find this concept easier to grasp if we simply enabled the protocol on a given interface. That is actually what we do with IPv6 IGP configurations.

The final thing I would mention regarding network statements is that IOS makes some assumptions when we don’t provide a mask. In the case of entering a normal Class A, Class B or Class C address, the router assumes the associated class and doesn’t show any wildcard mask. It even changes the IP address as necessary to provide to the classful network.

For Example

R2(config)#router eigrp 1
R2(config-router)#network 10.1.1.0
R2(config-router)#do show run | sec eigrp
router eigrp 1
network 10.0.0.0

Notice that Class A address 10.1.1.0 was converted to 10.0.0.0, the classful network it belongs to.

Conclusion

Network Statements are a configuration construct found in the Cisco IOS syntax. Although it is often otherwise stated, the network statements only indirectly determine what will be advertised. These statements allow a given routing protocol the information necessary to determine what interfaces will participating. From that point, the routing protocol takes over and advertises the networks as appropriate to the specific Interior Gateway Protocol being used.

Additional Information

About Paul Stewart, CCIE 26009 (Security)

Paul is a Network and Security Engineer, Trainer and Blogger who enjoys understanding how things really work. With over 15 years of experience in the technology industry, Paul has helped many organizations build, maintain and secure their networks and systems.
This entry was posted in CCNA, Certification, Network, Technology and tagged , , , , . Bookmark the permalink.

One Response to Cisco IOS – Understanding IGP Network Statements

  1. Pingback: Who Understands Network Statements? - PacketU

Leave a Reply