Chapter 2. Planning for IPv6

This chapter is all about planning for IPv6. It outlines methodologies and procedures, describes the steps and stages of the planning process, and discusses different areas such as routing, security, and central services like DNS and IP address management.

People often ask for best practices. But for IPv6, there aren’t really any best practices yet because we don’t have years of operational experience from which we can say that something has proven to work well. So we need to draw from our operational experience with IPv4 networks and apply what we have learned about IPv6 so far.

The more time we have for planning and testing, the more likely it is that we can deploy IPv6 in digestible steps and the better we can learn from and adapt with each step. This is the main reason to start as early as possible.

Business Relevance

Part of your IPv6 planning should be to identify any business relevance for IPv6 deployment. Business relevance may include products or services that communicate over a network and are sold commercially or used for business operations. Google, Facebook, and many other companies have chosen to expose their content over both IPv4 and IPv6, ensuring that customers can reach them regardless of the Internet protocol version the customer uses. Products from Sony PlayStation to Panasonic Internet pet cams to Canon network printers to most current cell phones support IPv6.

What Are You Talking About?

I notice that in many discussions of IPv6 integration, there is no differentiation between the areas of deployment. Different parts of your network have different requirements and timelines, so it helps a lot to break the discussion down and look at each of them separately. Very often, people seem to disagree, but when you analyze the discussion you find that both parties are right; they just don’t realize that they’re talking about different things.

We know from Chapter 1 that the reasons for introducing IPv6 in your internal network are different from the reasons for introducing it in your public-facing services. The world does not really care how you access your internal servers, databases, and services. The world cares about how you can be reached, and likewise you should care about how you can reach the world.

You may separate your planning into the following areas:

  • Core/Backbone

  • User/Customer networks

  • Data center

  • DMZ/Internet (customer facing)

The requirements and challenges for IPv6 may be different for each of these areas. So, for instance, you may have enough IPv4 addresses for your internal network and your services, but you want to make sure that your Internet connectivity isn’t limited in any way. In this case, you decide to make your DMZ dual-stacked as soon as possible, while you have enough time left, to integrate IPv6 in your internal network.

But then if you plan a data center move for next year, this will probably be the impetus for deploying IPv6 in that part of your network—not because you face time pressure, but because it will save you a lot of extra cost for a later migration, which would eventually be due anyway. Or you may want to prepare your internal network for the unpredictable case that new applications and services require IPv6 features or the extended address space, or that the demand for secure mobility can be best met with IPv6. Deploying IPv6 in your internal network may be a major task that takes three or more years in larger environments. Because you know that IPv6 is inevitable and to prepare for the aforementioned situations, it’s better to start planning today.

Note

Generally, you can say that all the money you invest in IPv6 is an investment in future technology, while all investments in IPv4 are an investment in an end-of-life technology.

In many cases, integrating IPv6 for public-facing services is the first step, and it is also considered a good approach because it is one of the easier parts of integration. Starting where it is easier allows you to use that part of the project to gather experience and better prepares you to tackle the internal network with its higher complexity.

There are several methods to deploy IPv6, and they are discussed in the following sections. In reality, you might choose an approach that combines elements of each model, but the models give useful guidelines for the order of the steps and activities you’ll complete during your journey.

Core to Edge

Core to edge is the approach you will probably choose if you have the time. It has several advantages. In this approach, you start deploying IPv6 where it is easiest. The equipment you use in the core has the longest history of implementation and deployment, so the IPv6 stacks are more mature and you can usually deploy with the least upgrade effort. The complexity of IPv6 integration increases when you move to the edge. Stacks are less mature, implementations are either not available or are in an early, buggy stage, and application compatibility and interoperability can be an issue. Vendor support may be in its early stages too. So while you work on the core, you’ll build all your experience; and by the time you get to the edge, hopefully the market has matured and you’ve had the time to resolve the edge issues in your labs.

Another important advantage of this approach is that while you work on deployment in the core, your critical user or customer traffic still flows over the IPv4 infrastructure, so you can deploy IPv6 with no risk or pressure. You can also implement management and security, and then test everything carefully before you allow user and customer traffic. This approach helps you train your people, get experience in managing the new infrastructure, and build your support teams, such as help desk and second-level support.

Edge to Core

Edge to core is the approach to choose when you need to roll out IPv6 to customers or clients quickly. This may be the case when you run out of IPv4 addresses and can’t cover the demand for growth anymore, when a new service requires a lot more addresses than you have or when a new application is needed, that requires IPv6.

The project risks rise significantly when you choose this approach, so you may want to avoid this situation by planning while there is time. Besides the fact that urgency is always a critical factor when you’re introducing new technologies, the risks and costs are high because you’re starting where the complexity is highest, you’ll face project delays due to interoperability issues and unexpected bugs, and—most importantly—you’ll have to enable user and customer traffic over your infrastructure before you’ve had the time to carefully build and test it. Your engineers and support organization will have to manage the infrastructure even though they haven’t had time to develop the experience necessary to support it efficiently. Service outages are much more likely to happen with this approach.

IPv6 Islands

IPv6 islands are the approach you can use when you must deploy IPv6 to specific applications, customers, or parts of the network as a first step. Tunnels may be used to carry IPv6 traffic over IPv4 subnets to interconnect the IPv6 islands.

Economic considerations may be one of the main reasons to choose this approach. It also reduces the project scope for deployment and the number of systems that have to be changed. It allows you to deploy IPv6 where it is most needed first. So, for instance, if you choose to upgrade your DMZ first in order to be publicly reachable over IPv6, you’re using an island approach. Or if you choose to deploy a new service as IPv6-only right from the beginning, this would be another island approach. Islands can also be used for trials to have a controlled environment and limit the impact and the risks.

Organizations that use external services, such as web hosting, can work with the service provider to enable IPv6. This method takes advantage of any IPv6 implementation experience the service provider may already have.

You must carefully evaluate whether the island approach makes sense at large scale. You have to weigh the advantages against the complexity of managing a heterogenous network, which always increases operational cost and carries a higher risk of misconfiguration and errors.

Planning and Deployment Methodologies

All roads lead to Rome. You probably have a well-established framework and procedure to run your technology projects. Introducing IPv6 works like almost any other technology project. If you do a perfect job, your users and customers will not even notice that they are using a new transport protocol (most users don’t care anyway—they may not even know what a protocol is).

In a large network, IPv6 can only be integrated with a phased approach and a gradual transition (integration). In this section, I’ll outline common approaches that have been used by different organizations for IPv6 deployment and have proven to work well.

How to Get Started

Every long journey starts with a first step; after that, things become much clearer. But what is the first step to planning for IPv6? The complexity of an IPv6 project comes from the fact that we are adding a transport layer protocol, which means that all networking components are affected. It also means that all networking and application teams and IT groups have to collaborate to make the integration work.

To get started, you need an idea of where you want to go. This is the objective of a high-level design. Before you can actually define your goal, you need to take the preparatory steps outlined in the following sections.

Use existing change processes

Most organizations have an existing process in place to introduce application and infrastructure changes. This process often includes a progression from a development environment through some type of quality assurance (QA) stage and finally into production. IPv6 deployments should leverage existing change controls. The current processes may have to be adjusted to account for IPv6 features. With regard to IPv6 it is important to ensure the coordination across all teams. Further, existing development and QA environments should be configured to support end-to-end IPv6 communications to ensure that, going forward, all products and services deployed in production have been verified to operate in a dual-stack environment.

Network health and reality check

The introduction of IPv6 can be successful only if it is integrated in a healthy and well-performing network. So, before you even start the planning phase, you may want to use the opportunity to do some house cleaning. This involves checking the health of all components, routing efficiency and stability, configurations, addressing plan structure, and many more. It is vital to have a good understanding of traffic flows, rerouting in case of failures, and application performance, and to verify the functionality of core services such as DNS, DHCP, firewalls, and intrusion detection systems.

At the same time, you can perform a reality check. We often find that the real situation in the network differs from the concepts behind it, even in the most professional environments. A reality check verifies that the real-world network behavior conforms to your design and documented implementation. This check is essential because it lays the foundation for the planning phase.

In reality, the optimization of the current environment can also be an outcome of the IPv6 project. But before you base your new address design or security concept on the current concept, you want to ensure the current concept conforms to reality.

Create an IPv6 Governance and Project Team

For a successful project, you must develop a well-structured IPv6 integration project team. Because IPv6 integration touches every component and department in your IT environment, everybody has to be involved, including key business stakeholders. Managing this task in a large organization can be a challenge. A good approach to coordinate all activities efficiently is to have one or two people lead the project as IPv6 program managers. The program managers organize all activities with the project leaders of each individual group (such as security, routing, applications, etc).

Education and Consulting

For the design of a high-level implementation plan every department that deals with the network and its services must be included. Before the team can start discussing a high-level implementation plan, however, all the team members must be thoroughly trained and understand both the obvious and the more subtle differences between IPv6 and IPv4. In the initial phase, this training includes executives, architects, planners, the security and routing team, server and client teams, and application groups—all the groups that should also be included in the planning and design. The team needs a good and thorough understanding of the entire IPv6 protocol and all its new features and possibilities. In this first phase, it is also very important to launch awareness campaigns at the top executive level and include all stakeholders.

Simply applying your IPv4 concepts to the IPv6 network will carry over IPv4’s limitations to your IPv6 network. By building an IPv6 network, you have the opportunity to build a next-generation network that is capable of supporting the applications and services of the future. Without a thorough understanding of the new features, you waste this opportunity.

In a later stage of the project, all groups will need more in-depth training and the possibility to build and run labs to get a feeling for the protocol and create more refined concepts for each area of the network. In this stage, you also need to include other groups such as support staff, help desk, customer contact groups, and sales and marketing people. The list of groups to be trained at this stage may vary depending on the business and the type of organization.

If your organization develops applications for internal use or for the market, make sure you train the developers in IPv6 with a specific focus on developing IP-version-agnostic applications that behave well in both IPv4 and IPv6 networks, but also in dual-stacked networks.

A note on consulting: there are various degrees of engagement with consultants. You can try to do the entire integration with your own resources, or you can choose to fully outsource the project. I do not recommend trying to do it all with internal resources. While you create new concepts for all the parts of your network, it is a good idea to get external perspectives to broaden the scope as much as possible. This is your opportunity to redesign your network, so at least get second opinions before you deploy. At the same time, it is important to involve all your teams in the design phase, because they are familiar with the internal procedures and policies and they are the ones who will have to operate the network. So a combined approach is usually the most efficient for everyone. With this approach, your staff can learn and profit from external perspectives and experience, and will not have to reinvent the wheel. Bringing in experienced consultants to work with your teams can be considered (and budgeted as) on-the-job education.

High-Level Concept

The biggest and most costly mistake is to assume that IPv6 is not that different from IPv4 after all, and that with all your IPv4 experience, it will be pretty easy to create concepts for IPv6. While that approach may work at first glance, it means you squander all the options and possibilities the new protocol offers. For instance, if you create an address plan with the limited cell-engrained mindset you’ve developed from 15 years of operating IPv4 networks—where the highest priority has always been to preserve address space—it’s a safe bet that the address concept will be like a straitjacket for the future and that in five years you’ll be saying, “if only I could start all over again...” Creating concepts like this is way more expensive than giving IPv6 enough attention right from the beginning.

One important ingredient of the high-level design is going through all the designs that exist in your environment right now, reevaluating them, and asking yourself what components have stood the test of time and what you would do differently if you could start over. Take what you’ve learned from operating an IPv4 network and integrate it into your IPv6 concept (obviously, don’t copy whatever you did to conserve address space), combining it with the new features and possibilities IPv6 offers.

The high-level concept answers the questions: what is our long-term goal—where do we want to be in 5–10 years? What will our network look like, what will our services probably be like, should we plan for going IPv6-only as soon as possible (and if yes, in what areas of the network?), or should we plan for a long-term dual-stack strategy? Do we have enough IPv4 addresses to go dual-stack long term? What will our security and routing designs look like? How do we manage the coexistence of IPv4 with IPv6 and a dual-stacked network?

In many cases, the network will predominantly be IPv4 for a long time, with growing elements of IPv6. At some point in the future, it may be a mainly dual-stacked network with decreasing IPv4 support while slowly moving toward a predominantly IPv6 network. Over these different periods, you may use different mechanisms to support it. Even for many years to come, we may have to support some single IPv4-only applications. In the early days of deployment, we support them by running dual-stack if possible, but in the future we may choose to turn off IPv4 in the network and find other mechanisms to support these IPv4 applications.

As part of the high-level design, you will create an IPv6 address plan, a routing and a security design. At this point, you need to involve upper management, if you haven’t already done so, although it’s usually not yet possible to know how much IPv6 deployment will cost. You can answer the cost question only after you’ve assessed the network based on the IPv6 requirements outlined in the upcoming section, “Network Assessment.”

Mind the Apps

Most applications simply rely on the host operating system for network operations and services for handling IPv4 or IPv6 traffic. However, some applications may exhibit different or undesirable behavior when end-to-end IPv6 is enabled. Key things to look for are applications that log the IP addresses of network traffic or include control/configuration files containing IP addresses instead of a URL and DNS for name-address resolution. Particularly, any applications that make direct calls to the IP layer will probably have to be adjusted to work well in a dual-stack world.

Ways to Get There

Once you know where you want to go, the next step is to determine how you want to get there, where you want to start, and what the important intermediary steps are on the way to your final goal which, in the long term, should be an IPv6-only network. In other words, you define your roadmap for step-by-step deployment.

When answering these questions, it’s important that you:

  • Align your roadmap with your overall IT strategy and other IT projects that have been defined for the coming three to five years. As pointed out in the section How to Save Money when Integrating IPv6, in Chapter 1, aligning the deployment of IPv6 with other ongoing projects can save a lot of money.

  • Align the deployment timeline with life cycles of products in your network, such as core routers, firewalls and applications.

There is no one-size-fits-all strategy, too diverse are the individual environments and requirements. I know from experience that once you lay out everything you know about your current environment, your final goal, and your requirements for IPv6, other IT projects, and product life cycles, suddenly a sensible path emerges that makes best use of your resources and options while minimizing costs and risks.

Once you have an overall plan of your journey and the milestones to hit along the way, you will define subprojects. An incremental approach is essential to reducing risks. For each milestone, you will create detailed implementation plans with more specific requirements. You should then verify each milestone for conformance and test it thoroughly before moving on to the next project step.

Define IPv6 Requirements

Based on your high-level implementation plan, you can start to define IPv6 requirements for all the devices, operating systems, and applications in your network. The requirements have to be very specific (you won’t get around quoting RFC numbers) and will vary depending on the device. It is not specific enough to require an IPv6 function—in some cases, you will also have to specify suboptions or message types.

For example, DHCPv6 supports many options (you can find all the options in the DHC working group at http://datatracker.ietf.org/wg/dhc), but you may not need all of them for your purposes. Or if you require your new firewall to be able to filter on extension headers, you may want to list specific headers, such as the routing header type 2 defined for Mobile IPv6. You also want to make sure your firewall doesn’t pass packets with illegal extension headers, deals accurately with the deprecated routing header type 0, and inspects the content of tunneled packets.

The requirements specification serves four purposes:

  • It is a reference for the IPv6 functions required on each interface in the network.

  • It is a guideline for the system assessment.

  • It is a guideline for software and hardware vendors to assess the functionality of current versions and verify roadmaps for future purchases. It is the base for vendor RFIs.

  • It is a foundation for conformance and acceptance testing.

Network Assessment

Now that you have your IPv6 requirements specification, you can start assessing all your network devices and services. This assessment is used to categorize all the devices, operating systems, and products for their level of IPv6 capability.

The assessment must cover the following:

  • Hardware

  • Operating systems, versions, and patch levels

  • Applications, versions, and patch levels

All items can then be categorized as follows:

  • Systems that comply with IPv6 requirements

  • Systems that must be upgraded to comply with IPv6 requirements (the upgrade can be software or hardware or both)

  • Systems that must be replaced to comply with IPv6 requirements

Note

If you have a CMDB (configuration management database) or are in the process of building one, this is a good opportunity to populate it or to start building it, if you haven’t already.

This assessment clarifies the scope of your IPv6 deployment project. You may find that you need to adjust the roadmap that you created in your high-level design. And now you can estimate costs for each step in your roadmap, because the assessment has helped you identify what investments and how much effort will be necessary for the deployment. Some of your findings may also have an impact on integration mechanisms you’ve chosen; for instance, you may find that a service that you assumed could be upgraded to work in a dual-stacked environment has to be replaced but has no alternative available.

In general, IPv6 compatibility in your applications probably has a bigger impact on your integration plan than equipment support. And the more custom-developed or highly customized in-house applications you use, the higher the chance they won’t work with IPv6 and may not even be upgradable. So make sure you allow for enough time in the planning and testing stages to find solutions to these challenges.

Evaluate Vendors, Products, and Service Providers

This is a perfect time to reassess your vendor portfolio. Whether a device, service, or application has the required IPv6 support may not be the only criterion. You may want to find out what your vendor’s roadmap looks like to determine whether he will be up to date in following development and offering state-of-the-art products. Obviously, the importance of this step varies for different devices and products. Specifically, for core network devices and services that usually have a long life cycle—such as core routers, firewalls, management and monitoring tools, and DDI (DNS, DHCP & IPAM) solutions—it is crucial to have a vendor who guarantees high performance products, professional support and a good future development roadmap.

When it comes to your ISP, it is not sufficient to ask for basic IPv6 connectivity. You want to know what kind of connectivity you will get; whether it will be tunneled or native has an impact on performance and scalability. You also want to know what the ISP’s peering connections to the IPv6 Internet are.

Build Labs and Pilots

Labs are probably your most important playground on your way to becoming an IPv6 expert and reducing deployment risks. The lab serves many different purposes. First and foremost, it’s a place for experimenting, learning, and gathering experience, and then you take that knowledge back to the planning process to be integrated in deployment concepts. You may have several options in your high-level strategy—such as the choice of a routing protocol, different solutions or designs, or various vendors and products—where you need to evaluate which selection best suits your requirements or performs better in a given environment, and to test compatibility of different products. You should always evaluate and test your design choices and deployment steps in a lab before finalizing the deployment plan to reduce risks and project delays.

The ideal scenario is having a completely separate lab that mirrors your production environment as closely as possible. You use the lab to test your deployment strategy, fix bugs, and learn how to troubleshoot IPv6. It is also the perfect playground to train your support staff for operating an IPv6 network. You can use it to document your deployment plan, implementation, and configuration, and to create functional specifications. Finally, you can perform quality assurance and conformance tests in the lab.

During the different stages of deployment, the lab will probably change. So, if you choose a core to edge approach, you will first want to test all backbone functionality including addressing, routing, and security and how the components interact. Next, you’ll test network services such as address management, DNS design, and behavior in combination with services and applications and so on. You probably also want to do performance and load tests for your chosen scenarios to find out ahead of time if your network can deal with the additional traffic and the mechanisms that you have chosen, and to determine whether core systems (routers, switches, firewalls, and other security devices) perform under load. Every step you test may deliver findings that make you refine your deployment plan.

Note

IPv6 will not double your traffic. You have to consider that you are gradually moving traffic from IPv4 transport to IPv6 transport. So, generally, more IPv6 traffic means less IPv4 traffic. But there are still things to consider and test—for instance, if you run dual-stack, in the future your switches will not only deal with IPv4 broadcast traffic, but also with IPv6 multicast traffic.

Once you have evaluated your vendor candidates, you’ll need to use the lab to test their products for conformance to the project’s standards and requirements and to find possible bugs. You have to be prepared for the fact that many IPv6 implementations are early versions, and therefore may be immature and have more bugs in the beginning than you are used to from their current IPv4 counterparts. Allow enough time in the lab to test this, because it may save you a lot of headaches during later stages of the project. Finding unexpected bugs usually delays projects, as it requires you to solve the issues with the vendor and wait for patches before you can move on. In general, whatever you test in your lab—be it verification of concepts, stacks, devices, or applications—the earlier you find any issues, incompatibilities, and bugs, the easier and less expensive it is to find new solutions or fix code.

Refine Your High-Level Strategy and Define Low-Level Deployment Plans

Once you have verified your high-level strategy, know the state of your IPv6 readiness, and have tested all your options and vendor products, you can refine your high-level concept and develop detailed, low-level deployment plans for each specific network and service area. You should place these plans on a meaningful timeline and account for all interdependencies.

At this point, you will also perform a risk assessment and develop a risk-mitigation strategy. The results of this assessment may affect your integration and security strategy, and they also provide the foundation for a fallback plan.

Each low-level implementation plan will have detailed descriptions of implementation procedures (including setups and configurations for all components or applications), schedules and timelines, backout plans, acceptance criteria, and tests to be performed. Before you implement IPv6 in production, you will probably want to thoroughly test the implementation plan in your lab.

In the long term, for the operational phase of a dual-stack network, you will need to ensure that all management and change processes are fully synchronized so you can keep the same level of functionality and security for both protocols. Changing configurations should be a single coordinated process for both protocols.

The Golden Rule Set

Here’s a summary of the golden rules of IPv6 integration:

  • If you haven’t deployed IPv6 yet, make sure to block all IPv6 traffic coming from and going to the Internet (native and tunneled).

  • Add IPv6 requirements to all purchasing policies and outsourcing contracts.

  • Before investing in extending or fixing your IPv4 infrastructure, evaluate IPv6.

  • Go native IPv6 wherever you can and go IPv6-only wherever you can.

  • Minimize the use of transition mechanisms.

  • Avoid translation mechanisms wherever possible.

  • Turn off transition mechanisms as soon as they are no longer needed.

  • Don’t wait for a flag day or killer application.

  • Use the natural life cycles of your devices, operating systems, and applications.

  • Align the integration of IPv6 with other IT projects.

  • Use the opportunities IPv6 offers and take the chance to redesign your network for the future.

  • Go for step-by-step integration and learn as you go—this is the most cost-effective and least risky strategy.

  • Be careful when dealing with Asia! The Internet growth rate in Asia is much higher than in other parts of the world, so many Asian countries are much more advanced with IPv6. If you have business partners or make acquisitions in Asia, you may be faced with integrating and communicating with IPv6 networks sooner rather than later. If Asia is your market for selling IP-based services or products, IPv6 support is most probably a minimum requirement.

  • Watch your public services, and deploy IPv6 to be reachable and connected from and to the whole Internet.

Note

To broaden your perspective on planning considerations for IPv6, refer to the book Global IPv6 Strategies: From Business Analysis to Operational Planning by Patrick Grossetete, Ciprian P. Popoviciu, and Fred Wettling (Cisco Press). It is the definitive guide to IPv6 decision making for nontechnical business leaders and contains many detailed case studies of organizations in different sectors.

Choices and Designs

While creating all these new designs, you have many choices to make. Take the time to analyze and understand the new features of IPv6, because only then can you unlock its potential. If you simply try to mirror your IPv4 designs to the IPv6 world, you miss the opportunity to create networks that will not only be ready to support similar network services, but which will also scale to support future applications and services. Remember that IPv6 represents a unique opportunity to create an environment that sustains innovation and facilitates competitive differentiation.

Routing and Routing Protocols

With IPv6’s extended address space, having a good address design is more important than with IPv4. The address length offers new options for a hierarchical addressing structure, which in the future might be more based on geographical aspects at the upper levels to support efficient aggregation.

In general, routing and forwarding principles are no different in an IPv6 network. We have some features to optimize forwarding efficiency, such as a fixed-length IPv6 header, extension headers (which are inserted only if options are needed), and the fact that IPv6 routers do not fragment anymore. We can use the flow label to optimize data flows.

Note

It’s important to understand that in the early days of the IPv6 Internet, forwarding will probably not be much faster, because most of the traffic is still being tunneled over IPv4 paths and there aren’t too many IPv6 backbones available yet. Once more than 50% of the Internet backbones are native IPv6, we will start to experience the IPv6 forwarding speeds.

The original plan for IPv6 was to not allocate provider-independent (PI) addresses at all. An early design goal for IPv6 was to not only solve the address situation, but also the problem with overflowing Internet routing tables. Just like with IPv4, the IANA distributes the IPv6 address space to the RIRs (regional Internet registries), but mainly based on geography in order to keep the root routing tables as small as possible. It turned out that the zero PI space wasn’t a sustainable policy in the real world. So we are back to having PI space, which partially breaks the hierarchical model based on geography and thereby creates more entries in global routing tables. An example: PI space means that a company headquartered in Switzerland with a global network may get PI address space from RIPE, the RIR for Europe. For the US locations of that company, the US-based ISPs will have to announce the route to this RIPE prefix.

Also, in the future IPv6 routing tables will not contain 32-bit address entries, but rather 128-bit address entries. And during the transition time in dual-stack networks, routers will maintain two routing tables, one for IPv4 and one for IPv6. The vendors will have to make sure that forwarding is efficient, done in hardware, and that the routers use resources efficiently so the routing tables take up the minimum possible memory.

There are two different types of routing protocols. An IGP (interior gateway protocol) is used within an AS (autonomous system), which represents an administrative domain. Different autonomous systems are connected through EGPs (exterior gateway protocols).

IGPs

There are two types of IGPs. Some IGPs use a distance-vector algorithm to make routing decisions. In this case, a router knows only about his neighbors and has no picture of the whole network. Link-state protocols, on the other hand, have maps of the whole network and make all routing information available to every router in the AS.

For IPv6 networks, the following IGPs are available:

RIPng (RFC 2080)

RIP is a distance-vector protocol that uses the Bellman-Ford algorithm.[2] It is easy to use but is far less efficient than OSPF and IS-IS, described next. It has all the limitations that RIPv4 always had: its diameter is limited, routing loops can create long convergence times, and the metrics don’t represent line speeds because they are based on hop counts. It is not a recommended routing protocol for enterprise networks.

OSPFv3 (RFC 5340)

OSPFv3 is a link-state-based protocol that uses Dijkstra’s algorithm[3] to calculate a tree of shortest paths (SPF). OSPFv3 uses link-local addresses to exchange routing information (which is very helpful in the case of renumbering) and eliminates OSPFv2 authentication, because it now uses standard IPv6 authentication. As defined in RFC 5340, OSPFv3 runs as a separate process. You still need OSPFv2 to manage your IPv4 network, and each version maintains separate routing tables. RFC 5838 defines extensions that support multiple address families in OSPFv3. This protocol extension is in the early stages, so vendor support is currently limited, if available at all. Ask for the vendor’s roadmap.

IS-IS (RFC 5308)

IS (Intermediate System) is the OSI (Open Systems Interconnection) term for router. IS-IS is a link-state protocol and also uses Dijkstra’s algorithm. It is an ISO (International Organization for Standardization) protocol and does not rely on IP to exchange routing information. It is similar to OSPF, but is considered to be easier to configure and manage by many administrators. IPv6 is fully integrated, and does not run as a separate process as in the current OSPFv3 versions. For many years, it was mainly used in provider networks and wasn’t very common in the United States. In recent years, however, it has become more common and is being used more and more in the enterprise space.

EIGRP for IPv6

EIGRP was developed by Cisco Systems. It is a hybrid protocol, taking the best of both the distance-vector and link-state-based worlds, and is based on DUAL (diffusing update algorithm).[4] It runs as a separate process, so to manage IPv4 and IPv6, two instances must be used. For larger environments, I usually recommend using OSPF or IS-IS instead. In a hub-spoke topology though, EIGRP performs really well. Besides generally being less scalable than OSPFv3 and IS-IS, EIGRPv6 is supported only on Cisco gear, which creates a vendor lock-in and can also cause delays when you need updates, which are often faster in a competitive multivendor-supported standard.

For your dual-stack network of the future, your choices are probably OSPFv2 and OSPFv3 (or in the future possibly OSPF with multi-address family support) versus IS-IS. RIPng doesn’t scale in enterprise networks, and EIGRP is a proprietary solution that comes with a vendor lock-in and doesn’t scale as well as OSPFv3 and IS-IS.

There are probably not any real technically based pros or cons for OSPF versus IS-IS. Some companies run both OSPF versions and have no issues with that method, while others prefer to migrate their OSPFv2 to IS-IS in order to have one single instance in the future. IS-IS will likely become even more common in the future. Your decision between the two protocols will be influenced more by other factors, such as building know-how if you’ve been using OSPF and want to start integrating IS-IS. If you choose OSPFv3, you’ll still have to learn some things, but the difference from OSPFv2 is not as significant. Your choice also depends on corporate culture and market factors such as available skills and resources on the market.

Note

While the difference in managing OSPFv2 versus managing OSPFv3 is not so significant for the administrator, be aware that there are more subtle differences in the structure of OSPFv3 that are significant from a design perspective.

EGPs

The Border Gateway Protocol (BGP) is the core routing protocol in the Internet and is used to exchange routing information between autonomous systems. There is no actual BGP for IPv6, but there are IPv6 extensions to BGP-4, based on the defined BGP-4 multiprotocol extensions. It can also be used in very large enterprise networks where OSPF doesn’t scale well anymore.

Address Plan

The address plan is a challenge for most. We have all been well trained to conserve addresses, and the training has been so efficient that this rule is stored in our brain and body cells. We have to overcome this reflex action before we can create a useful IPv6 address concept for 128-bit addresses. So what are the rules, how can address concepts be designed for IPv6?

Before we start, though, let’s go over something that may help you to slowly overcome your address-conservation reflex and free your mind from its limited thinking. Use this as your daily mantra while you work on an address concept.

Consider the numbers of IPv6 address allocation. By January 2011, approximately 145,000 /32s have been allocated[5]. In 2010, 5,800 /32s were given out, and in 2009 the number was 1,000 /32s. Now note that one single /32 provides more subnets than the entire IPv4 address space provides addresses. This is because the IPv4 address has 32 bits for the whole address, including host IDs, while a /32 provides 32 prefix bits and each subnet has 64 interface ID bits.

So this means that by 2011, we have allocated 145,000 more IPv6 address space than we ever had with IPv4. Is that a lot? When we calculate how much of the currently defined address space that is, we see it represents a mere 0.027%! And the currently used global space is only a fraction of what we really have—only 2000::/3. With 145,000 /32s, 9.5 billion customers can receive a /48. And each customer can create 65,536 subnets, with each subnet having 64 interface ID bits. Go figure—it will suffice for some years. OK, now shake your cells and read on.

An efficient address plan should group address ranges logically in order to:

  • Simplify the configuration and processing of access lists and firewall rules.

  • Make addresses easier to recognize by integrating location and/or service and other identifiers in the address.

  • Create enough space for extensions (more services) and growth (more locations and users).

  • Allow for efficient network management.

Note

This section assumes you are familiar with the technical aspects of the IPv6 address architecture, so I do not cover them here. If you need information, you can find plenty of documents on the Web, or check out Chapter 3 in my companion book, IPv6 Essentials, Second Edition (O’Reilly).

What is new?

There are three main differences to consider between IPv4 and IPv6 when you’re forming an address plan:

  • One of the most obvious differences (besides the length of the address) is that we don’t need VLSMs (variable length subnet masks) anymore. The prefix or network part of an IPv6 address is always 64 bits (/64). Even for point-to-point links? Yes, even for point-to-point links (some people choose to change that rule—you will have to decide for yourself). So, in this respect, IPv6 addresses are simpler. No more guessing or misconfiguring of subnet masks. VLSMs have contributed a lot to the complexity of managing IPv4 address space.

  • The preceding rule also relates to the following: we no longer have to size subnets to the number of devices in the subnet (in other words, no more address conservation practices necessary). Each and every subnet can potentially have 264 devices. The number of devices for each subnet will be determined by your switch’s capacity, so consult your vendor to find out what is possible.

  • In IPv6, addresses are assigned to interfaces. So an IPv6 address identifies an interface, not a host. And, in many cases, an interface will be multiaddressed and choose addresses to initiate connections based on policies or default address selection rules.

Note

And please resist the temptation to use larger masks for your subnets such as /96 in order to preserve address space. This will create many problems in the future, as all development is based on the /64 mask. So for instance SLAAC (stateless address autoconfiguration) won’t work with non-/64 mask. CGAs (cryptographically generated addresses) are another example of an address that needs the /64 mask because it uses interface ID bits to distribute security keys. And there may be many other processes or services in the future that fail with a non-standard subnet mask. You have enough address space with IPv6! Optimize it for efficient management.

Once you are familiar with the IPv6 address architecture, take the list of things that you would change in your IPv4 address concept if you could start all over, and begin designing your IPv6 address concept. The rules for building a useful address concept have not substantially changed. They are:

  • Prefix aggregation

  • Subnet consistency

  • Use of address types (unique local addresses, ULAs); this one is new to IPv6

  • Use of address provisioning and management mechanisms and tools (DHCPv6, SLAAC, IPAM/DDI)

  • Security

  • Operational aspects such as optimization of filtering rules (performance!)

  • Network growth

  • Network growth

  • Network growth (this is not a typo)

You need to integrate the incredibly large IPv6 address space in all aspects. I can’t repeat this enough. So, for instance, when it comes to subnet consistency, there is no need to conserve address space anymore.

Note

For operational ease and to simplify administration, keep all subnets for a certain type of location the same size, regardless of how many users work there. Although this is the best way to go, it may feel uncomfortable in the beginning. The same rule is true if you leave address space free for growth. A good rule to follow is if your cells don’t hurt, your plan isn’t quite big enough yet.

Global addresses versus ULAs

As already mentioned, an IPv6 interface can typically have multiple addresses. Part of your address design is deciding what address types to use. Specifically, you have two options: to generally use global IPv6 addresses, or to use ULAs (unique local addresses) internally. ULAs are defined in RFC 4193, have a prefix of FD00::/8, and are the equivalent of RFC 1918 private addresses in IPv4, which means they are routable but should only be used internally and never routed to the Internet. They can, for instance, be used for an internal deployment or to build a lab when you do not have global IPv6 address space allocated yet.

There is one big difference between the RFC 1918 concept and how these private addresses are used today. Using ULAs does not mean that you need NAT (network address translation) to get outside to the Internet. Because IPv6 interfaces are designed to work with multiple address types, interfaces that need Internet connectivity will simply have a global IPv6 address in addition to the ULA address. When connecting to an internal server, the interface will use its ULA address; and when connecting to the Internet, it will use its global IPv6 address. Don’t build NATs for this purpose! RFC 3484 defines default address selection rules to deal with this. So, with this design, internal server systems and databases that should not be reached from outside,will be configured only with ULAs.

Note

Although with regard to NATs in such a scenario, I have to mention that RFC 6296 defines a stateless network prefix translation (NPTv6) function, designed to provide address independence to the edge network. In the introduction of the RFC, it says that the IETF (Internet Engineering Task Force) does NOT recommend the use of Network Address Translation technology. The technology has mainly be defined to avoid the uncontrolled and private development of incompatible solutions by different vendors. NPTv6 has fewer architectural problems than traditional stateful NAT, as it does a one-to-one address mapping and therefore does not require using ports for a one-to-many address mapping.

When it comes to choosing whether you want to use ULAs or go with global addresses, there are pros and cons to both approaches and many discussions surrounding them. Due to early deployment time, there is not too much operational experience available to draw from. From a technical point of view, you could make either choice—you will have to decide for yourself.

Here are the arguments for ULAs:

  • ULAs make you internally independent of your global prefix, which is advantageous if you need to renumber your network. In this case, all your internal systems and communications are not affected. If you have a PI address space, this is not a concern.

  • ULAs add a layer of security to your internal infrastructure, as servers and databases with critical data are not reachable from outside. Obviously, you still need firewalls to protect systems, but ULAs offer additional protection.

  • Attackers who know some of your global addresses cannot derive the addresses for internal systems.

  • ULAs should not be used with NAT, so this is not a concern. Systems that need access to the Internet will get a global IPv6 address in addition to the ULA address.

Now, whether you want to use ULAs is up to you. Many people decide that with the unlimited IPv6 address space, where they can finally address all systems with global addresses, they want to go for this simple option—securing their internal systems with firewalls and having the advantage of administering only one prefix. For those that decide to use both global and ULA, I would hope that IPAM vendors are clever enough to develop systems that can manage multiple prefixes and import the subnet design to the IPAM solution for easy administration. Probably you can choose the same subnetting and interface addressing plan for both prefixes anyway.

Network-level design approaches

The large address space creates opportunities for you to define logical and practical address plans in new and creative ways. As an introductory note, please be aware that it is dangerous to copy too many design aspects from your IPv4 address plan, because chances are good that they are limited designs that make no sense in an IPv6 address plan. That being said, here are some ideas that you can use to get started:

  • Redesign and allocate subnets consistently and generously (no conservation thoughts anymore—it must hurt to break this habit!).

  • Translate IPv4 subnet IDs into IPv6 subnet IDs.

  • Translate IPv4 VLAN IDs into IPv6 subnet IDs.

  • Aggregate along geographical boundaries.

  • Aggregate along organizational boundaries.

  • Assign subnet ranges for data, real-time traffic, security isolation (DMZ), and network functions.

  • Assign to identify service types, using specific bits to represent specific service types.

While you ponder your options, don’t forget to consider ACLs and how you can design your address plan to optimize their configuration and processing.

Whenever you translate something from your IPv4 address plan to your IPv6 address plan, make sure that you are not also copying limitations over to the new concept. You are creating an address concept with a future native IPv6 network in mind, and the dual-stack network is only a transitional state, although it may exist for some years. But once you start running a native IPv6-only network, you’ll want the almost unlimited freedom of the address space without having to renumber the network.

For a long time, the recommendation was that ISPs got a /32 from their RIR and organizations, and end sites got a /48 from their provider or a /48 as PI space. RFC 6177 changes the recommended assignment size to end sites. It states that “a one-size-fits-all recommendation of /48 is not nuanced enough for the broad range of end sites and is no longer recommended as a single default.” The RFC states that it is in the domain of the operational community to determine the best prefix size for end sites. This introduces some new considerations. When the default prefix was a /48, a change of provider or assignments from different providers always had the same prefix boundary. With the new policy, it is possible that an end site may have to renumber from a larger prefix into a smaller prefix, which means having to collapse subnets. You can prepare for this if you have a /48 and use only the low-order bits first (if the network size allows you to do that). It seems that many providers often assign /56 or /52 prefixes to smaller sites. This rule does not apply to large enterprises; they will always get a /48 or even more. According to RFC 6177, even home users should get more than just a /64 subnet. The development of services in the market suggests that future home networks have multiple subnets (smart buildings).

With regard to subnet size, there is nothing in the specification that prevents you from changing the /64 boundary. But I don’t recommend that, because doing so will break many other features of IPv6 where applications and processes assume the /64 subnet size. This includes mechanisms such as SLAAC (stateless address autoconfiguration), SEND (secure neighbor discovery), privacy extensions, parts of Mobile IPv6 specifications, PIM-SM (protocol-independent multicast – sparse mode) with embedded-RP, and SHIM6 (site multihoming by IPv6 intermediation), among others. And there may be more developments in the future that assume a /64 boundary. If you change that, all these features will break.

Note

The only benefit of creating prefixes longer than /64 would be address conservation. Use your mantra and remember that we don’t need to conserve space anymore. The benefit of conserving space would be very small compared to the pain of managing a nonstandard subnet prefix.

Nevertheless, you can still choose to use high-order bits from the interface ID part to denote specific systems, services, or networks to make it easier to recognize these IDs. A good and helpful practice when grouping bits is to always do it on a 4-bit boundary. This way, it is much easier to decipher the address because 4 bits represent one hexadecimal digit.

Let’s play with some examples to get our brains going. You could group subnets by location and then by service or use type, or the other way round (by service type first and then by location).

So, for instance, with the prefix 2001:db8:1::/48, you have 16 bits for subnetting. You can choose to subnet as follows (L=location, S=service, F=free):

Location first:       2001:db8:1:LLLLSSSS FFFFFFFF::/64
Service type first:   2001:db8:1:SSSSLLLL FFFFFFFF::/64

Which option you choose depends on whether your main purpose is to optimize routing—in which case, you choose the location identifier first—or whether you want to optimize security rules and ACLs (which are usually based on filters for specific services), in which case you would choose the service identifier first. In some cases, organizations only assign a subnet to a location, and the location further manages the prefix and creates its own address plan. In such a case, you would also choose the location identifier first.

Or you may want to mix these two options. You may have some specific services that you want to filter on at a high level, so you would put identifiers for these services in the highest-order bits of your subnet range, perhaps followed by location bits to optimize the routing within your network, and ending with bits to identify more services.

With the 4 bits used for location and service type in this example, you can create 16 locations and services (24). You have to adapt this scheme to the number of locations and services you want represented (and add enough room for growth). Sometimes organizations include a location or service description in their VLAN numbering plans. This could also be reflected in your IPv6 addressing plan to include the 12-bit VLAN ID in the prefix. You can include it in decimal notation (leaving out A–F) or convert it to hexadecimal notation.

These are all general ideas for and input on your creative planning. Take the time to carefully craft your future addressing design, discuss all possible options again and again, have your address concept proposal reviewed by many people—including external consultants—and go over it repeatedly until it feels right. The address design is the foundation for your next-generation network. If you don’t get it right and have to change it during the deployment project, this will add costs and delay the project. In the long term, if you live with a suboptimal address design, returning operational costs may be unnecessarily high.

Configuration of interface IDs

How interface IDs are defined depends on the IP address management process that you choose. You can either choose SLAAC (stateless address autoconfiguration), where interfaces create interface IDs based on MAC address (EUI-64 format defined in RFC 4291), or with the privacy option (as defined in RFC 4941), where the interface ID is randomly generated and changed regularly. You can use DHCPv6 and assign addresses just as you do in IPv4. With DHCPv6, the service may have options to define interface IDs in different ways, so to best secure your hosts, you may not want to start at a low interface ID and sequentially number your interfaces. Instead, you may want to have random interface IDs, because the more random and distributed your interface IDs are, the harder it is to scan them.

If you have a global IPv6 prefix and use a ULA prefix internally, you may want to use the privacy option for the global prefix. This way, users accessing the Internet cannot easily be tracked because their interface ID changes regularly. For the ULA prefix, it’s preferable to have fixed addresses assigned to make management, troubleshooting, security, and logging easier. Again, this also depends on whether vendors will provide IP address management solutions that help to deal with this.

Warning

One note of caution for users of Microsoft Windows Vista, Windows 7, and Windows Server 2008: when you’re using SLAAC, Microsoft has elected to generate random interface IDs by default for nontemporary, autoconfigured IPv6 addresses (including public and link-local addresses), rather than EUI-64-based interface IDs. These are privacy extensions related to RFC 4941. While this behavior is usually fine for clients, it may adversely impact services where SLAAC and randomized interface identifiers are used on servers. Just imagine the impact if the IPv6 address is constantly changing on a web, file, or print server! You can remedy this by using static IPv6 address assignment, DHCPv6, or a documented netsh command.

Security Design

Having a strong security design is very important for managing a dual-stacked network. As soon as you introduce IPv6 into your network, you have an additional entry point.

Warning

You even have an additional entry point right now, because although you may not have deployed IPv6 yet, you probably have many operating systems in your network that have IPv6 enabled by default (Windows Vista and Windows 7, Windows Server 2008, Linux clients, Macintosh clients, and likely many more). While the operating systems can’t get too far as long as you don’t have IPv6 routing enabled, they can be very chatty with ND and service location requests, and hackers can use them as a backdoor to your IPv4 network.

So, as a first step of protection before you deploy IPv6, make sure you filter all IPv6 traffic coming into and leaving your network. This includes native IPv6 traffic and tunneled traffic. In addition, it might be wise to monitor and audit IPv6 traffic—specifically ND messages such as router or neighbor advertisements that could be used to configure your clients with incorrect gateway or DNS server information.

Your future security design will have to secure both protocols: you still have your IPv4 security design, and you will have to define an IPv6 security design. If your IPv4 security concept is well designed, it is advisable to align your IPv6 security concept with it. You will have to add protection from attacks that use IPv6-specific mechanisms, such as extension headers, multicast addresses or neighbor discovery messages, SLAAC, and specifically tunnels.

Is IPv6 more secure than IPv4?

One frequently asked question is whether IPv6 is more secure than IPv4. The answer is yes and no, depending on your interpretation.

IPsec is used to secure IPv6, and it has the same features as the version you are using with IPv4 today. In fact, the IPsec you are using today was originally developed for IPv6, but when the need for security became very urgent, it was developed to work with IPv4 as well. So, in this regard, IPv6 offers the same level of security as IPv4. The main difference is that with IPv4, you have to buy and install some product on your IPv4 hosts to use IPsec. With IPv6, however, IPsec implementation is a mandatory part of every IPv6 stack. In both cases you need to configure it properly in order to work. Thus, from this perspective, you could argue that IPv6 is more secure because implementation is always available. Finally, with IPsec and IPv4, because IPsec requires end-to-end connections, we always face problems when a NAT device is in the way. Since we will not have NATs in an IPv6 network, we avoid this problem. And with IPv4 IPsec, your connections are restricted to gateway-to-gateway and host-to-server, whereas with IPv6 IPsec, you can use any combination to build a secure tunnel.

On the other hand, IPv6 will likely be less secure in the early days of deployment for two reasons. First, the stacks may be buggier than usual because they are all early implementations, and vendors have to wait for market response and incident reports to fix their implementations. So, when planning your project, you should allow for enough time to test stacks and security implementations in your lab before you go to production. The second reason is that we are not very familiar with the new features of IPv6 yet, so we need some time to build experience and find the best ways to secure our IPv6 network and our hosts.

IPv6 security design

When we designed our first networks many years ago, security wasn’t a major concern. We added security mechanisms as the networks and the Internet grew and the number of attacks increased. Today we live in a world where hackers are not just geeks that see a challenge in breaking through security mechanisms anymore, but where organized cyber crime becomes a major concern. Designing our next generation network based on IPv6 offers the opportunity to rethink security and finally make it ubiquitous in the environment. A well-designed security concept has the following characteristics:

  • Perimeter firewalls secure your network from general network attacks.

  • Host firewalls secure your hosts from host- and application-based attacks.

These are good rules for an IPv4 security design, and they are valuable for your IPv6 security design as well. In addition to these rules, you need to consider the potential of the hierarchical address space for new security models. This includes having a well-designed address plan for efficient filtering as well as using multiple addresses on a single interface, which may be used for different applications and also different address types such as link-local addresses, ULAs, and global addresses.

Issues to watch for

Many of the attacks against our IPv4 networks will also be used for IPv6. But we have to take all the new protocol elements into account to fully protect ourselves. The following list describes some possible attacks:

  • Attackers can use extension headers to get viruses or other malicious code into your network. Your firewall should allow only the extension headers that are needed and filter all the others. It should also filter extension headers that are illegal or deprecated, and packets with an illegal sequence or unusually long chain of extension headers. Extension headers should be inspected.

  • All tunnel mechanisms can be used for attacks. All firewall and intrusion detection/intrusion prevention systems (IDS/IPS) need to perform deep packet inspection of tunneled packets. Specifically, Teredo might be a good mechanism for attackers to use, as it is almost impossible to efficiently filter its traffic. There is a UDP port used for Teredo—UDP port 3544—but it can easily be changed.

  • The new neighbor discovery messages and all ND mechanisms can be used for new types of attacks. Specifically, router advertisements can be used to misconfigure clients on a subnet with illegal prefixes, wrong DNS servers, or default gateway information, for example.

  • SLAAC offers new possibilities for attacks. For instance, a device responding to all DAD (duplicate address detection) tests on a link can run an efficient DOS attack because SLAAC clients can then no longer initialize an IPv6 address.

  • The all-nodes multicast address of ff02::1 and the all-routers multicast address of ff02::2 can be used to find all hosts and routers on a link.

  • The neighbor cache and destination cache on a host can be used to read all connection information and find addresses of peers and other systems in the network.

  • If you have an implementation of Mobile IPv6 (MIPv6), be aware that this technology offers many additional points for attacks. Check the MIPv6 specification for security recommendations.

  • If you start using end-to-end IPsec encryption on a large scale, it will become more and more difficult to examine packet content.

Note

For a thorough discussion of IPv6 security concepts, I recommend Scott Hogg’s and Eric Vyncke’s book IPv6 Security (Cisco Press).

Procedures

Your steps to define a new security design may look like this:

  1. Make sure everybody participating in the discussion has a good understanding of IPv6 security issues.

  2. If you have consultants on board, make sure they understand your internal policies and current security design.

  3. Assess your existing security design for what has worked well and possible improvements.

  4. Apply what has worked well and your list of improvements to your IPv6 security design, and add all the new options based on IPv6 features.

  5. Make sure the design is manageable in a dual-stacked world.

  6. Write the IPv6 requirements list for all your security devices.

  7. Assess all existing firewalls, IDS, and IPS, as well as any other central security management systems, for their capability and IPv6 compliance.

  8. Assess all router operating systems for the correct level of IPv6 support for packet filtering and rate limiting, access control, and control plane protection. Check performance for IPv6 filtering (i.e., determine whether it is done in hardware or in software). The fact that a device does filtering of IPv4 in hardware does not necessarily mean that filtering for IPv6 is also done in hardware. For a dual-stacked environment, evaluate the capacity of all filtering systems to filter on both protocols.

  9. Refine your security concept, choose your vendors, define a deployment plan, and test that plan in your lab.

Using directory services for controlling access

While we talk about new designs for future networks, let’s explore a new approach that could make a lot of sense in a dual-stacked and multiple-address-per-interface world. We are used to defining access rules based on IP addresses. This can be very limiting, especially when you consider the multiple addresses of IPv6 interfaces and scenarios in which a user wants to access a specific application from different subnets; if we base rules on IP addresses, we have to know about all these subnets and configure rules for each.

A new approach is to base rule definitions on identities in a directory service. After all, we want to control access for specific groups, specific machines, or maybe specific users, depending on what machine they are coming from. With IP-based access rules, this can become very complicated in a dual-stacked or IPv6 world. So, if we instead assigned rules based on identities, controlling access would be a lot easier, and the security device could resolve the rule by querying directory services.

It seems that the market is going this direction. In its latest release, Check Point has an implementation of what it calls Identity Awareness, which connects the firewall with Active Directory and matches users and machine identities. Identity Awareness shows IP addresses with a user or machine name and lets you define rules based on any of these properties. You can define a firewall rule for specific users when they send traffic from specific machines, or a firewall rule for a specific user regardless of which machine he sends traffic from.

So, when you design your future network, allow yourself to think in new ways. Directory services are a great example where leveraging an existing, powerful tool can change the operational paradigm of the environment. Especially with the introduction of IPv6, there are many possible connections. For instance, using directory services and a well-designed implementation of Identity Management, you can centralize access control to your DMZ, letting partners, customers, and employees access certain services and displaying content based on who they are. With security devices like Check Point’s latest release, you can even add rules based on the same identities.

DNS Design

The basics of DNS (Domain Name System) have not changed. For IPv6 DNS services, you need the following:

  • DNS servers that support AAAA (“quad-A”) records for 128-bit IPv6 addresses, and the corresponding PTR records. For IPv6 reverse DNS lookups, ip6.arpa is used.

  • DNS resolvers (in clients and in DNS servers) that can resolve names and addresses over IPv6 transport.

When a dual-stacked host queries a DNS server for a service name—for instance, when a user enters a URL in the browser—the client will send out two DNS requests: one for an A record and another for a AAAA record. The DNS server may respond with either an A record or a AAAA record, or with both, depending on how it is configured. If the client receives two addresses, it will—based on the default address selection rules (RFC 3484)—prefer native IPv6 over IPv4.

Which transport is used for resolving a name with DNS is independent of the connection that is built. So, for example, Windows XP cannot resolve DNS names over IPv6. A Windows XP client always needs a DNS server that it can reach over IPv4. But when the client is dual-stacked and the DNS server responds with a AAAA record, the Windows XP client can initiate a session over IPv6.

A problem can arise when a client gets a AAAA record but does not have an IPv6 connection or has a very poor one. Because IPv6 stacks are configured to prefer IPv6 over IPv4 by default, the client will try to connect with IPv6. But because it does not have connectivity, there is a long delay until the client eventually reverts to using IPv4 (which it can only do if it got an A record for the same service). In most cases, the user won’t understand why it takes so long to access that website and will probably blame the website owner for it.

This “IPv6 brokenness” of clients/browsers is the reason why large dual-stacked websites such as Google and Facebook don’t give out AAAA records for their main domain. If you want to access Google or Facebook over IPv6 today, you have to use a v6-specific domain name such as http://ipv6.google.com. These large sites cannot accept performance hits due to users on networks with bad IPv6 Internet connectivity. If such a user experiences long timeouts while accessing Google, he will think that Google is responsible for the poor performance, when in fact the timeout stems from the client not being able to connect over IPv6 and waiting to connect over IPv4. Google and other large sites often use DNS whitelisting for ISPs with good IPv6 performance, so they can be sure that users coming from that ISP will have no problems accessing the website over IPv6. Only if you are connected from such a provider will you get a AAAA record for http://www.google.com. This was the motivation behind World IPv6 Day, which took place on June 8, 2011. On this date, all major websites enabled the AAAA record for their main domain for 24 hours in order to test what happened, analyze the results, and determine what it takes to improve the situation so they can eventually enable AAAA records for the main domain permanently. To find more information on World IPv6 Day, go to http://isoc.org/wp/worldipv6day. The testday was almost uneventful, in that no major problems were encountered. For most users, Internet performance was as usual. Analysis showed that IPv6 brokenness is a declining concern, mainly due to new features in browsers. On that day content available over IPv6 has clearly increased and so has IPv6 Internet traffic over IPv6 increased in general. Many websites that enabled IPv6 for the test day and found no issues decided to leave IPv6 turned on permanently. This accounts for more than 60% of the participating websites. Hopefully we can soon move to an Internet where regular domains can also have AAAA records with no restrictions.

With regard to DNS design, one important point to be aware of is namespace fragmentation. When a resolver tries to resolve a name, it will start at the root and follow referrals until it reaches an authoritative name server for the name. If the resolver encounters a name server that is reachable only over a protocol that the resolver can’t use, the name cannot be resolved—the DNS query is unsuccessful.

As IPv6 starts being deployed more and more in the Internet, the namespace may get fragmented because there will still be name servers that can be reached only over IPv4, as well as more and more name servers that can be reached only over IPv6. So we need mechanisms to avoid the situation where the resolver chain breaks due to two name servers in the resolution process that do not speak the same “language” (IP version); here are the DNS recommendations (excerpted from RFC 3901) on this topic:

In order to preserve name space continuity, the following administrative policies are recommended:

  • Every recursive name server SHOULD be either IPv4-only or dual stack.

    This rules out IPv6-only recursive servers. However, one might design configurations where a chain of IPv6-only name [servers forwards] queries to a set of dual-stack recursive name [servers] actually performing those recursive queries.

  • Every DNS zone SHOULD be served by at least one IPv4-reachable authoritative name server.

    This rules out DNS zones served only by IPv6-only authoritative name servers.

Note: zone validation processes SHOULD ensure that there is at least one IPv4 address record available for the name servers of any child delegations within the zone.

For your integration of IPv6, it is probably a good idea to plan for dual-stacked DNS services, as this offers the best and most flexible protection from fragmentation. With BIND9, you can also configure a dual-stack server. When a recursor needs to look up data in a zone served only by a name server that doesn’t speak the same language, it can forward a recursive query to the dual-stack server.

Make sure that you configure AAAA records only when the services are fully reachable over IPv6; otherwise, your clients may experience long timeouts or not reach the service at all. We also have to move away from entering host names only in DNS. A host may be dual-stacked (and have two DNS entries), while some services running on that host may be either IPv4 or IPv6 services. In a large enterprise, it could be prudent for administrative reasons to avoid mixing IPv4 services and IPv6 services on dual-stacked hosts, but rather to place IPv4 services on IPv4 hosts and IPv6 services on IPv6 hosts. At the same time, you have to make sure that all clients that get AAAA records for IPv6-only services can connect over IPv6 to the network where the service resides. If a service is available on both protocols, make sure the IPv6 service gets precedence over the IPv4 service so your traffic can shift to using IPv6 more and more whenever it is available.

There is already a good amount of experience with IPv6 DNS available. Here is a list of RFCs you should check before you spend a lot of time troubleshooting DNS. Your issues may already have been documented:

  • RFC 3596: DNS Extensions for IPv6

  • RFC 3901: DNS IPv6 Transport Operational Guidelines

  • RFC 4074: Common Misbehavior Against DNS Queries for IPv6 Addresses

  • RFC 4472: Operational Considerations and Issues with IPv6 DNS

  • RFC 4697: Observed DNS Resolution Misbehavior

  • RFC 5358: Preventing Use of Recursive Nameservers in Reflector Attacks

  • RFC 5452: Measures for Making DNS More Resilient against Forged Answers

  • RFC 5855: Nameservers for IPv4 and IPv6 Reverse Zones

  • RFC 6195: Domain Name System (DNS) IANA Considerations

Note

For a good read on DNS in general and specifically on DNS with IPv6, I recommend the following books, both by Cricket Liu and published by O’Reilly: DNS and BIND, Fifth Edition, and DNS and BIND on IPv6.

Management Concept

The procedures in this area are the same as outlined previously in the section Security Design, and apply to any other subproject:

  1. Make sure everybody in the discussion has a good understanding of what the requirements are to manage an IPv6 network.

  2. If you have consultants on board, make sure they understand your internal policies, current procedures and tools used to manage your network.

  3. Asses all your existing management and troubleshooting strategies for what has worked well and possible improvements.

  4. Apply what has worked well and your list of improvements to your IPv6 management concept and add all new options based on IPv6 features.

  5. Make sure the design is manageable in a dual-stacked world.

  6. Write the IPv6 requirements list for all your management devices.

  7. Assess all existing management systems for their IPv6 capability and compliance.

  8. Refine your management concept, choose your vendors, define a deployment plan and test it in your lab.

A management system may well understand and manage IPv6 while still communicating over IPv4. In fact, many management systems today don’t support IPv6 transport. For example, SNMP may carry information about an IPv6 network element, but the SNMP message may be transported over IPv4. Make sure to test for this behavior and evaluate accordingly. Depending on your situation, you may be doing well with an IPv4-communicating management system as long as you operate in a dual-stack network.

Address Management

With IPv6, you have three options for configuring devices for an IP address. Option one is using SLAAC, in which interfaces autoconfigure an address either based on its MAC identifier (EUI-64) or by using the privacy option, where the interface ID is randomly generated and changed in regular intervals. This interface ID is then combined with routing prefixes learned from router advertisements. The second option is to use DHCPv6, which is very similar to DHCPv4. What is new in DHCPv6 is that it includes an authentication framework. You can also combine these first two configuration options by having interfaces use SLAAC for the address configuration and then sending out DHCP inform requests to get additional configuration from a DHCP server. Or another combination is that clients can use SLAAC to configure an address for one prefix and then go to a DHCPv6 server to get an address for another prefix. The third option is to manually configure interfaces for an IPv6 address. You may want to use this option for servers and routers to make sure you have control over the address.

If you want to populate DNS with the device entries, in the case of SLAAC you will have the clients update DNS (Dynamic DNS). If you are using DHCPv6, you probably want the DHCP server to update DNS. It may be a good idea to secure DNS (DNSsec).

SLAAC is a great and easy way to configure your devices for an IP address if you have a smaller company or if you need to configure networks with frequently changing users, such as public ad-hoc networks (mobile and wireless networks) or areas in your corporate network where you have guests and partners connecting temporarily. SLAAC is also very useful for the configuration of sensors.

In the enterprise area, most customers choose DHCPv6. The reasons are that DHCPv6 offers you more control and stateful configuration, which means that you always know which device used which address at a certain time (for security and policy reasons). Servers, routers, switches, firewalls, and similar devices should be statically configured.

Many enterprises use an IPAM suite, or DDI as it is called nowadays. DDI stands for DNS, DHCP, and IPAM. As of early 2011, there aren’t too many production DHCPv6 servers out there. Most vendors have announced their DHCPv6 server for sometime in 2011. Many suites already offer different levels of address management options. It is advisable to work closely with your vendor and find out what his level of IPv6 support is and what his roadmap looks like. Managing a dual-stacked network is quite complex, and you need tools that offer the greatest flexibility and present a clear view on your network devices from different perspectives. You probably want to be able to see which IP addresses are assigned to a specific MAC address, or which IP addresses relate to a specific DNS name, or from a device perspective (how many interfaces, what DNS names, and IP addresses for each). You will need to experiment in your lab to find out which address management product best suits your needs.

The Inevitable Word on NAT

In the 90s, NAT was developed because the IPv4 address space became scarce and IPv6 wasn’t ready yet. In other words, NAT was created as a temporary solution to the address problem. But then we got used to it and found many additional advantages in the technology, and in fact, this is what delayed the introduction of IPv6 once it was ready. Here are some of the reasons why people use NATs:

  • As an address amplifier (many devices can share one public IP address)

  • As a poor man’s firewall (the devices behind the NAT are hidden)

  • To keep the internal addresses stable even if providers change

As we all know, the firewalling properties of NAT are weak and very easy to replace with a state-of-the-art stateful firewall. NAT was not designed to serve as a firewall, after all. Address amplification is no longer an issue with IPv6, since it was developed to do just that. To keep the internal address space stable, we don’t have to use NAT; we can use ULAs (RFC 4193 and RFC 4864).

IPv6 was developed to restore the end-to-end connectivity in the Internet, and the IPv6 world should not use NATs anymore. Avoiding NATs will solve many current issues with applications that require end-to-end connectivity and security (IPsec, Voice over IP, and many others). The percentage of our IT costs that we use to maintain, extend, bypass, and troubleshoot NATs is very high, and if we create NAT-free IPv6 networks, our administrative overhead will significantly decrease, and it will be much easier to create mobile and secure networks.

However, one reason why we will not completely get around using some type of NATs is that it took far too long to introduce IPv6. Originally, the developers planned for IPv6 to be integrated while we still had enough IPv4 address space. This would have allowed for the easy-to-implement dual-stacked approach in most cases.

Now, since the IANA pool is definitely empty and the RIR pools will be exhausted over the course of 2011, all Internet growth will be over IPv6. There are two ways of doing this: a) carriers may use large-scale NAT (LSN) to provide IPv4 access to more and more users and b) use some form of translation to provide IPv4 access to IPv6-only users. The downside of the LSN approach is, that once the NAT moves from the edge (home user) to the carrier, many users/organizations will hide behind one IP address, which is not only a performance hit, but maybe even more importantly a security threat (an attack on that IP address will affect a large number of users) and prevent the use of IP-based access control lists, to for instance block addresses that are known to send SPAM. At the same time it is also a limitation to customized marketing and personalized website content display, because all these users coming from one ISP NAT will appear to be coming from one IP address, so all statistical and analytical tools cannot provide more specific information on user behavior. The positive effect of this situation is that for all these users with translation and sitting behind LSN, native IPv6 Internet access will be performing much better, which may be an incentive for content providers to move their content to IPv6.

For a more detailed discussion of NAT, refer to Chapter 3.

Summary

The introduction of IPv6 will cost money. The evolution of our networks always created cost, cost that returns in the form of enabling successful business, efficient communication practices and state-of-the-art applications. This chapter outlined the requirements for a successful planning process. Planning with care and taking the time to tackle all these complex questions is a lot of initial work but it is an important long term gain, because it will create many opportunities to redesign our networks and save a lot of operational cost in the future by enabling an efficient infrastructure.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.15.214.155